Graphify ์ง์ ๊ทธ๋ํ ๊ฐ์ด๋
ํ๋ก์ ํธ์ ๋ฌธ์ยท์์คยทํ๊ทธ๋ฅผ 3D ์ง์ ๊ทธ๋ํ๋ก ์๊ฐํํ๊ณ ๋ ธ๋ ๊ฐ ์ฐ๊ฒฐ์ ํ์ํ๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
๐ ๊ฐ์
Graphify๋ ์ ํ๋ ํ๋ก์ ํธ(csn)์ ์ํ ๋ฌธ์, ์์ค ์ฝ๋, ํ๊ทธ๋ฅผ ๋ ธ๋์ ์ฐ๊ฒฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง 3D ์ง์ ๊ทธ๋ํ๋ก ๋ณด์ฌ์ฃผ๋ ํ๋ฉด์ ๋๋ค. ๋ ธ๋๋ ์ ํ๋ณ๋ก ์์ด ๋ค๋ฅด๋ฉฐ, ์ฐ๊ฒฐ์ ์ค์๋(๊ฐ์ค ์ฐ๊ฒฐ ์)๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋์ด ํ์๋ฉ๋๋ค.
โ ๏ธ ์ค์: Graphify๋ tKB(์ง์๋ฒ ์ด์ค) ํญ๋ชฉ๋ง ๊ทธ๋ํ๋ก ๋ณด์ฌ์ค๋๋ค โ giip ์ด์, ์๋ฒ ์ ๋ณด ๋ฑ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ ์๋์ผ๋ก ํฌํจ๋์ง ์์ต๋๋ค. ํ๋ก์ ํธ์ ์ด์๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์์ด๋ tKB์ ์์ง ์๋ฌด๊ฒ๋ ๋ฑ๋ก๋์ง ์์๋ค๋ฉด ๊ทธ๋ํ๋ ๋น์ด ์์ต๋๋ค. tKB์ ํญ๋ชฉ์ ๋ฃ์ผ๋ ค๋ฉด ์๋ API๋ก ๊ทธ๋ํ ๊ด๋ฆฌํ๊ธฐ ์น์ ์ ์ฐธ๊ณ ํ์ธ์.
๐ ์ฃผ์ ์์ ์ค๋ช
1. ์๋จ ํค๋
ํ์ฌ ๋ ๋๋ง๋ ๋
ธ๋ ์์ ์ ์ฒด ๋
ธ๋ ์, ๊ทธ๋ฆฌ๊ณ ์ฐ๊ฒฐ์ ์๋ฅผ ํ์ / ์ ์ฒด nodes ยท N links ํ์์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
2. ๋ ธ๋ ๊ฒ์
ํค๋์ ๊ฒ์์ฐฝ์ ๋ผ๋ฒจ ๋๋ ๊ฒฝ๋ก(path)์ ์ผ๋ถ๋ฅผ ์ ๋ ฅํ๋ฉด ์ ์ฒด ๋ ธ๋ ์งํฉ์์ ์ผ์นํ๋ ๋ ธ๋๋ฅผ ์ฐพ์ ์ข์ธก์ ๊ฒฐ๊ณผ ๋ชฉ๋ก์ผ๋ก ํ์ํฉ๋๋ค. ๊ฒฐ๊ณผ๋ฅผ ํด๋ฆญํ๋ฉด ํด๋น ๋ ธ๋๊ฐ ๊ทธ๋ํ์ ๋ํ๋๋ฉฐ ์ ํ๋ฉ๋๋ค.
3. 3D ๊ทธ๋ํ ์บ๋ฒ์ค
๋ ธ๋๋ ์ ํ์ ๋ฐ๋ผ ์์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ์ข์ธก ํ๋จ ๋ฒ๋ก์ ํ์๋ ๋๋ก Doc / Spec(ํฉ์), Code / Source(ํ๋์), Tag(๋ น์)์ ๋๋ค. ๋ ธ๋๋ฅผ ํด๋ฆญํ๋ฉด ํด๋น ๋ ธ๋๋ฅผ ์ ํํ์ฌ ์ธ์คํํฐ๋ฅผ ์ด๊ณ , ๋ฐฐ๊ฒฝ์ ํด๋ฆญํ๋ฉด ์ ํ์ด ํด์ ๋ฉ๋๋ค.
4. ๋ ธ๋ ์ธ์คํํฐ (์ฐ์ธก ํจ๋)
์ ํํ ๋ ธ๋์ ์ ํ ๋ฐฐ์ง, ์ฐ๊ฒฐ ์, ๊ฒฝ๋ก๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ ๋ ๊ฐ์ง ๊ด๊ณ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค.
- Backlinks: ์ด ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋(๋ค์ด์ค๋) ๋ ธ๋ ๋ชฉ๋ก
- Outgoing links: ์ด ๋ ธ๋๊ฐ ๊ฐ๋ฆฌํค๋(๋๊ฐ๋) ๋ ธ๋ ๋ชฉ๋ก
๋ชฉ๋ก์ ํญ๋ชฉ์ ํด๋ฆญํ๋ฉด ๊ทธ ๋ ธ๋๋ก ์ด๋(๋๋ฆด๋ค์ด)ํ๋ฉฐ, ์ด์ ๋ ธ๋๋ก ๋์๊ฐ๋ ค๋ฉด ํจ๋ ์ข์๋จ์ ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ์ฌ์ฉํฉ๋๋ค.
5. ๋ฌธ์ ๋ณธ๋ฌธ ํ์
์ธ์คํํฐ์ ๋
ธ๋ ์ ๋ชฉ์ ํด๋ฆญํ๋ฉด ๋ ์ด์ด ํ์
์ด ์ด๋ฆฝ๋๋ค. ๋
ธ๋๊ฐ KB ๋ฌธ์(๊ฒฝ๋ก๊ฐ kb/<๋ฒํธ>)์ธ ๊ฒฝ์ฐ ๋ฌธ์ ๋ณธ๋ฌธ ์ ์ฒด๋ฅผ ๋งํฌ๋ค์ด์ผ๋ก ๋ณด์ฌ์ค๋๋ค. ๊ทธ ์ธ ๋
ธ๋์๋ ํ์ํ ๋ณธ๋ฌธ์ด ์๋ค๋ ์๋ด๊ฐ ๋ํ๋ฉ๋๋ค. Esc ํค๋ก ํ์
์ ๋ซ์ ์ ์์ต๋๋ค.
6. Refresh / Rebuild ๋ฒํผ
ํค๋์ [Refresh] ๋ฒํผ์ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ถ๋ฌ์ต๋๋ค(์ฌ๋น๋์๋ ๋ค๋ฆ). [Rebuild] ๋ฒํผ์ ์ด ํ๋ก์ ํธ(csn)์ tKB ํญ๋ชฉ๋ค๋ก๋ถํฐ ๊ทธ๋ํ(๋ ธ๋ยท์ฃ์ง)๋ฅผ ๋ค์ ์์ฑํฉ๋๋ค. ๋ก๊ทธ์ธํ ์ฌ์ฉ์๋ง Rebuild๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์๋ฃ๋๋ฉด ์๋์ผ๋ก ๊ทธ๋ํ๊ฐ ์๋ก๊ณ ์นจ๋ฉ๋๋ค. Rebuild๋ ํ๋ก์ ํธ ๊ท๋ชจ์ ๋ฐ๋ผ ์ ์ด~์์ญ ์ด๊ฐ ๊ฑธ๋ฆด ์ ์์ต๋๋ค(๋ก๋ฉ ํ์๋ก ํ์ธ ๊ฐ๋ฅ). tKB์ ์ ํญ๋ชฉ์ ์ถ๊ฐ/์์ /์ญ์ ํ ๋ค์๋ ๋ฐ๋์ Rebuild๋ฅผ ๋๋ฌ์ผ ๊ทธ๋ํ์ ๋ฐ์๋ฉ๋๋ค.
๐ ๏ธ ํ์ฉ ํ
- ๋ ๋ณด๊ธฐ: ๊ทธ๋ํ๋ ์ฑ๋ฅ์ ์ํด ์ค์๋ ์์ 50๊ฐ ๋ ธ๋๋ง ๋จผ์ ํ์ํฉ๋๋ค. ํ๋จ ์ค์์ [Load N more] ๋ฒํผ์ผ๋ก ๋ค์ 50๊ฐ๋ฅผ ์ถ๊ฐ๋ก ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค.
- ์๋ก๊ณ ์นจ: ํค๋ ์ฐ์ธก์ [Refresh] ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ถ๋ฌ์ต๋๋ค(Rebuild์๋ ๋ค๋ฆ โ Rebuild๋ ์์ [Rebuild] ๋ฒํผ์ ์ฌ์ฉํ์ธ์).
๐ก ์ ์ ์ฌํญ
- ํ๋ก์ ํธ๊ฐ ์ ํ๋์ง ์์ผ๋ฉด "No Project Selected" ํ๋ฉด์ด ํ์๋ฉ๋๋ค. ์๋จ ๋ด๋น๊ฒ์ด์ ์์ ํ๋ก์ ํธ๋ฅผ ์ ํํ์ธ์.
- ๊ทธ๋ํ ์กฐํ๋ ๋ก๊ทธ์ธ ์์ด๋ ๊ฐ๋ฅํ์ง๋ง, KB ๋ฌธ์์ ๋ณธ๋ฌธ์ ๋ก๊ทธ์ธ(์ธ์ฆ ํ ํฐ)์ด ์์ด์ผ ์ด๋ํ ์ ์์ต๋๋ค.
๐ API๋ก ๊ทธ๋ํ ๊ด๋ฆฌํ๊ธฐ (์ถ๊ฐยท์์ ยท์ญ์ ยท์ฌ๋น๋)
๐ก ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์๋ ํ๋ฉด์ [์ฌ๋น๋] ๋ฒํผ(์ "์ฃผ์ ์์ ์ค๋ช " ์ฐธ๊ณ )์ ์ฐ๋ฉด ์ถฉ๋ถํฉ๋๋ค. ์๋ API ๋ฐฉ๋ฒ์ ๋ฒํผ์ ์ธ ์ ์๋ ๊ฒฝ์ฐ(์คํฌ๋ฆฝํธ/์๋ํ, ๋๋ ๋ฑ๋ก ๋ฑ)๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
Graphify ๊ทธ๋ํ๋ KB ํญ๋ชฉ(tKB)์์ ํ์๋ฉ๋๋ค. ํญ๋ชฉ์ API๋ก ์ถ๊ฐยท์์ ยท์ญ์ ํ ๋ค ์ฌ๋น๋๋ฅผ ํธ์ถํ๋ฉด ๊ทธ๋ํ์ ๋ฐ์๋ฉ๋๋ค. ์ฐ๊ฒฐ(์ฃ์ง)์ ์ฌ๋์ด ์ง์ ๊ธ๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋น๋๊ฐ ํญ๋ชฉ๋ค๋ก๋ถํฐ ์๋ ์์ฑํฉ๋๋ค.
- ํธ์คํธ:
https://giipfaw.azurewebsites.net - ์ธ์ฆ: ๋ชจ๋ ์ฐ๊ธฐ API๋ ํค๋
x-api-key์ ๋ก๊ทธ์ธ ์ฌ์ฉ์์ AK ๋๋ ํ๋ก์ ํธ ์ค์ฝํ SK๊ฐ ํ์ํฉ๋๋ค. ํค๋ ์์ ์csn๋ฒ์ ์์์๋ง ์ถ๊ฐยท์์ ยท์ญ์ ยท์ฌ๋น๋ํ ์ ์์ต๋๋ค. - ์์
ํ๋ฆ:
์ถ๊ฐ/์์ /์ญ์ (giipKb)โ์ฌ๋น๋(giipGraphifyRebuild)โํ์ธ(giipGraphify)
1) ๋
ธ๋ ์ถ๊ฐ โ giipKb POST
curl -X POST "https://giipfaw.azurewebsites.net/api/giipKb" \
-H "x-api-key: <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"}'
title์ด ๊ทธ๋ํ์ ๋ ธ๋ ๋ผ๋ฒจ,content๋ ๋ ธ๋ ํด๋ฆญ ์ ์ด๋ฆฌ๋ ๋ณธ๋ฌธ ํ์ (๋งํฌ๋ค์ด)์ ๋๋ค.extRefId๋ฅผ ์ง์ ํ๋ฉด ๋ฉฑ๋ฑ upsert โ ๊ฐ์ ๊ฐ์ผ๋ก ๋ค์ ๋ณด๋ด๋ฉด ์๋ก ๋ง๋ค์ง ์๊ณ ๊ฐฑ์ ํฉ๋๋ค.- ์๋ต:
{ "success": true, "kbSn": 844, "message": "..." }
2) ๋
ธ๋ ์์ โ giipKb PUT
curl -X PUT "https://giipfaw.azurewebsites.net/api/giipKb" \
-H "x-api-key: <AK_OR_SK>" -H "Content-Type: application/json" \
-d '{"kbSn":844,"title":"OAuth ์ฝ๋ฐฑ 500 (ํด๊ฒฐ)","content":"## ์กฐ์น\nํ์์์ 30sโ90s","tags":"auth,oauth,resolved"}'
kbSn์ผ๋ก ์์ ํ ํญ๋ชฉ์ ์ง์ ํฉ๋๋ค.
3) ๋
ธ๋ ์ญ์ โ giipKb DELETE
curl -X DELETE "https://giipfaw.azurewebsites.net/api/giipKb?kbSn=844" \
-H "x-api-key: <AK_OR_SK>"
4) ์ฌ๋น๋ (์ฐ๊ฒฐ ์์ฑ) โ giipGraphifyRebuild POST
ํญ๋ชฉ์ ์ถ๊ฐ/์์ /์ญ์ ํ ๋ค ๋ฐ๋์ ํธ์ถํด์ผ ๊ทธ๋ํ์ ๋ฐ์๋ฉ๋๋ค. ํด๋น csn์ ๋
ธ๋ยท์ฃ์ง๋ฅผ KB ํญ๋ชฉ๋ค๋ก๋ถํฐ ๋ค์ ์์ฑํฉ๋๋ค.
curl -X POST "https://giipfaw.azurewebsites.net/api/giipGraphifyRebuild" \
-H "x-api-key: <AK_OR_SK>" -H "Content-Type: application/json" \
-d '{"csn":47}'
- ์๋ต:
{ "success": true, "csn": 47, "nodes": 838, "edges": 11, "message": "Graph rebuilt" } - ์ ํ ํ๋ผ๋ฏธํฐ(๋์ฉ๋ ํ๋ก์ ํธ ์ฑ๋ฅ ํ๋):
maxNodes: ๊ทธ๋ํํํ ์ต์ ํญ๋ชฉ ์ํ (๊ธฐ๋ณธ 400)scanLen: ์ฐ๊ฒฐ ํ์ ์ ๋ณธ๋ฌธ ์๋ถ๋ถ ์ค์บ ๊ธธ์ด (๊ธฐ๋ณธ 1500)
-d '{"csn":47,"maxNodes":800,"scanLen":2000}'
5) ๊ทธ๋ํ ์กฐํ โ giipGraphify GET
ํ์ด์ง๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฝ๊ธฐ API์ ๋๋ค(์ธ์ฆ ์์ด ์กฐํ ๊ฐ๋ฅ). ์ง์ ํ์ธํ ๋:
curl "https://giipfaw.azurewebsites.net/api/giipGraphify?csn=47"
- ์๋ต:
{ "nodes": [...], "links": [...] }
ํ๋ ์ ์ฒด ์ฌ์์ ๐ API ๋ ํผ๋ฐ์ค ๊ฐ์ ๋ฅผ ์ฐธ์กฐํ์ธ์.
๐ฆ ๋ฐ์ดํฐ๋ ์ด๋์ ์ ์ฅ๋๋์? (์์ฝ)
API๋ก ์ถ๊ฐํ ํญ๋ชฉ์ tKB ํ
์ด๋ธ์ ์ ์ฅ๋๋ฉฐ, ๊ทธ๋ํ ํ
์ด๋ธ(tBlogGraphNodes/tBlogGraphEdges)์ ์ฌ๋น๋๋ฅผ ํธ์ถํ ๋๋ง๋ค tKB๋ก๋ถํฐ ์๋ก ๋ง๋ค์ด์ง๋ ํ์ ๊ฒฐ๊ณผ์
๋๋ค. tKB์ ์๋ ๋ฐ์ดํฐ๋ ์๋ฌด๋ฆฌ ์ฌ๋น๋ํด๋ ๊ทธ๋ํ์ ๋ํ๋์ง ์์ต๋๋ค โ "์ด์๋ ์๋๋ฐ ๊ทธ๋ํ์ ์ ๋ณด์ธ๋ค"์ ๋๋ถ๋ถ ์์ธ์ด ์ฌ๊ธฐ ์์ต๋๋ค.
(์ด๋ฏธ ์ด์ ์ค) giip ์ธ์
์ด ์ถ์ ํ ์์ง๋์ด๋ง ๋
ธํ์ฐ(K-Layer)๋ ๋งค์ผ ์๋์ผ๋ก refType='k-layer-daily'(ํ๊ทธ k-layer-wiki,daily)๋ก tKB์ ์ ์ฌ๋ฉ๋๋ค โ ์ด ๋ฌธ์๋ค๋ ๋ค์ Rebuild ๋ DOC ๋
ธ๋๋ก ํก์๋์ด ๋ ์ง๋ณ ํด๋ฌ์คํฐ๋ก ๋ณด์
๋๋ค. (์ ๊ท) ์ฌ๋น๋ ์ ๊ทธ csn์ ํ๋ก์ ํธ ์ธ์ด ์ค์ (cLang)์ ๋ง์ถฐ ๊ทธ๋ํ ํ
์คํธ๋ฅผ ์๋ ๋ฒ์ญํ๋ ๊ธฐ๋ฅ๋ ์ถ๊ฐ๋์์ต๋๋ค. csn์ ์ธ์ด ์ค์ ์ ๋ฐ๊พธ๋ฉด ๋ค์ Rebuild๋ถํฐ ๊ทธ๋ํ ํ์ ์ธ์ด๊ฐ ๋ฐ๋๋๋ค. ์์ธ ๋ฐ์ดํฐ ํ๋ฆ๊ณผ ํ๋ ์ค๋ช
์ ๐ API ๋ ํผ๋ฐ์ค ๊ฐ์ ์ "๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ํ๋ฆ" ์น์
์ ์ฐธ๊ณ ํ์ธ์.
๋ฌธ์ ํด๊ฒฐ
| ์ฆ์ | ์์ธ | ํด๊ฒฐ |
|---|---|---|
| "No Project Selected"๋ง ํ์๋จ | ํ๋ก์ ํธ(csn)๊ฐ ์ง์ ๋์ง ์์ | ์๋จ์์ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค. |
| ๋ฌธ์ ๋ณธ๋ฌธ ํ์ ์ "๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค" ํ์ | KB ๋ณธ๋ฌธ ์กฐํ์ ์ธ์ฆ ํ ํฐ์ด ์์ | ๋ก๊ทธ์ธ ํ ๋ค์ ๋ ธ๋ ์ ๋ชฉ์ ํด๋ฆญํฉ๋๋ค. |
| ๋ ธ๋์ ๋ณธ๋ฌธ์ด ์๋ค๊ณ ํ์๋จ | ํด๋น ๋
ธ๋๊ฐ KB ๋ฌธ์(kb/โฆ)๊ฐ ์๋ | ๋ณธ๋ฌธ์ KB ๋ฌธ์ ๋ ธ๋์๋ง ์ ๊ณต๋ฉ๋๋ค. ์ ์ ๋์์ ๋๋ค. |
| ์ผ๋ถ ๋ ธ๋๊ฐ ๊ทธ๋ํ์ ๋ณด์ด์ง ์์ | ์ค์๋ ์์ 50๊ฐ๋ง ์ฐ์ ํ์๋จ | ํ๋จ [Load N more]๋ก ์ถ๊ฐ ๋ ธ๋๋ฅผ ๋ถ๋ฌ์ค๊ฑฐ๋ ๊ฒ์์ผ๋ก ํด๋น ๋ ธ๋๋ฅผ ์ฐพ์ต๋๋ค. |
API Error ๋๋ ๋ก๋ฉ ์คํจ | ์ธ์ ๋ง๋ฃ ๋๋ ์๋ฒ ์๋ต ์ค๋ฅ | ์ค๋ฅ ๋ฐฐ๋์ [Retry]๋ฅผ ๋๋ฅด๊ฑฐ๋ ๋ค์ ๋ก๊ทธ์ธํฉ๋๋ค. |
| ์ด์/๋ฐ์ดํฐ๊ฐ ์๋๋ฐ ๊ทธ๋ํ๊ฐ ๋น์ด์์ | tKB์ ์์ง ๋ฐ์ ์ ๋จ | ์ฌ๋น๋ ๋ฒํผ์ ๋๋ฅด๊ธฐ ์ ์ ๋จผ์ giipKb API๋ก ๋ด์ฉ์ tKB์ ์ถ๊ฐํด์ผ ํฉ๋๋ค(์ API ์น์ ์ฐธ์กฐ). |
๋ฒ์ : 1.1
์ต์ข
์
๋ฐ์ดํธ: 2026-09-06
์์ค ํ์ผ: giipv3/public/help/graphify.ko.md