- DB 연결: 로컬/Docker 환경 오버라이딩 설정 (.env) - 테넌트 위젯: redirect 버그 수정 (TenantSelectorWidget) - 통계 위젯: 사용자/제품/자재/주문 카드 추가 (StatsOverviewWidget) - 리소스 한국어화: Product, Material 모델 레이블 추가 - 대시보드: 위젯 등록 및 캐시 최적화 🤖 Generated with [Claude Code](https://claude.ai/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7.7 KiB
7.7 KiB
KSS01 매개변수 기반 BOM 시스템 데이터베이스 스키마
개요
KSS01 모델을 위한 매개변수 기반 BOM 시스템의 데이터베이스 스키마입니다. 기존 SAM 프로젝트의 models, model_versions, bom_templates, bom_template_items 구조를 확장하여 동적 매개변수 입력과 공식 기반 BOM 생성을 지원합니다.
테이블 구조
1. bom_template_groups
BOM 아이템들의 그룹핑을 지원하는 테이블입니다.
주요 기능:
- 계층적 그룹 구조 지원 (parent_group_id를 통한 self-referencing)
- 본체, 절곡물, 가이드레일 등의 논리적 그룹핑
- 표시 순서 관리
핵심 컬럼:
group_name: 그룹명 (본체, 절곡물, 가이드레일 등)parent_group_id: 상위 그룹 ID (계층 구조)display_order: 표시 순서
2. model_parameters
모델별 입력 매개변수 정의를 관리하는 테이블입니다.
주요 기능:
- 매개변수 타입별 유효성 검사 (INTEGER, DECIMAL, STRING, BOOLEAN)
- 숫자형 매개변수의 범위 제한 (min_value, max_value)
- 선택형 매개변수의 허용값 정의 (allowed_values JSON)
- 단위 및 설명 관리
핵심 컬럼:
parameter_name: 매개변수명 (W0, H0, screen_type 등)parameter_type: 매개변수 타입allowed_values: 허용값 목록 (JSON)min_value/max_value: 숫자형 범위 제한
JSON 구조 예시:
{
"allowed_values": ["SCREEN", "STEEL", "ALUMINUM"]
}
3. model_formulas
매개변수를 기반으로 한 계산 공식 정의를 관리하는 테이블입니다.
주요 기능:
- 수학적 공식 표현식 저장
- 계산 순서 관리 (의존성 해결)
- 결과 타입 및 소수점 자릿수 제어
- 의존 변수 추적
핵심 컬럼:
formula_name: 공식명 (W1, H1, area, weight 등)formula_expression: 공식 표현식 ("W0 + 100", "W0 * H0 / 1000000")calculation_order: 계산 순서dependencies: 의존 변수 목록 (JSON)
공식 예시:
W1 = W0 + 100
H1 = H0 + 50
area = W1 * H1 / 1000000
weight = area * thickness * density
4. bom_condition_rules
조건부 BOM 구성 규칙을 관리하는 테이블입니다.
주요 기능:
- 조건식 기반 제품 포함/제외
- 수량 계산 공식 적용
- 우선순위 기반 규칙 실행
- 그룹 또는 개별 제품 대상 지정
핵심 컬럼:
condition_expression: 조건 표현식 ("screen_type == 'SCREEN'")action_type: 액션 타입 (INCLUDE_PRODUCT, EXCLUDE_PRODUCT, SET_QUANTITY)quantity_formula: 수량 계산 공식priority: 실행 우선순위
조건 규칙 예시:
IF screen_type == "SCREEN" THEN INCLUDE_PRODUCT 실리카겔
IF W0 > 1000 THEN SET_QUANTITY 가이드레일 = ceiling(W0/1000)
5. product_parameters
실제 제품별 매개변수 값을 저장하는 테이블입니다.
주요 기능:
- 견적/주문별 매개변수 값 저장
- 상태 관리 (DRAFT, CALCULATED, APPROVED)
- 제품 코드 연결
- 버전 관리 지원
핵심 컬럼:
parameter_values: 매개변수 값들 (JSON)status: 상태 관리product_code: 제품 코드 참조
JSON 구조 예시:
{
"W0": 1200,
"H0": 800,
"screen_type": "SCREEN",
"power_source": "AC220V",
"installation_type": "WALL_MOUNT"
}
6. product_calculated_values
매개변수 기반 계산 결과를 저장하는 테이블입니다.
주요 기능:
- 공식 계산 결과 캐싱
- BOM 스냅샷 저장
- 계산 유효성 관리
- 비용/중량 집계
핵심 컬럼:
calculated_values: 계산된 값들 (JSON)bom_snapshot: BOM 결과 스냅샷 (JSON)is_valid: 계산 유효성total_cost/total_weight: 집계 정보
JSON 구조 예시:
{
"calculated_values": {
"W1": 1300,
"H1": 850,
"area": 1.105,
"weight": 45.2
},
"bom_snapshot": [
{
"product_id": 1001,
"product_name": "스크린 프레임",
"quantity": 1,
"group_name": "본체"
},
{
"product_id": 2001,
"product_name": "가이드레일",
"quantity": 2,
"group_name": "가이드"
}
]
}
기존 테이블 수정사항
bom_template_items 테이블 확장
group_id: BOM 그룹 연결is_conditional: 조건부 아이템 여부condition_expression: 조건 표현식quantity_formula: 수량 계산 공식
products 테이블 확장
is_parametric: 매개변수 기반 제품 여부base_model_id: 기반 모델 연결parameter_values: 매개변수 값 (JSON)calculated_values: 계산값 (JSON)
데이터 플로우
1. 설계 단계
models → model_parameters (매개변수 정의)
→ model_formulas (공식 정의)
→ bom_template_groups (그룹 정의)
→ bom_condition_rules (조건 규칙)
→ bom_template_items (기본 BOM + 그룹 연결)
2. 견적/주문 단계
견적 요청 → product_parameters (매개변수 입력)
→ 공식 계산 엔진 실행
→ product_calculated_values (결과 저장)
→ BOM 생성 및 스냅샷 저장
3. 계산 엔진 프로세스
- 매개변수 검증: model_parameters 기반 유효성 검사
- 공식 계산: model_formulas의 calculation_order 순서로 실행
- 조건 평가: bom_condition_rules의 priority 순서로 평가
- BOM 구성: 조건 결과에 따른 제품 포함/제외 및 수량 계산
- 결과 저장: product_calculated_values에 스냅샷 저장
성능 최적화
인덱스 전략
- 복합 인덱스: (tenant_id, model_id) 기반 조회 최적화
- 정렬 인덱스: display_order, priority, calculation_order
- 유니크 인덱스: 논리적 중복 방지
캐싱 전략
- 계산 결과 캐싱: product_calculated_values로 반복 계산 방지
- BOM 스냅샷: 조건부 계산 결과 캐싱
- 유효성 플래그: is_valid로 재계산 필요 여부 판단
JSON 컬럼 활용
- 스키마 유연성: 매개변수/계산값의 동적 구조 지원
- 성능 고려: 필요시 가상 컬럼으로 자주 조회되는 값 추출 가능
보안 및 제약사항
공식 표현식 보안
- 안전한 연산만 허용: 수학 연산자, 함수명 화이트리스트
- 코드 실행 방지: eval() 등 동적 코드 실행 금지
- 입력 검증: 공식 구문 분석 및 검증
다중 테넌트 지원
- 테넌트 격리: 모든 테이블에 tenant_id 적용
- 글로벌 스코프: BelongsToTenant 자동 적용
- 권한 관리: 테넌트별 접근 제어
확장성 고려사항
모델 타입 확장
- 다른 제품군: 현재 스키마로 다양한 제품 모델 지원 가능
- 공식 엔진: 모델별 독립적인 공식 정의
- 조건 규칙: 제품군별 특화된 비즈니스 로직 구현
계산 엔진 확장
- 외부 API: 복잡한 계산을 위한 외부 서비스 연동 가능
- 배치 처리: 대량 계산 요청 처리 지원
- 이력 관리: 계산 과정 및 결과 이력 추적 가능
예상 API 엔드포인트
설계용 API
GET /v1/models/{id}/parameters- 모델 매개변수 목록POST /v1/models/{id}/parameters- 매개변수 정의 추가GET /v1/models/{id}/formulas- 공식 목록POST /v1/models/{id}/formulas- 공식 정의 추가GET /v1/models/{id}/bom-rules- 조건 규칙 목록POST /v1/models/{id}/bom-rules- 조건 규칙 추가
계산용 API
POST /v1/models/{id}/calculate- 매개변수 기반 BOM 계산GET /v1/product-parameters/{id}/calculated- 계산 결과 조회POST /v1/product-parameters/{id}/recalculate- 재계산 요청GET /v1/models/{id}/bom-preview- BOM 미리보기 (매개변수별)