# OMS·WMS·ERP 입력 컴포넌트 및 CRUD 상세 명세 ## 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` | 변경 이력 | 값 변경, 상태 전이, 시스템 처리 이력 | --- ## 1. 목적과 적용 범위 본 명세의 목적은 OMS·WMS·ERP에서 사용하는 모든 입력 컴포넌트를 표준화하는 것이다. * 사용자가 잘못 입력하기 어렵게 한다. * 잘못 입력해도 쉽게 발견하고 복구할 수 있게 한다. * 화면과 서버의 데이터 해석이 달라지지 않게 한다. * 사용자 입력, 시스템 계산, 외부 연동, AI 추천값을 구분한다. * 적용 범위: OMS(주문/반품/배송/결제), WMS(입고/피킹/출고/재고), ERP(발주/전표/비용), 마스터(조직/사용자/코드/창고/단위). --- ## 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