{
  "id": "c5317d24-b018-4ba0-ae18-f50c0fed11a2",
  "slug": "ref/khub/sales-imp-008-sales-030-v2-site-domain-표준-task-devlog",
  "doc_type": "ref",
  "title": "📋 IMP-008 SALES-030 v2 + site_domain 표준 — Task DevLog",
  "title_en": null,
  "one_liner": "# 📋 IMP-008 SALES-030 v2 + site_domain 표준 — Task DevLog > Phase: ✅ DONE → 🔍 VERIFIED (PREMIUM_GEO 검증 완료) → ❌ 통합 시도 실패 → 📋 재설계 완료 (OneStep Unified 이관) > 작업일:",
  "summary_bullets": [],
  "body_md": "# 📋 IMP-008 SALES-030 v2 + site_domain 표준 — Task DevLog\n\n> Phase: ✅ DONE → 🔍 VERIFIED (PREMIUM_GEO 검증 완료) → ❌ 통합 시도 실패 → 📋 재설계 완료 (OneStep Unified 이관)\n> 작업일: 2026-04-18 ~ 2026-04-19\n> 담당: Claude + 찰스\n> 프로젝트: SALES + PREMIUM_GEO + GEOCARE\n\n---\n\n## 📋 PLAN (원래)\n\n### 배경\n키스톤마케팅컴퍼니 파트너 온보딩 후 프론트에서 \"로그인은 되는데 사이트 목록이 비어있다\"는 이슈 발생. 5개 테이블 site_domain 형식 불일치로 JOIN 실패가 근본 원인.\n\n### 목표\n1. C단계: 키스톤 정합성 즉시 복구\n2. A단계: SALES-030 WF v1 → v2 재설계 (register_site RPC 기반)\n3. B단계: 표준 문서화 + 정합성 감사 체계 확립\n4. D단계 (PREMIUM_GEO 검증): 경쟁사 정책 확정 + WF 전수 조사 + 통합 배포\n\n---\n\n## 🔨 IN PROGRESS → ✅ DONE → 🔍 VERIFIED\n\n### C단계: 키스톤 정합성 복구 (2026-04-18 오전) ✅\n\n**복구 조치**:\n- 기존 잘못된 4개 테이블 row 전수 DELETE\n- `register_site()` RPC 1회 호출 → 5개 테이블 + gp_service_subscriptions 모두 `https://keystonemc.com`으로 일관\n- project_id=217 생성\n- get_user_sites 호출 검증: site_id=527, display_name=\"키스톤\" 정상\n\n### A단계: SALES-030 v1 → v2 재설계 (2026-04-18 오후) ✅\n\n| 항목 | v1 | v2 |\n|------|-----|-----|\n| 노드 수 | 16 | 14 |\n| 사이트 등록 방식 | 5개 테이블 직접 UPSERT | `register_site()` RPC 1회 |\n| `gp_service_projects` 생성 | ❌ 누락 | ✅ 자동 |\n| `gp_service_subscriptions` 생성 | ❌ 누락 | ✅ 자동 |\n\n**WF**: `cLvDPVRAl6BEPgql`, Webhook: `/sales-030-partner-onboarding`\n\n### B단계: KHub 문서 정비 (2026-04-18 저녁) ✅\n\n| ID | 문서 | 작업 |\n|----|------|------|\n| `d7f11d23` | 🎯 site_domain 표준 & 사이트 등록 공식 경로 | v1.0 신규 → v1.1 |\n| `ed1a85d1` | 🔐 파트너/고객 계정 Admin 생성 표준 | v1.1 → v1.2 |\n| `f2bbd106` | 📮 전사 공유 보드 | IMP-008 Resolved 등록 |\n\n### 확장: 벤츠로 크롤 대상 교체 (2026-04-18 저녁) ✅\n\n- 키스톤 project_id=217 전수 DELETE → 벤츠 `mercedes-benz.co.kr` 재등록 project_id=219\n- Phase0 Onboarding webhook 호출 → 49페이지 크롤 + RAG 적재 + KPI 분석 완료 (6분 45초)\n- Total Score: 72.45 / 100 🟢 Good\n\n---\n\n### 🆕 D단계: PREMIUM_GEO 방 검증 + 확장 (2026-04-18 밤) ✅\n\n#### D-1. SALES 검증 3건 수행\n\n**검증 1 (파트너 4사 정합성)** — ✅ 100% 통과 (65 row 전부 `https://` 표준)\n\n**검증 2 (v2 WF 채택)** — ✅ 조건부 YES (보완 관계, 충돌 없음)\n\n**검증 3 (IDEA-005 버그)** — 🔥 실재 확증 → Q1-A 정책 이행으로 자연 해소\n\n#### D-2. 경쟁사 정책 대전환 (Q1-A 결정)\n**찰스 판단**: 경쟁사는 SoM 레퍼런스 전용, 직접 크롤 금지\n\n#### D-3. DB 패치 이행\n- 트리거 패치 (migration `remove_competitor_block_from_fn_sync_project_sites_q1a`)\n- 177건 `pending_crawl` → `archived`\n- 표준 문서 v1.1 업데이트, AP-SITE-05 신설\n\n---\n\n### 🔴 D-4: OneStep 통합 시도 → 실패 판정 (2026-04-18 밤 ~ 04-19 새벽) ❌→📋\n\n#### 시도 내용\n- Brand OneStep Orchestrator(`LpTWST4kYRaJmMvR`)를 SALES-030 v2에 Node 11.5로 통합\n- E2E 테스트 2회 \"success\" 응답 수신 → 성공 보고\n\n#### 실패 발견 (04-19 새벽)\n찰스 지적으로 재검증 결과:\n1. **Phase0 v8.1 실행 로그 0건 발견** — `saveDataSuccessExecution: none` 설정으로 UI 가시성 없음\n2. **\"E2E 성공\"은 오판**: `starbucks.co.kr` + `onestep-test-*.local` **2건 모두 gp_geoex_analysis_jobs에서 `status=failed`** (auto-timeout 120min, progress=70%)\n3. **Brand OneStep 자체 미완성**:\n   - 실행 이력 총 5건 (전부 테스트, 운영 0건)\n   - Run SoM? 노드 체인 버그 → SoM 5개 노드 한 번도 실행된 적 없음 (4개월간)\n   - 4/18 패치 후 재테스트에서 추가 버그 3건 발견:\n     - Step5 SoM v10 \"site_domain 필요\" (workflowInputs 빈 값)\n     - Step6 Gap Analyzer 동일\n     - Step7 P7 Report 동일\n     - Step3 QueryGen HTTP 400 (competitor_confirmed=0 fallback 없음)\n\n#### 롤백 + Brand OneStep 패치 완료 (04-19)\n- ✅ SALES-030 v2.1 → v2.0 롤백 (14 노드, Node 11.5 제거)\n- ✅ Brand OneStep Run SoM? 버그 패치 (leftValue → Parse Input 명시 참조, 4개월 묵은 근본 버그 해결)\n- ❌ 추가 버그 3건은 별도 세션에서 작업 필요\n\n---\n\n### 🔍 D-5: 원스탑 분석 WF 전수 조사 + 숨겨진 실체 발견 (04-19) ✅\n\n#### 전수 조사\n- bawee n8n 339 WFs + bizspring n8n 31 WFs 모두 cursor 페이징으로 스캔\n- webhook + domain 입력 패턴 38개 후보 식별\n- 실행 이력 대조\n\n#### 결정적 발견\n**`[DIAG-001] GEO Diagnosis Orchestrator v1`** (bizspring n8n `dTJdlSzCIPd22hJv`)\n- 2026-02-23 생성, 12노드, 운영 중\n- Webhook: `POST /webhook/geo-diagnosis`\n- partner.geocare.ai의 \"진단 요청\" 버튼의 진짜 백엔드\n- 진입 경로: `partner.geocare.ai → geobh-run-diagnosis EF → bizspring n8n DIAG-001`\n- gp_admin_secrets `N8N_DIAG_WEBHOOK`으로 URL 관리\n\n#### Brand OneStep vs DIAG-001 관계 판명\n- Brand OneStep(bawee, 4/4 생성, 19노드) = DIAG-001을 bawee로 옮기려다 미완성된 시도\n- DIAG-001 = 기존 고객 재진단 (client_slug 입력)\n- Brand OneStep = 신규 도메인 초기 분석 (domain 입력, 추가 SoM 포함)\n\n---\n\n### 🎯 D-6: OneStep Unified 이관 설계 (04-19) ✅ PLAN\n\n**찰스 결정**: DIAG-001 + Brand OneStep 두 개 모두 bawee로 옮겨 통합\n**설계서**: KHub `0de06506-4915-4eec-b836-931ae09da58a`\n**상태**: 📋 PLAN 완료, 실행 대기 (다음 세션)\n\n#### 설계 개요\n- 통합 WF 1개, mode 라우팅 (brand / diagnosis)\n- webhook 3개 (`/geo-diagnosis`, `/geo/brand-onestep`, `/onestep-unified`) 모두 단일 WF 진입\n- 26 노드 (공통 4 + Brand 8 + Diagnosis 7 + 공통 종료 7)\n- bawee n8n + Config Loader I패턴 + service_role JWT 하드코딩 제거\n- Slack URL placeholder → 실제 URL 사전 등록 (`SLACK_GEO_DIAG_WEBHOOK`)\n- Brand OneStep 4개월 묵은 체인 버그 + workflowInputs 누락 일괄 해결\n\n#### 마이그레이션 5-Phase\n- Phase 1: 준비 (30분) — Slack 시크릿 등록, 빈 WF 생성\n- Phase 2: 구축 (1.5~2시간) — 26노드 PUT 배포\n- Phase 3: Shadow 검증 (30분) — Mode A/B 각 2건 E2E\n- Phase 4: 전환 (15분) — Activate + N8N_DIAG_WEBHOOK URL 교체\n- Phase 5: 정리 (10분) — 24h 모니터링 후 구버전 Archive\n\n---\n\n## 🔍 VERIFIED (D-5까지)\n\n- ✅ 키스톤 get_user_sites 정상\n- ✅ v2 WF E2E 성공 (409 + 200)\n- ✅ 벤츠 49페이지 전체 KPI 분석 완료\n- ✅ PREMIUM_GEO 파트너 4사 65 row 정합성 100%\n- ✅ `fn_sync_project_sites` 패치 확인\n- ✅ 177건 archived 전환\n- ✅ SALES-030 v2.0 롤백 확인 (14 노드)\n- ✅ Brand OneStep Run SoM? 패치 확인 (ediya.com 테스트에서 SoM 파이프라인 실행됨)\n- ✅ DIAG-001 실제 운영 WF임을 확인 (sktworld 재진단 호출 성공)\n- ✅ OneStep Unified 이관 설계서 저장 (`0de06506`)\n\n---\n\n## 📡 Cross-Room 영향\n\n### SALES → PREMIUM_GEO (처리 완료)\n- v2 WF 검증 → 100% 통과\n- site_domain 표준 공유 → 준수 확인\n- IDEA-005 트리거 버그 → Q1-A로 자연 해소\n\n### PREMIUM_GEO → GEOCARE (처리 완료)\n- IDEA-005 자연 해소 통보\n- AP-SITE-05 신설 공유\n\n### PREMIUM_GEO → SALES (04-19 정정)\n- 🟢 OneStep 통합 v2.1 배포 실패 정정 → v2.0 롤백 완료\n- OneStep Unified 이관 완료 후 재통합 예정\n\n### PREMIUM_GEO → COMMON (04-19 신규)\n- bizspring DIAG-001이 서비스 메인 진단 WF였음을 발견\n- 인프라 매핑 정보 갱신 필요\n\n---\n\n## 🧠 핵심 학습 13가지\n\n### 기존 (C~B단계)\n1. `register_site()` RPC가 유일한 공식 경로\n2. `trg_ensure_https_geo_gpt_site` 존재\n3. PostgREST multi-parameter RPC 호출 규칙\n4. Phase0 WF vs register_site 역할 분리\n5. url_analysis.status는 \"등급값\"\n\n### D단계\n6. cursor 페이징 필수 (n8n API limit 250 한도)\n7. 정책→트리거→데이터→WF 순서\n8. 영향도 매트릭스 사전 검증\n9. webhook 호출 추적 = 실행 로그 역추적\n10. 자연 해소 > 정교한 패치\n\n### 🆕 04-19 추가\n11. **Node 응답 성공만으로 E2E 판정 금지** — DB 최종 상태까지 확인 필수. \"success: true\"와 실제 DB 상태가 다를 수 있음\n12. **`saveDataSuccessExecution: none` WF는 UI상 \"실행 0건\"이지만 실제 운영 중일 수 있음** — 역으로 \"실행 많아 보이는 WF\"도 전부 테스트일 수 있음 (Brand OneStep 5건 = 4테스트 + 1 Claude)\n13. **n8n 서버 2개 (bawee, bizspring) 간 cross-server 호출은 숨겨진 진입점 탐지를 어렵게 함** — \"원스탑 분석\" 같은 사용자 용어로 WF를 찾을 땐 두 서버 모두 전수 스캔 필요. gp_admin_secrets의 webhook URL이 결정적 단서\n\n---\n\n## ⚠️ 안티패턴 (AP-SITE-01~05)\n\n| AP | 규칙 |\n|----|------|\n| AP-SITE-01 | 5개 테이블 직접 UPSERT 금지 |\n| AP-SITE-02 | Phase0 WF로 사이트 등록 시도 금지 |\n| AP-SITE-03 | site_domain에 www. 포함 금지 |\n| AP-SITE-04 | RPC 호출 시 `Prefer: params=single-object` 금지 |\n| **AP-SITE-05** | **경쟁사 직접 크롤 시도 금지 (Q1-A, 2026-04-18)** |\n\n---\n\n## 📎 관련 리소스\n\n### n8n WF\n- [OneStep 파트너등록 v2.0](https://bawee.app.n8n.cloud/workflow/cLvDPVRAl6BEPgql) - 14노드 (롤백됨)\n- [Brand OneStep v1.0](https://bawee.app.n8n.cloud/workflow/LpTWST4kYRaJmMvR) - 19노드 (Run SoM? 패치됨, 추가 버그 잔존)\n- [DIAG-001 v1](https://bizspring.app.n8n.cloud/workflow/dTJdlSzCIPd22hJv) - 12노드 (운영 중, 이관 예정)\n- [Phase0 v8.1](https://bawee.app.n8n.cloud/workflow/tViiA9NQOeVXh0B8) - 16노드\n- [Brand Suggest](https://bawee.app.n8n.cloud/workflow/KIkophnBzQxXsvNa) - 9노드\n\n### KHub 문서\n- ⭐ [OneStep Unified 이관 설계서](khub://0de06506) v1.0 — 다음 세션 필독\n- [site_domain 표준 v1.1](khub://d7f11d23)\n- [Admin 계정 생성 표준 v1.2](khub://ed1a85d1)\n- [Phase0-SiteOnly 검증 리포트](khub://6ddfd525)\n\n### Migration\n- `remove_competitor_block_from_fn_sync_project_sites_q1a` (2026-04-18)\n\n### 테스트 데이터\n- 키스톤 user_id: `22fc49cc-ba31-4033-9a91-1515d28e0335`\n- 벤츠 project_id: 219\n- .local 테스트 project_id: 221 (failed)\n- 스타벅스 테스트 project_id: 222 (failed)\n- sktworld 재진단 run_id: `e60ccfa8-4d82-4bf6-8c30-fce9646eac0b`\n\n---\n\n## 🎯 후속 작업 (다음 세션 최우선)\n\n1. ~~PREMIUM_GEO 방에서 v2 WF 검증~~ ✅ 완료\n2. **🚀 OneStep Unified Orchestrator bawee 이관** ⭐⭐⭐ (설계서 `0de06506` 기반, 3~4시간, Phase 1~5)\n3. 이관 완료 후 → SALES-030 v2 재통합 (v2.2로 Node 11.5 재삽입)\n4. BUG-005 해결 (orphan gp_service_projects 5건 재동기화)\n5. IDEA-004 구현 (SYS-010 주간 정합성 감사 WF)\n6. ~~IDEA-005 신규 등록~~ ✅ 자연 해소 (Q1-A)\n7. 벤츠 Exec Summary 리포트 조회 (Phase1A-4)\n8. 이기호 대표용 벤츠 GEO 데모 리포트 작성\n9. 404건 archived competitor 삭제 검토 (2주 관찰 후)\n\n---\n\n*Phase: 📋 PLAN (OneStep Unified 이관 대기) | 2026-04-19 | Task DevLog Tier 2b*\n",
  "related_slugs": [],
  "faq": [],
  "jsonld": null,
  "keywords": [],
  "source_id": "e682bcb6-b7c6-4e44-ae7c-067b86f73bc6",
  "video_url": null,
  "duration_sec": null,
  "thumbnail_url": null,
  "image_url": null,
  "caption": null,
  "solution_slug": null,
  "captured_at": null,
  "width": null,
  "height": null,
  "created_at": "2026-08-24T11:53:44.684733+00:00",
  "updated_at": "2026-08-24T11:53:44.684733+00:00",
  "visibility": "public",
  "source_stage": "1",
  "anonymized": true,
  "source_key": "legacy-khub",
  "origin": "ingest",
  "locked": false,
  "locked_by": null,
  "locked_at": null,
  "gate_state": {
    "g1": {
      "hits": [],
      "pass": true
    },
    "g2": {
      "pass": true,
      "total": 57,
      "issues": [
        "핵심 요약 불릿이 3개 미만입니다",
        "Q&A 쌍이 3개 미만입니다"
      ],
      "applies": true
    },
    "g3": {
      "pass": true,
      "required": false
    },
    "stage": "1",
    "decided_at": "2026-08-24T11:53:44.334Z"
  },
  "raw_id": "f36839cf-7c45-4e6a-9f03-f2465d3c16cd",
  "search_text": "📋 IMP-008 SALES-030 v2 + site_domain 표준 — Task DevLog  # 📋 IMP-008 SALES-030 v2 + site_domain 표준 — Task DevLog > Phase: ✅ DONE → 🔍 VERIFIED (PREMIUM_GEO 검증 완료) → ❌ 통합 시도 실패 → 📋 재설계 완료 (OneStep Unified 이관) > 작업일:  # 📋 IMP-008 SALES-030 v2 + site_domain 표준 — Task DevLog\n\n> Phase: ✅ DONE → 🔍 VERIFIED (PREMIUM_GEO 검증 완료) → ❌ 통합 시도 실패 → 📋 재설계 완료 (OneStep Unified 이관)\n> 작업일: 2026-04-18 ~ 2026-04-19\n> 담당: Claude + 찰스\n> 프로젝트: SALES + PREMIUM_GEO + GEOCARE\n\n---\n\n## 📋 PLAN (원래)\n\n### 배경\n키스톤마케팅컴퍼니 파트너 온보딩 후 프론트에서 \"로그인은 되는데 사이트 목록이 비어있다\"는 이슈 발생. 5개 테이블 site_domain 형식 불일치로 JOIN 실패가 근본 원인.\n\n### 목표\n1. C단계: 키스톤 정합성 즉시 복구\n2. A단계: SALES-030 WF v1 → v2 재설계 (register_site RPC 기반)\n3. B단계: 표준 문서화 + 정합성 감사 체계 확립\n4. D단계 (PREMIUM_GEO 검증): 경쟁사 정책 확정 + WF 전수 조사 + 통합 배포\n\n---\n\n## 🔨 IN PROGRESS → ✅ DONE → 🔍 VERIFIED\n\n### C단계: 키스톤 정합성 복구 (2026-04-18 오전) ✅\n\n**복구 조치**:\n- 기존 잘못된 4개 테이블 row 전수 DELETE\n- `register_site()` RPC 1회 호출 → 5개 테이블 + gp_service_subscriptions 모두 `https://keystonemc.com`으로 일관\n- project_id=217 생성\n- get_user_sites 호출 검증: site_id=527, display_name=\"키스톤\" 정상\n\n### A단계: SALES-030 v1 → v2 재설계 (2026-04-18 오후) ✅\n\n| 항목 | v1 | v2 |\n|------|-----|-----|\n| 노드 수 | 16 | 14 |\n| 사이트 등록 방식 | 5개 테이블 직접 UPSERT | `register_site()` RPC 1회 |\n| `gp_service_projects` 생성 | ❌ 누락 | ✅ 자동 |\n| `gp_service_subscriptions` 생성 | ❌ 누락 | ✅ 자동 |\n\n**WF**: `cLvDPVRAl6BEPgql`, Webhook: `/sales-030-partner-onboarding`\n\n### B단계: KHub 문서 정비 (2026-04-18 저녁) ✅\n\n| ID | 문서 | 작업 |\n|----|------|------|\n| `d7f11d23` | 🎯 site_domain 표준 & 사이트 등록 공식 경로 | v1.0 신규 → v1.1 |\n| `ed1a85d1` | 🔐 파트너/고객 계정 Admin 생성 표준 | v1.1 → v1.2 |\n| `f2bbd106` | 📮 전사 공유 보드 | IMP-008 Resolved 등록 |\n\n### 확장: 벤츠로 크롤 대상 교체 (2026-04-18 저녁) ✅\n\n- 키스톤 project_id=217 전수 DELETE → 벤츠 `mercedes-benz.co.kr` 재등록 project_id=219\n- Phase0 Onboarding webhook 호출 → 49페이지 크롤 + RAG 적재 + KPI 분석 완료 (6분 45초)\n- Total Score: 72.45 / 100 🟢 Good\n\n---\n\n### 🆕 D단계: PREMIUM_GEO 방 검증 + 확장 (2026-04-18 밤) ✅\n\n#### D-1. SALES 검증 3건 수행\n\n**검증 1 (파트너 4사 정합성)** — ✅ 100% 통과 (65 row 전부 `https://` 표준)\n\n**검증 2 (v2 WF 채택)** — ✅ 조건부 YES (보완 관계, 충돌 없음)\n\n**검증 3 (IDEA-005 버그)** — 🔥 실재 확증 → Q1-A 정책 이행으로 자연 해소\n\n#### D-2. 경쟁사 정책 대전환 (Q1-A 결정)\n**찰스 판단**: 경쟁사는 SoM 레퍼런스 전용, 직접 크롤 금지\n\n#### D-3. DB 패치 이행\n- 트리거 패치 (migration `remove_competitor_block_from_fn_sync_project_sites_q1a`)\n- 177건 `pending_crawl` → `archived`\n- 표준 문서 v1.1 업데이트, AP-SITE-05 신설\n\n---\n\n### 🔴 D-4: OneStep 통합 시도 → 실패 판정 (2026-04-18 밤 ~ 04-19 새벽) ❌→📋\n\n#### 시도 내용\n- Brand OneStep Orchestrator(`LpTWST4kYRaJmMvR`)를 SALES-030 v2에 Node 11.5로 통합\n- E2E 테스트 2회 \"success\" 응답 수신 → 성공 보고\n\n#### 실패 발견 (04-19 새벽)\n찰스 지적으로 재검증 결과:\n1. **Phase0 v8.1 실행 로그 0건 발견** — `saveDataSuccessExecution: none` 설정으로 UI 가시성 없음\n2. **\"E2E 성공\"은 오판**: `starbucks.co.kr` + `onestep-test-*.local` **2건 모두 gp_geoex_analysis_jobs에서 `status=failed`** (auto-timeout 120min, progress=70%)\n3. **Brand OneStep 자체 미완성**:\n   - 실행 이력 총 5건 (전부 테스트, 운영 0건)\n   - Run SoM? 노드 체인 버그 → SoM 5개 노드 한 번도 실행된 적 없음 (4개월간)\n   - 4/18 패치 후 재테스트에서 추가 버그 3건 발견:\n     - Step5 SoM v10 \"site_domain 필요\" (workflowInputs 빈 값)\n     - Step6 Gap Analyzer 동일\n     - Step7 P7 Report 동일\n     - Step3 QueryGen HTTP 400 (competitor_confirmed=0 fallback 없음)\n\n#### 롤백 + Brand OneStep 패치 완료 (04-19)\n- ✅ SALES-030 v2.1 → v2.0 롤백 (14 노드, Node 11.5 제거)\n- ✅ Brand OneStep Run SoM? 버그 패치 (leftValue → Parse Input 명시 참조, 4개월 묵은 근본 버그 해결)\n- ❌ 추가 버그 3건은 별도 세션에서 작업 필요\n\n---\n\n### 🔍 D-5: 원스탑 분석 WF 전수 조사 + 숨겨진 실체 발견 (04-19) ✅\n\n#### 전수 조사\n- bawee n8n 339 WFs + bizspring n8n 31 WFs 모두 cursor 페이징으로 스캔\n- webhook + domain 입력 패턴 38개 후보 식별\n- 실행 이력 대조\n\n#### 결정적 발견\n**`[DIAG-001] GEO Diagnosis Orchestrator v1`** (bizspring n8n `dTJdlSzCIPd22hJv`)\n- 2026-02-23 생성, 12노드, 운영 중\n- Webhook: `POST /webhook/geo-diagnosis`\n- partner.geocare.ai의 \"진단 요청\" 버튼의 진짜 백엔드\n- 진입 경로: `partner.geocare.ai → geobh-run-diagnosis EF → bizspring n8n DIAG-001`\n- gp_admin_secrets `N8N_DIAG_WEBHOOK`으로 URL 관리\n\n#### Brand OneStep vs DIAG-001 관계 판명\n- Brand OneStep(bawee, 4/4 생성, 19노드) = DIAG-001을 bawee로 옮기려다 미완성된 시도\n- DIAG-001 = 기존 고객 재진단 (client_slug 입력)\n- Brand OneStep = 신규 도메인 초기 분석 (domain 입력, 추가 SoM 포함)\n\n---\n\n### 🎯 D-6: OneStep Unified 이관 설계 (04-19) ✅ PLAN\n\n**찰스 결정**: DIAG-001 + Brand OneStep 두 개 모두 bawee로 옮겨 통합\n**설계서**: KHub `0de06506-4915-4eec-b836-931ae09da58a`\n**상태**: 📋 PLAN 완료, 실행 대기 (다음 세션)\n\n#### 설계 개요\n- 통합 WF 1개, mode 라우팅 (brand / diagnosis)\n- webhook 3개 (`/geo-diagnosis`, `/geo/brand-onestep`, `/onestep-unified`) 모두 단일 WF 진입\n- 26 노드 (공통 4 + Brand 8 + Diagnosis 7 + 공통 종료 7)\n- bawee n8n + Config Loader I패턴 + service_role JWT 하드코딩 제거\n- Slack URL placeholder → 실제 URL 사전 등록 (`SLACK_GEO_DIAG_WEBHOOK`)\n- Brand OneStep 4개월 묵은 체인 버그 + workflowInputs 누락 일괄 해결\n\n#### 마이그레이션 5-Phase\n- Phase 1: 준비 (30분) — Slack 시크릿 등록, 빈 WF 생성\n- Phase 2: 구축 (1.5~2시간) — 26노드 PUT 배포\n- Phase 3: Shadow 검증 (30분) — Mode A/B 각 2건 E2E\n- Phase 4: 전환 (15분) — Activate + N8N_DIAG_WEBHOOK URL 교체\n- Phase 5: 정리 (10분) — 24h 모니터링 후 구버전 Archive\n\n---\n\n## 🔍 VERIFIED (D-5까지)\n\n- ✅ 키스톤 get_user_sites 정상\n- ✅ v2 WF E2E 성공 (409 + 200)\n- ✅ 벤츠 49페이지 전체 KPI 분석 완료\n- ✅ PREMIUM_GEO 파트너 4사 65 row 정합성 100%\n- ✅ `fn_sync_project_sites` 패치 확인\n- ✅ 177건 archived 전환\n- ✅ SALES-030 v2.0 롤백 확인 (14 노드)\n- ✅ Brand OneStep Run SoM? 패치 확인 (ediya.com 테스트에서 SoM 파이프라인 실행됨)\n- ✅ DIAG-001 실제 운영 WF임을 확인 (sktworld 재진단 호출 성공)\n- ✅ OneStep Unified 이관 설계서 저장 (`0de06506`)\n\n---\n\n## 📡 Cross-Room 영향\n\n### SALES → PREMIUM_GEO (처리 완료)\n- v2 WF 검증 → 100% 통과\n- site_domain 표준 공유 → 준수 확인\n- IDEA-005 트리거 버그 → Q1-A로 자연 해소\n\n### PREMIUM_GEO → GEOCARE (처리 완료)\n- IDEA-005 자연 해소 통보\n- AP-SITE-05 신설 공유\n\n### PREMIUM_GEO → SALES (04-19 정정)\n- 🟢 OneStep 통합 v2.1 배포 실패 정정 → v2.0 롤백 완료\n- OneStep Unified 이관 완료 후 재통합 예정\n\n### PREMIUM_GEO → COMMON (04-19 신규)\n- bizspring DIAG-001이 서비스 메인 진단 WF였음을 발견\n- 인프라 매핑 정보 갱신 필요\n\n---\n\n## 🧠 핵심 학습 13가지\n\n### 기존 (C~B단계)\n1. `register_site()` RPC가 유일한 공식 경로\n2. `trg_ensure_https_geo_gpt_site` 존재\n3. PostgREST multi-parameter RPC 호출 규칙\n4. Phase0 WF vs register_site 역할 분리\n5. url_analysis.status는 \"등급값\"\n\n### D단계\n6. cursor 페이징 필수 (n8n API limit 250 한도)\n7. 정책→트리거→데이터→WF 순서\n8. 영향도 매트릭스 사전 검증\n9. webhook 호출 추적 = 실행 로그 역추적\n10. 자연 해소 > 정교한 패치\n\n### 🆕 04-19 추가\n11. **Node 응답 성공만으로 E2E 판정 금지** — DB 최종 상태까지 확인 필수. \"success: true\"와 실제 DB 상태가 다를 수 있음\n12. **`saveDataSuccessExecution: none` WF는 UI상 \"실행 0건\"이지만 실제 운영 중일 수 있음** — 역으로 \"실행 많아 보이는 WF\"도 전부 테스트일 수 있음 (Brand OneStep 5건 = 4테스트 + 1 Claude)\n13. **n8n 서버 2개 (bawee, bizspring) 간 cross-server 호출은 숨겨진 진입점 탐지를 어렵게 함** — \"원스탑 분석\" 같은 사용자 용어로 WF를 찾을 땐 두 서버 모두 전수 스캔 필요. gp_admin_secrets의 webhook URL이 결정적 단서\n\n---\n\n## ⚠️ 안티패턴 (AP-SITE-01~05)\n\n| AP | 규칙 |\n|----|------|\n| AP-SITE-01 | 5개 테이블 직접 UPSERT 금지 |\n| AP-SITE-02 | Phase0 WF로 사이트 등록 시도 금지 |\n| AP-SITE-03 | site_domain에 www. 포함 금지 |\n| AP-SITE-04 | RPC 호출 시 `Prefer: params=single-object` 금지 |\n| **AP-SITE-05** | **경쟁사 직접 크롤 시도 금지 (Q1-A, 2026-04-18)** |\n\n---\n\n## 📎 관련 리소스\n\n### n8n WF\n- [OneStep 파트너등록 v2.0](https://bawee.app.n8n.cloud/workflow/cLvDPVRAl6BEPgql) - 14노드 (롤백됨)\n- [Brand OneStep v1.0](https://bawee.app.n8n.cloud/workflow/LpTWST4kYRaJmMvR) - 19노드 (Run SoM? 패치됨, 추가 버그 잔존)\n- [DIAG-001 v1](https://bizspring.app.n8n.cloud/workflow/dTJdlSzCIPd22hJv) - 12노드 (운영 중, 이관 예정)\n- [Phase0 v8.1](https://bawee.app.n8n.cloud/workflow/tViiA9NQOeVXh0B8) - 16노드\n- [Brand Suggest](https://bawee.app.n8n.cloud/workflow/KIkophnBzQxXsvNa) - 9노드\n\n### KHub 문서\n- ⭐ [OneStep Unified 이관 설계서](khub://0de06506) v1.0 — 다음 세션 필독\n- [site_domain 표준 v1.1](khub://d7f11d23)\n- [Admin 계정 생성 표준 v1.2](khub://ed1a85d1)\n- [Phase0-SiteOnly 검증 리포트](khub://6ddfd525)\n\n### Migration\n- `remove_competitor_block_from_fn_sync_project_sites_q1a` (2026-04-18)\n\n### 테스트 데이터\n- 키스톤 user_id: `22fc49cc-ba31-4033-9a91-1515d28e0335`\n- 벤츠 project_id: 219\n- .local 테스트 project_id: 221 (failed)\n- 스타벅스 테스트 project_id: 222 (failed)\n- sktworld 재진단 run_id: `e60ccfa8-4d82-4bf6-8c30-fce9646eac0b`\n\n---\n\n## 🎯 후속 작업 (다음 세션 최우선)\n\n1. ~~PREMIUM_GEO 방에서 v2 WF 검증~~ ✅ 완료\n2. **🚀 OneStep Unified Orchestrator bawee 이관** ⭐⭐⭐ (설계서 `0de06506` 기반, 3~4시간, Phase 1~5)\n3. 이관 완료 후 → SALES-030 v2 재통합 (v2.2로 Node 11.5 재삽입)\n4. BUG-005 해결 (orphan gp_service_projects 5건 재동기화)\n5. IDEA-004 구현 (SYS-010 주간 정합성 감사 WF)\n6. ~~IDEA-005 신규 등록~~ ✅ 자연 해소 (Q1-A)\n7. 벤츠 Exec Summary 리포트 조회 (Phase1A-4)\n8. 이기호 대표용 벤츠 GEO 데모 리포트 작성\n9. 404건 archived competitor 삭제 검토 (2주 관찰 후)\n\n---\n\n*Phase: 📋 PLAN (OneStep Unified 이관 대기) | 2026-04-19 | Task DevLog Tier 2b*\n",
  "embedding": null,
  "embedded_at": null,
  "embedding_hash": null,
  "backlinks": [],
  "html_url": "https://bizspring.ai/kb/ref/khub/sales-imp-008-sales-030-v2-site-domain-표준-task-devlog",
  "markdown_url": "https://bizspring.ai/kb/ref/khub/sales-imp-008-sales-030-v2-site-domain-표준-task-devlog.md"
}