BizSpring.ai

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

๐Ÿ“‹ T-AUTO-INJECT-UNIFIED-v1 โ€” JSON-LD ์ž๋™ ์†ก์ถœ ํ†ตํ•ฉ ํŠธ๋ž™ (๊ณจ๊ฒฉ, G0 ๋Œ€๊ธฐ)

# ๐Ÿ“‹ T-AUTO-INJECT-UNIFIED-v1 โ€” JSON-LD ์ž๋™ ์†ก์ถœ ํ†ตํ•ฉ ํŠธ๋ž™ > ์ž‘์„ฑ: 2026-05-08 KST | ์ƒํƒœ: ๐Ÿ›‘ **G0 ๋Œ€๊ธฐ (๋ฐœ๋™ โŒ)** > ์–‘ ๋ฐฉ ๊ณต๋™ ํŠธ๋ž™ (GEOCARE + PREMIUM_GEO) > ์ง ํ‘œ์ค€: STD-JSONLD-UNIFI

ํ•ต์‹ฌ ์š”์•ฝ

    # ๐Ÿ“‹ T-AUTO-INJECT-UNIFIED-v1 โ€” JSON-LD ์ž๋™ ์†ก์ถœ ํ†ตํ•ฉ ํŠธ๋ž™

    > ์ž‘์„ฑ: 2026-05-08 KST | ์ƒํƒœ: ๐Ÿ›‘ G0 ๋Œ€๊ธฐ (๋ฐœ๋™ โŒ)

    > ์–‘ ๋ฐฉ ๊ณต๋™ ํŠธ๋ž™ (GEOCARE + PREMIUM_GEO)

    > ์ง ํ‘œ์ค€: STD-JSONLD-UNIFIED v0.1 (๋ณธ ๋ฌธ์„œ ยง6์— ์ธ๋ผ์ธ) / ํ˜ธ์ถœ ํ‘œ์ค€: schema.geocare.ai ํ˜ธ์ถœ v1.0 (๋ณ„๋„ KHub ๋“ฑ์žฌ)

    > ์ •๋ณธ ๊ทผ๊ฑฐ: BMP ์ •์ฑ… v1.0 (866eb3de) + Phase D DevLog (0c006e31) + ๋ณธ ์„ธ์…˜ ๋ถ„์„

    ---

    0. ํ•œ ๋ฌธ์žฅ ์ •์˜

    3๊ณ„์—ด(sitegeo/brandgeo/ocr) JSON-LD๋ฅผ ๋‹จ์ผ SSOT(bmp_jsonld_delivery)๋กœ ํ†ตํ•ฉ + ์ธ์ฆยท์ž๋™ํ™”ยท๊ด€์ธก์„ ์–‘ ๋ฐฉ ๊ณต๋™ ํŠธ๋ž™์œผ๋กœ 6์ฃผ+2์ฃผ ์•ˆ์ •ํ™” ์™„์„ฑ.

    ---

    1. โš ๏ธ G0 ๋ฐœ๋™ ์กฐ๊ฑด (5๊ฑด ๋ชจ๋‘ ์ถฉ์กฑ ์‹œ ์ง„์ž…)

    #์กฐ๊ฑดํ˜„ ์ƒํƒœ์ฑ…์ž„
    1T-RENEW-GEOCARE-BMP v1.1 ๋ณด๊ฐ•๊ถŒ๊ณ  ํšŒ์‹ ๐Ÿ›‘ ๋Œ€๊ธฐ๊ตฌ์žํ›ˆ ๋Œ€ํ‘œ (Asana 1214608078467144 ์ฝ”๋ฉ˜ํŠธ ํšŒ์‹ )
    2์–‘ PO ๋ฏธํŒ… (์ฐฐ์Šค + ๊ตฌ์žํ›ˆ)๋ฏธ์ •1๋ฒˆ ํšŒ์‹  ํ›„ ์ผ์ • ํ•ฉ์˜
    3๋‘ ๋ฐฉ ์ฑ…์ž„ ๋ถ„๋‹ด ํ•ฉ์˜ (GEOcare ์˜์—ญ vs BMP ์˜์—ญ ๋ผ์ธ)๋ฏธ์ •๋ฏธํŒ… ๊ฒฐ๊ณผ
    4Phase D DevLog v3.0 ๊ฐฑ์‹  (PREMIUM_GEO ๋‹จ๋… ์ž‘์—…)๋ฏธ์ •3๋ฒˆ ํ›„ PREMIUM_GEO ์ธก ์ง„ํ–‰
    5STD-JSONLD-UNIFIED ์ •๋ณธ ํ•ฉ์˜ (v1.0)v0.1 ๋ณธ ๋ฌธ์„œ ยง1~4 ํ›„ ์–‘ ๋ฐฉ ํ•ฉ์˜

    โ†’ 5๊ฑด ์ค‘ 1๊ฑด์ด๋ผ๋„ ๋ฏธ์ถฉ์กฑ ์‹œ ๋ณธ ํŠธ๋ž™ ๋ฐœ๋™ โŒ.

    โ†’ G0 ๋ฏธ์ถฉ์กฑ ์ƒํƒœ์—์„œ ๋ถ€๋ถ„ ์ž‘์—…(์˜ˆ: gp_geoex_inject_keys ๋‹จ๋… DDL) ๊ธˆ์ง€ โ€” 6์ฃผ ํ›„ ํ•ฉ์˜ ๊ฒฐ๊ณผ๋กœ ํ๊ธฐ ๊ฐ€๋Šฅ์„ฑ โ†‘.

    ---

    2. ๋ฐฐ๊ฒฝ โ€” ๋ณธ ํŠธ๋ž™ ์‹ ์„ค ์‚ฌ์œ 

    2.1 ๋ฐœ๊ฒฌ (5/8 ๋ณธ ์„ธ์…˜)

    - sitegeo (gp_geoex_jsonld_log): 701๊ฑด, Schema Builder UI, ์‚ฌ์šฉ์ž ์ง์ ‘ ์ž…๋ ฅ

    - brandgeo (bmp_jsonld_delivery): 16๊ฑด, Phase D ์–ด๋“œ๋ฏผ ์ˆ˜๋™ ํŠธ๋ฆฌ๊ฑฐ, EEAT์™€ ๋ฌด๊ด€

    - ocr (gp_geoex_ocr_results): 483๊ฑด, schema ๋ณ€ํ™˜ ๋ฏธ์™„ (raw text + jsonb๋งŒ)

    2.2 ๋ณธ ํŠธ๋ž™์˜ ํ•„์—ฐ์„ฑ

    T-RENEW-GEOCARE-BMP v1.1 ๋ณด๊ฐ•๊ถŒ๊ณ ๊ฐ€ GEOcare โ†” BMP ๊ธฐ๋Šฅ ์žฌ๋ฐฐ์น˜๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ, JSON-LD ์˜์—ญ์ด ์ •ํ™•ํžˆ ๊ทธ ์‚ฌ์ด์˜ ๋ชจํ˜ธ ์ง€๋Œ€. ๋ณธ ํŠธ๋ž™์€ T-RENEW์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ธก๋ฉด ์ •ํ•ฉ ์ž‘์—….

    2.3 5/11 luvhunter PoC์™€์˜ ๋ถ„๋ฆฌ

    ---

    3. 6 Phase ๊ตฌ์กฐ (์ด 6์ฃผ + ์•ˆ์ •ํ™” 2์ฃผ)

    Phase 1 โ€” ์ธ์ฆ ์ธํ”„๋ผ + Phase D ์ธ์ฆ ํ†ตํ•ฉ (1.5์ฃผ)

    GEOcare ์˜์—ญ:

    BMP ์˜์—ญ (PREMIUM_GEO ์ž‘์—…):

    ๊ฒ€์ฆ: ํ† ํฐ ๊ฒ€์ฆ ๋ถ€ํ•˜ + Origin ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ + ๋งŒ๋ฃŒ/์žฌ๋ฐœ๊ธ‰/ํ๊ธฐ ์‹œ๋‚˜๋ฆฌ์˜ค

    Phase 2 โ€” Phase D ์ž๋™ํ™” ๋ถ€ํ™œ (1์ฃผ)

    PREMIUM_GEO ์ž‘์—…:

    Phase 3 โ€” OCR โ†’ schema ๋ณ€ํ™˜ ํŒŒ์ดํ”„๋ผ์ธ (2์ฃผ) โญ ํ•ต์‹ฌ ์ฐจ๋ณ„ํ™”

    GEOcare ์˜์—ญ:

    - lifestyle/model_wearing/product_only โ†’ Product image[] ๋ณด๊ฐ•

    - detail_text/spec_table โ†’ Product description + additionalProperty

    - care_guide/care_instruction โ†’ HowTo ์‹ ๊ทœ

    - infographic โ†’ FAQPage ์‹ ๊ทœ

    - size_chart โ†’ PropertyValue

    BMP ์˜์—ญ:

    Phase 4 โ€” sitegeo ํ†ตํ•ฉ + ๋ฐ์ดํ„ฐ ์ •ํ•ฉ (1์ฃผ)

    GEOcare ์˜์—ญ:

    - ์˜ต์…˜ A: ๋ชจ๋‘ ๋งˆ์ด๊ทธ ํ›„ deprecated (๋‹จ์ผ SSOT)

    - ์˜ต์…˜ B: ์‚ฌ์šฉ์ž ์ง์ ‘ ์ž…๋ ฅ ์ด๋ ฅ์€ ์˜๊ตฌ ๋ณด์กด, ์šด์˜ ์†ก์ถœ๋งŒ bmp ํ™œ์šฉ (๊ถŒ์žฅ)

    ๊ฒ€์ฆ: ์ด๋ฐ”๋‚˜ ์‚ฌ๋ก€ (sitegeo 8 + brandgeo 12 + ocr 216 โ†’ ํ†ตํ•ฉ ๊ฒฐ๊ณผ ์ธก์ •)

    Phase 5 โ€” ๊ด€์ธกยท์šด์˜ยท์•Œ๋ฆผ (1์ฃผ)

    BMP ์˜์—ญ (์–ด๋“œ๋ฏผ UI ํ™•์žฅ):

    Phase 6 โ€” ๊ณต์‹ ํ‘œ์ค€ํ™” + ์™ธ๋ถ€ ํ†ต๋ณด (0.5์ฃผ)

    ์–‘ ๋ฐฉ ๊ณต๋™:

    ์•ˆ์ •ํ™” (2์ฃผ)

    ---

    4. ์˜์—ญ ๊ฒฉ๋ฒฝ ๋งคํŠธ๋ฆญ์Šค

    ์ž‘์—…์˜์—ญ์ฑ…์ž„
    gp_geoex_inject_keys ํ…Œ์ด๋ธ”/RPCGEOcare ๋‹จ๋…๋ณธ ๋ฐฉ
    OCR โ†’ schema ๋ณ€ํ™˜ ํŒŒ์ดํ”„๋ผ์ธGEOcare ๋‹จ๋…๋ณธ ๋ฐฉ
    gp_geoex_jsonld_log ์ •๊ทœํ™”/๋งˆ์ด๊ทธGEOcare ๋‹จ๋…๋ณธ ๋ฐฉ
    bmp_jsonld_delivery source/install_method ํ‘œ์ค€BMP ๋‹จ๋…PREMIUM_GEO ๋ฐฉ
    geobh-jsonld EF v3 ํŒจ์น˜BMP ๋‹จ๋…PREMIUM_GEO ๋ฐฉ
    jsonld-serve EF ํŒจ์น˜BMP ๋‹จ๋…PREMIUM_GEO ๋ฐฉ
    PDP-SCHED ์ž๋™ ์Šค์ผ€์ค„ ๋ถ€ํ™œBMP ๋‹จ๋…PREMIUM_GEO ๋ฐฉ
    ์–ด๋“œ๋ฏผ UI (PDP ํƒญ ํ™•์žฅ)BMP ๋‹จ๋…PREMIUM_GEO ๋ฐฉ
    OCR ๋ณ€ํ™˜ ๊ฒฐ๊ณผ โ†’ bmp ์ ์žฌ ์ •์ฑ…์–‘ ๋ฐฉ ํ•ฉ์˜๊ณต๋™
    Phase 6 ์ •๋ณธ ํ‘œ์ค€ ๋“ฑ์žฌ์–‘ ๋ฐฉ ๊ณต๋™๊ณต๋™

    ---

    5. ๋ณธ ์„ธ์…˜(2026-05-08) ์‚ฐ์ถœ๋ฌผ โ€” ๋ณธ ํŠธ๋ž™ ์ž๋ฃŒ๋กœ ๋ณด์กด

    ์ž์‚ฐ์œ„์น˜์šฉ๋„
    schema.geocare.ai DNS ๋“ฑ๋ก โœ…ํ›„์ด์ฆˆ + Supabase ENABLED๋ณธ ํŠธ๋ž™ ํ˜ธ์ถœ ๋„๋ฉ”์ธ (์ฆ‰์‹œ ํ™œ์šฉ)
    schema.geocare.ai ํ˜ธ์ถœ ํ‘œ์ค€ v1.0๋ณ„๋„ KHub ๋ฌธ์„œ๋ณธ ํŠธ๋ž™ Phase 1 ์ง์ ‘ ํ™œ์šฉ
    3๊ณ„์—ด schema ๋ถ„์„ (701/16/483๊ฑด)๋ณธ ๋ฌธ์„œ ยง2.1Phase 4 ํ†ตํ•ฉ ๊ทผ๊ฑฐ
    4/1 ์ด๋ฐ”๋‚˜ 12๊ฑด timestamp ์‹œํ€€์Šค๋ณธ ๋ฌธ์„œ ยง2.1Phase 2 ์ž๋™ ์Šค์ผ€์ค„ ๋ถ€ํ™œ ๊ทผ๊ฑฐ
    gp_geoex_inject_keys v0.1 ์Šคํ‚ค๋งˆ๋ณธ ๋ฌธ์„œ ยง6.1Phase 1 GEOcare ์ž‘์—… ์ง„์ž…์ 
    verify_geoex_inject_key RPC v0.1๋ณธ ๋ฌธ์„œ ยง6.2Phase 1 GEOcare ์ž‘์—… ์ง„์ž…์ 
    11์ค„ PHP ์ฝ”๋“œ v1.3 (luvhunter)๋ณธ ๋ฌธ์„œ ยง6.3Phase 6 ์ •์‹ ๋ฐœํ‘œ ์ง์ „ ๊ฒ€ํ†  ํ›„๋ณด

    โ›” DDL/INSERT ๋ฏธ์‹คํ–‰ โ€” G0 ์ถฉ์กฑ ํ›„ Phase 1 ์ •์‹ ์ง„์ž… ์‹œ์ ์— ์–‘ ๋ฐฉ ํ•ฉ์˜ ํ›„ ์ ์šฉ.

    ---

    6. ๋ณธ ์„ธ์…˜ G1 ์„ค๊ณ„ ์ž์‚ฐ (Phase 1 ์ง„์ž… ์‹œ ๊ฒ€ํ†  ํ›„๋ณด)

    6.1 gp_geoex_inject_keys v0.1 (Phase 1 ๊ฒ€ํ† )

    CREATE TABLE gp_geoex_inject_keys (
      id                    uuid PRIMARY KEY DEFAULT gen_random_uuid(),
      api_key               text UNIQUE NOT NULL,
      client_code           text UNIQUE NOT NULL,
      site_domain           text NOT NULL,
      display_name          text,
      permissions           text[] DEFAULT ARRAY['inject']::text[],
      allowed_origins       text[],
      rate_limit_per_hour   integer DEFAULT 10000,
      is_active             boolean DEFAULT true,
      expires_at            timestamptz,
      last_used_at          timestamptz,
      metadata              jsonb,
      created_at            timestamptz NOT NULL DEFAULT now(),
      updated_at            timestamptz NOT NULL DEFAULT now(),
      CONSTRAINT chk_api_key_prefix CHECK (api_key ~ '^[a-z]{2,5}_[a-zA-Z0-9]{24,64}$'),
      CONSTRAINT chk_client_code_format CHECK (client_code ~ '^[A-Z][A-Z0-9_]{2,30}$'),
      CONSTRAINT chk_site_domain_format CHECK (site_domain ~ '^[a-z0-9.-]+\.[a-z]{2,}$')
    );
    
    CREATE UNIQUE INDEX idx_inject_keys_api_key_active ON gp_geoex_inject_keys (api_key) WHERE is_active = true;
    CREATE INDEX idx_inject_keys_origins ON gp_geoex_inject_keys USING GIN (allowed_origins);
    CREATE INDEX idx_inject_keys_expires ON gp_geoex_inject_keys (expires_at) WHERE is_active = true AND expires_at IS NOT NULL;
    CREATE INDEX idx_inject_keys_client_code ON gp_geoex_inject_keys (client_code);
    
    ALTER TABLE gp_geoex_inject_keys ENABLE ROW LEVEL SECURITY;
    CREATE POLICY no_direct_access ON gp_geoex_inject_keys FOR ALL USING (false) WITH CHECK (false);

    โ†’ ํŒจํ„ด ๊ทผ๊ฑฐ: gp_mcp_api_keys (GEOcare MCP ์ธ์ฆ) + BIZDATA de_unified_client.api_key ํ•ฉ์„ฑ.

    6.2 verify_geoex_inject_key RPC v0.1 (Phase 1 ๊ฒ€ํ† )

    CREATE OR REPLACE FUNCTION verify_geoex_inject_key(
      p_api_key text,
      p_origin text DEFAULT NULL,
      p_request_url text DEFAULT NULL
    )
    RETURNS TABLE(
      is_valid boolean,
      client_code text,
      site_domain text,
      permissions text[],
      metadata jsonb,
      failure_reason text
    )
    LANGUAGE plpgsql
    SECURITY DEFINER
    SET search_path = public
    AS $$
    DECLARE
      v_row gp_geoex_inject_keys%ROWTYPE;
    BEGIN
      SELECT * INTO v_row FROM gp_geoex_inject_keys
      WHERE api_key = p_api_key AND is_active = true LIMIT 1;
      
      IF NOT FOUND THEN
        RETURN QUERY SELECT false, NULL::text, NULL::text, NULL::text[], NULL::jsonb, 'key_not_found_or_inactive'::text;
        RETURN;
      END IF;
      
      IF v_row.expires_at IS NOT NULL AND v_row.expires_at < now() THEN
        RETURN QUERY SELECT false, v_row.client_code, v_row.site_domain, NULL::text[], NULL::jsonb, 'key_expired'::text;
        RETURN;
      END IF;
      
      IF v_row.allowed_origins IS NOT NULL AND array_length(v_row.allowed_origins, 1) > 0 AND p_origin IS NOT NULL THEN
        IF NOT (p_origin = ANY(v_row.allowed_origins)) THEN
          RETURN QUERY SELECT false, v_row.client_code, v_row.site_domain, NULL::text[], NULL::jsonb, 'origin_not_allowed'::text;
          RETURN;
        END IF;
      END IF;
      
      UPDATE gp_geoex_inject_keys SET last_used_at = now() WHERE id = v_row.id;
      
      RETURN QUERY SELECT true, v_row.client_code, v_row.site_domain, v_row.permissions, v_row.metadata, NULL::text;
    END;
    $$;
    
    GRANT EXECUTE ON FUNCTION verify_geoex_inject_key(text, text, text) TO anon, authenticated, service_role;

    6.3 11์ค„ PHP ์ฝ”๋“œ v1.3 (Phase 6 ์ •์‹ ๋ฐœํ‘œ ์ง์ „ ๊ฒ€ํ† )

    <!-- GEOcare JSON-LD Auto-Inject (๋น„์ฆˆ์Šคํ”„๋ง) -->
    <?php
    $_g_url = 'https://www.luvhunter.net' . $_SERVER['REQUEST_URI'];
    $_g_cache = sys_get_temp_dir() . '/gc_' . md5($_g_url);
    if (!file_exists($_g_cache) || time() - filemtime($_g_cache) > 3600) {
        $_g_ctx = stream_context_create(['http' => ['timeout' => 2, 'header' => 'X-GEOcare-Key: lvh_xxxxxxxxxxxxxxxxxxxxxxxx']]);
        $_g_res = @file_get_contents('https://schema.geocare.ai/functions/v1/geobh-jsonld?url=' . urlencode($_g_url), false, $_g_ctx);
        if ($_g_res) @file_put_contents($_g_cache, $_g_res);
    }
    if (file_exists($_g_cache)) echo '<script type="application/ld+json">' . file_get_contents($_g_cache) . '</script>';
    ?>

    โ†’ ์ ์šฉ ์œ„์น˜: _inc_index_header.tpl 188~189ํ–‰ ์‚ฌ์ด (</head> ์ง์ „).

    ---

    7. ํ›„์† ํŠธ๋ž™ ์‹œ๋“œ (๋ณธ ํŠธ๋ž™์—์„œ ๋ถ„๊ธฐ ๊ฐ€๋Šฅ์„ฑ)

    ํ›„์† ํŠธ๋ž™์‹œ์ ์ฑ…์ž„
    T-PIPELINE-OCR-TO-SCHEMA-FULLAUTOPhase 3 ์ข…๊ฒฐ ํ›„ ํ’€์ž๋™ํ™”GEOcare
    T-MIGRATION-SITEGEO-LEGACYPhase 4 ํ›„์† (gp_geoex_jsonld_log ๊ฑฐ์ทจ ๊ฒฐ์ •)GEOcare
    T-OPS-AUTO-INJECT-MULTISITE์•ˆ์ •ํ™” ํ›„ ๋‹ค์ˆ˜ ์‚ฌ์ดํŠธ ์ ์šฉ์–‘ ๋ฐฉ ๊ณต๋™
    T-MARKETING-AUTO-INJECT-LAUNCH์•ˆ์ •ํ™” ํ›„ ์˜์—… ๋ฉ”์‹œ์ง€SALES + GEOCARE

    ---

    8. ํ•™์Šต ๋ˆ„์  (Phase 6 ์ผ๊ด„ ๋“ฑ์žฌ ํ›„๋ณด)

    #๊ฐ€์นญ
    17์™ธ๋ถ€ EF ํ™œ์šฉ ์ฝ”๋“œ ์ œ์•ˆ ์‹œ ์ธ์ฆ ๋ชจ๋ธ ๋‹จ์ • ๊ธˆ์ง€
    18๊ฐ€์นญ ์ž์‚ฐ๋ช… ์ž์—ฐ ๋…ธ์ถœ ๊ธˆ์ง€
    19์ธ๋ฒคํ† ๋ฆฌ ๋ฏธํ™•์ธ ์ƒํƒœ๋กœ ์‹ ๊ทœ ํ…Œ์ด๋ธ” ์„ค๊ณ„ ๊ธˆ์ง€
    20๋™์ผ ๋ช…์นญ ํ…Œ์ด๋ธ” ๋ฐœ๊ฒฌ ์‹œ ์šฉ๋„ ๊ฒ€์ฆ ํ•„์ˆ˜
    21์‹ ๊ทœ ์ธํ”„๋ผ ์„ค๊ณ„ ์‹œ ์ธ์ฆยท๋ฐ์ดํ„ฐยท์‹คํ–‰ 3์ถ• ๋™์‹œ ํ™•์ธ
    22์™ธ๋ถ€ ๋ณ€์ˆ˜(์˜์—… ์ผ์ •) ์••๋ฐ• ์‹œ PO์—๊ฒŒ ๋ช…์‹œ์  ํ™˜๊ธฐ ์š”์ฒญ

    โ†’ ๋ณธ ํŠธ๋ž™ Phase 6 ์ข…๊ฒฐ ์‹œ KHub COMMON ์ผ๊ด„ ๋“ฑ์žฌ.

    ---

    9. ์ƒˆ ์„ธ์…˜ ์ง„์ž… ๋ช…๋ น

    ํŠธ๋ฆฌ๊ฑฐ ๋ฐœํ™”

    ๋ณธ ํŠธ๋ž™ ๋ฐœ๋™ ์ „ ์ƒˆ ์„ธ์…˜ ์ž‘์—… ์šฐ์„ ์ˆœ์œ„ (๋†’โ†’๋‚ฎ)

    1. ์ž๋™ ํŒจ์น˜ ์‚ฌํ›„ ๊ฒ€ํ†  6๊ฑด (5/7 17:00 SLA D-1)
    2. BUG-002 G3 ์žฌ๊ฒ€์ฆ (PREMIUM_GEO ์ฒ˜๋ฆฌ ํ›„, SLA 5/9 EOD)
    3. ๋‚˜์ด์ŠคํŽ˜์ด ํšŒ์‹  ๋ฉ”์ผ (P0-3, AP-25)
    4. T-EEAT-LLM-FAIL ํŠธ๋ž™ ์‹ ์„ค (2,959๊ฑด score=0)
    5. 5/11 ๋ฏธํŒ… ์ค€๋น„ (KHub d00aceea + bmp.ai 5์ข… + ์–ด๋“œ๋ฏผ ์‹œ์—ฐ)
    6. T-RENEW v1.1 ํšŒ์‹  ๋ชจ๋‹ˆํ„ฐ๋ง (๊ตฌ์žํ›ˆ ๋Œ€ํ‘œ)
    7. T-SALES-MPRD-UPSELL Phase 1 ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ ์ปจํŽŒ

    ---

    10. ๋ณ€๊ฒฝ ์ด๋ ฅ

    ์ผ์ž๋ฒ„์ „๋ณ€๊ฒฝ
    2026-05-08v1.0 (๊ณจ๊ฒฉ)์ดˆํŒ โ€” G0 ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋“ฑ์žฌ. Phase 1~6 + ์•ˆ์ •ํ™” ๊ณจ๊ฒฉ. ๋ณธ ์„ธ์…˜ ์‚ฐ์ถœ๋ฌผ ๋ณด์กด. T-RENEW v1.1 ํšŒ์‹  ํ›„ ๋ฐœ๋™.

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