[ARCH] GP MySQL gp_prod 계정·권한·연동 체계 레퍼런스
핵심 요약
# 📊 GP MySQL gp_prod 계정·권한·연동 체계 레퍼런스
> v1.0 | 2026-03-29 | DB 실측 기반 | project_code: DATA_ENG
> 접근: n8n-bizspring webhook gp-mysql-temp3 (WF: FICNrkmVL8NKguT3)
> 관련: GP MySQL 데이터 구조 432148ba, GP MySQL 접근 가이드 344622a1
---
1. gp_prod 전체 도메인 분류 (183 objects = 174T + 9V)
| # | 도메인 | 접두사 | 테이블 수 | 총 행 수 | 핵심 엔터티 |
|---|---|---|---|---|---|
| 1 | 계정/인증 | tb_admin, tb_role, tb_privilege, tb_team | 13T | ~1.7K | admin 201명, role 8, privilege 108 |
| 2 | 대행사/광고주 | tb_agency, tb_client, tb_account | 33T | ~1.4M | agency 130, client 265, account 1,265 |
| 3 | 매체/API 연동 | tb_media, tb_media_api, tb_media_license | 6T | ~1.5K | media 359, license 387 |
| 4 | 마케팅 자동화(MA) | tb_ma_* | 22T | ~2.6M | campaign 56, target 2.6M, segment 117 |
| 5 | 리포팅/엑셀 | tb_report_*, tb_excel_* | 13T | ~362K | report_job 347K |
| 6 | 세그먼트/오디언스 | tb_segment_*, tb_audience_*, tb_aggregation_* | 11T | ~30K | segment_work 12K |
| 7 | 추천/ML/AI | tb_recomm_*, tb_ml_*, tb_ai_* | 16T | ~49K | recomm_user_base 46K |
| 8 | 모니터링/센티넬 | tb_monitoring_*, tb_sentinel_* | 12T | ~4.3K | sentinel_rule 3.4K |
| 9 | 트래킹/UTM | tb_tracker_*, tb_mplanit_* | 9T | ~16.7K | tracker_upload 11K |
| 10 | 코드/시스템 | tb_code*, tb_product, tb_app, tb_orders 등 | 20T+9V | ~1.3K | code 89그룹, code_dtl 782 |
---
2. 계정 체계 ER 다이어그램
tb_role (8개 역할)
├── super(1) / admin(2) / feign(3) ← 시스템 역할
├── manager(11) / editor(12) / viewer(13) ← 대행사 역할
└── client_editor(22) / client_viewer(23) ← 광고주 역할
│
↓ tb_role_privilege (540건 = role×privilege 매핑)
tb_privilege (108개 기능 권한)
tb_agency (130건, agency_tp: 마스터/대행사/대리대행사/광고주)
│ seq(PK), agency_nm, agency_tp, agency_option(JSON), act_st
│
├── tb_agency_app (596건 = 앱 연동)
│
├── → tb_admin (201건, agency_seq FK)
│ │ seq(PK), admin_id, admin_pw, admin_nm, admin_option(JSON)
│ │ act_st, agency_seq(FK), email_verified
│ │ 상태: 사용중 194, 사용불가_D 10, 사용종료 7
│ │
│ ├── tb_admin_role (226건 = admin↔role N:M 매핑)
│ │ admin_seq(FK) → role_seq(FK)
│ │
│ └── tb_admin_app (0건 = admin별 앱 권한, 미사용)
│
├── → tb_team (agency_seq FK, parent_seq 계층)
│ │ seq(PK), team_nm, team_level, parent_seq(자기참조)
│ │
│ ├── tb_team_admin (219건 = team↔admin 매핑)
│ └── tb_team_client (248건 = team↔client 매핑)
│
└── → tb_client (265건, agency_seq FK)
│ seq(PK), client_nm, client_option(JSON ★핵심), act_st
│
└── → tb_account (1,265건)
│ agency_seq, account_no, media_tp, account_nm
│ account_option(JSON), license_seq(FK)
│
└── tb_media_license (387건)
│ seq(PK), license_nm, media_tp, agency_seq
│ admin_seq, api_seq, license_option(JSON)
│
└── tb_media_api (매체별 API 토큰)
seq(PK), api_nm, media_tp, token, api_option(JSON)
---
3. 역할(RBAC) 체계 상세
tb_role (8건)
| seq | role_nm | 유형 | 설명 |
|---|---|---|---|
| 1 | super | 시스템 | 최고 관리자 |
| 2 | admin | 시스템 | 일반 관리자 |
| 3 | feign | 시스템 | 서비스 간 통신 (MSA Feign Client) |
| 11 | manager | 대행사 | 대행사 매니저 |
| 12 | editor | 대행사 | 대행사 편집자 |
| 13 | viewer | 대행사 | 대행사 뷰어 |
| 22 | client_editor | 광고주 | 광고주 편집자 |
| 23 | client_viewer | 광고주 | 광고주 뷰어 |
tb_privilege (108건)
- role_privilege (540건) = 8 role × 평균 67.5 privilege
- 기능 단위 권한 매핑 (메뉴/API 엔드포인트별)
---
4. 대행사 유형 코드 (tb_code cd_no=101)
| 코드 | 이름 | 설명 |
|---|---|---|
| 101001 | 마스터 | 비즈스프링 본사 |
| 101002 | 대리 대행사 | 하위 대행사 |
| 101003 | 광고주 | 직접 광고주 |
| 101011 | 대행사 | 일반 대행사 |
---
5. 상태 코드 (tb_code cd_no=201 ACTIVE_ST)
| 코드 | 이름 | alias | tb_admin 분포 |
|---|---|---|---|
| 201001 | 사용중 | ACTIVE_ST_Y | 194명 |
| 201002 | 사용중지 | ACTIVE_ST_N | 0 |
| 201003 | 사용종료 | ACTIVE_ST_F | 7명 |
| 201004 | 사용대기 | ACTIVE_ST_W | 0 |
| 201005 | 사용불가 | ACTIVE_ST_X | 0 |
| 201006 | 사용불가 | ACTIVE_ST_D | 10명 |
---
6. 매체 코드 (tb_code cd_no=111, 41개)
주요 광고 매체 (API 수집 대상)
네이버(001), 카카오(002), 구글(003), 페이스북(004), 인스타그램(005), 카카오모먼트(006), 틱톡(008), GFA(009/015), 모비온(011), 타겟팅게이츠(012), 데이블(013), ADN(014), 쿠팡(016), 당근(017)
내부/연동 매체
로거(111), 비즈메일러(112), 부스트(113), 에어브릿지(114), 파이어베이스(131), 구글애즈(132), 구글드라이브(133), 카카오브랜드검색(134), 카카오친구톡(135), 크리테오(136), RTB하우스(137)
커머스 매체
11번가(141/142), 다나와(143), 이베이(144), 인터파크(145), 롯데온(146), 티몬(147), 위메프(148), 엠플랜잇(149)
기타
메일침프(121), 아이메일러(122), 아이하트(123), FTP(124), API GFA(009), 템플릿(901)
---
7. 코드 체계 전체 (tb_code 89그룹)
엔터티 유형 코드
| cd_no | alias | 이름 |
|---|---|---|
| 101 | AGENCY_TP | 대행사 종류 (4) |
| 103 | PRODUCT_TP | 상품 종류: 무료체험/베이식/스탠다드 |
| 111 | MEDIA_TP | 매체 종류 (41) |
| 112 | CHANNEL_TP | 채널 종류 |
| 113 | TEMPLATE_TP | 템플릿 종류 |
| 114 | SEGMENT_TP | 세그먼트 종류 |
| 115 | AUDIENCE_TP | 오디언스 종류 |
작업/프로세스 코드
| cd_no | alias | 이름 |
|---|---|---|
| 121 | JOB_TP | 작업 종류 |
| 122 | AGG_TP | 정제 종류 |
| 123 | RUN_TP | 실행 종류 |
| 124 | EXPORT_TP | 추출 종류 |
| 125 | RESULT_TP | 결과 종류 |
상태 코드
| cd_no | alias | 이름 |
|---|---|---|
| 201 | ACTIVE_ST | 사용 상태 (6) |
| 202 | JOB_ST | 작업 상태 |
| 231~240 | 각종 상태 | 공지/알람/QA/주문/지원/세금계산서/이메일인증/프로젝트/프로세스/MA캠페인 |
MA(마케팅 자동화) 코드
| cd_no | alias | 이름 |
|---|---|---|
| 137 | MA_SEND_TP | MA 발송 방식 |
| 138 | MA_SCHEDULE_TP | MA 예약 주기 |
| 139 | MA_SEND_ST | MA 발송 상태 |
리포트 필드 코드 (매체별)
N01~N12 (네이버), K01~K05 (카카오), G01~G02 (구글), F01~F04 (페이스북), M01~M04 (카카오모먼트), S11~S15 (기타 매체)
대량 처리/엑셀 코드
501~505 (광고 대량처리), 601~606 (엑셀), 511 (키워드 유틸리티), 801 (신문사)
---
8. 외부 서비스 연동 체인
tb_media_api (매체별 API 인증)
│ api_nm, media_tp, token(512), api_option(JSON)
│
↓ tb_media_license (라이선스 = API + 매체 + 대행사 연결)
│ license_nm, media_tp, api_seq(FK), agency_seq(FK), admin_seq(FK)
│ license_option(JSON)
│
↓ tb_account (광고 계정 = 라이선스 하위)
│ account_no(bigint), media_tp, license_seq(FK), agency_seq(FK)
│
↓ client_option.media[] (클라이언트별 매체 계정 매핑)
JSON 배열로 media_tp + account_no 조합
연동 흐름: 매체 API 등록(api) → 라이선스 생성(license) → 계정 연결(account) → 클라이언트 할당(client_option.media[])
---
9. GP MySQL ↔ Supabase 연동 설계 방향
원칙: GP MySQL = SOT(Single Source of Truth)
GP MySQL (기존 운영) Supabase (어드민 UI)
──────────────────── ──────────────────────
tb_agency (130) ──sync──→ de_admin_agencies
tb_admin (201) ──sync──→ de_admin_users
tb_client (265) ──sync──→ de_admin_clients (기존)
tb_account (1,265) ──sync──→ de_admin_accounts
tb_role + privilege ──sync──→ Supabase RLS policies
tb_media + license ──read──→ n8n relay (읽기 전용)
tb_code + code_dtl ──cache──→ de_admin_codes (코드 캐시)
동기화 방식 (향후 구현)
- 일일 배치: n8n Cron → GP MySQL SELECT → Supabase UPSERT
- 이벤트 기반: GP에서 변경 시 → Kafka → n8n webhook → Supabase 갱신
- 변경 불가: Supabase → GP MySQL 역방향 쓰기 절대 금지
Supabase bawee 기존 어드민 테이블 (참고)
gp_admin_deals, _contacts, _notes, _deal_activities, _deal_emails (영업 CRM)
gp_admin_tickets, _ticket_messages, _plan_changes (운영)
gp_admin_secrets, _secret_access_log (보안)
gp_service_plans, _subscriptions, _projects, _project_sites, _usage (SaaS 구독)
user_profiles, user_domain_access (Supabase Auth)
---
10. 마케팅 자동화(MA) 테이블 구조
| 테이블 | 행 수 | 역할 |
|---|---|---|
| tb_ma_campaign | 56 | 캠페인 마스터 |
| tb_ma_campaign_target | 2,568,587 | ★ 타겟 오디언스 (최대 테이블) |
| tb_ma_campaign_work | 487 | 캠페인 실행 이력 |
| tb_ma_campaign_log | 413 | 캠페인 로그 |
| tb_ma_segment | 117 | MA 세그먼트 |
| tb_ma_content | 19 | 발송 콘텐츠 |
| tb_ma_template | 28 | 템플릿 |
| tb_ma_model | 15 | ML 모델 |
| tb_ma_model_log | 360 | 모델 실행 로그 |
| tb_ma_sender_profile | 5 | 발송자 프로필 |
| tb_ma_client_settings | 3 | 클라이언트별 MA 설정 |
| tb_ma_assistance_message | 26 | AI 어시스턴스 메시지 |
---
v1.0 2026-03-29 — DB 실측 기반 전수 조사