BizSpring.ai

์ง€์‹์„ผํ„ฐ / ๋ ˆํผ๋Ÿฐ์Šค

๐Ÿ“ 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_codeCOMMON, GEOCARE, DATA_ENG, PREMIUM_GEO, GEO_COMMERCEํ•„์ˆ˜
    source_typemanualโš ๏ธ ๋ฐ˜๋“œ์‹œ manual (notion์ด๋ฉด ๋™๊ธฐํ™” ์ถฉ๋Œ)
    environmentqaCHECK ์ œ์•ฝ์กฐ๊ฑด: qa๋งŒ ํ—ˆ์šฉ
    is_activetruefalse๋ฉด ๊ฒ€์ƒ‰ ์ œ์™ธ

    ์„ ํƒ ํ•„๋“œ

    ํ•„๋“œ๊ฐ’์„ค๋ช…
    category_idUUID์•„๋ž˜ ์นดํ…Œ๊ณ ๋ฆฌ ์ฐธ์กฐ
    metadataJSONBtags, version, author ๋“ฑ
    source_urlURL์›๋ณธ ๋งํฌ (์žˆ์œผ๋ฉด)

    ์นดํ…Œ๊ณ ๋ฆฌ ID

    ์ฝ”๋“œID์ด๋ฆ„
    GUIDE753edf2d-171d-4edb-87a0-20fe9e875712๊ฐ€์ด๋“œ ๋ฌธ์„œ
    TECH5f5efdea-2a5d-47bb-ae70-25ee0d3ff7de๊ธฐ์ˆ  ๋ฌธ์„œ
    PRODUCT8145df4d-65ce-4d8e-bdf3-c637a80d531b์ œํ’ˆ ์ „๋žต
    FAQb717c327-451a-44e8-a2a1-cc9c1fea42b0FAQ

    ---

    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_typeSupabase ์ง์ ‘ ์ˆ˜์ •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๋งŒ ์‚ฌ์šฉ

    ๋‹ค๋ฅธ ํ‘œํ˜„: Markdown ยท JSON ยท ์ตœ์ข… ๊ฐฑ์‹  2026-08-24