giip
SES Proposal
4 min read

Graphify ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ API

๐Ÿ”Œ Graphify ํŽ˜์ด์ง€๋กœ ์ด๋™ โ†’](/ko/graphify)

Graphify๋Š” ์ง€์‹๋ฒ ์ด์Šค(tKB) ํ•ญ๋ชฉ์„ 3D ์ง€์‹ ๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” API๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์ •๋ณด๊ฐ€ ์ž˜ ๋ณด์ด๋„๋ก ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ํ๋ฆ„์€ 2๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค: โ‘  ํ•ญ๋ชฉ ์ ์žฌ(giipKb) โ†’ โ‘ก ๊ทธ๋ž˜ํ”„ ์žฌ๋นŒ๋“œ(giipGraphifyRebuild). ์žฌ๋นŒ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ์ƒˆ ํ•ญ๋ชฉ์ด ๊ทธ๋ž˜ํ”„์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“ฆ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ํ๋ฆ„ โ€” tKB๊ฐ€ "์ง„์งœ ์ €์žฅ์†Œ"๋‹ค

โš ๏ธ ๊ฐ€์žฅ ํ”ํ•œ ์˜คํ•ด: "์ด์Šˆ๋ฅผ ๋“ฑ๋กํ–ˆ๋Š”๋ฐ ๊ทธ๋ž˜ํ”„์— ์•ˆ ๋ณด์ธ๋‹ค"๋Š” ๋Œ€๋ถ€๋ถ„ tKB์— ์•„์ง ์ ์žฌ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. tBlogGraphNodes/tBlogGraphEdges(๊ทธ๋ž˜ํ”„ ํ…Œ์ด๋ธ”)๋Š” ๊ทธ ์ž์ฒด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์ง€ ์•Š๊ณ , ์žฌ๋นŒ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค tKB๋กœ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋งŒ๋“ค์–ด์ง€๋Š” ํŒŒ์ƒ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ํ…Œ์ด๋ธ”์„ ์ง์ ‘ ์ฑ„์šฐ๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค โ€” ํ•ญ์ƒ tKB โ†’ ์žฌ๋นŒ๋“œ ์ˆœ์„œ๋ฅผ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[issue / ์ง€์‹ ์†Œ์Šค]
   โ”‚ โ‘  ์ธ์ œ์ŠคํŠธ: POST /api/giipKb (x-api-key: ak/sk)
   โ”‚   โ†’ tKB ํ…Œ์ด๋ธ”์— 1ํ–‰ ์ €์žฅ (csn, refType, title, content, tags, extRefId)
   โ”‚   โ†’ refType='ISSUE'(์™ธ๋ถ€/์ž์‚ฌ issue) ๋˜๋Š” 'k-layer-daily'(K-Layer ์ผ์ผ ๋™๊ธฐํ™”, ์•„๋ž˜ ์ฐธ์กฐ)
   โ”‚   โ†’ extRefId๋กœ ๋ฉฑ๋“ฑ upsert(๊ฐ™์€ extRefId ์žฌ์ „์†ก ์‹œ ์ƒˆ ํ–‰์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด ํ–‰ UPDATE)
   โ–ผ
  tKB  (๊ทธ๋ž˜ํ”„์˜ "์‹ค์ œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ" โ€” ๊ทธ๋ž˜ํ”„ ํ…Œ์ด๋ธ” ์ž์ฒด๋Š” ํŒŒ์ƒ ๊ฒฐ๊ณผ์ผ ๋ฟ)
   โ”‚ โ‘ก ์žฌ๋นŒ๋“œ: POST /api/giipGraphifyRebuild {csn} (x-api-key)
   โ”‚   โ†’ SP pApiGraphifyRebuildbyAk๊ฐ€ ๊ทธ csn์˜ tBlogGraphNodes/tBlogGraphEdges๋ฅผ
   โ”‚     ํ†ต์งธ๋กœ DELETE ํ›„ tKB๋กœ๋ถ€ํ„ฐ ์žฌ์ƒ์„ฑ(์ ์žฌ๋งŒ ํ•˜๊ณ  ์žฌ๋นŒ๋“œ ์•ˆ ํ•˜๋ฉด ๊ทธ๋ž˜ํ”„๋Š” ๊ทธ๋Œ€๋กœ ์•ˆ ๋ฐ”๋€œ)
   โ”‚   โ†’ DOC ๋…ธ๋“œ(tKB ๊ฐ ํ–‰=๋ฌธ์„œ ํ•˜๋‚˜) + TAG ๋…ธ๋“œ(2๊ฐœ ์ด์ƒ ๋ฌธ์„œ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ํƒœ๊ทธ๋งŒ, ํ—ค์–ด๋ณผ ๋ฐฉ์ง€๋กœ
   โ”‚     ๋„ˆ๋ฌด ํ”ํ•œ ํƒœ๊ทธ๋Š” ์ž๋™ ์ œ์™ธ) + docโ†’tag ์—ฃ์ง€
   โ”‚   โ†’ (์‹ ๊ทœ) ์ด csn์— ์„ค์ •๋œ ์–ธ์–ด(tCorp.cLang)๋กœ ๋…ธ๋“œ ๋ผ๋ฒจ์„ ์ž๋™ ๋ฒˆ์—ญํ•ด์„œ ์ €์žฅ
   โ–ผ
 tBlogGraphNodes / tBlogGraphEdges  (csn ์Šค์ฝ”ํ”„, ํ™”๋ฉด์ด ์‹ค์ œ๋กœ ์ฝ๋Š” ํ…Œ์ด๋ธ”)
   โ”‚ โ‘ข ์กฐํšŒ: GET /api/giipGraphifyTenant?csn= (์—„๊ฒฉ ๊ฒฉ๋ฆฌ, ak ์ธ๊ฐ€) ๋˜๋Š” ํ™”๋ฉด /graphify?csn=
   โ–ผ
 3D ์ง€์‹ ๊ทธ๋ž˜ํ”„ ์‹œ๊ฐํ™”
  • 1๋‹จ๊ณ„(์ธ์ œ์ŠคํŠธ)๋งŒ์œผ๋กœ๋Š” ๊ทธ๋ž˜ํ”„์— ์•„๋ฌด๊ฒƒ๋„ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ 2๋‹จ๊ณ„(์žฌ๋นŒ๋“œ)๊นŒ์ง€ ํ˜ธ์ถœํ•ด์•ผ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.
  • ์žฌ๋นŒ๋“œ๋Š” ๋งค๋ฒˆ ์ „๋Ÿ‰ ์žฌ์ƒ์„ฑ์ž…๋‹ˆ๋‹ค. ์ด์ „ ๊ทธ๋ž˜ํ”„ ์ƒํƒœ๋ฅผ ์ด์–ด๋ฐ›๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ทธ ์‹œ์ ์˜ tKB ๋‚ด์šฉ ์ „์ฒด๋กœ ๋‹ค์‹œ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ tKB์—์„œ ํ•ญ๋ชฉ์„ ์ง€์›Œ๋„(๋˜๋Š” refType๋ณ„๋กœ ์ผ๊ด„ ์‚ญ์ œํ•ด๋„) ๋‹ค์Œ ์žฌ๋นŒ๋“œ์—์„œ ์ž์—ฐํžˆ ๊ทธ๋ž˜ํ”„์—์„œ ๋น ์ง‘๋‹ˆ๋‹ค.
  • ๊ฒฉ๋ฆฌ: ๋ชจ๋“  ๋‹จ๊ณ„๊ฐ€ csn(ํ”„๋กœ์ ํŠธ ๊ฒฝ๊ณ„)๊ณผ x-api-key(ak/sk ์ธ๊ฐ€)๋กœ ์Šค์ฝ”ํ”„๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ csn์˜ tKB๋‚˜ ๊ทธ๋ž˜ํ”„์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

K-Layer ์ž๋™ ์ธ์ œ์ŠคํŠธ (์ด๋ฏธ ์šด์˜ ์ค‘, refType='k-layer-daily')

giip ์„ธ์…˜์ด ์ถ•์ ํ•˜๋Š” **์—”์ง€๋‹ˆ์–ด๋ง ๋…ธํ•˜์šฐ(K-Layer)**๋Š” ์ด๋ฏธ ๋งค์ผ ์ž๋™์œผ๋กœ tKB์— ์ ์žฌ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์‹ ๊ทœ ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด ์šด์˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค).

  • ์Šค์ผ€์ค„๋Ÿฌ: giipdb/mgmt/run_klayer_daily_wiki.ps1์ด ๋งค์ผ 00:15 UTC์— Windows ์Šค์ผ€์ค„๋Ÿฌ ์ž‘์—… GIIP_Daily_KLayerWiki๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ๋™์ž‘: giip ์ด์Šˆ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  csn์— ๋Œ€ํ•ด ์ „๋‚  ํ•˜๋ฃจ์น˜ ์ด์Šˆ+์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋ชจ์•„ MiniMax๋กœ ์š”์•ฝํ•œ ๋’ค giipKb๋ฅผ ํ†ตํ•ด tKB์— INSERTํ•ฉ๋‹ˆ๋‹ค.
  • ํ•„๋“œ ๊ฐ’: refType='k-layer-daily', tags='k-layer-wiki,daily', title='K-Layer Wiki {csn} - {yyyy-MM-dd}'.
  • ๋งˆ์Šคํ‚น: ๋ฏผ๊ฐ์ •๋ณด๋Š” giipdb/mgmt/lib/Mask-SensitiveInfo.ps1๋กœ ์ด์ค‘ ๋งˆ์Šคํ‚น๋œ ๋’ค ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜ํ”„์—์„œ ๋ณด์ด๋Š” ๋ฐฉ์‹: ์ด tKB ํ–‰๋“ค๋„ ๋‹ค๋ฅธ ํ•ญ๋ชฉ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋‹ค์Œ ์žฌ๋นŒ๋“œ ๋•Œ DOC ๋…ธ๋“œ๋กœ ํก์ˆ˜๋ฉ๋‹ˆ๋‹ค. ๊ณต์œ  ํƒœ๊ทธ k-layer-wiki, daily๊ฐ€ TAG ๋…ธ๋“œ๊ฐ€ ๋˜์–ด, ๋‚ ์งœ๋ณ„๋กœ ์Œ“์ธ K-Layer ๋ฌธ์„œ๋“ค์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌถ์—ฌ ๋ณด์ž…๋‹ˆ๋‹ค.
  • ํ•„ํ„ฐยท์‚ญ์ œ ์‹œ refType='k-layer-daily'๋กœ ๋ฒ”์œ„๋ฅผ ์ขํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ยง1 ํ‘œ์˜ refType ์ฐธ๊ณ ).

csn ์–ธ์–ด ๊ธฐ๋ฐ˜ ์ž๋™ ๋ฒˆ์—ญ (์‹ ๊ทœ)

giipGraphifyRebuild ํ˜ธ์ถœ ์‹œ, ๊ทธ csn์˜ ํ”„๋กœ์ ํŠธ ์–ธ์–ด ์„ค์ •(tCorp.cLang, ์˜ˆ: ko-KR, en-US โ€” ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ํ™”๋ฉด์—์„œ ์ด๋ฏธ ์„ค์ • ๊ฐ€๋Šฅํ•œ ๊ธฐ์กด ๊ฐ’) ์— ๋งž์ถฐ ๊ทธ๋ž˜ํ”„ ๋…ธ๋“œ ๋ผ๋ฒจ์„ ์ž๋™ ๋ฒˆ์—ญํ•ด์„œ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ๋™์ž‘ ์‹œ์ : tKB ์›๋ณธ ๋ฐ์ดํ„ฐ(title/content)๋Š” ์–ธ์–ด์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ทธ๋Œ€๋กœ ์ €์žฅ๋˜๊ณ , ์žฌ๋นŒ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์— ๊ทธ csn์˜ cLang ๊ฐ’์„ ์ฝ์–ด ๋…ธ๋“œ ๋ผ๋ฒจ์„ ๋ฒˆ์—ญํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ๊ด€์  ์š”์•ฝ: ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ํ™”๋ฉด์—์„œ csn์˜ ์–ธ์–ด ์„ค์ •(cLang)์„ ๋ฐ”๊พธ๋ฉด, ๋‹ค์Œ giipGraphifyRebuild ํ˜ธ์ถœ๋ถ€ํ„ฐ ๊ทธ๋ž˜ํ”„์— ํ‘œ์‹œ๋˜๋Š” ํ…์ŠคํŠธ ์–ธ์–ด๊ฐ€ ๋ฐ”๋€๋‹ˆ๋‹ค. ์›๋ณธ tKB ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊ฟ€ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ฐ™์€ tKB ๋ฐ์ดํ„ฐ๋ผ๋„ csn๋งˆ๋‹ค cLang์ด ๋‹ค๋ฅด๋ฉด ๊ฐ csn์˜ ๊ทธ๋ž˜ํ”„์—๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋…ธ๋“œ๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฒˆ์—ญ์€ ์žฌ๋นŒ๋“œ๋งˆ๋‹ค ๋‹ค์‹œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค(์บ์‹œ/๋ˆ„์  ์—†์Œ) โ€” ์›๋ณธ title/content๊ฐ€ ์ตœ์‹  ์†Œ์Šค์ž…๋‹ˆ๋‹ค.

๋น ๋ฅธ ์‹œ์ž‘ (3๋‹จ๊ณ„)

# 1) ํ•ญ๋ชฉ ์ ์žฌ โ€” giipKb POST (ํ˜ธ์ŠคํŠธ: giipfaw.azurewebsites.net)
curl -X POST "https://giipfaw.azurewebsites.net/api/giipKb" \
  -H "x-api-key: <YOUR_AK_OR_SK>" -H "Content-Type: application/json" \
  -d '{"csn":47,"title":"OAuth ์ฝœ๋ฐฑ 500 ์˜ค๋ฅ˜","content":"## ์›์ธ\ntoken ๊ตํ™˜ ํƒ€์ž„์•„์›ƒ","tags":"auth,oauth,timeout","refType":"ISSUE","extRefId":"ISSUE-1001"}'

# 2) ๊ทธ๋ž˜ํ”„ ์žฌ๋นŒ๋“œ โ€” giipGraphifyRebuild POST
curl -X POST "https://giipfaw.azurewebsites.net/api/giipGraphifyRebuild" \
  -H "x-api-key: <YOUR_AK_OR_SK>" -H "Content-Type: application/json" \
  -d '{"csn":47}'

# 3) ํ™•์ธ โ€” ๋ธŒ๋ผ์šฐ์ €์—์„œ https://<host>/ko/graphify?csn=47

์ธ์ฆ ํ‚ค(x-api-key)๋Š” ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์˜ AK ๋˜๋Š” ํ”„๋กœ์ ํŠธ ์Šค์ฝ”ํ”„ SK๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๋Š” ์ž์‹ ์˜ csn ๋ฒ”์œ„๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์žฌ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


โญ ์ •๋ณด๊ฐ€ ์ž˜ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๋ฒ• (ํ•ต์‹ฌ)

Graphify๋Š” ํƒœ๊ทธ ์ด๋ถ„(bipartite) ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. ์ฆ‰ ๋ฌธ์„œ๋Š” "๊ณต์œ  ํƒœ๊ทธ"๋ฅผ ํ†ตํ•ด ์„œ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค(ํƒœ๊ทธ๊ฐ€ 1๊ธ‰ ๋…ธ๋“œ). ๋”ฐ๋ผ์„œ ํƒœ๊ทธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ™์ด๋А๋ƒ๊ฐ€ ๊ทธ๋ž˜ํ”„ ํ’ˆ์งˆ์„ ์ขŒ์šฐํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ํƒœ๊ทธ (์—ฐ๊ฒฐ์ด ์ž˜ ์ƒ๊น€)

  • 2~50๊ฐœ ํ•ญ๋ชฉ์ด ๊ณต์œ ํ•˜๋Š” ์˜๋ฏธ ์žˆ๋Š” ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์˜ˆ: auth, billing, timeout, payment, login.
  • ๊ฐ™์€ ์ฃผ์ œ์˜ ํ•ญ๋ชฉ๋“ค์ด ๊ณต์œ  ํƒœ๊ทธ ๋…ธ๋“œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ด๋ฃน๋‹ˆ๋‹ค.

ํ”ผํ•ด์•ผ ํ•  ํƒœ๊ทธ

๋‚˜์œ ํŒจํ„ด์™œ ์•ˆ ์ข‹์€๊ฐ€๊ฒฐ๊ณผ
ํ•ญ๋ชฉ๋งˆ๋‹ค ์œ ์ผํ•œ ํƒœ๊ทธ (์˜ˆ: ํŒŒ์ผ๋ช… report_2026_01.md)๊ณต์œ ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†์Œ(DF=1)์•„๋ฌด๊ฒƒ๋„ ์—ฐ๊ฒฐ ์•ˆ ๋จ โ†’ ๊ณ ๋ฆฝ ๋…ธ๋“œ
๊ฑฐ์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋ถ™๋Š” ์ œ๋„ค๋ฆญ ํƒœ๊ทธ (์˜ˆ: doc, sync, general)๋ฌธ์„œ๋นˆ๋„(DF)๊ฐ€ ๋„ˆ๋ฌด ๋†’์Œ์ž๋™ ํ•„ํ„ฐ๋ง๋˜์–ด ์—ฃ์ง€์—์„œ ์ œ์™ธ(ํ—ค์–ด๋ณผ ๋ฐฉ์ง€)

๊ทœ์น™ ์š”์•ฝ: ๋„ˆ๋ฌด ํ”ํ•˜์ง€๋„, ๋„ˆ๋ฌด ์œ ์ผํ•˜์ง€๋„ ์•Š์€ ํƒœ๊ทธ๊ฐ€ ์ข‹์€ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•œ csn ์•ˆ์—์„œ DF(๋ฌธ์„œ๋นˆ๋„)๊ฐ€ 2~50์ธ ํƒœ๊ทธ๋งŒ ํƒœ๊ทธ ๋…ธ๋“œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ ์™ธ ํ‘œ์‹œ ํŒ

  • title: ๊ทธ๋ž˜ํ”„์˜ ๋…ธ๋“œ ๋ผ๋ฒจ์ด ๋ฉ๋‹ˆ๋‹ค. ์งง๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ.
  • content: ๋…ธ๋“œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธ ํŒ์—… ๋ณธ๋ฌธ์œผ๋กœ ๋งˆํฌ๋‹ค์šด ๋ Œ๋”๋ฉ๋‹ˆ๋‹ค.
  • extRefId: ์™ธ๋ถ€ ์‹œ์Šคํ…œ์˜ ํ•ญ๋ชฉ ID. ์žฌ๋™๊ธฐํ™” ์‹œ **์ค‘๋ณต ์ƒ์„ฑ ์—†์ด ๊ฐฑ์‹ (๋ฉฑ๋“ฑ)**๋ฉ๋‹ˆ๋‹ค.
  • ์žฌ๋นŒ๋“œ ํ•„์ˆ˜: ํ•ญ๋ชฉ๋งŒ ์ถ”๊ฐ€ํ•˜๊ณ  ์žฌ๋นŒ๋“œ๋ฅผ ์•ˆ ํ•˜๋ฉด ๊ทธ๋ž˜ํ”„๋Š” ๊ทธ๋Œ€๋กœ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์น˜ ์ ์žฌ ํ›„ giipGraphifyRebuild๋ฅผ ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•˜์„ธ์š”.

์ƒ์„ธ ๊ธฐ๋Šฅ ยท API ์ฐธ์กฐ

1) ํ•ญ๋ชฉ ์ ์žฌ โ€” giipKb

POST https://giipfaw.azurewebsites.net/api/giipKb ยท ํ—ค๋” x-api-key: <ak/sk>

ํ•„๋“œํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
csnintโœ…ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ. ํ‚ค ๊ถŒํ•œ ๋ฒ”์œ„์™€ ์ผ์น˜ํ•ด์•ผ ํ•จ(๊ธฐ๋ณธ ์˜ˆ์‹œ: 47)
titlestring(200)โœ…๋…ธ๋“œ ๋ผ๋ฒจ
contentstring๋…ธ๋“œ ์ƒ์„ธ ๋ณธ๋ฌธ(๋งˆํฌ๋‹ค์šด ํ—ˆ์šฉ)
tagsstring(500)์ฝค๋งˆ ๊ตฌ๋ถ„ ํƒœ๊ทธ. ์—ฐ๊ฒฐ์˜ ํ•ต์‹ฌ(์œ„ "์ข‹์€ ํƒœ๊ทธ" ์ฐธ์กฐ)
refTypestring(50)โœ…ํ•ญ๋ชฉ ์ข…๋ฅ˜. ์˜ˆ: ISSUE, GENERAL, GUIDE
extRefIdstring(100)์™ธ๋ถ€ ํ•ญ๋ชฉ ID(๋ฉฑ๋“ฑ upsert ํ‚ค). ์žˆ์œผ๋ฉด ์žฌ๋™๊ธฐํ™” ์‹œ ๊ฐฑ์‹ 

์‘๋‹ต

{ "success": true, "kbSn": 844, "message": "KB entry created successfully" }

๋™์ผ extRefId๋กœ ๋‹ค์‹œ ๋ณด๋‚ด๋ฉด:

{ "success": true, "kbSn": 844, "message": "KB entry updated (idempotent)" }

PowerShell ์˜ˆ์‹œ

$headers = @{ "x-api-key"="<ak/sk>"; "Content-Type"="application/json; charset=utf-8" }
$body = @{ csn=47; title="๊ฒฐ์ œ ์ง€์—ฐ"; content="## ์ฆ์ƒ`n๊ฒฐ์ œ ์Šน์ธ 5์ดˆ ์ง€์—ฐ"; tags="payment,timeout"; refType="ISSUE"; extRefId="ISSUE-1002" } | ConvertTo-Json
Invoke-RestMethod -Uri "https://giipfaw.azurewebsites.net/api/giipKb" -Method POST -Headers $headers -Body ([Text.Encoding]::UTF8.GetBytes($body))

2) ๊ทธ๋ž˜ํ”„ ์žฌ๋นŒ๋“œ โ€” giipGraphifyRebuild

POST https://giipfaw.azurewebsites.net/api/giipGraphifyRebuild ยท ํ—ค๋” x-api-key: <ak/sk>

ํ•ด๋‹น csn์˜ ๊ทธ๋ž˜ํ”„๋ฅผ tKB๋กœ๋ถ€ํ„ฐ ์žฌ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค(DOC ๋…ธ๋“œ + ๋ณ€๋ณ„๋ ฅ ํƒœ๊ทธ ๋…ธ๋“œ + docโ†’tag ์—ฃ์ง€).

ํ•„๋“œํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
csnintโœ…์žฌ๋นŒ๋“œํ•  ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ
maxTagDFint์ œ๋„ค๋ฆญ ํƒœ๊ทธ ์ปท(๋ฌธ์„œ๋นˆ๋„ ์ƒํ•œ, ๊ธฐ๋ณธ 50). ์ด๋ณด๋‹ค ํ”ํ•œ ํƒœ๊ทธ๋Š” ์ œ์™ธ
maxNodesintDOC ๋…ธ๋“œ ์•ˆ์ „์ƒํ•œ(๊ธฐ๋ณธ 20000)

์‘๋‹ต

{ "success": true, "nodes": 838, "edges": 11, "docNodes": 835, "tagNodes": 3, "message": "Graph rebuilt (tag-bipartite)" }
  • docNodes: ๋ฌธ์„œ ๋…ธ๋“œ ์ˆ˜, tagNodes: ํƒœ๊ทธ ๋…ธ๋“œ ์ˆ˜, edges: docโ†’tag ์—ฐ๊ฒฐ ์ˆ˜.

๋ฌธ์ œ ํ•ด๊ฒฐ

์ฆ์ƒ์›์ธํ•ด๊ฒฐ
๊ทธ๋ž˜ํ”„๊ฐ€ ๋น„์–ด ๋ณด์ž„์žฌ๋นŒ๋“œ ๋ฏธํ˜ธ์ถœ / ์ž˜๋ชป๋œ csngiipGraphifyRebuild ํ˜ธ์ถœ, ?csn= ํ™•์ธ
๋…ธ๋“œ๋Š” ๋งŽ์€๋ฐ ์—ฐ๊ฒฐ์ด ๊ฑฐ์˜ ์—†์Œํƒœ๊ทธ๊ฐ€ ์œ ์ผ(DF=1)ํ•˜๊ฑฐ๋‚˜ ์ œ๋„ค๋ฆญ(DF ๊ณผ๋‹ค)2~50๊ฐœ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์˜๋ฏธ ํƒœ๊ทธ๋กœ ์žฌ์ ์žฌ ํ›„ ์žฌ๋นŒ๋“œ
๊ฐ™์€ ํ•ญ๋ชฉ์ด ์ค‘๋ณต ์ƒ์„ฑextRefId ๋ฏธ์‚ฌ์šฉextRefId๋ฅผ ๋„ฃ์–ด ๋ฉฑ๋“ฑ ์ ์žฌ
401/403ํ‚ค ์—†์Œ / ๋‹ค๋ฅธ csn์˜ฌ๋ฐ”๋ฅธ x-api-key์™€ ์ž๊ธฐ csn ์‚ฌ์šฉ

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ

  • ์†Œ์Šค ํŒŒ์ผ: giipv3/public/help/api-graphify.ko.md
  • raw ์›๋ฌธ ๊ฒฝ๋กœ: /help/api-graphify.ko.md
  • ๊ด€๋ จ API: giipfaw/giipKb, giipfaw/giipGraphifyRebuild
  • ๊ด€๋ จ ํŽ˜์ด์ง€: /[locale]/graphify