feat(WEB): 생산/검사 기능 대폭 확장 및 작업자화면 검사입력 추가

생산관리:
- WipProductionModal 기능 개선
- WorkOrderDetail/Edit 확장 (+265줄)
- 검사성적서 콘텐츠 5종 대폭 확장 (벤딩/벤딩WIP/스크린/슬랫/슬랫조인트바)
- InspectionReportModal 기능 강화

작업자화면:
- WorkerScreen 기능 대폭 확장 (+211줄)
- WorkItemCard 개선
- InspectionInputModal 신규 추가 (작업자 검사입력)

공정관리:
- StepForm 검사항목 설정 기능 추가
- InspectionSettingModal 신규 추가
- InspectionPreviewModal 신규 추가
- process.ts 타입 확장 (+102줄)

자재관리:
- StockStatus 상세/목록/타입/목데이터 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-02-05 21:43:28 +09:00
parent 32d6e3bbbd
commit efcc645e24
21 changed files with 2559 additions and 328 deletions

View File

@@ -138,7 +138,7 @@ export const PROCESS_TYPE_OPTIONS: { value: ProcessType; label: string }[] = [
export type StepConnectionType = '팝업' | '없음';
// 완료 유형
export type StepCompletionType = '선택 완료 시 완료' | '클릭 시 완료';
export type StepCompletionType = '선택 완료 시 완료' | '클릭 시 완료' | '검사완료 시 완료';
// 공정 단계 엔티티
export interface ProcessStep {
@@ -155,6 +155,8 @@ export interface ProcessStep {
connectionTarget?: string; // 도달 (입고완료 자재 목록 등)
// 완료 정보
completionType: StepCompletionType;
// 검사 설정 (검사여부가 true일 때)
inspectionSetting?: InspectionSetting;
}
// 연결 유형 옵션
@@ -167,6 +169,7 @@ export const STEP_CONNECTION_TYPE_OPTIONS: { value: StepConnectionType; label: s
export const STEP_COMPLETION_TYPE_OPTIONS: { value: StepCompletionType; label: string }[] = [
{ value: '선택 완료 시 완료', label: '선택 완료 시 완료' },
{ value: '클릭 시 완료', label: '클릭 시 완료' },
{ value: '검사완료 시 완료', label: '검사완료 시 완료' },
];
// 연결 도달 옵션
@@ -175,4 +178,99 @@ export const STEP_CONNECTION_TARGET_OPTIONS: { value: string; label: string }[]
{ value: '출고 요청 목록', label: '출고 요청 목록' },
{ value: '검사 대기 목록', label: '검사 대기 목록' },
{ value: '작업 지시 목록', label: '작업 지시 목록' },
];
{ value: '중간검사', label: '중간검사' },
];
// ============================================================================
// 중간검사 설정 타입 정의
// ============================================================================
// 포인트 타입
export type InspectionPointType = '포인트 없음' | '포인트 1' | '포인트 2' | '포인트 3' | '포인트 4' | '포인트 5' | '포인트 6' | '포인트 7' | '포인트 8' | '포인트 9' | '포인트 10';
// 방법 타입
export type InspectionMethodType = '숫자' | '양자택일';
// 치수 검사 항목
export interface DimensionInspectionItem {
enabled: boolean;
point: InspectionPointType;
method: InspectionMethodType;
}
// 겉모양 검사 항목
export interface AppearanceInspectionItem {
enabled: boolean;
}
// 중간검사 설정 데이터
export interface InspectionSetting {
// 기본 정보
standardName: string; // 기준서명
schematicImage?: string; // 기준서 도해 이미지 URL
inspectionStandardImage?: string; // 검사기준 이미지 URL
// 겉모양 검사 항목
appearance: {
bendingStatus: AppearanceInspectionItem; // 절곡상태
processingStatus: AppearanceInspectionItem; // 가공상태
sewingStatus: AppearanceInspectionItem; // 재봉상태
assemblyStatus: AppearanceInspectionItem; // 조립상태
};
// 치수 검사 항목
dimension: {
length: DimensionInspectionItem; // 길이
width: DimensionInspectionItem; // 너비
height1: DimensionInspectionItem; // 1 높이
height2: DimensionInspectionItem; // 2 높이
gap: DimensionInspectionItem; // 간격
};
// 기타 항목
judgment: boolean; // 판정
nonConformingContent: boolean; // 부적합 내용
}
// 포인트 옵션
export const INSPECTION_POINT_OPTIONS: { value: InspectionPointType; label: string }[] = [
{ value: '포인트 없음', label: '포인트 없음' },
{ value: '포인트 1', label: '포인트 1' },
{ value: '포인트 2', label: '포인트 2' },
{ value: '포인트 3', label: '포인트 3' },
{ value: '포인트 4', label: '포인트 4' },
{ value: '포인트 5', label: '포인트 5' },
{ value: '포인트 6', label: '포인트 6' },
{ value: '포인트 7', label: '포인트 7' },
{ value: '포인트 8', label: '포인트 8' },
{ value: '포인트 9', label: '포인트 9' },
{ value: '포인트 10', label: '포인트 10' },
];
// 방법 옵션
export const INSPECTION_METHOD_OPTIONS: { value: InspectionMethodType; label: string }[] = [
{ value: '숫자', label: '숫자' },
{ value: '양자택일', label: '양자택일' },
];
// 기본 검사 설정값
export const DEFAULT_INSPECTION_SETTING: InspectionSetting = {
standardName: '',
schematicImage: undefined,
inspectionStandardImage: undefined,
appearance: {
bendingStatus: { enabled: false },
processingStatus: { enabled: false },
sewingStatus: { enabled: false },
assemblyStatus: { enabled: false },
},
dimension: {
length: { enabled: false, point: '포인트 없음', method: '숫자' },
width: { enabled: false, point: '포인트 없음', method: '숫자' },
height1: { enabled: false, point: '포인트 없음', method: '양자택일' },
height2: { enabled: false, point: '포인트 없음', method: '양자택일' },
gap: { enabled: false, point: '포인트 5', method: '숫자' },
},
judgment: false,
nonConformingContent: false,
};