diff --git a/plans/document-management-system-changelog.md b/plans/document-management-system-changelog.md index 90ec549..2116121 100644 --- a/plans/document-management-system-changelog.md +++ b/plans/document-management-system-changelog.md @@ -18,4 +18,5 @@ | 2026-01-31 | Phase 2.1 완료 | 문서 생성 기능 보완. ①문서번호 카테고리별 prefix(IQC/PRD/SLS/PUR, YYMMDD-순번) ②결재라인 초기화(template.approvalLines→document_approvals) ③기본필드 뷰 속성 불일치 수정(field_type/label/default_value 매핑, Str::slug로 field_key 생성) ④섹션 title 참조 수정 | 섹션 3.2 | - | | 2026-01-31 | Phase 2.2 완료 | 문서 데이터 입력 UI. ①섹션별 동적 검사 테이블 렌더링(complex/select/check/measurement/text 컬럼 타입 지원) ②서브 라벨 행(complex 컬럼의 n1/n2/n3) ③정적 컬럼 자동 매핑(NO/검사항목/검사기준/검사방식/검사주기→item속성) ④종합판정+비고 Footer ⑤JS 폼 데이터 수집(기본필드+섹션데이터+체크박스) ⑥백엔드 saveDocumentData() 공통 메서드(section_id/column_id/row_index EAV 저장) | 섹션 3.2 | - | | 2026-01-31 | Phase 2.3 완료 | 결재 워크플로우. ①API: submit(DRAFT→PENDING), approve(단계별 승인, 전체 완료 시 APPROVED), reject(반려 사유 필수, REJECTED) ②edit.blade: 결재 제출 버튼 + JS ③show.blade: 승인/반려 버튼, 반려 모달, 결재 현황 속성 수정(step/role/acted_at), 상태 배지 CSS ④재제출 시 결재라인 상태 초기화 ⑤라우트: submit/approve/reject 3개 추가 | 섹션 3.2 | - | -| 2026-01-31 | Phase 2.4 완료 | 문서 목록/검색/필터. ①날짜 범위 필터(date_from/date_to) API + UI 추가 ②DRAFT 문서 삭제 버튼 + deleteDocument() JS (showDeleteConfirm + fetch DELETE) ③기존 구현 확인: 상태/템플릿/검색/페이징 정상 동작 | 섹션 3.2 | - | \ No newline at end of file +| 2026-01-31 | Phase 2.4 완료 | 문서 목록/검색/필터. ①날짜 범위 필터(date_from/date_to) API + UI 추가 ②DRAFT 문서 삭제 버튼 + deleteDocument() JS (showDeleteConfirm + fetch DELETE) ③기존 구현 확인: 상태/템플릿/검색/페이징 정상 동작 | 섹션 3.2 | - | +| 2026-01-31 | Phase 3.1 완료 | 중간검사 양식 구조 설계. ①5130 레거시 4종(절곡/스크린/슬랫/조인트바) viewMidInspect*.php 전체 분석 ②검사항목·기준·판정방식·공차·이미지 문서화 ③컬럼 구조(check/complex/select) 매핑 설계 ④4종 비교표 + 양식 시스템 매핑 전략(Option A/B/C) ⑤공통 구조(결재3단계, 기본필드7개, Footer) 정의 | 섹션 5.2 | - | \ No newline at end of file diff --git a/plans/document-management-system-plan.md b/plans/document-management-system-plan.md index 9934885..b1860b5 100644 --- a/plans/document-management-system-plan.md +++ b/plans/document-management-system-plan.md @@ -105,9 +105,10 @@ Route::resource('documents', DocumentController::class); // /d | 항목 | 내용 | |------|------| -| **마지막 완료 작업** | Phase 2.4 - 문서 목록/검색/필터 (날짜 필터 + 삭제 기능 추가) | -| **다음 작업** | Phase 3.1 - 중간검사 양식 구조 설계 | -| **진행률** | 9/20 (45%) - Phase 1 ✅, Phase 2.1~2.4 ✅ | + +| **마지막 완료 작업** | Phase 3.1 - 중간검사 양식 구조 설계 (4종 검사항목/기준/판정방식 문서화) | +| **다음 작업** | Phase 3.2 - 5130 중간검사 데이터 이관 설계 | +| **진행률** | 10/20 (50%) - Phase 1 ✅, Phase 2.1~2.4 ✅, Phase 3.1 ✅ | | **마지막 업데이트** | 2026-01-31 | --- @@ -284,7 +285,7 @@ documents # 문서 인스턴스 | # | 작업 항목 | 상태 | 완료 기준 | 비고 | |---|----------|:----:|----------|------| -| 3.1 | 중간검사 양식 구조 설계 | ⏳ | 절곡/스크린/슬랫/조인트바 4종의 검사항목/기준/판정방식 문서화 완료 | 5130 JSON 구조 분석 | +| 3.1 | 중간검사 양식 구조 설계 | ✅ | 절곡/스크린/슬랫/조인트바 4종의 검사항목/기준/판정방식 문서화 완료 | 섹션 5.2에 상세 설계. 절곡품 최고 복잡도(★5), 조인트바 최저(★1) | | 3.2 | 5130 중간검사 데이터 이관 설계 | ⏳ | recordbendingMid 등 JSON→양식 매핑 테이블 완성 | | | 3.3 | 중간검사 양식 시드 데이터 | ⏳ | 4종 양식 seeder 생성, `mng.sam.kr/document-templates`에서 확인 가능 | | | 3.4 | 검사 기준 이미지 관리 | ⏳ | `5130/img/inspection/` 이미지 → `mng/storage/app/public/inspection/`로 이관. 양식에서 참조 가능 | 20+ 이미지 | @@ -462,14 +463,239 @@ Document 생성/관리 ------------> POST /documents/{id}/submit 결재 | 6 | Angle (앵글) | `i_angle.php` | ~4 | 중간 | | 7-20+ | 기타 자재 | 개별 PHP 파일 | 다양 | 낮음 | -### 5.2 중간검사 이관 항목 +### 5.2 중간검사 양식 구조 설계 (Phase 3.1) -| 검사 종류 | 5130 DB 필드 | 검사 항목 | 판정 방식 | -|----------|-------------|----------|----------| -| 절곡품 | `recordbendingMid` (JSON) | 겉모양, 치수(높이/길이/간격), 가공상태 | 양호/불량 + 측정값 허용범위 | -| 스크린 | `recordscreenMid` (JSON) | 가공상태, 재봉상태, 조립상태, 길이, 나비, 간격 | 양호/불량 + OK/NG | -| 슬랫 | `recordslatMid` (JSON) | 절곡품과 유사 구조 | 양호/불량 + 측정값 | -| 조인트바 | `recordjointbar` (JSON) | 가공상태, 조립상태, 치수(높이1/높이2/길이/간격) | 양호/불량 + 측정값 허용치 | +> **5130 레거시 분석 결과** - 4종 중간검사의 검사항목/기준/판정방식을 문서화 + +#### 5.2.0 공통 구조 + +**결재라인 (4종 공통)** + +| step | name | dept | role | +|------|------|------|------| +| 1 | 작성 | 판매/Order | 담당자 | +| 2 | 검토 | 생산 | 담당자 | +| 3 | 승인 | 품질 | QC | + +**기본필드 (4종 공통)** + +| # | label | field_type | 비고 | +|---|-------|-----------|------| +| 1 | 품명 | text | 절곡품/스크린/철재스라트/조인트바 | +| 2 | 규격 | text | 제품 규격 | +| 3 | 로트크기 | text | 개소 수 | +| 4 | 발주처 | text | 고객사명 | +| 5 | 현장명 | text | 설치 현장 | +| 6 | 검사일자 | date | - | +| 7 | 검사자 | text | - | + +**Footer (4종 공통)** +- `footer_remark_label`: "부적합 내용" +- `footer_judgement_label`: "종합판정" +- `footer_judgement_options`: ["합격", "불합격"] +- 종합판정 로직: 모든 행 "적" → 합격, 하나라도 "부" → 불합격 + +--- + +#### 5.2.1 절곡품 중간검사 (Bending Mid-Inspection) + +**양식 정보** + +| 항목 | 값 | +|------|-----| +| name | 절곡품 중간검사 성적서 | +| category | 품질/중간검사 | +| title | 절곡품 - 중간 검사 성적서 | +| 5130 DB필드 | `recordbendingMid` (JSON) | + +**섹션 구조**: 제품 코드별 다른 검사 항목 (동적 구성) + +구성품별 검사항목: + +| 구성품 | 검사 항목 | 비고 | +|--------|----------|------| +| 가이드레일 (벽면형 120×70) | 겉모양(절곡상태), 길이, 너비, 간격(4포인트) | S1: 30/80/45/40mm | +| 가이드레일 (측면형 120×120) | 겉모양(절곡상태), 길이, 너비, 간격(6포인트) | S1: 30/70/45/35/95/90mm | +| 하단마감재 (60×40) | 겉모양, 너비(60mm) | 길이 3000/4000mm | +| 하단 L-BAR (17×60) | 겉모양, 너비(17mm) | - | +| 케이스/셔터박스 | 겉모양, 높이, 하단, 차이, 위치 | 양면/밑면/후면 | +| 연기차단재 (가이드레일용) | 너비(50mm), 간격(12mm) | - | +| 연기차단재 (케이스용) | 너비(80mm), 간격(12mm) | - | + +**컬럼 구조** + +| # | label | column_type | 비고 | +|---|-------|-----------|------| +| 1 | 분류/제품명 | text | 자동매핑 (KSS01 등) | +| 2 | 타입 | text | 벽면형/측면형/규격 | +| 3 | 겉모양(절곡상태) | check | 양호/불량 체크 | +| 4 | 길이 | complex | sub_labels: ['도면치수', '측정값'] | +| 5 | 너비 | complex | sub_labels: ['도면치수', '측정값'] | +| 6 | 간격 | complex | sub_labels: POINT별 ['도면치수', '측정값'] (가변) | +| 7 | 판정(적/부) | select | 자동계산 가능 | + +**허용 공차** +- 길이: ±4mm +- 간격: ±2mm + +**참조 이미지**: `bending_inspection1.jpg`, `bending_inspection2.jpg`, `guiderail_*`, `box_*`, `Lbar_mid`, `smoke` + +**⚠️ 특이사항**: 절곡품은 제품 코드(KSS01/KSS02/KWE01)와 마감유형(S1/S2/S3)에 따라 검사 항목이 동적으로 변경됨. 현재 양식 시스템에서 이를 표현하려면 **가장 포괄적인 구성을 기본 양식으로 만들고**, 실제 문서 생성 시 해당 제품에 맞는 행만 활성화하는 방식 검토 필요. + +--- + +#### 5.2.2 스크린 중간검사 (Screen Mid-Inspection) + +**양식 정보** + +| 항목 | 값 | +|------|-----| +| name | 스크린 중간검사 성적서 | +| category | 품질/중간검사 | +| title | 스크린 - 중간 검사 성적서 | +| 5130 DB필드 | `recordscreenMid` (JSON) | + +**섹션: 스크린 검사 항목** + +| # | 검사항목 | 타입 | 기준 | 비고 | +|---|---------|------|------|------| +| 겉모양-1 | 가공상태 | check | 양호/불량 | - | +| 겉모양-2 | 재봉상태 | check | 양호/불량 | - | +| 겉모양-3 | 조립상태 | check | 양호/불량 | - | +| 치수-① | 길이 | measurement | 도면치수 ±4mm | col10_SW/col10 | +| 치수-② | 높이 | measurement | 도면치수 ±40mm | col11_SH/col11 | +| 치수-③ | 간격 | check | 400 이하 → OK/NG | 고정 기준 | + +**컬럼 구조** + +| # | label | column_type | 비고 | +|---|-------|-----------|------| +| 1 | 일련번호 | text | 자동 (제품 순번) | +| 2 | 가공상태 | check | 양호/불량 | +| 3 | 재봉상태 | check | 양호/불량 | +| 4 | 조립상태 | check | 양호/불량 | +| 5 | ①길이 | complex | sub_labels: ['도면치수', '측정값'] | +| 6 | ②높이 | complex | sub_labels: ['도면치수', '측정값'] | +| 7 | ③간격 | complex | sub_labels: ['기준치', 'OK/NG'] | +| 8 | 판정(적/부) | select | 자동계산 | + +**행 개수**: 발주 제품 수(estimateList)만큼 동적 생성 + +--- + +#### 5.2.3 슬랫(철재스라트) 중간검사 (Slat Mid-Inspection) + +**양식 정보** + +| 항목 | 값 | +|------|-----| +| name | 슬랫 중간검사 성적서 | +| category | 품질/중간검사 | +| title | 슬랫 - 중간 검사 성적서 | +| 5130 DB필드 | `recordslatMid` (JSON) | + +**섹션: 슬랫 검사 항목** + +| # | 검사항목 | 타입 | 기준 | 비고 | +|---|---------|------|------|------| +| 겉모양-1 | 가공상태 | check | 양호/불량 | - | +| 겉모양-2 | 조립상태 | check | 양호/불량 | 재봉상태 없음 (스크린과 차이) | +| 치수-① | 높이(1) | measurement | 16.5 ± 1mm | 고정 기준값 | +| 치수-② | 높이(2) | measurement | 14.5 ± 1mm | 고정 기준값 | +| 치수-③ | 길이(엔드락제외) | measurement | 도면치수 ±4mm | col10 | + +**컬럼 구조** + +| # | label | column_type | 비고 | +|---|-------|-----------|------| +| 1 | 일련번호 | text | 자동 | +| 2 | 가공상태 | check | 양호/불량 | +| 3 | 조립상태 | check | 양호/불량 | +| 4 | ①높이 | complex | sub_labels: ['기준(16.5±1)', '측정값'] | +| 5 | ②높이 | complex | sub_labels: ['기준(14.5±1)', '측정값'] | +| 6 | ③길이 | complex | sub_labels: ['도면치수', '측정값'] | +| 7 | 판정(적/부) | select | 자동계산 | + +**행 개수**: 발주 제품 수(estimateSlatList)만큼 동적 생성 + +**스크린 vs 슬랫 차이점** + +| 항목 | 스크린 | 슬랫 | +|------|--------|------| +| 겉모양 | 3개 (가공/재봉/조립) | 2개 (가공/조립) | +| 치수①② | 길이·높이 (도면치수) | 높이(1)(2) (고정값 16.5/14.5) | +| 치수③ | 간격 (400이하, OK/NG) | 길이 (도면치수 ±4mm) | +| 공차 | ±4mm, ±40mm | ±1mm, ±1mm, ±4mm | + +--- + +#### 5.2.4 조인트바 중간검사 (Jointbar Mid-Inspection) + +**양식 정보** + +| 항목 | 값 | +|------|-----| +| name | 조인트바 중간검사 성적서 | +| category | 품질/중간검사 | +| title | 조인트바 - 중간 검사 성적서 | +| 5130 DB필드 | `recordjointbar` (JSON) | + +**섹션: 조인트바 검사 항목** + +| # | 검사항목 | 타입 | 기준값 | 공차 | +|---|---------|------|-------|------| +| 겉모양-1 | 가공상태 | check | 양호/불량 | - | +| 겉모양-2 | 조립상태 | check | 양호/불량 | - | +| 치수-① | 높이(1) | measurement | 16.5mm | ±1mm | +| 치수-② | 높이(2) | measurement | 14.5mm | ±1mm | +| 치수-③ | 길이(엔드락제외) | measurement | 300mm | ±4mm | +| 치수-④ | 간격 | measurement | 150mm | ±4mm | + +**컬럼 구조** + +| # | label | column_type | 비고 | +|---|-------|-----------|------| +| 1 | 일련번호 | text | 자동 | +| 2 | 가공상태 | check | 양호/불량 | +| 3 | 조립상태 | check | 양호/불량 | +| 4 | ①높이 | complex | sub_labels: ['기준(16.5±1)', '측정값'] | +| 5 | ②높이 | complex | sub_labels: ['기준(14.5±1)', '측정값'] | +| 6 | ③길이 | complex | sub_labels: ['기준(300±4)', '측정값'] | +| 7 | ④간격 | complex | sub_labels: ['기준(150±4)', '측정값'] | +| 8 | 판정(적/부) | select | 자동계산 | + +**행 개수**: 단일 행 (제품 1건 단위 검사) + +**참조 이미지**: `jointbar_inspection.jpg` + +--- + +#### 5.2.5 4종 비교 요약 + +| 항목 | 절곡품 | 스크린 | 슬랫 | 조인트바 | +|------|--------|--------|------|---------| +| 겉모양 수 | 1 (절곡상태) | 3 (가공/재봉/조립) | 2 (가공/조립) | 2 (가공/조립) | +| 치수 항목 | 길이+너비+간격(가변) | 3 (길이/높이/간격) | 3 (높이×2/길이) | 4 (높이×2/길이/간격) | +| 행 구성 | 구성품별 (동적) | 발주제품별 (동적) | 발주제품별 (동적) | 단일 행 | +| 기준값 | 도면치수+포인트별 | 도면치수+고정(400) | 고정(16.5/14.5)+도면 | 전체 고정값 | +| 공차 | ±4mm/±2mm | ±4/±40mm | ±1/±1/±4mm | ±1/±1/±4/±4mm | +| 참조이미지 | 다수 (구성품별) | 별도 | 별도 | 1장 | +| 복잡도 | ★★★★★ (최고) | ★★★ | ★★☆ | ★☆ (최저) | + +#### 5.2.6 양식 시스템 매핑 전략 + +**현재 양식 시스템의 한계와 대응**: + +1. **조인트바/슬랫**: 현재 양식 구조(섹션+항목+컬럼)로 **그대로 표현 가능**. 수입검사와 동일 패턴으로 시더 생성. + +2. **스크린**: 겉모양 check 컬럼 + complex 측정 컬럼 조합으로 표현 가능. 행이 발주 제품별 동적이므로 **문서 생성 시 행 수를 결정**하는 로직 필요. + +3. **절곡품**: 제품 코드별로 검사 항목이 완전히 달라지므로 **가장 복잡**. 접근 방식: + - **Option A**: 포괄 양식 1개 + 문서 생성 시 해당 행만 활성화 + - **Option B**: 제품 유형별 양식 분리 (S1/S2/S3 별도) + - **Option C (권장)**: 기본 양식에 구성품 목록만 정의하고, **문서 생성 시 제품 코드에 따라 동적으로 행 구성** (Phase 3.3에서 구현) + +4. **check 컬럼 타입**: 현재 시스템에 `check` 컬럼 타입이 이미 존재. 양호/불량 체크박스로 사용 가능. ### 5.3 검사 기준 이미지 이관