{
  "id": "9b710215-f92b-4732-9580-0026a27abfca",
  "slug": "ref/khub/data-eng-verify-db-실측-검증-리포트-설계-수정-10건",
  "doc_type": "ref",
  "title": "[VERIFY] DB 실측 검증 리포트 - 설계 수정 10건",
  "title_en": null,
  "one_liner": "# 🔍 통합 DE 어드민 — DB 실측 검증 리포트 > v1.0 | 2026-03-29 | Phase: 🔍 VERIFIED | project_code: DATA_ENG > 설계서: `b3261b71` | 계정 체계: `0d8e87e6` --- ## 1. 검증 범위 | 데이터 ",
  "summary_bullets": [],
  "body_md": "# 🔍 통합 DE 어드민 — DB 실측 검증 리포트\n\n> v1.0 | 2026-03-29 | Phase: 🔍 VERIFIED | project_code: DATA_ENG\n> 설계서: `b3261b71` | 계정 체계: `0d8e87e6`\n\n---\n\n## 1. 검증 범위\n\n| 데이터 소스 | 접근 방법 | 검증 결과 |\n|------------|----------|----------|\n| Supabase growthplatform | MCP execute_sql 직접 | ✅ 전수 확인 |\n| Supabase bawee | MCP execute_sql 직접 | ✅ 전수 확인 |\n| Supabase influencer | MCP execute_sql 직접 | ✅ 전수 확인 |\n| GP MySQL gp_prod | n8n webhook relay | ⚠️ COUNT 안정, SELECT 불안정 |\n| n8n bawee | REST API | ✅ 확인 |\n| n8n bizspring | REST API | ✅ 확인 |\n| Edge Functions | HTTP probe | ✅ 4개 확인 |\n\n---\n\n## 2. 모듈별 검증 결과\n\n### mod-lift ✅ Ready\n\n| 리소스 | 상태 | 실측 |\n|--------|------|------|\n| lift_tenants | ✅ | 3건: motive_demo, juvis, bizspring_v2 |\n| lift_stats() RPC | ✅ | 정상 작동. bizspring_v2: 10 events |\n| lift_events_raw | ✅ | 12건 |\n| lift-collect EF | ✅ | HTTP 405 (POST 전용 = 정상) |\n| gtm-api-test EF | ✅ | HTTP 200 |\n| lift_gtm_deployments | ❌ | **미생성 — Phase 1 신규 필요** |\n| lift_tenants.gtm_* | ❌ | gtm_account_id/container_id 컬럼 없음 |\n\n### mod-service ⚠️ API 레이어 필요\n\n| 리소스 | 설계서 | 실측 | 차이 |\n|--------|--------|------|------|\n| tb_client | 241건 | **265건** | +24 (10% 증가) |\n| tb_agency | 119건 | **130건** | +11 (9% 증가) |\n| tb_code_dtl(111) | 39매체 | **41매체** | +2 신규 매체 |\n| gp-mysql-temp3 webhook | 범용 SQL | COUNT만 안정 | SELECT 빈 응답 빈번 |\n\n**핵심 이슈**: GP MySQL webhook이 SELECT 결과 반환 불안정. 원인 추정: n8n Respond to Webhook 노드의 응답 크기/타이밍 제약. 대책: 사전 정의 고정 쿼리 전용 n8n WF 신규 개발 필요.\n\n### mod-etl ⚠️ 데이터 정합성\n\n| 리소스 | 실측 |\n|--------|------|\n| de_etl_job_status | 131건 (running: **130**, success: 1) |\n| n8n bawee WFs | 100+개 (Active: 54) |\n| n8n bizspring WFs | 17개 (Active: 10) |\n\n**핵심 이슈**: 130/131건이 \"running\" stuck 상태. 실행 완료 후 상태 미갱신. staleness 감지 로직 + 자동 정리 RPC 필요.\n\n### mod-media ✅ Ready\n\n| 리소스 | 실측 |\n|--------|------|\n| tb_code_dtl(cd_no=111) | 41개 매체코드 |\n| 매체 분류 | 광고 17 + 내부/연동 12 + 커머스 8 + 기타 4 |\n\n### mod-dmp ⚠️ 접두사 수정\n\n| 리소스 | 설계서(잘못됨) | 실측(정확) |\n|--------|-------------|----------|\n| 큐브 테이블 접두사 | dmp_cube_* | **de_dmp_cube_*** |\n| 큐브 수 | 9개 | **13개 + 12 지원 테이블** |\n| RPC 함수 | 미기재 | **25+ 함수** (dashboard, segment, shopping, spending) |\n| de_dmp_audience 행 수 | — | 358,339건 |\n| de_dmp_cube_transit | — | 5,611건 |\n| de_dmp_cube_category | — | 5,467건 |\n| de_dmp_cube_demo_region | — | 6,158건 |\n| de_dmp_cube_device | — | 4,059건 |\n\n### mod-feed ⚠️ 듀얼 DB 구조 발견\n\n| 설계서(잘못됨) | 실측 |\n|-------------|------|\n| gp_fm_* on bawee | **bawee**: de_feed_*(9T) + fm_*(7T) |\n| (미기재) | **growthplatform**: de_feed_*(19T 메타데이터) |\n\nFeedMaker는 **두 Supabase 인스턴스에 걸쳐 있음**. bawee는 운영 데이터, growthplatform은 메타데이터. 현재 실제 상품 데이터(products_raw)는 양쪽 모두 0건 — PHP 크론이 메인.\n\n### mod-digo ✅ Ready\n\n| 테이블 | 행 수 |\n|--------|-------|\n| de_infl_influencers | 2,314 |\n| de_infl_campaigns | 34 |\n| de_infl_advertisers | 13 |\n| de_infl_spend_daily | 503 |\n| de_infl_contents | 4 |\n| + 4 테이블 | de_infl_users, inquiries, notices, proposals |\n\n### mod-geocare ✅ Ready (범위 축소 필요)\n\n| 접두사 | 테이블 수 |\n|--------|----------|\n| gp_geoex_* | 71T |\n| gp_geocm_* | 21T |\n| gp_geokw_* | 10T |\n| gp_geobh_* | 1T |\n| gp_admin_* | 10T (영업CRM) |\n| gp_service_* | 5T (SaaS 구독) |\n\n119+ 테이블 전체를 어드민에 노출하면 안 됨. 핵심 현황 지표 테이블만 선별 필요.\n\n---\n\n## 3. 설계 수정 10건 요약\n\n| # | 항목 | Before | After | 영향 |\n|---|------|--------|-------|------|\n| 1 | Credential 컬럼 | key_value | api_key_encrypted | API 호출 코드 전체 |\n| 2 | DMP 접두사 | dmp_cube_* | de_dmp_cube_* | SQL 쿼리 전체 |\n| 3 | DMP 큐브 수 | 9 | 13+12 | UI 그리드 설계 |\n| 4 | FeedMaker 테이블 | gp_fm_* (bawee) | de_feed_*(GP) + fm_*(bawee) | 듀얼 DB 접근 |\n| 5 | Client 수 | 241 | 265 | UI 페이지네이션 |\n| 6 | Agency 수 | 119 | 130 | UI 표시 |\n| 7 | 매체 수 | 39 | 41 | 매체 선택 UI |\n| 8 | MySQL webhook | 범용 SQL | COUNT만 안정 | API 설계 근본 변경 |\n| 9 | DMP RPC | 미기재 | 25+ functions | API 레이어 거의 완성 |\n| 10 | ETL job status | 정상 | 130/131 stuck | 정합성 대책 필요 |\n\n---\n\n## 4. 구현 난이도 재정렬\n\n| 난이도 | 모듈 | 이유 |\n|--------|------|------|\n| 쉬움 | mod-lift | 데이터+API+EF 완성, UI만 |\n| 쉬움 | mod-dmp | 25+ RPC 함수 완성 |\n| 쉬움 | mod-digo | Supabase 직접, 데이터 풍부 |\n| 보통 | mod-etl | n8n API 조합, stuck job 처리 |\n| 보통 | mod-media | GP MySQL 고정 쿼리 1개 |\n| 어려움 | mod-service | MySQL SELECT 불안정 → 전용 WF 필요 |\n| 어려움 | mod-feed | 듀얼 DB, PHP 메인과 혼재 |\n| 미확보 | mod-ap | AP MySQL 접근 경로 없음 |\n\n---\n\n## 5. 인프라 실측 수치 (2026-03-29)\n\n### Supabase growthplatform\n- de_admin_credentials: 34건 active\n- de_dmp_*: 25 tables, de_dmp_audience 358K\n- de_feed_*: 19 tables (메타데이터)\n- lift_*: 2T + 1RPC\n- de_etl_job_status: 131건\n\n### Supabase bawee\n- gp_geoex_*: 71T, gp_geocm_*: 21T\n- de_feed_* + fm_*: 16T (FeedMaker 운영)\n- gp_admin_*: 10T (영업CRM)\n\n### Supabase influencer\n- de_infl_*: 9T, influencers 2,314명\n\n### GP MySQL gp_prod\n- 174T + 9V = 183 objects\n- tb_admin: 201 (active 194)\n- tb_agency: 130\n- tb_client: 265\n- tb_account: 1,265\n- tb_media: 359, tb_media_license: 387\n- tb_ma_campaign_target: 2.6M (최대 테이블)\n- tb_code: 89그룹, tb_code_dtl: 782\n\n### n8n\n- bawee: 100+ WFs (54 active)\n- bizspring: 17 WFs (10 active)\n\n### Edge Functions (growthplatform)\n- lift-collect: 405 (POST only)\n- gtm-api-test: 200\n- segment-preview: 401 (auth required)\n- khub-mcp: 406 (MCP protocol)\n\n---\n\nv1.0 2026-03-29",
  "related_slugs": [],
  "faq": [],
  "jsonld": null,
  "keywords": [],
  "source_id": "f556f638-13f6-4c5a-90d0-1b2d07090c30",
  "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.809175+00:00",
  "updated_at": "2026-08-24T11:53:44.809175+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": 47,
      "issues": [
        "핵심 요약 불릿이 3개 미만입니다",
        "Q&A 쌍이 3개 미만입니다"
      ],
      "applies": true
    },
    "g3": {
      "pass": true,
      "required": false
    },
    "stage": "1",
    "decided_at": "2026-08-24T11:53:44.334Z"
  },
  "raw_id": "60a54979-0736-4436-82c8-fa55bcdd9dc1",
  "search_text": "[VERIFY] DB 실측 검증 리포트 - 설계 수정 10건  # 🔍 통합 DE 어드민 — DB 실측 검증 리포트 > v1.0 | 2026-03-29 | Phase: 🔍 VERIFIED | project_code: DATA_ENG > 설계서: `b3261b71` | 계정 체계: `0d8e87e6` --- ## 1. 검증 범위 | 데이터   # 🔍 통합 DE 어드민 — DB 실측 검증 리포트\n\n> v1.0 | 2026-03-29 | Phase: 🔍 VERIFIED | project_code: DATA_ENG\n> 설계서: `b3261b71` | 계정 체계: `0d8e87e6`\n\n---\n\n## 1. 검증 범위\n\n| 데이터 소스 | 접근 방법 | 검증 결과 |\n|------------|----------|----------|\n| Supabase growthplatform | MCP execute_sql 직접 | ✅ 전수 확인 |\n| Supabase bawee | MCP execute_sql 직접 | ✅ 전수 확인 |\n| Supabase influencer | MCP execute_sql 직접 | ✅ 전수 확인 |\n| GP MySQL gp_prod | n8n webhook relay | ⚠️ COUNT 안정, SELECT 불안정 |\n| n8n bawee | REST API | ✅ 확인 |\n| n8n bizspring | REST API | ✅ 확인 |\n| Edge Functions | HTTP probe | ✅ 4개 확인 |\n\n---\n\n## 2. 모듈별 검증 결과\n\n### mod-lift ✅ Ready\n\n| 리소스 | 상태 | 실측 |\n|--------|------|------|\n| lift_tenants | ✅ | 3건: motive_demo, juvis, bizspring_v2 |\n| lift_stats() RPC | ✅ | 정상 작동. bizspring_v2: 10 events |\n| lift_events_raw | ✅ | 12건 |\n| lift-collect EF | ✅ | HTTP 405 (POST 전용 = 정상) |\n| gtm-api-test EF | ✅ | HTTP 200 |\n| lift_gtm_deployments | ❌ | **미생성 — Phase 1 신규 필요** |\n| lift_tenants.gtm_* | ❌ | gtm_account_id/container_id 컬럼 없음 |\n\n### mod-service ⚠️ API 레이어 필요\n\n| 리소스 | 설계서 | 실측 | 차이 |\n|--------|--------|------|------|\n| tb_client | 241건 | **265건** | +24 (10% 증가) |\n| tb_agency | 119건 | **130건** | +11 (9% 증가) |\n| tb_code_dtl(111) | 39매체 | **41매체** | +2 신규 매체 |\n| gp-mysql-temp3 webhook | 범용 SQL | COUNT만 안정 | SELECT 빈 응답 빈번 |\n\n**핵심 이슈**: GP MySQL webhook이 SELECT 결과 반환 불안정. 원인 추정: n8n Respond to Webhook 노드의 응답 크기/타이밍 제약. 대책: 사전 정의 고정 쿼리 전용 n8n WF 신규 개발 필요.\n\n### mod-etl ⚠️ 데이터 정합성\n\n| 리소스 | 실측 |\n|--------|------|\n| de_etl_job_status | 131건 (running: **130**, success: 1) |\n| n8n bawee WFs | 100+개 (Active: 54) |\n| n8n bizspring WFs | 17개 (Active: 10) |\n\n**핵심 이슈**: 130/131건이 \"running\" stuck 상태. 실행 완료 후 상태 미갱신. staleness 감지 로직 + 자동 정리 RPC 필요.\n\n### mod-media ✅ Ready\n\n| 리소스 | 실측 |\n|--------|------|\n| tb_code_dtl(cd_no=111) | 41개 매체코드 |\n| 매체 분류 | 광고 17 + 내부/연동 12 + 커머스 8 + 기타 4 |\n\n### mod-dmp ⚠️ 접두사 수정\n\n| 리소스 | 설계서(잘못됨) | 실측(정확) |\n|--------|-------------|----------|\n| 큐브 테이블 접두사 | dmp_cube_* | **de_dmp_cube_*** |\n| 큐브 수 | 9개 | **13개 + 12 지원 테이블** |\n| RPC 함수 | 미기재 | **25+ 함수** (dashboard, segment, shopping, spending) |\n| de_dmp_audience 행 수 | — | 358,339건 |\n| de_dmp_cube_transit | — | 5,611건 |\n| de_dmp_cube_category | — | 5,467건 |\n| de_dmp_cube_demo_region | — | 6,158건 |\n| de_dmp_cube_device | — | 4,059건 |\n\n### mod-feed ⚠️ 듀얼 DB 구조 발견\n\n| 설계서(잘못됨) | 실측 |\n|-------------|------|\n| gp_fm_* on bawee | **bawee**: de_feed_*(9T) + fm_*(7T) |\n| (미기재) | **growthplatform**: de_feed_*(19T 메타데이터) |\n\nFeedMaker는 **두 Supabase 인스턴스에 걸쳐 있음**. bawee는 운영 데이터, growthplatform은 메타데이터. 현재 실제 상품 데이터(products_raw)는 양쪽 모두 0건 — PHP 크론이 메인.\n\n### mod-digo ✅ Ready\n\n| 테이블 | 행 수 |\n|--------|-------|\n| de_infl_influencers | 2,314 |\n| de_infl_campaigns | 34 |\n| de_infl_advertisers | 13 |\n| de_infl_spend_daily | 503 |\n| de_infl_contents | 4 |\n| + 4 테이블 | de_infl_users, inquiries, notices, proposals |\n\n### mod-geocare ✅ Ready (범위 축소 필요)\n\n| 접두사 | 테이블 수 |\n|--------|----------|\n| gp_geoex_* | 71T |\n| gp_geocm_* | 21T |\n| gp_geokw_* | 10T |\n| gp_geobh_* | 1T |\n| gp_admin_* | 10T (영업CRM) |\n| gp_service_* | 5T (SaaS 구독) |\n\n119+ 테이블 전체를 어드민에 노출하면 안 됨. 핵심 현황 지표 테이블만 선별 필요.\n\n---\n\n## 3. 설계 수정 10건 요약\n\n| # | 항목 | Before | After | 영향 |\n|---|------|--------|-------|------|\n| 1 | Credential 컬럼 | key_value | api_key_encrypted | API 호출 코드 전체 |\n| 2 | DMP 접두사 | dmp_cube_* | de_dmp_cube_* | SQL 쿼리 전체 |\n| 3 | DMP 큐브 수 | 9 | 13+12 | UI 그리드 설계 |\n| 4 | FeedMaker 테이블 | gp_fm_* (bawee) | de_feed_*(GP) + fm_*(bawee) | 듀얼 DB 접근 |\n| 5 | Client 수 | 241 | 265 | UI 페이지네이션 |\n| 6 | Agency 수 | 119 | 130 | UI 표시 |\n| 7 | 매체 수 | 39 | 41 | 매체 선택 UI |\n| 8 | MySQL webhook | 범용 SQL | COUNT만 안정 | API 설계 근본 변경 |\n| 9 | DMP RPC | 미기재 | 25+ functions | API 레이어 거의 완성 |\n| 10 | ETL job status | 정상 | 130/131 stuck | 정합성 대책 필요 |\n\n---\n\n## 4. 구현 난이도 재정렬\n\n| 난이도 | 모듈 | 이유 |\n|--------|------|------|\n| 쉬움 | mod-lift | 데이터+API+EF 완성, UI만 |\n| 쉬움 | mod-dmp | 25+ RPC 함수 완성 |\n| 쉬움 | mod-digo | Supabase 직접, 데이터 풍부 |\n| 보통 | mod-etl | n8n API 조합, stuck job 처리 |\n| 보통 | mod-media | GP MySQL 고정 쿼리 1개 |\n| 어려움 | mod-service | MySQL SELECT 불안정 → 전용 WF 필요 |\n| 어려움 | mod-feed | 듀얼 DB, PHP 메인과 혼재 |\n| 미확보 | mod-ap | AP MySQL 접근 경로 없음 |\n\n---\n\n## 5. 인프라 실측 수치 (2026-03-29)\n\n### Supabase growthplatform\n- de_admin_credentials: 34건 active\n- de_dmp_*: 25 tables, de_dmp_audience 358K\n- de_feed_*: 19 tables (메타데이터)\n- lift_*: 2T + 1RPC\n- de_etl_job_status: 131건\n\n### Supabase bawee\n- gp_geoex_*: 71T, gp_geocm_*: 21T\n- de_feed_* + fm_*: 16T (FeedMaker 운영)\n- gp_admin_*: 10T (영업CRM)\n\n### Supabase influencer\n- de_infl_*: 9T, influencers 2,314명\n\n### GP MySQL gp_prod\n- 174T + 9V = 183 objects\n- tb_admin: 201 (active 194)\n- tb_agency: 130\n- tb_client: 265\n- tb_account: 1,265\n- tb_media: 359, tb_media_license: 387\n- tb_ma_campaign_target: 2.6M (최대 테이블)\n- tb_code: 89그룹, tb_code_dtl: 782\n\n### n8n\n- bawee: 100+ WFs (54 active)\n- bizspring: 17 WFs (10 active)\n\n### Edge Functions (growthplatform)\n- lift-collect: 405 (POST only)\n- gtm-api-test: 200\n- segment-preview: 401 (auth required)\n- khub-mcp: 406 (MCP protocol)\n\n---\n\nv1.0 2026-03-29",
  "embedding": null,
  "embedded_at": null,
  "embedding_hash": null,
  "backlinks": [],
  "html_url": "https://bizspring.ai/kb/ref/khub/data-eng-verify-db-실측-검증-리포트-설계-수정-10건",
  "markdown_url": "https://bizspring.ai/kb/ref/khub/data-eng-verify-db-실측-검증-리포트-설계-수정-10건.md"
}