# 📋 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

> Phase: ✅ DONE → 🔍 VERIFIED (PREMIUM_GEO 검증 완료) → ❌ 통합 시도 실패 → 📋 재설계 완료 (OneStep Unified 이관)
> 작업일: 2026-04-18 ~ 2026-04-19
> 담당: Claude + 찰스
> 프로젝트: SALES + PREMIUM_GEO + GEOCARE

---

## 📋 PLAN (원래)

### 배경
키스톤마케팅컴퍼니 파트너 온보딩 후 프론트에서 "로그인은 되는데 사이트 목록이 비어있다"는 이슈 발생. 5개 테이블 site_domain 형식 불일치로 JOIN 실패가 근본 원인.

### 목표
1. C단계: 키스톤 정합성 즉시 복구
2. A단계: SALES-030 WF v1 → v2 재설계 (register_site RPC 기반)
3. B단계: 표준 문서화 + 정합성 감사 체계 확립
4. D단계 (PREMIUM_GEO 검증): 경쟁사 정책 확정 + WF 전수 조사 + 통합 배포

---

## 🔨 IN PROGRESS → ✅ DONE → 🔍 VERIFIED

### C단계: 키스톤 정합성 복구 (2026-04-18 오전) ✅

**복구 조치**:
- 기존 잘못된 4개 테이블 row 전수 DELETE
- `register_site()` RPC 1회 호출 → 5개 테이블 + gp_service_subscriptions 모두 `https://keystonemc.com`으로 일관
- project_id=217 생성
- get_user_sites 호출 검증: site_id=527, display_name="키스톤" 정상

### A단계: SALES-030 v1 → v2 재설계 (2026-04-18 오후) ✅

| 항목 | v1 | v2 |
|------|-----|-----|
| 노드 수 | 16 | 14 |
| 사이트 등록 방식 | 5개 테이블 직접 UPSERT | `register_site()` RPC 1회 |
| `gp_service_projects` 생성 | ❌ 누락 | ✅ 자동 |
| `gp_service_subscriptions` 생성 | ❌ 누락 | ✅ 자동 |

**WF**: `cLvDPVRAl6BEPgql`, Webhook: `/sales-030-partner-onboarding`

### B단계: KHub 문서 정비 (2026-04-18 저녁) ✅

| ID | 문서 | 작업 |
|----|------|------|
| `d7f11d23` | 🎯 site_domain 표준 & 사이트 등록 공식 경로 | v1.0 신규 → v1.1 |
| `ed1a85d1` | 🔐 파트너/고객 계정 Admin 생성 표준 | v1.1 → v1.2 |
| `f2bbd106` | 📮 전사 공유 보드 | IMP-008 Resolved 등록 |

### 확장: 벤츠로 크롤 대상 교체 (2026-04-18 저녁) ✅

- 키스톤 project_id=217 전수 DELETE → 벤츠 `mercedes-benz.co.kr` 재등록 project_id=219
- Phase0 Onboarding webhook 호출 → 49페이지 크롤 + RAG 적재 + KPI 분석 완료 (6분 45초)
- Total Score: 72.45 / 100 🟢 Good

---

### 🆕 D단계: PREMIUM_GEO 방 검증 + 확장 (2026-04-18 밤) ✅

#### D-1. SALES 검증 3건 수행

**검증 1 (파트너 4사 정합성)** — ✅ 100% 통과 (65 row 전부 `https://` 표준)

**검증 2 (v2 WF 채택)** — ✅ 조건부 YES (보완 관계, 충돌 없음)

**검증 3 (IDEA-005 버그)** — 🔥 실재 확증 → Q1-A 정책 이행으로 자연 해소

#### D-2. 경쟁사 정책 대전환 (Q1-A 결정)
**찰스 판단**: 경쟁사는 SoM 레퍼런스 전용, 직접 크롤 금지

#### D-3. DB 패치 이행
- 트리거 패치 (migration `remove_competitor_block_from_fn_sync_project_sites_q1a`)
- 177건 `pending_crawl` → `archived`
- 표준 문서 v1.1 업데이트, AP-SITE-05 신설

---

### 🔴 D-4: OneStep 통합 시도 → 실패 판정 (2026-04-18 밤 ~ 04-19 새벽) ❌→📋

#### 시도 내용
- Brand OneStep Orchestrator(`LpTWST4kYRaJmMvR`)를 SALES-030 v2에 Node 11.5로 통합
- E2E 테스트 2회 "success" 응답 수신 → 성공 보고

#### 실패 발견 (04-19 새벽)
찰스 지적으로 재검증 결과:
1. **Phase0 v8.1 실행 로그 0건 발견** — `saveDataSuccessExecution: none` 설정으로 UI 가시성 없음
2. **"E2E 성공"은 오판**: `starbucks.co.kr` + `onestep-test-*.local` **2건 모두 gp_geoex_analysis_jobs에서 `status=failed`** (auto-timeout 120min, progress=70%)
3. **Brand OneStep 자체 미완성**:
   - 실행 이력 총 5건 (전부 테스트, 운영 0건)
   - Run SoM? 노드 체인 버그 → SoM 5개 노드 한 번도 실행된 적 없음 (4개월간)
   - 4/18 패치 후 재테스트에서 추가 버그 3건 발견:
     - Step5 SoM v10 "site_domain 필요" (workflowInputs 빈 값)
     - Step6 Gap Analyzer 동일
     - Step7 P7 Report 동일
     - Step3 QueryGen HTTP 400 (competitor_confirmed=0 fallback 없음)

#### 롤백 + Brand OneStep 패치 완료 (04-19)
- ✅ SALES-030 v2.1 → v2.0 롤백 (14 노드, Node 11.5 제거)
- ✅ Brand OneStep Run SoM? 버그 패치 (leftValue → Parse Input 명시 참조, 4개월 묵은 근본 버그 해결)
- ❌ 추가 버그 3건은 별도 세션에서 작업 필요

---

### 🔍 D-5: 원스탑 분석 WF 전수 조사 + 숨겨진 실체 발견 (04-19) ✅

#### 전수 조사
- bawee n8n 339 WFs + bizspring n8n 31 WFs 모두 cursor 페이징으로 스캔
- webhook + domain 입력 패턴 38개 후보 식별
- 실행 이력 대조

#### 결정적 발견
**`[DIAG-001] GEO Diagnosis Orchestrator v1`** (bizspring n8n `dTJdlSzCIPd22hJv`)
- 2026-02-23 생성, 12노드, 운영 중
- Webhook: `POST /webhook/geo-diagnosis`
- partner.geocare.ai의 "진단 요청" 버튼의 진짜 백엔드
- 진입 경로: `partner.geocare.ai → geobh-run-diagnosis EF → bizspring n8n DIAG-001`
- gp_admin_secrets `N8N_DIAG_WEBHOOK`으로 URL 관리

#### Brand OneStep vs DIAG-001 관계 판명
- Brand OneStep(bawee, 4/4 생성, 19노드) = DIAG-001을 bawee로 옮기려다 미완성된 시도
- DIAG-001 = 기존 고객 재진단 (client_slug 입력)
- Brand OneStep = 신규 도메인 초기 분석 (domain 입력, 추가 SoM 포함)

---

### 🎯 D-6: OneStep Unified 이관 설계 (04-19) ✅ PLAN

**찰스 결정**: DIAG-001 + Brand OneStep 두 개 모두 bawee로 옮겨 통합
**설계서**: KHub `0de06506-4915-4eec-b836-931ae09da58a`
**상태**: 📋 PLAN 완료, 실행 대기 (다음 세션)

#### 설계 개요
- 통합 WF 1개, mode 라우팅 (brand / diagnosis)
- webhook 3개 (`/geo-diagnosis`, `/geo/brand-onestep`, `/onestep-unified`) 모두 단일 WF 진입
- 26 노드 (공통 4 + Brand 8 + Diagnosis 7 + 공통 종료 7)
- bawee n8n + Config Loader I패턴 + service_role JWT 하드코딩 제거
- Slack URL placeholder → 실제 URL 사전 등록 (`SLACK_GEO_DIAG_WEBHOOK`)
- Brand OneStep 4개월 묵은 체인 버그 + workflowInputs 누락 일괄 해결

#### 마이그레이션 5-Phase
- Phase 1: 준비 (30분) — Slack 시크릿 등록, 빈 WF 생성
- Phase 2: 구축 (1.5~2시간) — 26노드 PUT 배포
- Phase 3: Shadow 검증 (30분) — Mode A/B 각 2건 E2E
- Phase 4: 전환 (15분) — Activate + N8N_DIAG_WEBHOOK URL 교체
- Phase 5: 정리 (10분) — 24h 모니터링 후 구버전 Archive

---

## 🔍 VERIFIED (D-5까지)

- ✅ 키스톤 get_user_sites 정상
- ✅ v2 WF E2E 성공 (409 + 200)
- ✅ 벤츠 49페이지 전체 KPI 분석 완료
- ✅ PREMIUM_GEO 파트너 4사 65 row 정합성 100%
- ✅ `fn_sync_project_sites` 패치 확인
- ✅ 177건 archived 전환
- ✅ SALES-030 v2.0 롤백 확인 (14 노드)
- ✅ Brand OneStep Run SoM? 패치 확인 (ediya.com 테스트에서 SoM 파이프라인 실행됨)
- ✅ DIAG-001 실제 운영 WF임을 확인 (sktworld 재진단 호출 성공)
- ✅ OneStep Unified 이관 설계서 저장 (`0de06506`)

---

## 📡 Cross-Room 영향

### SALES → PREMIUM_GEO (처리 완료)
- v2 WF 검증 → 100% 통과
- site_domain 표준 공유 → 준수 확인
- IDEA-005 트리거 버그 → Q1-A로 자연 해소

### PREMIUM_GEO → GEOCARE (처리 완료)
- IDEA-005 자연 해소 통보
- AP-SITE-05 신설 공유

### PREMIUM_GEO → SALES (04-19 정정)
- 🟢 OneStep 통합 v2.1 배포 실패 정정 → v2.0 롤백 완료
- OneStep Unified 이관 완료 후 재통합 예정

### PREMIUM_GEO → COMMON (04-19 신규)
- bizspring DIAG-001이 서비스 메인 진단 WF였음을 발견
- 인프라 매핑 정보 갱신 필요

---

## 🧠 핵심 학습 13가지

### 기존 (C~B단계)
1. `register_site()` RPC가 유일한 공식 경로
2. `trg_ensure_https_geo_gpt_site` 존재
3. PostgREST multi-parameter RPC 호출 규칙
4. Phase0 WF vs register_site 역할 분리
5. url_analysis.status는 "등급값"

### D단계
6. cursor 페이징 필수 (n8n API limit 250 한도)
7. 정책→트리거→데이터→WF 순서
8. 영향도 매트릭스 사전 검증
9. webhook 호출 추적 = 실행 로그 역추적
10. 자연 해소 > 정교한 패치

### 🆕 04-19 추가
11. **Node 응답 성공만으로 E2E 판정 금지** — DB 최종 상태까지 확인 필수. "success: true"와 실제 DB 상태가 다를 수 있음
12. **`saveDataSuccessExecution: none` WF는 UI상 "실행 0건"이지만 실제 운영 중일 수 있음** — 역으로 "실행 많아 보이는 WF"도 전부 테스트일 수 있음 (Brand OneStep 5건 = 4테스트 + 1 Claude)
13. **n8n 서버 2개 (bawee, bizspring) 간 cross-server 호출은 숨겨진 진입점 탐지를 어렵게 함** — "원스탑 분석" 같은 사용자 용어로 WF를 찾을 땐 두 서버 모두 전수 스캔 필요. gp_admin_secrets의 webhook URL이 결정적 단서

---

## ⚠️ 안티패턴 (AP-SITE-01~05)

| AP | 규칙 |
|----|------|
| AP-SITE-01 | 5개 테이블 직접 UPSERT 금지 |
| AP-SITE-02 | Phase0 WF로 사이트 등록 시도 금지 |
| AP-SITE-03 | site_domain에 www. 포함 금지 |
| AP-SITE-04 | RPC 호출 시 `Prefer: params=single-object` 금지 |
| **AP-SITE-05** | **경쟁사 직접 크롤 시도 금지 (Q1-A, 2026-04-18)** |

---

## 📎 관련 리소스

### n8n WF
- [OneStep 파트너등록 v2.0](https://bawee.app.n8n.cloud/workflow/cLvDPVRAl6BEPgql) - 14노드 (롤백됨)
- [Brand OneStep v1.0](https://bawee.app.n8n.cloud/workflow/LpTWST4kYRaJmMvR) - 19노드 (Run SoM? 패치됨, 추가 버그 잔존)
- [DIAG-001 v1](https://bizspring.app.n8n.cloud/workflow/dTJdlSzCIPd22hJv) - 12노드 (운영 중, 이관 예정)
- [Phase0 v8.1](https://bawee.app.n8n.cloud/workflow/tViiA9NQOeVXh0B8) - 16노드
- [Brand Suggest](https://bawee.app.n8n.cloud/workflow/KIkophnBzQxXsvNa) - 9노드

### KHub 문서
- ⭐ [OneStep Unified 이관 설계서](khub://0de06506) v1.0 — 다음 세션 필독
- [site_domain 표준 v1.1](khub://d7f11d23)
- [Admin 계정 생성 표준 v1.2](khub://ed1a85d1)
- [Phase0-SiteOnly 검증 리포트](khub://6ddfd525)

### Migration
- `remove_competitor_block_from_fn_sync_project_sites_q1a` (2026-04-18)

### 테스트 데이터
- 키스톤 user_id: `22fc49cc-ba31-4033-9a91-1515d28e0335`
- 벤츠 project_id: 219
- .local 테스트 project_id: 221 (failed)
- 스타벅스 테스트 project_id: 222 (failed)
- sktworld 재진단 run_id: `e60ccfa8-4d82-4bf6-8c30-fce9646eac0b`

---

## 🎯 후속 작업 (다음 세션 최우선)

1. ~~PREMIUM_GEO 방에서 v2 WF 검증~~ ✅ 완료
2. **🚀 OneStep Unified Orchestrator bawee 이관** ⭐⭐⭐ (설계서 `0de06506` 기반, 3~4시간, Phase 1~5)
3. 이관 완료 후 → SALES-030 v2 재통합 (v2.2로 Node 11.5 재삽입)
4. BUG-005 해결 (orphan gp_service_projects 5건 재동기화)
5. IDEA-004 구현 (SYS-010 주간 정합성 감사 WF)
6. ~~IDEA-005 신규 등록~~ ✅ 자연 해소 (Q1-A)
7. 벤츠 Exec Summary 리포트 조회 (Phase1A-4)
8. 이기호 대표용 벤츠 GEO 데모 리포트 작성
9. 404건 archived competitor 삭제 검토 (2주 관찰 후)

---

*Phase: 📋 PLAN (OneStep Unified 이관 대기) | 2026-04-19 | Task DevLog Tier 2b*


## FAQ


---
출처: https://bizspring.ai/kb/ref/khub/sales-imp-008-sales-030-v2-site-domain-표준-task-devlog · 최종 갱신 2026-08-24T11:53:44.684733+00:00
