시드 데이터와 네이밍
시드 데이터
초기 샘플 데이터 정의.
{
"seedData": [
{
"tableRef": "hcm_item_categories",
"rows": [
{
"_refKey": "cat_raw",
"category_code": "RAW",
"category_name": "원자재",
"is_active": true
},
{
"_refKey": "cat_semi",
"category_code": "SEMI",
"category_name": "반제품",
"is_active": true
},
{
"_refKey": "cat_finished",
"category_code": "FIN",
"category_name": "완제품",
"is_active": true
}
]
},
{
"tableRef": "hcm_items",
"rows": [
{
"_refKey": "item_nd_magnet",
"item_code": "MAG-ND-001",
"item_name": "네오디뮴 자석 A형",
"item_type": "완제품",
"category_id": "@ref:hcm_item_categories:cat_finished",
"safety_stock": 100
}
]
}
]
}
시드 데이터 규칙
| 규칙 | 설명 |
|---|---|
_refKey | 행 고유 키 — 다른 테이블에서 FK로 참조 시 사용 |
@ref:테이블ref:행refKey | FK 참조 문법 |
| 삽입 순서 | 부모 테이블 → 자식 테이블 순으로 정의 |
| 컬럼명 | 테이블 정의의 columns[].name과 일치 |
FK 참조 문법
@ref:{targetTableRef}:{_refKey}
예시:
"category_id": "@ref:hcm_item_categories:cat_finished"
→ hcm_item_categories 테이블의 _refKey가 cat_finished인 행의 id 값으로 치환
계산 컬럼 시드 데이터 규칙 (중요!)
isComputed: true 또는 CascadeUpdateService 집계 대상 컬럼의 시드 데이터는 반드시 실제 계산 결과와 정확히 일치해야 합니다.
| 규칙 | 설명 | 예시 |
|---|---|---|
| formula 컬럼 | expression 수식을 적용한 결과값 기입 | total_amount = quantity × unit_price |
| aggregation 컬럼 | 자식 테이블 시드 행의 실제 집계 결과와 일치 | remaining_qty = order_qty - SUM(good_qty) - SUM(defect_qty) |
| 비율 컬럼 | 소수점 계산 결과 정확히 기입 | progress_rate = good_qty / order_qty × 100 = 97.2 (반올림 아님) |
| supportsAutoNumbering 컬럼 | 패턴에 맞는 실제 채번값 기입 | "WO-20260217-0001" |
{
"tableRef": "work_orders",
"rows": [
{
"_refKey": "wo_001",
"wo_number": "WO-20260217-0001",
"order_qty": 250,
"good_qty": 243,
"defect_qty": 4,
"remaining_qty": 3,
"progress_rate": 97.2
}
]
}
주의:
remaining_qty = 250 - 243 - 4 = 3,progress_rate = 243 / 250 × 100 = 97.2— 수학적 일치 필수. 부모-자식 간 집계 불일치 시 런타임 데이터 정합성 오류 발생.
auto_numbering_rules (자동 채번 규칙)
auto_numbering_rules 테이블에 시드 데이터를 정의하면, supportsAutoNumbering: true 컬럼에 대해 런타임에서 자동 채번이 적용됩니다.
시드 데이터 구조
{
"tableRef": "auto_numbering_rules",
"rows": [
{
"_refKey": "anr_quotation",
"table_name": "quotations",
"column_name": "qt_number",
"prefix": "QT",
"date_format": "{YYYY}{MM}",
"separator": "-",
"sequence_digits": 4,
"reset_period": "monthly",
"is_active": true
},
{
"_refKey": "anr_sales_order",
"table_name": "sales_orders",
"column_name": "order_number",
"prefix": "SO",
"date_format": "{YYYY}{MM}",
"separator": "-",
"sequence_digits": 4,
"reset_period": "monthly",
"is_active": true
},
{
"_refKey": "anr_purchase_order",
"table_name": "purchase_orders",
"column_name": "po_number",
"prefix": "PO",
"date_format": "{YYYY}{MM}",
"separator": "-",
"sequence_digits": 4,
"reset_period": "monthly",
"is_active": true
},
{
"_refKey": "anr_shipment",
"table_name": "shipments",
"column_name": "shipment_number",
"prefix": "SH",
"date_format": "{YYYY}{MM}{DD}",
"separator": "-",
"sequence_digits": 4,
"reset_period": "daily",
"is_active": true
},
{
"_refKey": "anr_manufacturing_order",
"table_name": "manufacturing_orders",
"column_name": "mo_number",
"prefix": "MO",
"date_format": "{YYYY}{MM}",
"separator": "-",
"sequence_digits": 4,
"reset_period": "monthly",
"is_active": true
},
{
"_refKey": "anr_work_order",
"table_name": "work_orders",
"column_name": "wo_number",
"prefix": "WO",
"date_format": "{YYYY}{MM}{DD}",
"separator": "-",
"sequence_digits": 4,
"reset_period": "daily",
"is_active": true
}
]
}
필드 명세
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
table_name | string | 필수 | 채번 대상 테이블명 |
column_name | string | 필수 | 채번 대상 컬럼명 |
prefix | string | 필수 | 번호 접두사 (예: QT, SO, PO) |
date_format | string | 필수 | 날짜 포맷: {YYYY}, {MM}, {DD} 조합 |
separator | string | 필수 | 구분자 (예: -, /, .) |
sequence_digits | number | 필수 | 시퀀스 자릿수 (예: 4 → 0001~9999) |
reset_period | string | 필수 | 시퀀스 리셋 주기 |
is_active | boolean | 필수 | 규칙 활성화 여부 |
suffix | string | 선택 | 번호 접미사 |
overflow_policy | string | 선택 | 자릿수 초과 시 처리 방법 |
채번 패턴 생성 규칙
생성 패턴: {prefix}{separator}{date_format}{separator}{sequence}
QT-202603-0001 ← prefix: QT, date_format: {YYYY}{MM}, separator: -, digits: 4
SO-202603-0042 ← prefix: SO, date_format: {YYYY}{MM}, separator: -, digits: 4
WO-20260310-0001 ← prefix: WO, date_format: {YYYY}{MM}{DD}, separator: -, digits: 4
reset_period (시퀀스 리셋 주기)
| 값 | 설명 | 시퀀스 리셋 시점 |
|---|---|---|
none | 리셋 없음 — 영구 증가 | 리셋하지 않음 |
daily | 매일 리셋 | 자정 (서버 타임존 기준) |
monthly | 매월 리셋 | 매월 1일 자정 |
yearly | 매년 리셋 | 매년 1월 1일 자정 |
overflow_policy (자릿수 초과 정책)
| 값 | 설명 |
|---|---|
error | 오류 발생 — 관리자에게 알림 (기본값) |
extend | 자릿수 자동 확장 (예: 9999 → 10000) |
reset | 시퀀스를 0001로 강제 리셋 |
시드 파일 위치
ERP 솔루션의 자동 채번 규칙 시드 데이터는 packages/shared/src/solutions/erp-seed-data-4.ts에 정의되어 있습니다.
네이밍 규칙
접두사 체계
| 요소 | 패턴 | 예시 |
|---|---|---|
| 테이블 refId/tableName | {접두사}_{기능명} | hcm_items, djn_work_orders |
| 스크린 refId | scr_{접두사}_{기능명} | scr_hcm_items, scr_djn_work_orders |
| 메뉴그룹 refId | mg_{접두사}_{기능명} | mg_hcm_master, mg_djn_production |
| POP 스크린 refId | pop_{접두사}_{기능명} | pop_hcm_result_input |
| POP 메뉴 refId | pop_menu_{접두사} | pop_menu_hcm |
| 프로세스 노드 refId | pp_{접두사}_{기능명} | pp_hcm_start |
| 대시보드 위젯 refId | w_{접두사}_{기능명} | w_hcm_production_rate |
| 액션스크린 refId | as_{접두사}_{기능명} | as_hcm_po_approve |
고객별 접두사 예시
| 고객 | 접두사 | 이유 |
|---|---|---|
| 하이큐마그 | hcm_ | HiCuMag |
| 중앙안전유리 | jgs_ | JunGang Safety |
| 엔키드 | ekd_ | EnKiD |
| 대진산업 | djn_ | DaeJin |
컬럼명 규칙
- 영문 snake_case 필수
- 의미가 명확한 이름 사용
- FK 컬럼:
{참조대상}_id(예:item_id,partner_id,warehouse_id) - SYSTEM_REF 컬럼:
{역할}_id(예:manager_id,inspector_id) - 상태 컬럼:
status(ENUM) - 비고 컬럼:
remark또는notes(TEXT) - 사용여부:
use_yn또는is_active(BOOLEAN)
displayName 규칙
- 모든 displayName은 한글 사용
- 짧고 명확하게 (2~6글자)
- 예: "품목코드", "거래처명", "생산수량", "불량유형"
부록: 자주 사용하는 Ant Design 아이콘
| 아이콘 | 용도 |
|---|---|
DatabaseOutlined | 기초정보/마스터 |
AppstoreOutlined | 품목/카탈로그 |
ShopOutlined | 영업/판매 |
ShoppingCartOutlined | 구매/외주 |
ExperimentOutlined | 생산/제조 |
SafetyCertificateOutlined | 품질/검사 |
SendOutlined | 물류/출하 |
ToolOutlined | 설비/보전 |
MobileOutlined | POP/현장 |
DashboardOutlined | 대시보드/경영정보 |
SettingOutlined | 설정/관리 |
TeamOutlined | 인사/조직 |
FileTextOutlined | 문서/보고서 |
FolderOutlined | 분류/폴더 |
ScheduleOutlined | 일정/계획 |
BarChartOutlined | 통계/차트 |
RocketOutlined | 솔루션/시작 |
BarcodeOutlined | 바코드/스캔 |
AlertOutlined | 안전/경고 |
BulbOutlined | 연구개발 |
부록: 기존 솔루션 참조 금지 테이블 (일부)
고객 프리셋 JSON에서 FK로 참조하면 안 되는 기존 솔루션 테이블:
items, partners, purchase_orders, sales_orders, work_orders,
production_results, equipment, warehouses, bom, routings,
lot_tracking, defects, inspection_results, ...
→ 대신 고객 접두사 버전 사용: hcm_items, djn_partners 등
이전: 워크플로우와 대시보드 | 다음: 검증과 예제