docs: [data-sync] 마스터 데이터 동기화 계획 추가 + 전체 동기화 문서 업데이트

- master-data-sync-plan.md 신규: 31개 마스터 테이블, 양방향(local↔dev↔prod)
- local-to-dev-data-sync-plan.md 업데이트: 35→62개 테이블 확장, FK 의존성 전수 분석
- kd_price_tables 삭제 반영 (미사용 레거시)
This commit is contained in:
2026-03-17 16:42:12 +09:00
parent 1b02b14953
commit 542ba40fa3
2 changed files with 387 additions and 56 deletions

View File

@@ -59,59 +59,89 @@
---
## 2. 대상 테이블 (35개)
## 2. 대상 테이블 (62개 + 참조 users)
### 2.1 데이터 현황 (tenant_id=287, 2026-03-10 기준)
### 2.1 데이터 현황 (tenant_id=287, 2026-03-17 기준)
| # | 카테고리 | 테이블 | 건수 | tenant_id | 비고 |
|---|---------|--------|------|-----------|------|
| | **품목기준** | | | | |
| 1 | 품목 | items | 893 | ✅ direct | |
| 2 | 카테고리 | categories | 72 | ✅ direct | |
| | **공정관리** | | | | |
| 3 | 공정 | processes | 4 | ✅ direct | |
| 4 | 공정단계 | process_steps | 19 | ❌ FK | process_id → processes |
| 5 | 분류규칙 | process_classification_rules | 0 | ❌ FK | process_id → processes |
| | **견적** | | | | |
| 6 | 견적 | quotes | 49 | ✅ direct | |
| 7 | 견적품목 | quote_items | 2,018 | ✅ direct | |
| 8 | 견적수정 | quote_revisions | 75 | ✅ direct | |
| | **수주** | | | | |
| 9 | 수주 | orders | 41 | ✅ direct | |
| 10 | 수주품목 | order_items | 2,475 | ✅ direct | |
| 11 | 수주노드 | order_nodes | 143 | ✅ direct | 자체참조 (parent_id) |
| | **생산/작업지시** | | | | |
| 12 | 작업지시 | work_orders | 120 | ✅ direct | |
| 13 | 작업품목 | work_order_items | 545 | ❌ FK | work_order_id → work_orders |
| 14 | 단계진행 | work_order_step_progress | 1,092 | ✅ direct | |
| 15 | 담당자 | work_order_assignees | 9 | ✅ direct | |
| 16 | 원자재투입 | work_order_material_inputs | 72 | ✅ direct | |
| 17 | 이슈 | work_order_issues | 1 | ❌ FK | work_order_id → work_orders |
| 18 | 벤딩상세 | work_order_bending_details | 0 | ❌ FK | work_order_id → work_orders |
| | **출하** | | | | |
| 19 | 출하 | shipments | 8 | ✅ direct | |
| 20 | 출하품목 | shipment_items | 14 | ❌ FK | shipment_id → shipments |
| 21 | 배차 | shipment_vehicle_dispatches | 2 | ✅ direct | |
| | **재고** | | | | |
| 22 | 재고현황 | stocks | 8,611 | ✅ direct | |
| 23 | LOT | stock_lots | 191 | ✅ direct | |
| 24 | 입고 | receivings | 60 | ✅ direct | |
| 25 | 거래이력 | stock_transactions | 420 | ✅ direct | |
| | **품질** | | | | |
| 26 | 검사 | inspections | 0 | ✅ direct | IQC/PQC/FQC |
| 27 | 품질관리서 | quality_documents | 2 | ✅ direct | |
| 28 | 품질-수주연결 | quality_document_orders | 1 | ❌ FK | quality_document_id |
| 29 | 품질-현장 | quality_document_locations | 4 | ❌ FK | quality_document_id |
| 30 | 성능리포트 | performance_reports | 1 | ❌ FK | quality_document_id |
| | **넘버링** | | | | |
| 31 | 넘버링규칙 | numbering_rules | 2 | ✅ direct | |
| 32 | 넘버링시퀀스 | numbering_sequences | 14 | ✅ direct | 독립 테이블 (FK 없음) |
| | **파일** | | | | |
| 33 | 파일 | files | 51 | ✅ direct | |
| 34 | 폴더 | folders | 5 | ✅ direct | |
| | **매출** | | | | |
| 35 | 매출 | sales | 81 | ✅ direct | |
| | **합계** | **35개** | **~17,840** | | |
| # | 카테고리 | 테이블 | tenant_id | 비고 |
|---|---------|--------|-----------|------|
| | **기준 정보** | | | |
| 1 | 품목 | items | ✅ direct | |
| 2 | 카테고리 | categories | ✅ direct | |
| 3 | 부서 | departments | ✅ direct | work_orders.team_id 참조 |
| 4 | 거래처 | clients | ✅ direct | quotes/orders/shipments 참조 |
| 5 | 거래처그룹 | client_groups | ✅ direct | clients.client_group_id 참조 |
| 6 | 공통코드 | common_codes | ✅ direct | |
| 7 | 계정코드 | account_codes | ✅ direct | |
| 8 | 카테고리그룹 | category_groups | ✅ direct | |
| | **품목 하위** | | | |
| 9 | 품목필드 | item_fields | ✅ direct | |
| 10 | 품목섹션 | item_sections | ✅ direct | |
| 11 | 품목페이지 | item_pages | ✅ direct | |
| 12 | BOM구성 | item_bom_items | ✅ direct | |
| 13 | 단가 | prices | ✅ direct | 견적 단가 조회 필수 |
| 14 | 엔티티관계 | entity_relationships | ✅ direct | |
| | **공정관리** | | | |
| 15 | 공정 | processes | ✅ direct | |
| 16 | 공정단계 | process_steps | ❌ FK | process_id → processes |
| 17 | 분류규칙 | process_classification_rules | ❌ FK | process_id → processes |
| | **견적** | | | |
| 18 | 견적 | quotes | ✅ direct | |
| 19 | 견적품목 | quote_items | ✅ direct | |
| 20 | 견적수정 | quote_revisions | ✅ direct | |
| | **수주** | | | |
| 21 | 수주 | orders | ✅ direct | |
| 22 | 수주품목 | order_items | ✅ direct | |
| 23 | 수주노드 | order_nodes | ✅ direct | 자체참조 (parent_id) |
| 24 | 수주이력 | order_histories | ✅ direct | |
| 25 | 수주품목구성 | order_item_components | ✅ direct | |
| | **생산/작업지시** | | | |
| 26 | 작업지시 | work_orders | ✅ direct | |
| 27 | 작업품목 | work_order_items | ❌ FK | work_order_id → work_orders |
| 28 | 단계진행 | work_order_step_progress | ✅ direct | |
| 29 | 담당자 | work_order_assignees | ✅ direct | |
| 30 | 원자재투입 | work_order_material_inputs | ✅ direct | |
| 31 | 이슈 | work_order_issues | ❌ FK | work_order_id → work_orders |
| 32 | 벤딩상세 | work_order_bending_details | ❌ FK | work_order_id → work_orders |
| 33 | 작업실적 | work_results | ✅ direct | |
| 34 | 작업설정 | work_settings | ✅ direct | |
| | **출하** | | | |
| 35 | 출하 | shipments | ✅ direct | |
| 36 | 출하품목 | shipment_items | ❌ FK | shipment_id → shipments |
| 37 | 배차 | shipment_vehicle_dispatches | ✅ direct | |
| | **재고** | | | |
| 38 | 재고현황 | stocks | ✅ direct | |
| 39 | LOT | stock_lots | ✅ direct | |
| 40 | 입고 | receivings | ✅ direct | |
| 41 | 거래이력 | stock_transactions | ✅ direct | |
| | **품질** | | | |
| 42 | 검사 | inspections | ✅ direct | IQC/PQC/FQC |
| 43 | 품질관리서 | quality_documents | ✅ direct | |
| 44 | 품질-수주연결 | quality_document_orders | ❌ FK | quality_document_id |
| 45 | 품질-현장 | quality_document_locations | ❌ FK | quality_document_id |
| 46 | 성능리포트 | performance_reports | ❌ FK | quality_document_id |
| 47 | 심사체크리스트 | audit_checklists | ✅ direct | |
| 48 | 심사카테고리 | audit_checklist_categories | ✅ direct | |
| 49 | 심사항목 | audit_checklist_items | ✅ direct | |
| 50 | 심사표준문서 | audit_standard_documents | ✅ direct | |
| 51 | 체크리스트템플릿 | checklist_templates | ✅ direct | |
| | **넘버링** | | | |
| 52 | 넘버링규칙 | numbering_rules | ✅ direct | |
| 53 | 넘버링시퀀스 | numbering_sequences | ✅ direct | |
| | **파일** | | | |
| 54 | 파일 | files | ✅ direct | |
| 55 | 폴더 | folders | ✅ direct | |
| | **문서** | | | |
| 56 | 문서 | documents | ✅ direct | |
| 57 | 문서템플릿 | document_templates | ✅ direct | |
| 58 | 문서데이터 | document_data | ✅ direct | |
| 59 | 문서승인 | document_approvals | ✅ direct | |
| 60 | 문서첨부 | document_attachments | ✅ direct | |
| | **매출** | | | |
| 61 | 매출 | sales | ✅ direct | |
| | **참조 (REPLACE INTO)** | | | |
| 62 | 사용자 | users | ❌ 참조 | user_tenants 기준, DELETE 안 함 |
| | **합계** | **62개** | | direct 52 + FK 9 + 참조 1 |
### 2.2 파일 저장소
@@ -123,16 +153,23 @@
| 총 크기 | 8.9MB |
| 하위 구조 | `items/`, `temp/`, `logo_*.jpeg` |
### 2.3 제외 대상
### 2.3 참조 users 동기화
- `user_tenants`에서 `tenant_id=287`인 user_id를 수집
- 해당 users만 `REPLACE INTO`로 동기화 (DELETE 안 함 — 다른 테넌트 영향 방지)
- 대상: 거의 모든 테이블의 `created_by`, `updated_by`, `assignee_id`, `inspector_id`
### 2.4 제외 대상
| 테이블 | 제외 사유 |
|--------|----------|
| users, tenants, departments | 계정/조직 별도 관리 |
| clients | 거래처 별도 관리 (필요시 추가) |
| tenants | 환경별 독립 관리 |
| user_tenants, tenant_user_profiles | 개발서버에서 별도 설정 |
| audit_logs | 감사 로그는 환경별 독립 |
| file_share_links, file_deletion_logs | 환경별 독립 |
| storage_usage_history | 모니터링 환경별 독립 |
| schedules, equipments 등 | 현재 데이터 0건 (향후 데이터 생기면 추가) |
| kd_price_tables | 삭제됨 (EstimatePriceService가 items+prices로 대체) |
---
@@ -243,7 +280,7 @@ ssh hskwon@114.203.209.83 \
### 4.1 SoftDeletes 처리
대상 35개 중 **19개+ 테이블에 SoftDeletes 적용** (Item, Order, WorkOrder, Quote 등).
대상 62개 중 **다수 테이블에 SoftDeletes 적용** (Item, Order, WorkOrder, Quote 등).
- **dump**: `--where="tenant_id=287"`은 soft deleted 포함 → **올바름** (상태 보존)
- **DELETE**: SQL DELETE는 deleted_at과 무관하게 모두 삭제 → **올바름**
@@ -255,6 +292,7 @@ ssh hskwon@114.203.209.83 \
- **tenant_id 필터**: 모든 DELETE에 `WHERE tenant_id = 287` → 다른 테넌트 보호
- **complete-insert**: ID 값 포함 dump → auto_increment 충돌 방지
- **order_nodes 자체참조**: FK_CHECKS=0이므로 삽입 순서 무관
- **users REPLACE INTO**: DELETE 안 함 → 다른 테넌트의 사용자 데이터 보호
### 4.3 반복 실행 시 주의
@@ -279,4 +317,5 @@ ssh hskwon@114.203.209.83 \
| 날짜 | 작업 | 비고 |
|------|------|------|
| 2026-03-10 | 최초 작성 | 대상 35개 테이블, 47개 파일 |
| 2026-03-10 | 단순화 | Artisan+웹UI → 셸 스크립트 1개. IP 수정 (211.117.60.189→114.203.209.83). numbering_sequences FK 오류 수정. SoftDeletes 처리 명시. 제외 테이블 보완 |
| 2026-03-10 | 단순화 | Artisan+웹UI → 셸 스크립트 1개. IP 수정 (211.117.60.189→114.203.209.83). numbering_sequences FK 오류 수정. SoftDeletes 처리 명시. 제외 테이블 보완 |
| 2026-03-17 | 대폭 확장 | 35개→62개 테이블. 소스 코드 belongsTo 기준 FK 의존성 전수 분석. departments, clients, client_groups, prices, item_*, order_histories, audit_*, common_codes, account_codes 등 21개 추가. users 참조 동기화 (REPLACE INTO). kd_price_tables 삭제 (미사용 레거시) |

View File

@@ -0,0 +1,292 @@
# 마스터 데이터 동기화 스크립트 계획
> **작성일**: 2026-03-17
> **목적**: 기초 데이터(마스터)를 환경 간 동기화하여 운영 초기 셋업 및 환경 복제 지원
> **기준 문서**: `docs/dev/dev_plans/local-to-dev-data-sync-plan.md` (전체 동기화 v1)
> **상태**: ⏳ 설계 확정 대기
> **대상**: 31개 테이블 (Direct 27 + FK 4), DB만
---
## 📍 현재 진행 상태
| 항목 | 내용 |
|------|------|
| **마지막 완료 작업** | 테이블 분류 및 설계 검토 |
| **다음 작업** | 사용자 검토 → 스크립트 구현 |
| **진행률** | 0/3 (0%) |
| **마지막 업데이트** | 2026-03-17 |
---
## 1. 개요
### 1.1 배경
SAM 시스템은 다음 환경을 사용한다:
| 환경 | DB명 | 접근 방식 | 역할 |
|------|------|----------|------|
| 로컬 (Docker) | `samdb` | `docker exec sam-mysql-1` | 개발/테스트 |
| 개발 서버 | `sam` | SSH `hskwon@114.203.209.83` | 스테이징 |
| 운영 서버 | `sam_prod` | SSH `sam-prod` | 정식 서비스 |
**문제**: 스키마는 `php artisan migrate`로 올라가지만, **기초 데이터 없으면 시스템이 동작 안 함**.
품목 893개, 단가 780개, 공정 4개, 문서양식 28개 등 마스터 데이터가 있어야 견적/수주/생산 기능이 작동한다.
**기존 스크립트와의 관계**:
| 스크립트 | 용도 | 대상 |
|---------|------|------|
| `scripts/data-sync.sh` (v1) | **전체 동기화** — 개발 테스트용 | 62개 테이블 + 파일 |
| `scripts/data-sync-master.sh` (v2, 신규) | **기초정보만** — 환경 초기화/운영 셋업 | 31개 테이블, DB만 |
### 1.2 핵심 설계 원칙
```
┌─────────────────────────────────────────────────────────────────┐
│ 🎯 설계 원칙 │
├─────────────────────────────────────────────────────────────────┤
│ 1. 양방향: 로컬→개발, 개발→운영 모두 지원 │
│ 2. 멱등성: 여러 번 실행해도 같은 결과 (DELETE → INSERT) │
│ 3. 테넌트 독립: tenant_id 파라미터화 (하드코딩 금지) │
│ 4. 마스터만: 트랜잭션/행위 데이터 절대 포함 금지 │
│ 5. DB만: 파일 동기화 없음 (R2 사용) │
│ 6. 안전: 운영 대상 시 이중 확인 필수 │
└─────────────────────────────────────────────────────────────────┘
```
### 1.3 변경 승인 정책
| 분류 | 예시 | 승인 |
|------|------|------|
| ✅ 즉시 가능 | 테이블 추가/제거, 옵션 추가 | 불필요 |
| ⚠️ 컨펌 필요 | 운영 대상 실행, DELETE 로직 변경 | **필수** |
| 🔴 금지 | 트랜잭션 테이블 포함, 운영 DB 직접 수정 | 별도 협의 |
---
## 2. 대상 테이블 (31개)
### 2.1 분류 기준
- **✅ 포함**: 시스템 동작에 필수인 설정/마스터 데이터
- **❌ 제외**: 사용자 행위로 생성되는 트랜잭션 데이터
### 2.2 포함 테이블 (Direct 27개 + FK 4개)
| # | 카테고리 | 테이블 | 유형 | 설명 |
|---|---------|--------|------|------|
| | **기준 정보** | | | |
| 1 | 카테고리 | categories | direct | 품목 분류 체계 |
| 2 | 품목 | items | direct | 품목 마스터 |
| 3 | 부서 | departments | direct | 조직 구조 |
| 4 | 거래처 | clients | direct | 거래처 마스터 |
| 5 | 거래처 그룹 | client_groups | direct | 거래처 분류 |
| 6 | 공통 코드 | common_codes | direct | 시스템 코드 |
| 7 | 계정 코드 | account_codes | direct | 회계 계정 |
| 8 | 카테고리 그룹 | category_groups | direct | 카테고리 분류 |
| 9 | 직위 | positions | direct | 직위 마스터 (대리, 과장 등) |
| 10 | 테넌트 설정 | tenant_settings | direct | 테넌트 기본 설정값 |
| | **품목 하위** | | | |
| 11 | 품목 필드 | item_fields | direct | 동적 필드 정의 |
| 12 | 품목 섹션 | item_sections | direct | 필드 그룹 |
| 13 | 품목 페이지 | item_pages | direct | 섹션 그룹 |
| 14 | BOM 구성 | item_bom_items | direct | BOM 마스터 |
| 15 | 단가 | prices | direct | 품목 단가 |
| 16 | 엔티티 관계 | entity_relationships | direct | page→section→field 매핑 |
| 17 | 품목 상세 | item_details | FK | item_id → items. **단가 조회 핵심** (EstimatePriceService) |
| | **공정** | | | |
| 18 | 공정 | processes | direct | 공정 마스터 |
| 19 | 공정 단계 | process_steps | FK | process_id → processes |
| 20 | 분류 규칙 | process_classification_rules | FK | process_id → processes |
| 21 | 공정-품목 매핑 | process_items | FK | process_id → processes. **품목별 공정 배정** |
| | **설정/양식** | | | |
| 22 | 문서 양식 | document_templates | direct | 검사/작업일지 양식 |
| 23 | 체크리스트 템플릿 | checklist_templates | direct | QMS 템플릿 |
| 24 | 근무 설정 | work_settings | direct | 근무시간/요일 |
| 25 | 채번 규칙 | numbering_rules | direct | 번호 생성 패턴 |
| 26 | 폴더 구조 | folders | direct | 문서 폴더 |
| 27 | 파일 | files | direct | 품목 이미지, 양식 첨부 등 설정 파일 |
| | **심사 체계** | | | |
| 28 | 심사 체크리스트 | audit_checklists | direct | |
| 29 | 심사 카테고리 | audit_checklist_categories | direct | |
| 30 | 심사 항목 | audit_checklist_items | direct | |
| 31 | 심사 표준문서 | audit_standard_documents | direct | |
### 2.3 제외 테이블 (트랜잭션/행위 데이터)
| 카테고리 | 제외 테이블 | 사유 |
|---------|-----------|------|
| 견적 | quotes, quote_items, quote_revisions | 견적 행위 |
| 수주 | orders, order_items, order_nodes, order_histories, order_item_components | 수주 행위 |
| 생산 | work_orders, work_order_items, work_order_step_progress, work_order_assignees, work_order_material_inputs, work_order_issues, work_order_bending_details, work_results | 생산 행위 |
| 출하 | shipments, shipment_items, shipment_vehicle_dispatches | 출하 행위 |
| 재고 | stocks, stock_lots, stock_transactions, receivings | 재고 행위 |
| 품질 | inspections, quality_documents, quality_document_orders, quality_document_locations, performance_reports | 검사 행위 |
| 문서 | documents, document_data, document_approvals, document_attachments | 문서 행위 |
| 매출 | sales | 매출 행위 |
| 사용자 | users, user_tenants, tenant_user_profiles | 환경에 이미 존재 전제 (운영자/테스트 계정) |
| 메뉴 | menus, permission_overrides | 동기화 시 권한 설정 초기화 위험 (CLAUDE.md 규칙) |
| 채번 | numbering_sequences | 환경별 독립 (UPSERT 자동 생성) |
| 감사 | audit_logs | 환경별 독립 |
---
## 3. 스크립트 설계
### 3.1 사용법
```bash
# 기본 (로컬 → 개발)
./scripts/data-sync-master.sh
# 명시적 방향
./scripts/data-sync-master.sh --source local --target dev
./scripts/data-sync-master.sh --source dev --target prod
# 테넌트 지정 (기본: 287)
./scripts/data-sync-master.sh --source dev --target prod --tenant 123
# 미리보기
./scripts/data-sync-master.sh --source dev --target prod --dry-run
# 확인 생략 (CI/CD용)
./scripts/data-sync-master.sh --source local --target dev --yes
```
### 3.2 환경 설정
| 환경 | 식별자 | DB 접근 | .env 위치 |
|------|--------|---------|----------|
| 로컬 | `local` | `docker exec sam-mysql-1 mysql ...` | `api/.env` |
| 개발 | `dev` | `ssh sam-dev "mysql ..."` | `/home/webservice/api/.env` |
| 운영 | `prod` | `ssh sam-prod "mysql ..."` | `/home/webservice/api/.env` |
- DB 접속 정보는 각 환경의 `api/.env`에서 자동 읽기 (하드코딩 금지)
- 운영 대상 시 `--prod-confirm` 자동 요구 (이중 확인)
### 3.3 실행 흐름
```
1. 옵션 파싱 (source, target, tenant_id, dry-run)
2. 환경 검증
├── source 접속 확인 + .env에서 DB 정보 읽기
└── target 접속 확인 + .env에서 DB 정보 읽기
3. 운영 안전 검증 (target=prod 시)
├── "--prod-confirm" 플래그 확인
├── 대상 테넌트 존재 여부 확인
└── "정말 운영 DB에 반영하시겠습니까?" 2차 확인
4. source DB 덤프
├── Direct 테이블 (WHERE tenant_id=?)
└── FK 테이블 (부모 ID 경유)
5. target DB 기존 데이터 DELETE (WHERE tenant_id=?)
6. 덤프 전송 + 임포트
7. 검증 (건수 비교: source vs target)
8. 완료 리포트
```
### 3.4 안전장치
| 장치 | 설명 |
|------|------|
| `FOREIGN_KEY_CHECKS = 0` | DELETE/INSERT 시 FK 제약 임시 해제 |
| `tenant_id 필터` | 모든 DELETE에 WHERE tenant_id = ? → 다른 테넌트 보호 |
| `--complete-insert` | ID 값 포함 → auto_increment 충돌 방지 |
| `--prod-confirm` | 운영 대상 시 이중 확인 |
| `--dry-run` | 실제 실행 없이 대상 확인 |
| `--no-create-info` | 데이터만 동기화, 스키마 변경 없음 |
### 3.5 운영 배포 시나리오
```
┌─────────────────────────────────────────────────────────────────┐
│ 🚀 운영 배포 절차 │
├─────────────────────────────────────────────────────────────────┤
│ 1. 개발서버에서 마스터 데이터 최종 검증 │
│ 2. 운영서버에 마이그레이션 실행 (스키마) │
│ ssh sam-prod "cd /home/webservice/api && php artisan migrate --force" │
│ 3. 마스터 데이터 투입 │
│ ./scripts/data-sync-master.sh --source dev --target prod │
│ 4. 운영서버에서 데이터 확인 │
│ 5. 앱 동작 확인 │
└─────────────────────────────────────────────────────────────────┘
```
---
## 4. 작업 단계
### Phase 1: 스크립트 구현
| # | 작업 항목 | 상태 | 비고 |
|---|----------|:----:|------|
| 1.1 | `scripts/data-sync-master.sh` 작성 | ⏳ | 옵션 파싱, 환경 자동 감지 |
| 1.2 | source/target별 DB 접근 함수 | ⏳ | local=docker, dev/prod=ssh |
| 1.3 | 덤프/DELETE/임포트 로직 | ⏳ | 31개 테이블 |
| 1.4 | 운영 안전장치 | ⏳ | --prod-confirm, 이중 확인 |
| 1.5 | 검증 및 리포트 | ⏳ | 건수 비교 출력 |
### Phase 2: 테스트
| # | 작업 항목 | 상태 | 비고 |
|---|----------|:----:|------|
| 2.1 | `--dry-run` 테스트 | ⏳ | 모든 방향 |
| 2.2 | 로컬 → 개발 실행 테스트 | ⏳ | |
| 2.3 | 개발 → 운영 시뮬레이션 | ⏳ | dry-run으로 |
### Phase 3: 문서 정비
| # | 작업 항목 | 상태 | 비고 |
|---|----------|:----:|------|
| 3.1 | 기존 `local-to-dev-data-sync-plan.md`에서 분리 명시 | ⏳ | |
| 3.2 | `docs/INDEX.md`에 등록 | ⏳ | |
| 3.3 | 운영 배포 매뉴얼에 연결 | ⏳ | |
---
## 5. 기존 스크립트와의 관계
```
scripts/
├── data-sync.sh # v1: 전체 동기화 (62개 테이블 + 파일)
│ # 용도: 로컬→개발 테스트 데이터 복제
│ # 방향: 로컬→개발 단방향
└── data-sync-master.sh # v2: 마스터 데이터만 (31개 테이블, DB만)
# 용도: 환경 초기화, 운영 셋업
# 방향: 양방향 (local↔dev↔prod)
```
**v1은 유지** — 개발 테스트 시 트랜잭션 데이터까지 필요한 경우 사용.
**v2가 운영 배포의 핵심** — 한번 셋팅하면 운영에 그대로 반영.
---
## 6. 향후 확장
| 항목 | 설명 | 우선순위 |
|------|------|---------|
| 테이블 추가 | 새 마스터 테이블 발생 시 | 필요시 |
| 다중 테넌트 | 한 번에 여러 테넌트 동기화 | 낮음 |
| 롤백 | 동기화 전 자동 백업 + 복원 스크립트 | 중간 |
| 변경 감지 | source/target 차이만 보여주는 diff 모드 | 낮음 |
---
## 7. 참고 문서
- **전체 동기화 계획**: `docs/dev/dev_plans/local-to-dev-data-sync-plan.md`
- **서버 운영 매뉴얼**: `docs/dev/deploys/ops-manual/README.md`
- **서버 접근 관리**: `docs/system/server-access-management.md`
- **운영 배포 계획**: `docs/dev/dev_plans/production-deployment-plan.md`
- **DB 구조**: `docs/system/database/README.md`
---
## 변경 로그
| 날짜 | 작업 | 비고 |
|------|------|------|
| 2026-03-17 | 최초 작성 | 소스 코드 belongsTo 기준 FK 전수 분석, 27개 마스터 테이블 선정 |
| 2026-03-17 | MCP 검토 반영 | Sequential Thinking 검토: item_details(단가 조회 핵심), process_items(공정-품목 매핑), positions(직위), tenant_settings(테넌트 설정) 4개 추가 → 31개. menus 제외 사유 명시 |