๐ KHub ์ง์ ๋ฑ๋ก ํ์ค ๊ฐ์ด๋ (Notion ์ฐํ)
# ๐ KHub ์ง์ ๋ฑ๋ก ํ์ค ๊ฐ์ด๋ > ์ต์ข
์
๋ฐ์ดํธ: 2026-02-17 KST > KHub ๊ฒ์: khub_search("KHub ์ง์ ๋ฑ๋ก", project_code:"COMMON") --- ## ์ ์ง์ ๋ฑ๋ก์ธ๊ฐ | ๊ฒฝ๋ก | ๋ฐฉ์ | ์์ | ๋ถํ | ์ถ์ฒ ์ฉ๋ |
ํต์ฌ ์์ฝ
# ๐ KHub ์ง์ ๋ฑ๋ก ํ์ค ๊ฐ์ด๋
> ์ต์ข ์ ๋ฐ์ดํธ: 2026-02-17 KST
> KHub ๊ฒ์: khub_search("KHub ์ง์ ๋ฑ๋ก", project_code:"COMMON")
---
์ ์ง์ ๋ฑ๋ก์ธ๊ฐ
| ๊ฒฝ๋ก | ๋ฐฉ์ | ์์ | ๋ถํ | ์ถ์ฒ ์ฉ๋ |
|---|---|---|---|---|
| Notion ๊ฒฝ์ | Notion ์์ฑ โ KHUB-002 ๋๊ธฐํ | 1์๊ฐ | ๋์ (๋ฐฉ ์ฃฝ์ ๋ฐ์) | ์ธ๋ถ ํํธ๋ ๊ณต์ ๋ฌธ์๋ง |
| ์ง์ ๋ฑ๋ก | Supabase INSERT (HTTP or MCP) | ์ฆ์ | ์์ | DevLog, ๊ธฐ์ ๋ฌธ์, ์์ ๊ธฐ๋ก |
ํ์ฌ ๋ฌธ์ ๋ถํฌ: manual 41๊ฐ vs notion 37๊ฐ โ ์ด๋ฏธ ์ง์ ๋ฑ๋ก์ด ๊ณผ๋ฐ
---
๋ฑ๋ก ๋ฐฉ๋ฒ
๋ฐฉ๋ฒ A: Supabase MCP (supabase-growthplatform) โ ์งง์ ๋ฌธ์
execute_sql๋ก ์ง์ INSERT:
INSERT INTO khub_documents (
title, content, project_code, source_type, environment,
is_active, category_id, metadata
) VALUES (
'{์ ๋ชฉ}',
'{๋งํฌ๋ค์ด ๋ด์ฉ}',
'{ํ๋ก์ ํธ์ฝ๋}',
'manual',
'qa',
true,
'{์นดํ
๊ณ ๋ฆฌID}',
'{"tags": ["ํ๊ทธ1", "ํ๊ทธ2"], "version": "1.0"}'::jsonb
) RETURNING id, title;
๋ฐฉ๋ฒ B: HTTP API (bash_tool) โ ๊ธด ๋ฌธ์์ฉ (๊ถ์ฅ)
ํ์ผ๋ก ๋ง๋ ํ curl POST:
# AP-08: API ํค ์กฐํ
SB_KEY=$(Supabase gp_admin_secrets์์ ์กฐํ)
SB_URL="https://ihzttwgqahhzlrqozleh.supabase.co"
# ํ์ผ ๋ด์ฉ์ JSON ์ด์ค์ผ์ดํ
CONTENT=$(cat ํ์ผ.md | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))")
# AP-01: 3ํค๋ ํ์
curl -s -X POST "${SB_URL}/rest/v1/khub_documents" \
-H "apikey: ${SB_KEY}" \
-H "Authorization: Bearer ${SB_KEY}" \
-H "Content-Type: application/json" \
-H "Prefer: return=representation" \
-d "{
\"title\": \"๋ฌธ์ ์ ๋ชฉ\",
\"content\": ${CONTENT},
\"project_code\": \"COMMON\",
\"source_type\": \"manual\",
\"environment\": \"qa\",
\"is_active\": true,
\"category_id\": \"753edf2d-171d-4edb-87a0-20fe9e875712\",
\"metadata\": {\"tags\": [\"ํ๊ทธ\"]}
}"
---
ํ์ ํ๋
| ํ๋ | ๊ฐ | ์ค๋ช |
|---|---|---|
| title | ๋ฌธ์ ์ ๋ชฉ | ์ด๋ชจ์ง ํฌํจ ๊ฐ๋ฅ |
| content | ๋งํฌ๋ค์ด ๋ณธ๋ฌธ | ๊ธธ์ด ์ ํ ์์ |
| project_code | COMMON, GEOCARE, DATA_ENG, PREMIUM_GEO, GEO_COMMERCE | ํ์ |
| source_type | manual | โ ๏ธ ๋ฐ๋์ manual (notion์ด๋ฉด ๋๊ธฐํ ์ถฉ๋) |
| environment | qa | CHECK ์ ์ฝ์กฐ๊ฑด: qa๋ง ํ์ฉ |
| is_active | true | false๋ฉด ๊ฒ์ ์ ์ธ |
์ ํ ํ๋
| ํ๋ | ๊ฐ | ์ค๋ช |
|---|---|---|
| category_id | UUID | ์๋ ์นดํ ๊ณ ๋ฆฌ ์ฐธ์กฐ |
| metadata | JSONB | tags, version, author ๋ฑ |
| source_url | URL | ์๋ณธ ๋งํฌ (์์ผ๋ฉด) |
์นดํ ๊ณ ๋ฆฌ ID
| ์ฝ๋ | ID | ์ด๋ฆ |
|---|---|---|
| GUIDE | 753edf2d-171d-4edb-87a0-20fe9e875712 | ๊ฐ์ด๋ ๋ฌธ์ |
| TECH | 5f5efdea-2a5d-47bb-ae70-25ee0d3ff7de | ๊ธฐ์ ๋ฌธ์ |
| PRODUCT | 8145df4d-65ce-4d8e-bdf3-c637a80d531b | ์ ํ ์ ๋ต |
| FAQ | b717c327-451a-44e8-a2a1-cc9c1fea42b0 | FAQ |
---
DevLog ๋ฑ๋ก ํ ํ๋ฆฟ
Snapshot (Tier 1) โ ๋ฎ์ด์ฐ๊ธฐ
๊ธฐ์กด Snapshot์ด ์์ผ๋ฉด UPDATE, ์์ผ๋ฉด INSERT:
-- ๊ธฐ์กด Snapshot ์ฐพ๊ธฐ
SELECT id FROM khub_documents
WHERE title LIKE '%DevLog Snapshot%'
AND project_code = '{์ฝ๋}'
AND is_active = true;
-- ์์ผ๋ฉด UPDATE
UPDATE khub_documents
SET content = '{์ ๋ด์ฉ}', updated_at = now()
WHERE id = '{๊ธฐ์กดID}';
-- ์์ผ๋ฉด INSERT
INSERT INTO khub_documents (
title, content, project_code, source_type, environment,
is_active, category_id, metadata
) VALUES (
'๐ธ {ํ๋ก์ ํธ} DevLog Snapshot',
'{๋ด์ฉ โ 3000์ ์ดํ}',
'{์ฝ๋}', 'manual', 'qa', true,
'753edf2d-171d-4edb-87a0-20fe9e875712',
'{"tags": ["DevLog", "Snapshot"], "tier": "1"}'::jsonb
) RETURNING id, title;
Task DevLog (Tier 2) โ ์ ๊ท ์์ฑ
INSERT INTO khub_documents (
title, content, project_code, source_type, environment,
is_active, category_id, metadata
) VALUES (
'๐ {์์
๋ช
} โ DevLog',
'{๋งํฌ๋ค์ด ๋ด์ฉ}',
'{์ฝ๋}', 'manual', 'qa', true,
'753edf2d-171d-4edb-87a0-20fe9e875712',
'{"tags": ["DevLog", "Task"], "tier": "2"}'::jsonb
) RETURNING id, title;
---
์์ /์ญ์
์์ (manual ๋ฌธ์๋ง)
UPDATE khub_documents
SET content = '{์ ๋ด์ฉ}', title = '{์ ์ ๋ชฉ}', updated_at = now()
WHERE id = '{๋ฌธ์ID}' AND source_type = 'manual';
๋นํ์ฑํ (์ญ์ ๋์ )
UPDATE khub_documents
SET is_active = false, updated_at = now()
WHERE id = '{๋ฌธ์ID}';
---
์ถฉ๋ ๋ฐฉ์ง ๊ท์น
| source_type | Supabase ์ง์ ์์ | Notion ์์ | ๋น๊ณ |
|---|---|---|---|
| manual | โ ์์ | โ ํด๋น ์์ | ์ง์ ๋ฑ๋ก ๋ฌธ์ |
| notion | โ ๊ธ์ง | โ | ๋ค์ ๋๊ธฐํ ์ Notion ๋ด์ฉ์ผ๋ก ์๋ณต๋จ |
์ ๋ ๊ท์น: source_type=notion ๋ฌธ์๋ฅผ Supabase์์ ์ง์ UPDATEํ์ง ๋ง ๊ฒ
---
๊ฒ์ ํ์ธ
๋ฑ๋ก ํ ๋ฐ๋ก ๊ฒ์ ๊ฐ๋ฅ (ํค์๋ ๊ฒ์ ์ฆ์, ์๋งจํฑ ๊ฒ์ ~30๋ถ ํ):
khub_search("{ํค์๋}", project_code:"{์ฝ๋}")
khub_get_document("{๋ฐํ๋ ID}")
---
๊ฐ ํ๋ก์ ํธ Instructions์ ๋ณต๋ถํ ์น์
## KHub/DevLog ๋ฑ๋ก ๊ท์น
๋ฑ๋ก: Supabase ์ง์ INSERT (Notion ๊ฒฝ์ ๊ธ์ง โ ๋ถํ๋ก ๋ฐฉ ์ฃฝ์ ๋ฐ์)
- DB: supabase-growthplatform (ihzttwgqahhzlrqozleh)
- source_type: 'manual' ํ์
- environment: 'qa' ํ์
- ๊ฐ์ด๋: khub_search("KHub ์ง์ ๋ฑ๋ก", project_code:"COMMON")
DevLog:
- Snapshot(Tier1): ๊ธฐ์กด ๋ฌธ์ UPDATE (๊ฐ์ ์ ๋ชฉ ์ ์ง, 3000์ ์ดํ)
- Task(Tier2): ์ ๊ท INSERT (๐ {์์
๋ช
} โ DevLog)
- โ Notion ๊ฒฝ์ ๊ธ์ง โ ์ง์ INSERT๋ง ์ฌ์ฉ