Files
sam-docs/plans/simulator-ui-enhancement-plan.md
kent b1362ee9cb docs: 계획 문서 및 변경 기록 업데이트
- erp-api-development-plan.md: ERP API 개발 계획 업데이트
- react-fcm-push-notification-plan.md: FCM 푸시 알림 계획 완료
- react-mock-remaining-tasks.md: Mock 데이터 잔여 작업 정리
- l2-permission-management-plan.md: L2 권한 관리 계획 추가
- simulator-ui-enhancement-plan.md: 시뮬레이터 UI 개선 계획 추가
- 20251230 FCM 푸시 알림 변경 기록 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 17:26:20 +09:00

8.2 KiB

MNG 시뮬레이터 UI 개선 계획

작성일: 2025-12-30 목적: MNG 시뮬레이터를 Design 자동 견적 산출과 동일하게 개선 기준 문서: design/src/components/QuoteAutoCalculation.tsx 상태: 🔄 진행중 (Serena ID: simulator-ui-state)


📍 현재 진행 상태

항목 내용
마지막 완료 작업 Phase 1 UI 레이아웃 수정 (단일행)
다음 작업 Phase 2 제품 드롭다운 데이터 로드 수정
진행률 6/10 (60%)
마지막 업데이트 2025-12-30 19:00

🚨 현재 이슈

이슈 설명 상태
제품 드롭다운 비어있음 FG 제품이 로드되지 않음 조사 필요

1. 개요

1.1 배경

Design 자동 견적 산출(localhost:3002 > 판매관리 > 견적관리 > 견적등록 > 자동 견적 산출)과 MNG 시뮬레이터(mng.sam.kr/quote-formulas/simulator)가 동일한 결과를 도출해야 함.

현재 차이점:

  • Design: 프론트엔드에서 자체 계산 (eval())
  • MNG: 백엔드 API에서 계산 (FormulaEvaluatorService)

목표: MNG 시뮬레이터 UI를 Design과 동일하게 맞추고, 동일한 입력에 동일한 결과가 나오도록 개선.

1.2 기준 원칙

┌─────────────────────────────────────────────────────────────────┐
│  🎯 핵심 원칙                                                    │
├─────────────────────────────────────────────────────────────────┤
│  1. Design QuoteAutoCalculation UI를 MNG Blade로 구현           │
│  2. 동일 입력 → 동일 결과 (Design과 MNG)                        │
│  3. DB 데이터 기반 동적 제품 로드                               │
│  4. 기존 FormulaEvaluatorService 계산 로직 활용                 │
└─────────────────────────────────────────────────────────────────┘

1.3 변경 승인 정책

분류 예시 승인
즉시 가능 UI 필드 추가, 드롭다운 옵션, CSS 스타일 불필요
⚠️ 컨펌 필요 백엔드 API 변경, 계산 로직 수정 필수
🔴 금지 DB 스키마 변경, 기존 API 삭제 별도 협의

2. Design vs MNG 비교 분석

2.1 입력 필드 비교

필드 Design 변수명 Design MNG 현재 MNG 목표
제품 선택 selectedProductId
width (W0)
높이 height (H0)
수량 quantity (QTY)

2.2 Design 코드 분석

파일: design/src/components/QuoteAutoCalculation.tsx

// 입력 상태
const [selectedProductId, setSelectedProductId] = useState("");
const [inputValues, setInputValues] = useState<Record<string, number>>({
  width: 1000,
  height: 2000,
  quantity: 1
});

// 제품 목록 (FG 타입만 필터링)
const products = useMemo(() => {
  return itemMasters.filter(item => item.itemType === 'FG');
}, [itemMasters]);

2.3 계산 방식 비교

항목 Design MNG
계산 위치 프론트엔드 (eval()) 백엔드 (FormulaEvaluatorService)
데이터 소스 useData() Context DB API
BOM 규칙 formulaRules quote_formulas 테이블
단가 pricing Context DB 단가 테이블

3. 대상 범위

3.1 Phase 1: UI 입력 필드 (Design 기준)

# 작업 항목 상태 비고
1.1 제품 선택 드롭다운 FG 타입 제품
1.2 폭(width) 입력 필드 기본값: 1000
1.3 높이(height) 입력 필드 기본값: 2000
1.4 수량(quantity) 입력 필드 기본값: 1
1.5 UI 레이아웃 단일행 수정 flex-wrap

3.2 Phase 2: 제품 데이터 로드 수정

# 작업 항목 상태 비고
2.1 FG 제품 API 호출 확인 현재 빈 배열 반환
2.2 tenant_id 확인 세션 기반
2.3 제품 드롭다운 데이터 바인딩 -

3.3 Phase 3: 계산 결과 검증

# 작업 항목 상태 비고
3.1 Design과 동일 입력으로 테스트 width=1200, height=2400, qty=10
3.2 BOM 구성 결과 비교 품목/수량 일치 여부
3.3 금액 계산 결과 비교 단가/총액 일치 여부

4. 상세 작업 내용

4.1 수정 대상 파일

파일 수정 내용
simulator.blade.php UI 입력 필드 (Design 기준)
FormulaEvaluatorService.php 계산 로직 (필요시)
QuoteFormulaController.php API 파라미터 (필요시)

4.2 UI 레이아웃 (Design 기준)

┌─────────────────────────────────────────────────────────────────┐
│ 완제품 BOM 시뮬레이션                                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  [제품 선택 ▼]  [폭 width]  [높이 height]  [수량]  [실행]       │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

5. 컨펌 대기 목록

# 항목 변경 내용 영향 범위 상태
1 기존 추가 필드 제거 PC, GT, MP, CT, WS, INSP 필드가 Design에 없음 UI ⚠️ 컨펌 필요

6. 변경 이력

날짜 항목 변경 내용 파일 승인
2025-12-30 초안 계획 문서 작성 - -
2025-12-30 Phase 1 UI 입력 필드 추가 (PC, GT, MP, CT, WS, INSP) simulator.blade.php
2025-12-30 Phase 2 백엔드 변수 처리 및 디버그 로깅 개선 FormulaEvaluatorService.php
2025-12-30 수정 UI 레이아웃 단일행으로 변경 simulator.blade.php
2025-12-30 수정 기준 문서 변경 (React → Design) 계획 문서

7. 참고 문서

  • Design 원본: design/src/components/QuoteAutoCalculation.tsx
  • Design 가이드: design/src/QUOTE_AUTO_CALCULATION_GUIDE.md
  • 기존 시뮬레이터 계획: docs/plans/simulator-calculation-logic-mapping.md
  • 품질 체크리스트: docs/standards/quality-checklist.md

8. 세션 및 메모리 관리 정책

8.1 Serena 메모리 구조

  • simulator-ui-state: { phase, progress, next_step, last_decision }
  • simulator-ui-snapshot: 현재까지의 코드 변경점 요약

8.2 세션 시작 시

read_memory("simulator-ui-state")
read_memory("simulator-ui-snapshot")
계획 문서 읽기

8.3 세션 종료 시

write_memory("simulator-ui-state")
계획 문서 업데이트

9. 검증 결과

작업 완료 후 이 섹션에 검증 결과 추가

9.1 테스트 케이스

입력값 예상 결과 실제 결과 상태
스크린 제품, W=1200, H=2400, Q=10 Design과 동일 -

9.2 성공 기준 달성 현황

기준 달성 비고
Design과 동일한 입력 필드 제품/폭/높이/수량
제품 드롭다운 데이터 로드 현재 비어있음
Design과 동일한 계산 결과 검증 필요

이 문서는 /sc:plan 스킬로 생성되었습니다.