# [VERIFY] DB 실측 검증 리포트 - 설계 수정 10건

> # 🔍 통합 DE 어드민 — DB 실측 검증 리포트 > v1.0 | 2026-03-29 | Phase: 🔍 VERIFIED | project_code: DATA_ENG > 설계서: `b3261b71` | 계정 체계: `0d8e87e6` --- ## 1. 검증 범위 | 데이터 

## 핵심 요약


# 🔍 통합 DE 어드민 — DB 실측 검증 리포트

> v1.0 | 2026-03-29 | Phase: 🔍 VERIFIED | project_code: DATA_ENG
> 설계서: `b3261b71` | 계정 체계: `0d8e87e6`

---

## 1. 검증 범위

| 데이터 소스 | 접근 방법 | 검증 결과 |
|------------|----------|----------|
| Supabase growthplatform | MCP execute_sql 직접 | ✅ 전수 확인 |
| Supabase bawee | MCP execute_sql 직접 | ✅ 전수 확인 |
| Supabase influencer | MCP execute_sql 직접 | ✅ 전수 확인 |
| GP MySQL gp_prod | n8n webhook relay | ⚠️ COUNT 안정, SELECT 불안정 |
| n8n bawee | REST API | ✅ 확인 |
| n8n bizspring | REST API | ✅ 확인 |
| Edge Functions | HTTP probe | ✅ 4개 확인 |

---

## 2. 모듈별 검증 결과

### mod-lift ✅ Ready

| 리소스 | 상태 | 실측 |
|--------|------|------|
| lift_tenants | ✅ | 3건: motive_demo, juvis, bizspring_v2 |
| lift_stats() RPC | ✅ | 정상 작동. bizspring_v2: 10 events |
| lift_events_raw | ✅ | 12건 |
| lift-collect EF | ✅ | HTTP 405 (POST 전용 = 정상) |
| gtm-api-test EF | ✅ | HTTP 200 |
| lift_gtm_deployments | ❌ | **미생성 — Phase 1 신규 필요** |
| lift_tenants.gtm_* | ❌ | gtm_account_id/container_id 컬럼 없음 |

### mod-service ⚠️ API 레이어 필요

| 리소스 | 설계서 | 실측 | 차이 |
|--------|--------|------|------|
| tb_client | 241건 | **265건** | +24 (10% 증가) |
| tb_agency | 119건 | **130건** | +11 (9% 증가) |
| tb_code_dtl(111) | 39매체 | **41매체** | +2 신규 매체 |
| gp-mysql-temp3 webhook | 범용 SQL | COUNT만 안정 | SELECT 빈 응답 빈번 |

**핵심 이슈**: GP MySQL webhook이 SELECT 결과 반환 불안정. 원인 추정: n8n Respond to Webhook 노드의 응답 크기/타이밍 제약. 대책: 사전 정의 고정 쿼리 전용 n8n WF 신규 개발 필요.

### mod-etl ⚠️ 데이터 정합성

| 리소스 | 실측 |
|--------|------|
| de_etl_job_status | 131건 (running: **130**, success: 1) |
| n8n bawee WFs | 100+개 (Active: 54) |
| n8n bizspring WFs | 17개 (Active: 10) |

**핵심 이슈**: 130/131건이 "running" stuck 상태. 실행 완료 후 상태 미갱신. staleness 감지 로직 + 자동 정리 RPC 필요.

### mod-media ✅ Ready

| 리소스 | 실측 |
|--------|------|
| tb_code_dtl(cd_no=111) | 41개 매체코드 |
| 매체 분류 | 광고 17 + 내부/연동 12 + 커머스 8 + 기타 4 |

### mod-dmp ⚠️ 접두사 수정

| 리소스 | 설계서(잘못됨) | 실측(정확) |
|--------|-------------|----------|
| 큐브 테이블 접두사 | dmp_cube_* | **de_dmp_cube_*** |
| 큐브 수 | 9개 | **13개 + 12 지원 테이블** |
| RPC 함수 | 미기재 | **25+ 함수** (dashboard, segment, shopping, spending) |
| de_dmp_audience 행 수 | — | 358,339건 |
| de_dmp_cube_transit | — | 5,611건 |
| de_dmp_cube_category | — | 5,467건 |
| de_dmp_cube_demo_region | — | 6,158건 |
| de_dmp_cube_device | — | 4,059건 |

### mod-feed ⚠️ 듀얼 DB 구조 발견

| 설계서(잘못됨) | 실측 |
|-------------|------|
| gp_fm_* on bawee | **bawee**: de_feed_*(9T) + fm_*(7T) |
| (미기재) | **growthplatform**: de_feed_*(19T 메타데이터) |

FeedMaker는 **두 Supabase 인스턴스에 걸쳐 있음**. bawee는 운영 데이터, growthplatform은 메타데이터. 현재 실제 상품 데이터(products_raw)는 양쪽 모두 0건 — PHP 크론이 메인.

### mod-digo ✅ Ready

| 테이블 | 행 수 |
|--------|-------|
| de_infl_influencers | 2,314 |
| de_infl_campaigns | 34 |
| de_infl_advertisers | 13 |
| de_infl_spend_daily | 503 |
| de_infl_contents | 4 |
| + 4 테이블 | de_infl_users, inquiries, notices, proposals |

### mod-geocare ✅ Ready (범위 축소 필요)

| 접두사 | 테이블 수 |
|--------|----------|
| gp_geoex_* | 71T |
| gp_geocm_* | 21T |
| gp_geokw_* | 10T |
| gp_geobh_* | 1T |
| gp_admin_* | 10T (영업CRM) |
| gp_service_* | 5T (SaaS 구독) |

119+ 테이블 전체를 어드민에 노출하면 안 됨. 핵심 현황 지표 테이블만 선별 필요.

---

## 3. 설계 수정 10건 요약

| # | 항목 | Before | After | 영향 |
|---|------|--------|-------|------|
| 1 | Credential 컬럼 | key_value | api_key_encrypted | API 호출 코드 전체 |
| 2 | DMP 접두사 | dmp_cube_* | de_dmp_cube_* | SQL 쿼리 전체 |
| 3 | DMP 큐브 수 | 9 | 13+12 | UI 그리드 설계 |
| 4 | FeedMaker 테이블 | gp_fm_* (bawee) | de_feed_*(GP) + fm_*(bawee) | 듀얼 DB 접근 |
| 5 | Client 수 | 241 | 265 | UI 페이지네이션 |
| 6 | Agency 수 | 119 | 130 | UI 표시 |
| 7 | 매체 수 | 39 | 41 | 매체 선택 UI |
| 8 | MySQL webhook | 범용 SQL | COUNT만 안정 | API 설계 근본 변경 |
| 9 | DMP RPC | 미기재 | 25+ functions | API 레이어 거의 완성 |
| 10 | ETL job status | 정상 | 130/131 stuck | 정합성 대책 필요 |

---

## 4. 구현 난이도 재정렬

| 난이도 | 모듈 | 이유 |
|--------|------|------|
| 쉬움 | mod-lift | 데이터+API+EF 완성, UI만 |
| 쉬움 | mod-dmp | 25+ RPC 함수 완성 |
| 쉬움 | mod-digo | Supabase 직접, 데이터 풍부 |
| 보통 | mod-etl | n8n API 조합, stuck job 처리 |
| 보통 | mod-media | GP MySQL 고정 쿼리 1개 |
| 어려움 | mod-service | MySQL SELECT 불안정 → 전용 WF 필요 |
| 어려움 | mod-feed | 듀얼 DB, PHP 메인과 혼재 |
| 미확보 | mod-ap | AP MySQL 접근 경로 없음 |

---

## 5. 인프라 실측 수치 (2026-03-29)

### Supabase growthplatform
- de_admin_credentials: 34건 active
- de_dmp_*: 25 tables, de_dmp_audience 358K
- de_feed_*: 19 tables (메타데이터)
- lift_*: 2T + 1RPC
- de_etl_job_status: 131건

### Supabase bawee
- gp_geoex_*: 71T, gp_geocm_*: 21T
- de_feed_* + fm_*: 16T (FeedMaker 운영)
- gp_admin_*: 10T (영업CRM)

### Supabase influencer
- de_infl_*: 9T, influencers 2,314명

### GP MySQL gp_prod
- 174T + 9V = 183 objects
- tb_admin: 201 (active 194)
- tb_agency: 130
- tb_client: 265
- tb_account: 1,265
- tb_media: 359, tb_media_license: 387
- tb_ma_campaign_target: 2.6M (최대 테이블)
- tb_code: 89그룹, tb_code_dtl: 782

### n8n
- bawee: 100+ WFs (54 active)
- bizspring: 17 WFs (10 active)

### Edge Functions (growthplatform)
- lift-collect: 405 (POST only)
- gtm-api-test: 200
- segment-preview: 401 (auth required)
- khub-mcp: 406 (MCP protocol)

---

v1.0 2026-03-29

## FAQ


---
출처: https://bizspring.ai/kb/ref/khub/data-eng-verify-db-실측-검증-리포트-설계-수정-10건 · 최종 갱신 2026-08-24T11:53:44.809175+00:00
