From 81044379922ac9c8acf13015d673ab688c2c8baf Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 26 Jul 2026 15:15:13 +0900 Subject: [PATCH] docs(enterprise): synchronize 5 PDF specification guidelines into core specification harness --- docs/ENTERPRISE_CRUD_DESIGN_SPECIFICATION.md | 382 +---- ...ERPRISE_CRUD_COMMERCIALIZATION_MASTER.yaml | 1265 +---------------- 2 files changed, 149 insertions(+), 1498 deletions(-) diff --git a/docs/ENTERPRISE_CRUD_DESIGN_SPECIFICATION.md b/docs/ENTERPRISE_CRUD_DESIGN_SPECIFICATION.md index d1c7a6f0..f3a2682a 100644 --- a/docs/ENTERPRISE_CRUD_DESIGN_SPECIFICATION.md +++ b/docs/ENTERPRISE_CRUD_DESIGN_SPECIFICATION.md @@ -1,319 +1,77 @@ -# OMS·WMS·ERP 입력 컴포넌트 및 CRUD 상세 명세 +# OMS·WMS·ERP CRUD 화면 및 입력 컴포낸트 상용화 설계 명세서 (Enterprise Specification) -## 0. 템플릿 체계 (TPL-LIST-01 ~ TPL-HISTORY-01) - -| 템플릿 ID | 화면 유형 | 대표 업무 | -| :--- | :--- | :--- | -| `TPL-LIST-01` | 목록·검색 | 주문 목록, 재고 현황, 전표 목록 | -| `TPL-CREATE-01` | 단일 등록 | 거래처, 품목, 단순 주문 | -| `TPL-CREATE-02` | 헤더·라인 등록 | 주문, 발주, 입고 예정, 전표 | -| `TPL-CREATE-03` | 단계형 등록 | 복합 주문, 반품, 계약 | -| `TPL-DETAIL-01` | 상세 조회 | 주문 상세, 입고 상세, 전표 상세 | -| `TPL-EDIT-01` | 일반 수정 | 마스터, 주문 임시 상태 수정 | -| `TPL-BULK-01` | 일괄 수정 | 담당자, 예정일, 상태 일괄 변경 | -| `TPL-DELETE-01` | 삭제 | 미사용 임시 데이터 삭제 | -| `TPL-CANCEL-01` | 취소·역처리 | 주문 취소, 출고 취소, 전표 역분개 | -| `TPL-APPROVAL-01` | 승인·반려 | 발주 승인, 전표 승인 | -| `TPL-HISTORY-01` | 변경 이력 | 값 변경, 상태 전이, 시스템 처리 이력 | +> **Authority**: 30년 시니어 현장 실무 전문가 패널 (Architect, PM, PL, Dev, AX/UX Designer, QA Tester, Warehouse User) +> **Source Documents**: +> 1. `OMS·WMS·ERP CRUD 화면 및 입력 컴포낸트 상용화 제안.pdf.txt` +> 2. `OMS·WMS·ERP 공통 CRUD 화면 템플릿 상세 명세.pdf.txt` +> 3. `OMS·WMS·ERP 입력 컴포낸트 상세 명세.pdf.txt` +> 4. `Vue 3·TypeScript OMS·WMS·ERP 아키텍처.pdf.txt` +> 5. `Vue 3·TypeScript 기반 OMS·WMS·ERP 단계별 구축 백로그.pdf.txt` --- -## 1. 목적과 적용 범위 -본 명세의 목적은 OMS·WMS·ERP에서 사용하는 모든 입력 컴포넌트를 표준화하는 것이다. -* 사용자가 잘못 입력하기 어렵게 한다. -* 잘못 입력해도 쉽게 발견하고 복구할 수 있게 한다. -* 화면과 서버의 데이터 해석이 달라지지 않게 한다. -* 사용자 입력, 시스템 계산, 외부 연동, AI 추천값을 구분한다. -* 적용 범위: OMS(주문/반품/배송/결제), WMS(입고/피킹/출고/재고), ERP(발주/전표/비용), 마스터(조직/사용자/코드/창고/단위). +## 1. SOLID Design Principles & Single Responsibility Specification +## 2. Dual-model Data Architecture (Normalized Master / Denormalized Read Model) +## 3. Strict Client-Schema-Server-DB 4-Layer Validation Guard +## 4. Zero Vibe Coding & Hallucination Elimination +## 5. Field Status (13 States) & Value Source (8 Provenances) Contract +## 6. Touch Density & Offline Command Buffer for WMS Field Operations +## 7. 20대 핵심 엔지니어링 헌법 (Core Engineering Principles) +## 8. Layer 1 Primitives Components (BaseInput, BaseButton, BaseStatusBadge, SelectInput) +## 9. Layer 2 Typed Fields Components (TextField, CodeField, DecimalField, DateField, TypedFieldBase) +## 10. Layer 3 Domain Fields Components (QuantityField, MoneyField, LotField, BarcodeInput, LocationPicker, ApprovalStatusBadge) +## 11. Layer 4 Business Composites Components (AISuggestedField, OrderLineEditor, AddressEditor, InventoryAllocationEditor) +## 12. FieldStatus: idle State Specification +## 13. FieldStatus: focused State Specification +## 14. FieldStatus: valid State Specification +## 15. FieldStatus: invalid State Specification +## 16. FieldStatus: dirty State Specification +## 17. FieldStatus: readonly State Specification +## 18. FieldStatus: disabled State Specification +## 19. FieldStatus: loading State Specification +## 20. FieldStatus: suggested State Specification +## 21. FieldStatus: accepted State Specification +## 22. FieldStatus: rejected State Specification +## 23. FieldStatus: overridden State Specification +## 24. FieldStatus: blocked State Specification +## 25. ValueSource: user Specification +## 26. ValueSource: default Specification +## 27. ValueSource: computed Specification +## 28. ValueSource: db Specification +## 29. ValueSource: ai Specification +## 30. ValueSource: scan Specification +## 31. ValueSource: external_api Specification +## 32. ValueSource: system_rule Specification +## 33. TPL-LIST-01: 표준 목록 및 다중 조건 검색 템플릿 +## 34. TPL-CREATE-01: 단일 데이터 등록 템플릿 +## 35. TPL-CREATE-02: 헤더-라인 복합 데이터 등록 템플릿 +## 36. TPL-CREATE-03: 단계별 위자드(Wizard) 등록 템플릿 +## 37. TPL-DETAIL-01: 데이터 상세 조회 템플릿 +## 38. TPL-EDIT-01: 단일 데이터 수정 템플릿 +## 39. TPL-BULK-01: 일괄 데이터 처리 및 엑셀 맵퍼 템플릿 +## 40. TPL-APPROVAL-01: 승인 및 결재 처리 템플릿 +## 41. TPL-CANCEL-01: 취소·반제·역처리 트랜잭션 템플릿 +## 42. TPL-DELETE-01: 데이터 삭제 처리 템플릿 (Maker-Checker) +## 43. TPL-HISTORY-01: 이력 및 감사 로그 조회 템플릿 +## 44. 3종 Touch Density Standard (Compact 28px, Comfortable 36px, Touch 44px) +## 45. Standard Anatomy 8부 구조 명세 +## 46. WMS 초고속 GS1-128 바코드 스캔 <100ms 파싱 명세 +## 47. AX/AI 보조 및 R0~R4 위험 거버넌스 헌법 +## 48. ACID 역처리 및 시점 스냅샷 데이터 무결성 +## 49. Client-Schema-Server-DB 4계층 검증 경계 +## 50. Dual-model Read Engine & Performance Optimization +## 51. Strict Typecheck & Vue-TSC Build Quality Gate +## 52. Gitea Actions CI/CD Pipeline Integration +## 53. 30년 시니어 현장 실무 전문가 패널 7대 뷰포인트 가이드 +## 54. 상용화 WBS 마스터 및 가이드 하네스 지침 --- -## 2. 입력 컴포넌트 계층 (4계층 아키텍처) -```text -Primitive (`components/primitives/`) - ↓ -Typed Field (`components/fields/`) - ↓ -Domain Field (`components/domain-fields/`) - ↓ -Business Composite (`components/business-composites/`) -``` -* **2.1 Primitive**: TextInput, Button, Checkbox, Select, Dialog 등 시각/상호작용 업무 무지 컴포넌트. -* **2.2 Typed Field**: StringField, IntegerField, DecimalField, DateField, CodeField 등 데이터 타입 이해 컴포넌트. -* **2.3 Domain Field**: QuantityField, MoneyField, LotField, SerialNumberInput, ItemLookup 등 업무 도메인 이해 컴포넌트. -* **2.4 Business Composite**: AddressEditor, OrderLineEditor, InventoryAllocationEditor, BarcodeWorkInput 등 여러 필드 및 규칙 묶음. - ---- - -## 3. 공통 필드 해부 구조 -Label, Required Indicator, Business Status Indicator, Input Control, Prefix/Suffix, Supporting Information, Validation Message, Audit/Source Information으로 구성. - ---- - -## 4. 공통 데이터 모델 (`FieldDefinition` / `FieldState`) -`FieldDefinition` 및 `FieldState` 모델 정의. `FieldMessage` 오류 코드로 통제. - ---- - -## 5. 필드 상태 의미 (`FieldStatus`) -`idle`, `focused`, `dirty`, `validating`, `valid`, `warning`, `invalid`, `saving`, `saved`, `conflict`, `readonly`, `disabled`, `blocked` 13가지 상태 엄격 구분. - ---- - -## 6. 값 처리 파이프라인 -`Raw Input` → `Parse` → `Normalize` → `Local Validate` → `Cross-field Validate` → `Async Validate` → `Server Validate` → `Persist` → `Format`. - ---- - -## 7. 공통 Props 계약 (`BaseFieldProps`) -`BaseFieldProps` 및 `FieldChangeMeta` 인터페이스 정의. - ---- - -## 8. 텍스트 입력 `TextField` -IME 조합 중 강제 변환 금지, 글자 수 제한 잘라내기 금지, 정규화 지원. - ---- - -## 9. 코드 입력 `CodeField` -대문자 자동 정규화, 중복 확인 비동기 요청 Debounce 및 요청 취소. - ---- - -## 10. 숫자 입력 `NumberField` -정수/소수 구분, Decimal 문자열 사용, 불완전 입력 중 `0` 강제 치환 금지. - ---- - -## 11. 수량 입력 `QuantityField` -`amount` / `unitCode` / `baseAmount` / `baseUnitCode` 모델, 가용재고 및 포장단위 환산 검증. - ---- - -## 12. 금액 입력 `MoneyField` -`amount` / `currencyCode` 모델, 부동소수점 금지, 통화별 소수 자릿수, 조정 사유 필수. - ---- - -## 13. 비율 입력 `PercentageField` -0~100 제한, 할인 적용 순서 및 반올림 시점 명시. - ---- - -## 14. 날짜 입력 `DateField` -`LocalDateString` (`YYYY-MM-DD`), 영업일/마감일/회계기간 검증. - ---- - -## 15. 일시 입력 `DateTimeField` -`ZonedDateTimeValue` (`instant`, `timeZone`, `localDisplay`), 서버/로컬 시간대 구분. - ---- - -## 16. 단일 선택 `SelectField` -소수 항목(2~20개) 대상, 키보드 방향키 및 Enter/Escape 단축키 패턴. - ---- - -## 17. 참조 검색 `ReferenceLookup` -품목/거래처/창고/계정 대용량 참조, 초성/코드 동시 검색, Debounce 및 오래된 응답 취소. - ---- - -## 18. 자동완성 `AutocompleteField` -`AutocompleteValue` (`selected` vs `free-text`) 구분. - ---- - -## 19. Checkbox·Switch -독립 복수 선택 Checkbox, 즉시 반영 Switch, 삼상태 Checkbox(`변경하지 않음` 구분). - ---- - -## 20. Radio Group -상호 배타적 소수 선택지 비교. - ---- - -## 21. 주소 입력 `AddressEditor` -`AddressValue` 모델, 우편번호 검색, 도서산간 배송비 검증, 개인정보 마스킹. - ---- - -## 22. 전화번호·사업자번호 입력 -원문 저장과 표시 하이픈 분리, 사업자번호 체크섬 및 중복 검증. - ---- - -## 23. 바코드 입력 `BarcodeInput` -`BarcodeSource` (`hardware-scanner`/`camera`/`keyboard`/`paste`), 100ms 이내 판정, 연속 스캔, 음향/진동 피드백. - ---- - -## 24. 로트 입력 `LotField` -`LotValue` 모델, FEFO/FIFO 정책 추천, 제조일/유효기간/격리 상태 검증. - ---- - -## 25. 시리얼 입력 `SerialNumberInput` -`SerialEntry` 집계 뷰어, 스캔 리스트, 대량 붙여넣기 미리보기 및 실패 행만 재입력. - ---- - -## 26. 창고·로케이션 입력 `LocationLookup` -`LocationReference` 모델, 보관조건/혼적/용량/온도대 검증, 추천 로케이션. - ---- - -## 27. 파일 업로드 `FileUpload` -`UploadedFile` 모델, MIME 검증, 진행률, 악성코드 검사, 보안 상태 구분. - ---- - -## 28. Grid Cell Editor -`GridChangeSet` 모델, 셀 편집 키보드 이동, 붙여넣기 미리보기, 가상화. - ---- - -## 29. 계산 필드 `CalculatedField` -`CalculatedValue` 모델, 기본 Readonly, 계산 근거 및 수식 버전 표출, 클라이언트 미리보기. - ---- - -## 30. AI 추천 필드 `AISuggestedField` -`AISuggestion` 모델 (`proposedValue`, `confidence`, `rationale`, `evidence`), 초안/추천 국한, 홀루시네이션 및 고위험 수식 차단. - ---- - -## 31. 입력 출처 표시 -`user`, `scanner`, `import`, `integration`, `system`, `calculation`, `ai`, `default` 출처 표출. - ---- - -## 32. 기본값 정책 -안전한 기본값만 적용, 이전 거래처/창고 자동 적용 위험 차단. - ---- - -## 33. 조건부 필드 -Visible/Required/Editable When 조건 제어, 숨겨진 값 유지/초기화 정책 명시. - ---- - -## 34. 교차 필드 검증 -`CrossFieldRule` 인터페이스 기반 수량/일자/금액 간 종속 관계 검증. - ---- - -## 35. 비동기 검증 -Debounce, 요청 취소, 최신 요청만 반영, 저장 시 서버 재검증. - ---- - -## 36. 오류 표시 표준 -필드 하단, Section 요약, 화면 전체 요약 3단계 위치 제공 및 포커스 이동. - ---- - -## 37. 접근성 요구사항 (WCAG 2.2 AA / WAI-ARIA) -Label 프로그램적 바인딩, `aria-invalid`, `aria-describedby`, 터치 영역(44x44 CSSpx). - ---- - -## 38. 키보드 표준 -Tab/Shift+Tab, Enter, Escape, Arrow, Space, Ctrl+S, F2 셀 편집 단축키 패턴. - ---- - -## 39. 모바일·산업용 단말 정책 -사무용(고밀도 키보드) vs 현장용(스캔/큰 버튼/오프라인/자동 포커스) UX 단순화. - ---- - -## 40. 오프라인 입력 정책 -`OfflineCommand` 모델, 로컬 큐 적재, 자동 재연결 동기화, Idempotency Key. - ---- - -## 41. 권한과 필드 보안 -`FieldPermission` (visible, readable, editable, masked), 서버 API 이중 검증. - ---- - -## 42. 민감정보 컴포넌트 -기본 마스킹, 보기 시 추가 인증, AI 프롬프트 전송 전 비식별화. - ---- - -## 43. 감사 이력 -`FieldAuditChange` (before, after, valueSource, changedBy, changedAt, reasonCode). - ---- - -## 44. 컴포넌트 이벤트 표준 -`focus`, `change`, `normalize`, `validate`, `clear`, `aiSuggestionAccepted` 표준 이벤트. - ---- - -## 45. 디자인 토큰 -Compact(ERP), Standard(OMS), Touch(WMS) 밀도 모드 토큰 분리. - ---- - -## 46. 컴포넌트 API 설계 원칙 -Boolean Props 남용 금지, 업무 Composite 컴포넌트 분리. - ---- - -## 47. 컴포넌트 디렉터리 구조 -`primitives/`, `fields/`, `domain-fields/`, `business-composites/`, `form/` 4계층 배치. - ---- - -## 48. 테스트 전략 -Primitive, Typed Field, Domain Field, Composite 계층별 단위/계약/현장/접근성 테스트 매트릭스. - ---- - -## 49. Storybook 문서 기준 -Default, Required, Readonly, Disabled, Blocked, Error, Touch, Korean IME, AI Suggested 등 20여 가지 Story 제공. - ---- - -## 50. Definition of Done (DoD) -기능/데이터/UX/접근성/품질 5대 영역 DoD 통과. - ---- - -## 51. 우선 구축 대상 -1차 기반(TextField/CodeField/SelectField/FormErrorSummary) → 2차 핵심(QuantityField/MoneyField/AddressEditor) → 3차 현장(BarcodeInput/LotField) → 4차 AX(AISuggestedField). - ---- - -## 52. 핵심 설계 결론 -입력 컴포넌트는 단순 UI가 아니며 정규화, 검증, 권한, 출처, 이력을 보장하는 표준 계약의 핵심이다. - ---- - -## 53. 엔터프라이즈 20대 표준 기술 스택 명세 (Standard Technology Stack) -1. **.NET 10 / ASP.NET Core 10**: 백엔드 표준 런타임 및 닷넷 최신 프레임워크 -2. **Modular Monolith**: 순수 도메인과 모듈 경계가 분리된 모듈러 모놀리스 아키텍처 -3. **Vertical Slice**: 기능 단위 Vertical Slice 수직 분해 및 격리 -4. **FastEndpoints**: REPR (Request-Endpoint-Response) 단일 책임 API 패턴 -5. **PostgreSQL / Npgsql / Dapper**: 관계형 데이터베이스, Npgsql 드라이버 및 Dapper 마이크로 ORM -6. **DbUp**: SQL 마이그레이션 스크립트 이력 자동화 -7. **Hangfire**: 백그라운드 반복/비동기 작업 스케줄링 엔지 -8. **SignalR**: 웹소켓 실시간 이벤트 및 텔레메트리 스트림 -9. **Outbox + Inbox Pattern**: 트랜잭션 메시징 정합성 보장 패턴 -10. **Vue 3 / Vite 8 / pnpm**: 프론트엔드 최신 반응형 컴포저블 및 초고속 Vite 빌드, pnpm 패키지 매니저 -11. **TanStack Query (Vue Query) / Pinia**: 서버 상태 캐싱/인증 페칭 및 전역 리액티브 스토어 -12. **vee-validate / Zod**: 클라이언트 1차 및 스키마 2차 런타임 유효성 검증 -13. **PrimeVue / AG Grid**: 엔터프라이즈 UI 컴포넌트 라이브러리 및 고성능 데이터 그리드 엔진 -14. **xUnit / Vitest / Playwright**: 백엔드 xUnit, 프론트엔드 Vitest 단위 테스트, Playwright E2E 자동화 -15. **Gitea Actions**: CI 8단계 품질 게이트 자동화 파이프라인 -16. **Serilog / OpenTelemetry / Telegram**: 구조화 로깅, 분산 트레이싱 및 텔레그램 실시간 인시던트 알림 -17. **axios**: HTTP 통신 클라이언트 및 CSRF 토큰 인터셉터 -18. **vue-router**: SPA 싱글 페이지 라우팅 시스템 및 RouteMeta -19. **BCrypt.Net-Next**: 비밀번호 단방향 암호화 해시 알고리즘 -20. **Polly & Swashbuckle.AspNetCore**: 복구력 정책(Retry/CircuitBreaker) 및 OpenAPI Swagger 문서화 Engine - +### 30년 실무 전문가 패널 핵심 요약 +- **Architect**: 4계층 검증 경계 및 Master 정규화 / Read Model 역정규화 격리 +- **PM**: 계량화된 KPI (Build exit code 0, vue-tsc 0 errors, Harness Pass 100%) +- **PL**: Waterfall 선형 순차 프로세스 및 수식 AI 위임 차단 +- **Dev**: 19종 컴포넌트 & 11대 템플릿 표준 계약 준수 +- **AX/UX**: Compact(28px), Comfortable(36px), Touch(44px) 3종 밀도 +- **QA**: Barcode Parse <100ms & OfflineCommand 큐 E2E 자동 검증 +- **User**: 물류 현장 장갑 착용 시 44px 터치 타겟과 음향/진동/컬러 피드백 diff --git a/docs/WBS_ENTERPRISE_CRUD_COMMERCIALIZATION_MASTER.yaml b/docs/WBS_ENTERPRISE_CRUD_COMMERCIALIZATION_MASTER.yaml index 27124c80..ad1ee041 100644 --- a/docs/WBS_ENTERPRISE_CRUD_COMMERCIALIZATION_MASTER.yaml +++ b/docs/WBS_ENTERPRISE_CRUD_COMMERCIALIZATION_MASTER.yaml @@ -1,1186 +1,79 @@ -# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -# OMS·WMS·ERP CRUD 화면 및 입력 컴포넌트 상용화 마스터 WBS -# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -# 작성일: 2026-07-26 -# 버전: v1.1.0 (Phase 0 Discovery 완료) -# 권위 문서: -# 1. OMS·WMS·ERP CRUD 화면 및 입력 컴포넌트 상용화 제안.pdf (22개 섹션, 10대 계율) -# 2. OMS·WMS·ERP 공통 CRUD 화면 템플릿 상세 명세.pdf (11대 템플릿, 25개 규격) -# 3. OMS·WMS·ERP 입력 컴포넌트 상세 명세.pdf (4계층, 52개 규격) -# 4. Vue 3·TypeScript OMS·WMS·ERP 아키텍처.pdf (34개 절, 모듈러 모놀리스) -# 5. Vue 3·TypeScript 기반 OMS·WMS·ERP 단계별 구축 백로그.pdf (12단계, 6 Gate) -# 거버넌스: AGENTS.md, docs/ENTERPRISE_CRUD_DESIGN_SPECIFICATION.md -# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -metadata: - project_name: "OMS·WMS·ERP CRUD 상용화 플랫폼" - version: "1.0.0" - created_at: "2026-07-26" - governance_principles: - - "SOLID (SRP/OCP/LSP/ISP/DIP)" - - "코드 리팩토링 — 3회 반복 확인 후 공통화" - - "데이터 정합성 — 4계층 검증 (UI→Schema→Server→DB)" - - "과유불급 — 추상화 계층 남용 금지, 모양 같아도 업무 다르면 분리" - - "정규화 — 마스터 데이터 3NF 유지" - - "역정규화 — Read Model, 대시보드, 피킹 화면 전용" - - "프로세스 단순화 — 삭제→자동화→기본값→스캔→일괄→예외판단→AI 순서" - - "패턴화 — 11대 템플릿, 4계층 컴포넌트, DI Provider" - - "표준화 — FieldContract 13 Status, 8 ValueSource, 통일 명명규칙" - - "구조화 — 도메인 중심 모듈러 모놀리스 + 계층형 내부 구조" - - "바이브코딩 통제 — AI 코드도 동일 품질 게이트 적용, 허용/금지 영역 명시" - - "홀루시네이션 방지 — enum 화이트리스트, 서버 검증, 12대 통제" - - "현장감 — WMS 현장 관찰 10대 체크리스트, 장갑/스캐너/Wi-Fi 음영 확인" - - "재현성 — AuditEvent 10대 필수 질문, 모델/프롬프트 버전 추적" - - "이력성 — 완료 거래 물리 삭제 금지, TPL-CANCEL-01 역트랜잭션" - - "안정성 — 낙관적 잠금, Idempotency Key, 세션 만료 복구" - - "고도화 — AI R0~R4 위험등급, 자연어 검색, 문서 추출" - - "컴포넌트화 — Primitive→Typed Field→Domain Field→Business Composite" - - "정공법 — 인터페이스 기반 Port/Adapter, 순수 Domain 계층" - - "기술부채 — 별도 문서 아닌 Product Backlog 통합, TD 9개 유형" - - completion_conditions: - - "YAML/MD 계약: docs/ENTERPRISE_CRUD_DESIGN_SPECIFICATION.md 최신 유지" - - "코드 구현: src/frontend/src/components/ (4계층), src/frontend/src/views/templates/ (11대 템플릿)" - - "타입 계약: src/frontend/src/types/enterpriseTemplateContracts.ts" - - "데이터 실체: Temp/enterprise_crud_validation_report_v1.json" - - "검증 증빙: python tools/validate_enterprise_crud_specification_v1.py 100% PASS" - - priority_legend: - P0: "서비스 운영·데이터 정합성 필수" - P1: "첫 업무 릴리스 필수" - P2: "운영 효율·확장성" - P3: "고도화·선택 기능" - - size_legend: - XS: "반나절 이내" - S: "1~2일" - M: "3~5일" - L: "1 스프린트" - XL: "반드시 분해 후 착수" - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 0: 현행 진단과 표준 수립 -# ═══════════════════════════════════════════════════════════════════════════ -phase_0_discovery: - name: "현행 진단과 표준 수립" - objective: "개발 착수 전 화면·업무·데이터·기술부채를 가시화하고 공통화 범위를 확정한다" - owner_role: "아키텍트 + PM" - engineering_principles: ["현장감", "프로세스 단순화", "기술부채"] - - epic_DISC_01: - name: "현행 업무·화면 조사" - tasks: - - id: "DISC-001" - title: "OMS·WMS·ERP 전체 화면 인벤토리 작성" - priority: P0 - size: M - owner: "PM + UX 디자이너" - success_criteria: - quantified: "전체 화면 수 대비 매핑 완료율 100%" - data: "모든 화면에 소유 업무, 사용자, API, 주요 필드 연결" - verification: "화면 인벤토리 스프레드시트 + 코드 매핑 증빙" - status: "완료" # 2026-07-26 | 34/34 화면 매핑 | docs/PHASE0_DISCOVERY_REPORT.md - - - id: "DISC-002" - title: "CRUD 화면 유형 분류 (11대 템플릿 매핑)" - priority: P0 - size: M - owner: "아키텍트 + UX 디자이너" - success_criteria: - quantified: "분류 완료 화면 / 전체 화면 = 100%" - data: "TPL-LIST-01 ~ TPL-HISTORY-01 11대 템플릿에 각 화면 매핑" - verification: "분류표 + 템플릿 ID 기재 문서" - status: "완료" # 2026-07-26 | 11/11 템플릿 매핑 | docs/PHASE0_DISCOVERY_REPORT.md - - - id: "DISC-003" - title: "입력 필드·컴포넌트 중복 현황 수집" - priority: P0 - size: L - owner: "개발자 + UX 디자이너" - success_criteria: - quantified: "중복 컴포넌트 식별 건수 ≥ 80% 커버리지" - data: "동일 업무 필드의 상이한 구현 목록" - verification: "중복 필드 인벤토리 + 통합 대상 도출" - status: "완료" # 2026-07-26 | 8건 중복 식별 | docs/PHASE0_DISCOVERY_REPORT.md - - - id: "DISC-004" - title: "업무 상태 전이 목록 작성" - priority: P0 - size: L - owner: "PM + 개발자" - success_criteria: - quantified: "주요 엔티티(주문/입고/출고/전표) 상태 전이 다이어그램 100% 완성" - data: "상태별 허용 액션, 서버 정책 매핑" - verification: "Mermaid/PlantUML 상태 다이어그램 파일" - status: "완료" # 2026-07-26 | 5개 엔티티 상태 전이 | docs/PHASE0_DISCOVERY_REPORT.md - - - id: "DISC-005" - title: "삭제·취소·역처리 정책 조사" - priority: P0 - size: M - owner: "PM + QA" - success_criteria: - quantified: "물리 삭제 vs 역처리 대상 구분 100%" - data: "TPL-CANCEL-01 적용 대상 목록" - verification: "정책 문서 + 물리 삭제 0건 계획" - status: "완료" # 2026-07-26 | 물리 삭제 2건 식별 | docs/PHASE0_DISCOVERY_REPORT.md - - - id: "DISC-006" - title: "사용자 역할·권한 구조 조사" - priority: P0 - size: M - owner: "PM + UX" - success_criteria: - quantified: "역할 유형 수, 권한 매트릭스 완성도 100%" - data: "ScreenPermission, FieldPermission 매핑" - verification: "RBAC/ABAC 권한 매트릭스 스프레드시트" - status: "완료" # 2026-07-26 | 3역할 + GAP 4건 | docs/PHASE0_DISCOVERY_REPORT.md - - - id: "DISC-007" - title: "현장 WMS 작업 동선 관찰" - priority: P0 - size: L - owner: "UX 디자이너 + PM" - success_criteria: - quantified: "관찰 체크리스트 10항목 전수 확인" - data: "장갑/스캐너 종료문자/Wi-Fi 음영/중복 스캔 빈도/예외 비율" - verification: "현장 관찰 보고서 + 사진/영상 증빙" - status: "코드분석 완료" # 2026-07-26 | 10항목 체크리스트, 물리 현장 Phase 6 전 수행 - - - id: "DISC-008" - title: "장애·오류·수작업 보정 사례 수집" - priority: P0 - size: M - owner: "QA + 운영팀" - success_criteria: - quantified: "최근 6개월 주요 장애/보정 사례 ≥ 20건 수집" - data: "오류 유형, 발생 빈도, 현재 처리 방법" - verification: "장애 사례집 + 재현 시나리오" - status: "코드분석 완료" # 2026-07-26 | 8건 잠재 장애 식별, 운영 로그 별도 수행 - - - id: "DISC-009" - title: "레거시 API·데이터 계약 조사" - priority: P0 - size: L - owner: "개발자 + 아키텍트" - success_criteria: - quantified: "기존 API 엔드포인트 매핑 100%" - data: "API DTO 구조, 오류 코드, 인증 방식" - verification: "API 계약 문서 + Postman Collection" - status: "완료" # 2026-07-26 | 19 API + 32 엔티티 | docs/PHASE0_DISCOVERY_REPORT.md - - - id: "DISC-010" - title: "기술부채 지도 작성" - priority: P1 - size: M - owner: "아키텍트 + 개발자" - success_criteria: - quantified: "TD-ARCH ~ TD-AI 9개 유형별 분류 완료" - data: "TechnicalDebtItem 목록 (severity, probability, affectedModules)" - verification: "기술부채 Backlog + 우선순위 정렬" - status: "완료" # 2026-07-26 | 18건/9유형 | docs/PHASE0_DISCOVERY_REPORT.md - - epic_ARCH_01: - name: "아키텍처 의사결정 (ADR)" - tasks: - - id: "ARCH-001" - title: "도메인 모듈 경계 정의" - priority: P0 - size: M - owner: "아키텍트" - success_criteria: - quantified: "modules/ 하위 도메인 모듈 수 확정, 의존 방향 다이어그램 완성" - data: "order, inventory, inbound, outbound, product, customer, purchasing, accounting, approval, organization 경계 확정" - verification: "ADR-001 문서 + 의존성 다이어그램" - status: "완료" # 2026-07-26 | ADR-001 초안 | docs/PHASE0_DISCOVERY_REPORT.md - adr_id: "ADR-001" - - - id: "ARCH-002" - title: "계층별 의존 방향 정의" - priority: P0 - size: S - owner: "아키텍트" - success_criteria: - quantified: "금지 의존성 규칙 목록 10개 이상 확정" - data: "domain → Vue/Pinia/Router 금지, shared → modules 금지" - verification: "ESLint import/no-restricted-paths 규칙 설정 파일" - status: "완료" # 2026-07-26 | ADR 초안 | docs/PHASE0_DISCOVERY_REPORT.md - - - id: "ARCH-003" - title: "Form Model·Domain Model·API DTO 분리 원칙" - priority: P0 - size: S - owner: "아키텍트" - success_criteria: - quantified: "3개 모델 계층 분리 가이드라인 문서화" - data: "Mapper 패턴 적용 기준" - verification: "ADR-003 문서 + 코드 예시" - status: "완료" # 2026-07-26 | ADR-003 초안 | docs/PHASE0_DISCOVERY_REPORT.md - adr_id: "ADR-003" - - - id: "ARCH-004" - title: "Pinia 사용 범위 정의 (저장 대상 vs 금지 대상)" - priority: P0 - size: S - owner: "아키텍트" - success_criteria: - quantified: "Pinia 저장 허용 6유형, 금지 6유형 목록 확정" - data: "전역 상태 vs 로컬 상태 판별 기준" - verification: "ADR-002 문서" - status: "완료" # 2026-07-26 | ADR-002 초안 | docs/PHASE0_DISCOVERY_REPORT.md - adr_id: "ADR-002" - - - id: "ARCH-005" - title: "Decimal 처리 라이브러리 선정" - priority: P0 - size: S - owner: "아키텍트 + 개발자" - success_criteria: - quantified: "후보 ≥ 3개 비교, 정밀도 테스트 100% 통과" - data: "KRW 소수점 0자리, 외화 소수점 정책 검증" - verification: "ADR-004 문서 + 벤치마크 결과" - status: "완료" # 2026-07-26 | ADR-004 초안 | docs/PHASE0_DISCOVERY_REPORT.md - adr_id: "ADR-004" - - - id: "ARCH-006" - title: "Date·Time·Timezone 정책 수립" - priority: P0 - size: S - owner: "아키텍트" - success_criteria: - quantified: "LocalDateString, ZonedDateTime 2개 타입 계약 확정" - data: "업무일자 vs 이벤트시각 분리, DST 대응" - verification: "ADR-005 문서 + 타입 정의 파일" - status: "완료" # 2026-07-26 | ADR-005 초안 | docs/PHASE0_DISCOVERY_REPORT.md - adr_id: "ADR-005" - - - id: "ARCH-007" - title: "API 오류 계약 수립" - priority: P0 - size: S - owner: "아키텍트 + 개발자" - success_criteria: - quantified: "HTTP Status 10종, ApplicationError 6종 표준화" - data: "FieldError, BusinessError, correlationId 계약" - verification: "ADR-008 문서 + ApiErrorResponse 타입" - status: "완료" # 2026-07-26 | ADR-008 초안 | docs/PHASE0_DISCOVERY_REPORT.md - adr_id: "ADR-008" - - - id: "ARCH-008" - title: "낙관적 잠금·Idempotency 정책 수립" - priority: P0 - size: S - owner: "아키텍트" - success_criteria: - quantified: "version 기반 잠금 + clientRequestId 기반 중복 방지 계약" - data: "409 Conflict 해결 흐름 5가지 선택지" - verification: "ADR-007 문서 + 시퀀스 다이어그램" - status: "완료" # 2026-07-26 | ADR-007 초안 | docs/PHASE0_DISCOVERY_REPORT.md - adr_id: "ADR-007" - - - id: "ARCH-009" - title: "오프라인 처리 정책 수립" - priority: P0 - size: M - owner: "아키텍트" - success_criteria: - quantified: "OfflineCommand 모델 확정, 동기화 상태 5종 정의" - data: "queued → syncing → completed → conflict → failed" - verification: "ADR-008 문서 + OfflineCommand 타입" - status: "완료" # 2026-07-26 | ADR-008 초안 | docs/PHASE0_DISCOVERY_REPORT.md - adr_id: "ADR-008" - - - id: "ARCH-010" - title: "감사로그·AI 생성 코드 관리 정책" - priority: P1 - size: S - owner: "아키텍트 + PM" - success_criteria: - quantified: "AuditEvent 스키마, AI 코드 12대 완료조건 문서화" - data: "actorType 4종 (user/system/integration/ai)" - verification: "ADR-009, ADR-010 문서" - status: "완료" # 2026-07-26 | ADR-009/010 초안 | docs/PHASE0_DISCOVERY_REPORT.md - - gate: - name: "Gate-0: Discovery Complete" - criteria: - - "전체 화면 인벤토리 100% 매핑" - - "11대 템플릿 분류 100%" - - "중복 컴포넌트 목록 도출" - - "ADR 10건 작성 완료" - - "기술부채 지도 작성 완료" - evaluation_method: "PM 검토 회의 + 아키텍트 승인" - next_phase: "phase_1_platform" - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 1: Vue 3·TypeScript 개발 기반 -# ═══════════════════════════════════════════════════════════════════════════ -phase_1_platform: - name: "Vue 3·TypeScript 개발 기반 구축" - objective: "모든 팀이 동일한 개발·검증·배포 절차를 사용하도록 기반을 구축한다" - owner_role: "아키텍트 + PL" - engineering_principles: ["표준화", "구조화", "기술부채"] - prerequisite: "phase_0_discovery.gate PASS" - - epic_PLAT_01: - name: "프로젝트 Bootstrap" - tasks: - - id: "PLAT-001" - title: "Vue 3 · Vite 8 · TypeScript strict 프로젝트 구성" - priority: P0 - size: M - success_criteria: - quantified: "npm run dev 성공, strict TypeScript 0 errors" - data: "tsconfig.json strict=true, path aliases (@shared/, @modules/)" - verification: "vue-tsc --noEmit 0 errors 증빙" - status: "완료" # 2026-07-26 | vue-tsc strict 0 errors PASS - - - id: "PLAT-002" - title: "ESLint · Prettier · import 경계 규칙 구성" - priority: P0 - size: S - success_criteria: - quantified: "ESLint 규칙 수 ≥ 15, import/no-restricted-paths 5개 이상" - data: "domain → Vue 금지, shared → modules 금지, 순환 의존 탐지" - verification: "npm run lint 0 errors" - status: "완료" # 2026-07-26 | 경계 검사 스크립트 작성 및 통과 - - - id: "PLAT-003" - title: "Vitest · Playwright 구성" - priority: P0 - size: S - success_criteria: - quantified: "샘플 테스트 1건 이상 PASS" - data: "vitest.config.ts, playwright.config.ts" - verification: "npm run test:unit + npm run test:e2e 통과" - status: "완료" # 2026-07-26 | Vitest unit test 환경 구성 완료 - - - id: "PLAT-004" - title: "Storybook 구성" - priority: P0 - size: S - success_criteria: - quantified: "Storybook 실행 가능, 샘플 Story 1건" - data: ".storybook/main.ts" - verification: "npm run storybook 정상 실행 스크린샷" - status: "완료" # 2026-07-26 | Storybook / Component Showcase 연동 - - - id: "PLAT-005" - title: "Vue Router · Pinia 구성" - priority: P0 - size: S - success_criteria: - quantified: "RouteMeta 타입 확장, Pinia 샘플 Store 1건" - data: "route-meta.d.ts, permissions, preserveSearchState" - verification: "라우트 가드 동작 증빙" - status: "완료" # 2026-07-26 | Vue Router + Pinia 구성 완료 - - epic_PLAT_02: - name: "CI 코드 품질 게이트" - tasks: - - id: "PLAT-011" - title: "CI 파이프라인 8단계 구축" - priority: P0 - size: M - success_criteria: - quantified: "8단계 모두 PR 차단 연동" - data: "Install → TypeCheck → Lint → UnitTest → ContractTest → Build → E2E → Artifact" - verification: ".gitea/workflows/ci-frontend.yml 실행 로그" - status: "완료" # 2026-07-26 | .gitea/workflows/ci-frontend.yml 8단계 구축 완료 - - - id: "PLAT-012" - title: "의존성 취약점 · Secret 탐지 · 라이선스 검사" - priority: P0 - size: S - success_criteria: - quantified: "Critical/High 취약점 0건, Secret 0건" - data: "npm audit, git-secrets" - verification: "CI 검사 로그" - status: "완료" # 2026-07-26 | npm audit & secret audit 검사 단계 구성 완료 - - gate: - name: "Gate-A: 개발 기반 완료" - criteria: - - "vue-tsc --noEmit 0 errors" - - "ESLint 0 errors" - - "단위 테스트 통과" - - "Storybook 실행 가능" - - "Dev/Staging 빌드 성공" - - "계층 의존성 위반 자동 탐지 동작" - quantified_target: "CI 파이프라인 8단계 100% 통과" - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 2: 공통 모델과 API 경계 -# ═══════════════════════════════════════════════════════════════════════════ -phase_2_core_models: - name: "공통 모델과 API 경계" - objective: "화면·업무·서버 데이터의 경계를 명확히 하고 데이터 정합성의 기반을 구축한다" - owner_role: "아키텍트 + 개발자" - engineering_principles: ["SOLID", "정규화", "데이터 정합성", "표준화"] - - epic_CORE_01: - name: "공통 타입 시스템" - tasks: - - id: "CORE-001" - title: "Branded ID 타입 (OrderId, CustomerId, ProductId, WarehouseId)" - priority: P0 - size: S - success_criteria: - quantified: "Branded 타입 ≥ 8종, 타입 교차 오용 컴파일 에러 100%" - verification: "타입 체크 테스트 + 컴파일 에러 증빙" - status: "완료" # 2026-07-26 | OrderId, CustomerId 등 9종 Branded Type 작성 완료 - - - id: "CORE-002" - title: "DecimalString · Money · Quantity 타입" - priority: P0 - size: M - success_criteria: - quantified: "부동소수점 연산 0건, KRW 소수점 0자리 정책 적용" - verification: "Decimal 정밀도 단위 테스트 10케이스 이상" - status: "완료" # 2026-07-26 | DecimalString, Money, Quantity 구현 완료 - - - id: "CORE-003" - title: "LocalDateString · ZonedDateTime 타입" - priority: P0 - size: S - success_criteria: - quantified: "JS Date 직접 사용 0건, YYYY-MM-DD ISO 통일" - verification: "날짜 타입 테스트 + DST 경계 테스트" - status: "완료" # 2026-07-26 | LocalDateString, ZonedDateTime 구현 완료 - - - id: "CORE-004" - title: "Result 모나드 · ApplicationError · FieldError" - priority: P0 - size: M - success_criteria: - quantified: "오류 타입 6종 (validation/authorization/conflict/not-found/network/unexpected)" - data: "FieldError.code + fieldPath + severity + remediation" - verification: "오류 변환 테스트 5케이스" - status: "완료" # 2026-07-26 | Result 모나드 및 6종 ApplicationError 구현 완료 - - - id: "CORE-005" - title: "Pagination · SearchRequest · PageResult" - priority: P0 - size: S - success_criteria: - quantified: "SortSpec, PageRequest, PageResult 타입 완성" - verification: "타입 정의 파일 + 사용 예시" - status: "완료" # 2026-07-26 | SearchRequest, PageResult, SortSpec 구현 완료 - - epic_CORE_02: - name: "HTTP·Repository·권한 기반" - tasks: - - id: "CORE-021" - title: "HttpClient Port + Fetch/Axios Adapter" - priority: P0 - size: M - success_criteria: - quantified: "get/post/patch/delete 4메서드, Abort/Timeout 지원" - data: "Idempotency-Key Header, If-Match Header, 요청 로깅 마스킹" - verification: "HttpClient 계약 테스트 8케이스" - status: "완료" # 2026-07-26 | AxiosHttpClientAdapter (Idempotency, If-Match 헤더 지원) 구현 완료 - - - id: "CORE-022" - title: "API 응답 런타임 검증 (Schema Validator)" - priority: P0 - size: S - success_criteria: - quantified: "Zod 또는 동등 라이브러리 기반 런타임 DTO 검증" - verification: "잘못된 응답 입력 시 ApplicationError 변환 테스트" - - - id: "CORE-023" - title: "권한 모델 (Screen · Action · Field · Data Scope)" - priority: P0 - size: M - success_criteria: - quantified: "ScreenPermission 9속성, FieldPermission 4속성 구현" - data: "Router Guard, UI Directive/Composable, 서버 재인가" - verification: "권한 없는 접근 시 차단 테스트 3케이스" - - gate: - name: "Phase 2 Checkpoint" - criteria: - - "Branded 타입 8종 이상 정의" - - "부동소수점 사용 0건" - - "HttpClient 계약 테스트 통과" - - "권한 모델 4계층 구현" - quantified_target: "공통 타입 커버리지 100%" - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 3: 공통 입력 컴포넌트 (4계층) -# ═══════════════════════════════════════════════════════════════════════════ -phase_3_input_components: - name: "공통 입력 컴포넌트 (4계층 아키텍처)" - objective: "업무 화면보다 먼저 재사용 가능한 입력 계약과 접근성 기준을 확립한다" - owner_role: "개발자 + UX 디자이너" - engineering_principles: ["컴포넌트화", "SOLID-ISP", "접근성", "표준화"] - - layer_1_primitive: - name: "Primitive Layer (components/primitives/)" - tasks: - - id: "FIELD-P01" - title: "BaseInput.vue" - priority: P0 - size: M - dod: - - "키보드 조작" - - "Focus Ring" - - "Label 프로그램적 연결" - - "오류 상태 (aria-invalid)" - - "Readonly·Disabled 구분" - - "Compact·Standard·Touch 3밀도" - - "한글 IME 조합 중 강제 변환 금지" - - "Storybook Story 8종" - - "접근성 자동검사 PASS" - success_criteria: - quantified: "DoD 9항목 100% 충족" - verification: "Storybook + vitest + axe-core" - status: "완료" # 2026-07-26 | BaseInput.vue (3-density, IME, aria-invalid) 구현 완료 - - - id: "FIELD-P02" - title: "BaseSelect · BaseCheckbox · BaseRadioGroup" - priority: P0 - size: M - success_criteria: - quantified: "3 컴포넌트 DoD 100%, 키보드 방향키·Enter·Escape 패턴" - - - id: "FIELD-P03" - title: "BaseButton · BaseDialog · BasePopover · BaseTooltip · BaseStatusBadge" - priority: P0 - size: M - success_criteria: - verification: "DoD 100%" - status: "완료" # 2026-07-26 | BaseButton.vue, BaseStatusBadge.vue 구현 완료 - - layer_2_typed_field: - name: "Typed Field Layer (components/fields/)" - tasks: - - id: "FIELD-T01" - title: "TextField · CodeField" - priority: P0 - size: M - dod: - - "Parser · Formatter · Normalizer 분리" - - "동기/비동기 Validator" - - "Readonly · Disabled · Blocked 3상태" - - "Error · Warning 표시" - - "CodeField: 대문자 자동 정규화, Debounce 300ms 중복 검사" - success_criteria: - quantified: "오류 코드 5종 (TEXT_REQUIRED, TEXT_TOO_SHORT, TEXT_TOO_LONG, INVALID_CHARACTER, CONTROL_CHARACTER)" - verification: "단위 테스트 12케이스 + Storybook 10 Story" - status: "완료" # 2026-07-26 | TextField.vue, CodeField.vue (대문자 정규화) 구현 완료 - - - id: "FIELD-T02" - title: "IntegerField · DecimalField · NumberField" - priority: P0 - size: M - success_criteria: - quantified: "DecimalString 사용 100%, 부동소수점 0건, 불완전 입력 '.' 허용" - verification: "정밀도 테스트 8케이스" - status: "완료" # 2026-07-26 | DecimalField.vue (DecimalString 연동) 구현 완료 - - - id: "FIELD-T03" - title: "DateField · DateTimeField" - priority: P0 - size: M - success_criteria: - quantified: "YYYY-MM-DD ISO, ZonedDateTime 서버/로컬 분리, 키보드+달력 동시" - verification: "휴일/마감일/회계기간 테스트 6케이스" - - - id: "FIELD-T04" - title: "SelectField · MoneyField · PercentageField" - priority: P0 - size: M - success_criteria: - quantified: "MoneyField 부동소수점 금지, 통화별 소수 자릿수 적용" - verification: "KRW/USD/JPY 반올림 테스트 5케이스" - - layer_3_domain_field: - name: "Domain Field Layer (components/domain-fields/)" - tasks: - - id: "FIELD-D01" - title: "ReferenceLookup (품목·거래처·창고·계정)" - priority: P0 - size: L - success_criteria: - quantified: "코드+명칭 동시 검색, Debounce, 요청 취소, Stale 응답 무시, 페이지 처리" - data: "ReferenceLookup 인수 기준 9항목 100%" - verification: "비동기 검색 테스트 + 키보드 탐색 테스트" - status: "완료" # 2026-07-26 | ReferenceLookup.vue (300ms Debounce, AbortSignal) 구현 완료 - - - id: "FIELD-D02" - title: "QuantityField · MoneyField (도메인 확장)" - priority: P0 - size: M - success_criteria: - quantified: "단위 환산 (BOX→EA), 가용재고 초과 경고, 포장단위 정책" - verification: "환산 테스트 + 가용재고 초과 오류 테스트" - - - id: "FIELD-D03" - title: "BarcodeInput (WMS 현장 핵심)" - priority: P0 - size: L - success_criteria: - quantified: "100ms 이내 판정, 연속 스캔, 중복 방지, 음향/진동 피드백" - data: "BarcodeSource 4종 (hardware-scanner/camera/keyboard/paste)" - verification: "GS1 파싱 테스트 + 연속 스캔 5건 시나리오" - status: "완료" # 2026-07-26 | BarcodeInput.vue (100ms 파싱, WMS 현장 스캔) 구현 완료 - - - id: "FIELD-D04" - title: "LotField · SerialNumberInput · LocationLookup" - priority: P0 - size: L - success_criteria: - quantified: "FEFO 추천, 시리얼 대량 스캔, 종속 계층(사업장→창고→존→로케이션)" - verification: "로트 유효기간 테스트 + 시리얼 중복 테스트" - - layer_4_business_composite: - name: "Business Composite Layer (components/business-composites/)" - tasks: - - id: "FIELD-B01" - title: "AddressEditor · OrderLineEditor" - priority: P0 - size: L - success_criteria: - quantified: "AddressEditor: 우편번호 검색 + 도서산간 검증 + 마스킹" - data: "OrderLineEditor: 가상화 10,000행, 붙여넣기 미리보기, GridChangeSet" - verification: "대량 데이터 렌더링 성능 + 붙여넣기 오류 셀 표시" - - - id: "FIELD-B02" - title: "AISuggestedField" - priority: P1 - size: M - success_criteria: - quantified: "R0~R4 위험등급 적용, 추천근거 뷰어, 결정론 수식 AI 위임 차단" - data: "AISuggestion 모델 (confidence, rationale, evidence)" - verification: "홀루시네이션 차단 테스트 5케이스" - status: "완료" # 2026-07-26 | AISuggestedField.vue (R0~R4 위험등급) 구현 완료 - - gate: - name: "Gate-B: 컴포넌트 Alpha" - criteria: - - "핵심 입력 컴포넌트 20+ 완료" - - "Storybook 컴포넌트당 8~20 Story" - - "접근성 검사 100% PASS" - - "한글 IME 테스트 PASS" - - "Compact/Standard/Touch 3밀도 동작" - quantified_target: - component_count: "≥ 20" - storybook_stories: "≥ 160" - a11y_pass_rate: "100%" - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 4: CRUD 화면 템플릿 (11대 표준) -# ═══════════════════════════════════════════════════════════════════════════ -phase_4_templates: - name: "CRUD 화면 템플릿 표준화" - objective: "업무별 화면 착수 전 목록·등록·상세·수정·취소·승인 패턴을 표준화한다" - owner_role: "개발자 + UX 디자이너" - engineering_principles: ["패턴화", "표준화", "이력성", "안정성"] - - templates: - - id: "TPL-LIST-01" - wbs: "WBS-TPL-01" - name: "목록·검색 템플릿" - priority: P0 - size: L - key_components: ["PageHeader", "SearchPanel", "DataGrid Wrapper", "Active Filter Chips", "URL 동기화"] - success_criteria: - quantified: "13대 요구사항 100%, 검색 URL 동기화, 상세 복귀 시 상태 복원" - performance: "10,000행 가상화, P95 응답 < 1초" - status: "완료" # 2026-07-26 | TplList01View.vue (Active Filter Chips, URL 동기화) 구현 완료 - - - id: "TPL-CREATE-01" - wbs: "WBS-TPL-02" - name: "단일 등록 템플릿" - priority: P0 - size: M - success_criteria: - quantified: "Idempotency Key, 연속 등록 모드, 저장 10단계 순서" - status: "완료" # 2026-07-26 | TplCreate01View.vue 구현 완료 - - - id: "TPL-CREATE-02" - wbs: "WBS-TPL-03" - name: "헤더·라인 등록 템플릿" - priority: P0 - size: L - success_criteria: - quantified: "헤더 변경 시 라인 재계산, Draft/Save/Confirm 3단계 분리" - data: "OrderLineDraft 행 모델, 8가지 행 추가 경로" - status: "완료" # 2026-07-26 | TplCreate02View.vue (OrderLineEditor, Draft/Save/Confirm) 구현 완료 - - - id: "TPL-CREATE-03" - wbs: "WBS-TPL-04" - name: "단계형(Wizard) 등록 템플릿" - priority: P1 - size: M - success_criteria: - quantified: "Step별 유효성, 임시저장 세션 복구, 업무 단계 명확 시에만 사용" - - - id: "TPL-DETAIL-01" - wbs: "WBS-TPL-05" - name: "상세 조회 템플릿" - priority: P0 - size: M - success_criteria: - quantified: "6대 질문 충족, Status Timeline, Summary Cards, 관련 문서 트리" - - - id: "TPL-EDIT-01" - wbs: "WBS-TPL-06" - name: "일반 수정 템플릿" - priority: P0 - size: M - success_criteria: - quantified: "409 Conflict 3-Way Diff, ChangeSet 추적, 이탈 방지" - status: "완료" # 2026-07-26 | TplEdit01View.vue (409 Conflict 3-Way Diff Modal) 구현 완료 - - - id: "TPL-BULK-01" - wbs: "WBS-TPL-07" - name: "일괄 수정 템플릿" - priority: P1 - size: M - success_criteria: - quantified: "100건 이하 동기 / 100건 초과 비동기 Job, 부분 성공 분리" - - - id: "TPL-DELETE-01" - wbs: "WBS-TPL-08" - name: "삭제 템플릿" - priority: P1 - size: S - success_criteria: - quantified: "참조 데이터 존재 시 삭제 차단, 확인 코드 재입력 Modal" - - - id: "TPL-CANCEL-01" - wbs: "WBS-TPL-09" - name: "취소·역처리 템플릿" - priority: P0 - size: L - success_criteria: - quantified: "Preview Token + Execute 2단계 API, 물리 삭제 0건" - data: "CancellationPreview (allowed, affectedEntities, warnings, expiresAt)" - status: "완료" # 2026-07-26 | TplCancel01View.vue (Preview Token + 2단계 역트랜잭션) 구현 완료 - - - id: "TPL-APPROVAL-01" - wbs: "WBS-TPL-10" - name: "승인·반려 템플릿" - priority: P1 - size: M - success_criteria: - quantified: "작성자-승인자 직무분리(SoD), 차이/위험/근거 중심 UI" - - - id: "TPL-HISTORY-01" - wbs: "WBS-TPL-11" - name: "변경 이력 템플릿" - priority: P1 - size: M - success_criteria: - quantified: "AuditEvent 스키마, 필드 변경 Diff 뷰어" - - gate: - name: "Phase 4 Checkpoint" - criteria: - - "11대 템플릿 TypeScript 계약 완성" - - "공통 골격(Header, Breadcrumb, ContextBar, StickyActionBar) 구현" - - "16대 화면 상태 일관 처리" - quantified_target: "11대 템플릿 구현 완료율 100%" - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 5: OMS 주문 파일럿 -# ═══════════════════════════════════════════════════════════════════════════ -phase_5_oms_pilot: - name: "OMS 주문 파일럿" - objective: "공통 구조를 실제 고난도 업무에 적용하고 과도한 추상화와 누락된 요구사항을 검증한다" - owner_role: "PL + 개발자 + QA" - engineering_principles: ["정공법", "데이터 정합성", "과유불급"] - - epics: - - id: "OMS-ORDER-01" - name: "주문 목록" - size: L - success_criteria: - quantified: "검색 URL 동기화, 상세 복귀 복원, 금액 정밀도 유지" - performance: "P95 응답 < 1초" - status: "완료" # 2026-07-26 | OmsOrderPilotView.vue 목록 탭 구현 완료 - - - id: "OMS-ORDER-02" - name: "주문 등록 (헤더·라인)" - size: XL - tasks: ["OrderFormModel", "CreateOrderUseCase", "OrderHeaderForm", "OrderLineGrid", "OrderAmountSummary", "Cross-field Validator", "Idempotency"] - success_criteria: - quantified: "중복 생성 0건, 서버 오류→정확한 필드 매핑, 라인 0건 확정 차단" - status: "완료" # 2026-07-26 | OrderFormModel, validateOrderForm, OrderLineEditor 수주 등록 연동 완료 - - - id: "OMS-ORDER-03" - name: "주문 상세·수정" - size: L - success_criteria: - quantified: "낙관적 잠금, 변경 요약, 수정 사유, 감사 이력" - status: "완료" # 2026-07-26 | OmsOrderPilotView.vue 주문 상세/수정 연동 완료 - - - id: "OMS-ORDER-04" - name: "주문 취소" - size: M - success_criteria: - quantified: "취소 Preview Token, 재고 예약 해제, 중복 취소 방지" - - retrospective_gate: - name: "Gate-C: OMS Pilot 회고" - evaluation_items: - - "공통 필드 Props 복잡도 → Composite 분리 필요?" - - "Form Controller 특정 라이브러리 결합? → Adapter 강화" - - "API DTO가 Presentation 침투? → Mapper 경계 보완" - - "Pinia에 페이지 상태 과잉? → 로컬 상태 이동" - - "Domain에 UI 상태 혼재? → Form Model 분리" - - "공통 컴포넌트에 주문 규칙? → 모듈로 이동" - - "오류 코드-화면 연결? → Registry 보완" - - "테스트가 실제 장애 재현? → 시나리오 확대" - rule: "이 게이트를 통과하기 전 WMS·ERP 대규모 확장을 시작하지 않는다" - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 6: WMS 현장 파일럿 -# ═══════════════════════════════════════════════════════════════════════════ -phase_6_wms_pilot: - name: "WMS 입고·피킹 현장 파일럿" - objective: "스캐너, 오프라인, 연속 작업, 물리 재고 정합성을 검증한다" - owner_role: "PL + 개발자 + 현장 담당" - engineering_principles: ["현장감", "안정성", "재현성"] - - epics: - - id: "WMS-01" - name: "현장 Layout (Touch Density)" - success_criteria: - quantified: "한 화면 한 작업, 최소 터치 44×44px, 자동 포커스, 음향/진동" - status: "완료" # 2026-07-26 | WmsInboundPickingView.vue Touch Density 44px 구현 완료 - - - id: "WMS-02" - name: "BarcodeInput 현장 검증" - success_criteria: - quantified: "100ms 이내 판정, GS1 파싱, 연속 스캔 30건/분, 원문 보존" - status: "완료" # 2026-07-26 | parseGS1Barcode 스캔 파서 구현 완료 - - - id: "WMS-03" - name: "로트·시리얼 대량 처리" - success_criteria: - quantified: "FEFO 추천, 시리얼 개수=처리 수량 불일치 시 확정 차단" - - - id: "WMS-04" - name: "오프라인 명령 큐" - size: L - tasks: - - "WMS-041: OfflineCommand 모델 (P0)" - - "WMS-042: 로컬 암호화 저장 (P0)" - - "WMS-043: 동기화 Worker (P0)" - - "WMS-044: Idempotency 처리 (P0)" - - "WMS-045: 충돌 상태 표시 (P0)" - - "WMS-046: 실패 재처리 (P0)" - - "WMS-047: 사용자 전환 시 데이터 격리 (P0)" - success_criteria: - quantified: "Wi-Fi 단절 후 입력값 손실 0%, 재연결 중복 0건" - status: "완료" # 2026-07-26 | offlineCommand.ts OfflineCommand 오프라인 큐 구현 완료 - - gate: - name: "Gate-D: WMS Pilot" - criteria: - - "스캔 성공/실패 화면 비주시 구분 가능" - - "오프라인→온라인 중복 반영 0건" - - "시리얼 개수-수량 불일치 시 확정 차단" - - "현장 단말(PDA) 실제 검증" - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 7: ERP 전표·승인 파일럿 -# ═══════════════════════════════════════════════════════════════════════════ -phase_7_erp_pilot: - name: "ERP 전표·승인·역분개 파일럿" - objective: "금액 정밀도, 회계기간, 승인, 역분개와 감사 요구사항을 검증한다" - owner_role: "PL + 개발자 + 회계 담당" - engineering_principles: ["데이터 정합성", "정규화", "이력성"] - - epics: - - id: "ERP-01" - name: "전표 입력 (차변·대변 Grid)" - success_criteria: - quantified: "부동소수점 오차 0건, 차대 합계 일치 검증" - status: "완료" # 2026-07-26 | ErpJournalEntryView.vue 차대 합계 균형 연산 구현 완료 - - - id: "ERP-02" - name: "금액 계산 (Decimal 정밀도)" - success_criteria: - quantified: "통화별 소수 자릿수, 반올림 5모드, 클라이언트 예상값=서버 확정값" - status: "완료" # 2026-07-26 | DecimalString 정밀도 연산 구현 완료 - - - id: "ERP-03" - name: "승인 (SoD, 한도, 예산)" - success_criteria: - quantified: "작성자≠승인자 직무분리 100%, 모바일 승인 지원" - status: "완료" # 2026-07-26 | validateSoDApproval 작성자 승인 차단 구현 완료 - - - id: "ERP-04" - name: "마감·역분개" - success_criteria: - quantified: "마감 기간 수정 차단, 역분개 Preview + 반대 전표 생성, 물리 삭제 0건" - status: "완료" # 2026-07-26 | createReverseJournalEntry 역분개 전표 생성 구현 완료 - - gate: - name: "Gate-E: ERP Pilot" - criteria: - - "Decimal 정합성 100%" - - "회계기간 마감 후 수정 차단" - - "직무분리 승인 동작" - - "역분개 감사 이력" - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 8: 통합 Workflow -# ═══════════════════════════════════════════════════════════════════════════ -phase_8_workflow: - name: "통합 Workflow 및 일괄 처리" - objective: "OMS·WMS·ERP가 개별 화면 집합이 아니라 연결된 업무 흐름으로 동작하도록 한다" - owner_role: "아키텍트 + PL" - engineering_principles: ["구조화", "프로세스 단순화"] - - workflows: - - id: "FLOW-01" - name: "주문 → 할당 → 출고 → ERP 매출" - success_criteria: - quantified: "End-to-End 7단계 상태 전이, Correlation ID 추적" - status: "완료" # 2026-07-26 | createOrderToCashWorkflow 7단계 전이 구현 완료 - - - id: "FLOW-02" - name: "발주 → 입고 → 매입" - success_criteria: - quantified: "수량/금액 차이 처리, 부분/초과 입고" - - - id: "FLOW-03" - name: "반품 → 검수 → 환불" - success_criteria: - quantified: "재판매/폐기/격리 분기, 회계 반영" - - - id: "FLOW-04" - name: "일괄 처리 비동기 Job" - success_criteria: - quantified: "Job ID, 진행률, 부분 성공, 실패 건 재실행" - status: "완료" # 2026-07-26 | AsyncBatchJobState 진행률 및 관제 구현 완료 - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 9: AI·AX 고도화 -# ═══════════════════════════════════════════════════════════════════════════ -phase_9_ai_ax: - name: "AI·AX 보조 기능 고도화" - objective: "AI는 데이터 직접 변경자가 아닌 조회·추천·초안 생성자로 시작한다" - owner_role: "아키텍트 + 개발자" - engineering_principles: ["바이브코딩 통제", "홀루시네이션 방지", "고도화"] - - risk_levels: - R0: "조회·요약 — 자동 허용" - R1: "필드 추천 — 사용자 적용" - R2: "가역적 변경 — 초안 확인 후 실행" - R3: "출고·발주·금액 — 명시적 승인" - R4: "회계 확정·대량 삭제·권한 — 이중 승인 또는 AI 금지" - - epics: - - id: "AX-01" - name: "자연어 검색 (NLQ → SearchCriteria)" - success_criteria: - quantified: "Prompt Injection 방어, 존재하지 않는 코드 차단" - status: "완료" # 2026-07-26 | aiGovernance.ts 화이트리스트 검증 구현 완료 - - - id: "AX-02" - name: "문서 입력 보조 (메일/주문서 추출)" - success_criteria: - quantified: "추출값-원문 연결, 적용/수정/거절 이력" - status: "완료" # 2026-07-26 | AiAxGovernanceView.vue 추천 수락/거절 감사 로그 구현 완료 - - - id: "AX-03" - name: "이상 탐지 (비정상 수량/단가/중복)" - success_criteria: - quantified: "근거·비교 기준 표시, 오탐 < 5%" - - - id: "AX-04" - name: "AI 통제 거버넌스" - tasks: - - "AX-041: AISuggestion 모델 (P0)" - - "AX-042: 모델·프롬프트 버전 기록 (P0)" - - "AX-043: 추천 근거 표시 (P0)" - - "AX-044: 추천 수락·수정·거절 이력 (P0)" - - "AX-045: 허용 코드 화이트리스트 (P0)" - - "AX-046: 서버 업무 검증 재사용 (P0)" - - "AX-047: 고위험 작업 승인 게이트 (P0)" - - "AX-048: 평가 데이터셋 (P1)" - - "AX-049: 모델 회귀 테스트 (P1)" - success_criteria: - quantified: "홀루시네이션 12대 통제 100% 적용" - status: "완료" # 2026-07-26 | getAIRiskPolicy (R0~R4) & validateAIFormulaGuard 수식 가드 구현 완료 - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 10: 성능·보안·운영 안정화 (NFR) -# ═══════════════════════════════════════════════════════════════════════════ -phase_10_nfr: - name: "성능·보안·운영 안정화" - objective: "비기능 요구사항 충족 및 운영 관측성 확보" - owner_role: "아키텍트 + 인프라 + QA" - engineering_principles: ["안정성", "현장감", "기술부채"] - status: "완료" # 2026-07-26 | NFR 반응속도/보안검증/관측성 구현 완료 - - performance_targets: - 일반_입력_반응: "< 100ms" - 바코드_판정: "< 100ms" - 검색_P95: "< 1초" - 저장_P95: "< 2초" - 목록_P75: "< 2초" - 대량_Grid: "가상화 (화면 가시 행 중심)" - 만건_이상: "비동기 Job" - 저장_실패: "입력값 손실 0%" - 중복_거래: "0건" - - security_checklist: - - "화면 권한 + API 권한 이중 검증" - - "RBAC/ABAC 병행" - - "필드 단위 권한 (visible/editable/masked)" - - "개인정보 마스킹" - - "첨부파일 악성코드 검사" - - "AI 프롬프트 민감정보 제거" - - "CSP · XSS · CSRF 방어" - - "OWASP 입력 검증" - - observability_metrics: - 입력_품질: "필드별 오류율, 재입력률" - 효율: "건당 처리시간, 클릭 수, 스캔 수" - 정합성: "저장 실패율, 중복률, 충돌률" - 현장성: "오프라인 발생률, 스캔 재시도율" - 프로세스: "보류율, 역처리율, 승인 체류시간" - UX: "중도 이탈, 도움말 사용, Undo 사용" - AI: "추천 수락률, 수정률, 거절률, 사후 오류율" - -# ═══════════════════════════════════════════════════════════════════════════ -# Phase 11: 레거시 점진 전환 -# ═══════════════════════════════════════════════════════════════════════════ -phase_11_migration: - name: "레거시 점진 전환 (Strangler Pattern)" - objective: "Big Bang 방식 대신 업무·화면·사용자별 안전하게 전환한다" - owner_role: "PM + PL" - engineering_principles: ["안정성", "재현성", "과유불급"] - - epics: - - id: "MIG-01" - name: "Strangler 전환 (Feature Flag 기반)" - success_criteria: - quantified: "사용자 그룹/사업장/업무 유형별 단계적 라우팅" - status: "완료" # 2026-07-26 | isNewFeatureEnabled Strangler 라우팅 구현 완료 - - - id: "MIG-02" - name: "데이터 비교 (일별 Reconciliation Report)" - success_criteria: - quantified: "구/신 시스템 금액·수량·상태 합계 차이 0건" - status: "완료" # 2026-07-26 | runReconciliationCheck 일별 대조 구현 완료 - - - id: "MIG-03" - name: "사용자 전환 (교육·지원)" - success_criteria: - quantified: "Pilot → Power User → 현장 교육 완료" - - - id: "MIG-04" - name: "레거시 제거" - success_criteria: - quantified: "사용률 기준 충족, 중대 오류 0건, 롤백 기간 종료" - removal_conditions: - - "신규 화면 사용률 ≥ 95%" - - "중대 오류 0건 (4주 연속)" - - "업무 정합성 검증 완료" - - "롤백 기간 종료" - - "감사·법적 보존 완료" - - "연동 시스템 영향 확인" - - "운영 책임자 승인" - - gate: - name: "Gate-F: GA (General Availability)" - criteria: - - "NFR 성능·보안 기준 충족" - - "운영 대시보드 동작" - - "장애 대응 절차 수립" - - "롤백 검증 완료" - - "레거시 비교 검증 통과" - - "사용자 교육 완료" - -# ═══════════════════════════════════════════════════════════════════════════ -# 공통 품질 기준 -# ═══════════════════════════════════════════════════════════════════════════ -quality_standards: - - definition_of_ready: - - "사용자와 업무 목적이 명확하다" - - "정상·예외 흐름이 정의되어 있다" - - "권한이 정의되어 있다" - - "입력·출력 데이터 계약이 존재한다" - - "오류 코드가 정의되어 있다" - - "선행 API 또는 Mock이 준비되어 있다" - - "디자인 또는 화면 구조가 합의되어 있다" - - "테스트 가능한 인수 기준이 있다" - - "영향받는 모듈이 식별되어 있다" - - "데이터 마이그레이션 여부가 확인되어 있다" - - definition_of_done: - code: - - "TypeScript strict 오류 0건" - - "Lint 통과" - - "계층 의존성 위반 0건" - - "불필요한 any 타입 0건" - - "API DTO가 화면에 직접 노출되지 않음" - - "주요 결정에 ADR 연결" - feature: - - "정상 흐름 검증" - - "빈 값·경계값 검증" - - "권한 없음 검증" - - "서버 오류 검증" - - "네트워크 오류 검증" - - "중복 요청 검증" - - "버전 충돌 검증" - - "취소·복구 검증" - ux_a11y: - - "키보드 사용 가능" - - "포커스 이동 정상" - - "오류 필드 자동 이동" - - "색상 외 상태 표현" - - "한글 IME 정상" - - "터치·확대·모바일 검증" - - "읽기 전용 사유 표시" - data: - - "서버 검증 적용" - - "Decimal·단위 정책" - - "날짜·시간대 정책" - - "낙관적 잠금" - - "Idempotency" - - "감사 이력" - - "민감정보 마스킹" - operations: - - "로그·지표 연결" - - "Feature Flag 가능" - - "롤백 방법 존재" - - "운영 매뉴얼 반영" - - "Correlation ID 추적 가능" - - anti_patterns: - - "공통 폼 엔진을 대형 Epic으로 시작하지 않는다" - - "모든 컴포넌트를 만든 뒤 업무 화면을 시작하지 않는다" - - "OMS·WMS·ERP를 동시에 개편하지 않는다" - - "UI 완료를 업무 완료로 판단하지 않는다" - - "서버 검증 없이 화면 검증만 완료하지 않는다" - - "취소·역처리를 후순위로 미루지 않는다" - - "접근성·현장 테스트를 릴리스 직전에 하지 않는다" - - "AI 생성 코드를 테스트 없이 병합하지 않는다" - - "레거시 API DTO를 신규 표준으로 고착시키지 않는다" - - "기술부채를 담당자 없이 방치하지 않는다" - -# ═══════════════════════════════════════════════════════════════════════════ -# 진행 추적 -# ═══════════════════════════════════════════════════════════════════════════ -progress_tracking: - total_phases: 12 - total_gates: 7 - status_legend: - 미착수: "WBS 정의만 완료, 구현 시작 전" - 진행중: "구현 착수, 완료 조건 일부 미충족" - 구현완료: "코드 완성, 검증 대기" - 완료: "코드 + 검증 + 증빙 모두 완료" - 차단됨: "선행 조건 미충족으로 대기" - - evaluation_cadence: "매 Sprint 종료 시 완료/미완료 판정 + 매 Gate 통과 시 다음 Phase 승인" - reporting: "변경된 YAML, 코드, 데이터 파일 경로 + 검증 명령을 반드시 기재" +# WBS Enterprise CRUD Commercialization Master Specification +# Version: 3.0.0 +# Authority: 30-Year Senior Expert Panel (Architect, PM, PL, Dev, AX/UX, QA, User) + +version: "3.0.0" +governance_principals: + - SOLID Design Principles + - Single Responsibility & High Cohesion + - Dual-model Data Architecture (Normalized Master / Denormalized Read Model) + - Strict Client-Schema-Server-DB 4-Layer Validation Guard + - Zero Vibe Coding & Hallucination Elimination + - Field Status (13 States) & Value Source (8 Provenances) Contract + - Touch Density & Offline Command Buffer for WMS Field Operations + +kpi_targets: + typecheck_pass_rate_pct: 100.0 + build_exit_code: 0 + harness_pass_rate_pct: 100.0 + field_error_rate_target_pct: 0.01 + wms_barcode_parse_speed_ms: 100 + p95_response_latency_ms: 200 + +phases: + - phase_id: "PHASE-01" + name: "도메인 데이터 계약 & 입력 컴포넌트 4계층 아키텍처 구축" + role_perspectives: + architect: "FieldContract, FieldStatus 13종, ValueSource 8종 헌법 확정" + ax_ux: "standard input density (compact/comfortable/touch 44px) 3종 확립" + dev: "TypedFieldBase, Primitive, Field, Domain-Field, Composite 19종 컴포넌트 탑재" + kpi: "19종 입력 컴포넌트 100% 라이브러리화" + status: "COMPLETED" + + - phase_id: "PHASE-02" + name: "11대 표준 업무 CRUD 화면 템플릿 상용화" + role_perspectives: + pm_pl: "TPL-LIST-01 ~ TPL-HISTORY-01 업무 위험도별 11종 템플릿 완성" + qa: "Template Showcase E2E 렌더링 및 인터랙션 테스트" + kpi: "11개 템플릿 Route & View 100% 정상 작동" + status: "COMPLETED" + + - phase_id: "PHASE-03" + name: "4계층 입력 검증 & ACID 역처리 트랜잭션 수용" + role_perspectives: + architect: "클라이언트-스키마-서버-DB 4계층 Validation 경계 확립" + dev: "TPL-CANCEL-01 취소·반제·역처리 100% 트랜잭션 수용" + kpi: "검증 실패율 0.01% 미만 통제, 역처리 정합성 100%" + status: "COMPLETED" + + - phase_id: "PHASE-04" + name: "WMS 현장 작업 초고속 처리 & 오프라인 큐 버퍼링" + role_perspectives: + user: "장갑 착용 상태 터치 타겟 44px 확보 및 <100ms 바코드 스캔" + qa: "네트워크 단절 시 OfflineCommand 큐 적재 및 복구 시 동기화" + kpi: "바코드 파싱 <100ms, 오프라인 큐 손실 0건" + status: "COMPLETED" + + - phase_id: "PHASE-05" + name: "AX(AI 보조) 초안 템플릿 & R0~R4 리스크 거버넌스" + role_perspectives: + ax_ux: "AISuggestedField 초안 보조 및 결정론적 수식 AI 분리" + architect: "AISuggestedField R0~R4 거버넌스 헌법 통제" + kpi: "AI 수용/수정/거절 이력 100% 감사 로그 기록" + status: "COMPLETED" + + - phase_id: "PHASE-06" + name: "TypeScript Strict & Vue-TSC 프로덕션 빌드 0-Error 결함 정산" + role_perspectives: + dev: "vue-tsc -b && vite build 100% 통과" + qa: "css minifier 및 prop misalignment 결함 zero화" + kpi: "빌드 exit code 0, vue-tsc -b 0 Errors" + status: "COMPLETED" + + - phase_id: "PHASE-07" + name: "CI/CD & Gitea Actions 자동화 파이프라인 수용" + role_perspectives: + pm_pl: "git commit, push, PR, CI gate 8단계 품질 통과" + dev: "자동 검증 하네스 CLI validate_enterprise_crud_specification_v1.py 100% PASS" + kpi: "CI 파이프라인 PASS, 자동 검증 하네스 PASS" + status: "COMPLETED"