- README.md: 전체 개요, 역할별 프로세스 플로우, 메뉴 구조, 데이터 구조, API, 스토리보드 참조 - inspection-management.md: 제품검사 관리 (15개 검사항목, 상태판정, 캘린더뷰, 요청서/성적서 양식) - performance-reports.md: 생산실적신고 (자동생성, 확정, 누락체크, 건기원 프로세스) - quality-certification-audit.md: 품질인정심사 (기준/매뉴얼 심사 + 로트 추적 심사) - INDEX.md에 품질관리 문서 등록
318 lines
13 KiB
Markdown
318 lines
13 KiB
Markdown
# 제품검사 관리 (Inspection Management)
|
|
|
|
> **작성일**: 2026-03-09
|
|
> **상태**: 운영 중
|
|
> **URL**: `/quality/inspections`
|
|
|
|
---
|
|
|
|
## 1. 개요
|
|
|
|
### 1.1 목적
|
|
|
|
방화문 제품의 현장 출고 전 품질검사를 수행하고 검사성적서를 발행한다.
|
|
검사 완료 시 실적신고(PerformanceReport)를 자동 생성한다.
|
|
|
|
### 1.2 품질관리서 구조
|
|
|
|
```
|
|
품질관리서 (QualityDocument)
|
|
├── 기본정보: 채번, 현장명, 접수일, 검사자, 수주처
|
|
├── 관련자 정보 (options JSON):
|
|
│ ├── 건축공사장 정보
|
|
│ ├── 자재유통업자 정보
|
|
│ ├── 공사시공자 정보
|
|
│ └── 공사감리자 정보
|
|
├── 수주 연결 (QualityDocumentOrder, 1:N)
|
|
│ └── 개소 (QualityDocumentLocation, 1:N)
|
|
│ ├── 시공규격 (post_width, post_height)
|
|
│ ├── 검사 데이터 (inspection_data JSON)
|
|
│ └── 검사성적서 (Document EAV)
|
|
└── 실적신고 (PerformanceReport, 1:1)
|
|
```
|
|
|
|
### 1.3 화면 구성
|
|
|
|
**목록 페이지** (슬라이드 5~6):
|
|
- 상단: 날짜 필터 (전체/전전월/전월/금월/어제/오늘) + 검색
|
|
- 통계 카드: 접수, 진행중, 완료 건수
|
|
- 테이블: 품질관리서번호, 번호, 수주처, 개소, 실적신고 필수정보, 검사시기, 검사자, 상태, 작성자, 접수일
|
|
- 하단: **캘린더 스케줄** (월간 뷰)
|
|
|
|
**캘린더 뷰**:
|
|
- 월 단위 표시, 상태 필터(전체/진행중/완료)
|
|
- 색상 구분: 완료(초록 배지), 진행중(파란 바)
|
|
- 검사 완료 건: `홍길동 - 현장명 / 완료` 형태
|
|
- 검사 진행 건: `홍길동 - 현장명 / 진행중` 형태 (날짜 범위 바)
|
|
- 클릭 시 해당 제품검사 상세 화면으로 이동
|
|
|
|
**상세 페이지** (슬라이드 7~9):
|
|
- 기본 정보: 품질관리서번호, 현장명, 수주처, 접수일, 담당자, 연락처, 상태, 작성자
|
|
- 관련자 정보 4개 섹션 (실적 신고 시 필수 정보)
|
|
- 검사 정보: 검사방문요청일, 검사시작일, 검사종료일, 검사자
|
|
- 현장 주소: 우편번호 찾기 + 상세주소
|
|
- 수주 설정 정보: 수주 선택 버튼 → 수주별 개소 목록 (층수/부호/수주규격/시공규격/변경사유)
|
|
- 하단 버튼: 검사제품요청서 보기, 제품검사성적서 보기, **검사 완료**, 수정
|
|
|
|
---
|
|
|
|
## 2. 상태 관리
|
|
|
|
### 2.1 품질관리서 상태
|
|
|
|
| 상태 | 코드 | 조건 |
|
|
|------|------|------|
|
|
| 접수 | `received` | 생성 직후, 수주 미연결 |
|
|
| 진행중 | `in_progress` | 수주 연결됨 또는 일부 검사 진행 |
|
|
| 완료 | `completed` | 모든 개소 검사 완료 후 `complete()` 호출 |
|
|
|
|
### 2.2 개소별 검사 상태 (자동 판정)
|
|
|
|
| 상태 | 코드 | 판정 기준 |
|
|
|------|------|----------|
|
|
| 대기 | `pending` | 검사 데이터 없음 (15개 항목 0개 + 사진 없음) |
|
|
| 진행중 | `in_progress` | 일부 항목 입력 또는 사진 미등록 |
|
|
| 완료 | `completed` | 15개 항목 전부 입력 + 사진 1장 이상 |
|
|
|
|
### 2.3 상태 자동 재계산
|
|
|
|
개소별 검사 저장 시 → 개소 상태 자동 판정 → 품질관리서 상태 재계산:
|
|
- 전부 `pending` → `received`
|
|
- 하나라도 `completed` 또는 `in_progress` → `in_progress`
|
|
- 전부 `completed` → `in_progress` (수동 `complete()` 필요)
|
|
|
|
---
|
|
|
|
## 3. 검사 항목
|
|
|
|
### 3.1 15개 검사 항목
|
|
|
|
| # | 키 | 분류 | 설명 | 판정값 |
|
|
|---|-----|------|------|--------|
|
|
| 1 | `appearanceProcessing` | 외관 | 가공 상태 | pass/fail |
|
|
| 2 | `appearanceSewing` | 외관 | 봉제 상태 | pass/fail |
|
|
| 3 | `appearanceAssembly` | 외관 | 조립 상태 | pass/fail |
|
|
| 4 | `appearanceSmokeBarrier` | 외관 | 차연재 상태 | pass/fail |
|
|
| 5 | `appearanceBottomFinish` | 외관 | 하부마감 상태 | pass/fail |
|
|
| 6 | `motor` | 기능 | 모터 작동 | pass/fail |
|
|
| 7 | `material` | 기능 | 소재 적합성 | pass/fail |
|
|
| 8 | `lengthJudgment` | 치수 | 가로 치수 | OK/NG |
|
|
| 9 | `heightJudgment` | 치수 | 세로 치수 | OK/NG |
|
|
| 10 | `guideRailGap` | 치수 | 가이드레일 간격 | OK/NG |
|
|
| 11 | `bottomFinishGap` | 치수 | 하부마감 간격 | OK/NG |
|
|
| 12 | `fireResistanceTest` | 시험 | 내화 시험 | pass/fail |
|
|
| 13 | `smokeLeakageTest` | 시험 | 차연 시험 | pass/fail |
|
|
| 14 | `openCloseTest` | 시험 | 개폐 시험 | pass/fail |
|
|
| 15 | `impactTest` | 시험 | 충격 시험 | pass/fail |
|
|
|
|
### 3.2 추가 데이터
|
|
|
|
| 키 | 설명 | 필수 |
|
|
|----|------|------|
|
|
| `productImages` | 제품 사진 URL 배열 | 완료 판정에 필수 |
|
|
|
|
---
|
|
|
|
## 4. 수주 연결
|
|
|
|
### 4.1 수주 선택
|
|
|
|
- `availableOrders()`: 해당 수주처(client_id)의 미등록 수주 조회
|
|
- 모달에서 복수 수주 선택 가능
|
|
|
|
### 4.2 개소 자동생성
|
|
|
|
수주 연결 시 각 수주의 root node(층/부호)마다 개소(Location) 자동생성:
|
|
|
|
```
|
|
수주 A (3개 root node)
|
|
├── 1F A호 → Location 1
|
|
├── 2F B호 → Location 2
|
|
└── 3F C호 → Location 3
|
|
|
|
수주 B (2개 root node)
|
|
├── 지하1F → Location 4
|
|
└── 1F → Location 5
|
|
```
|
|
|
|
### 4.3 개소 데이터
|
|
|
|
| 필드 | 설명 | 출처 |
|
|
|------|------|------|
|
|
| `order_item_id` | 대표 OrderItem | root node의 첫 번째 품목 |
|
|
| `post_width` | 시공 가로 | 발주 규격에서 복사 (수정 가능) |
|
|
| `post_height` | 시공 세로 | 발주 규격에서 복사 (수정 가능) |
|
|
| `change_reason` | 변경 사유 | 규격 변경 시 입력 |
|
|
|
|
---
|
|
|
|
## 5. 문서 자동생성 (EAV)
|
|
|
|
### 5.1 제품검사요청서 (슬라이드 12~13)
|
|
|
|
- **Template ID**: 66 (제품검사 요청서)
|
|
- **트리거**: 품질관리서 생성/수정 시 `syncRequestDocument()` 호출
|
|
- **인쇄용 페이지 형태로 구분**되어 표시 (인쇄, 공유, 닫기 버튼)
|
|
|
|
**문서 구성**:
|
|
|
|
```
|
|
┌─────────────────────────────────────────┐
|
|
│ 제품검사요청서 │
|
|
│ 문서번호: ABC123 | 작성일자: 2025.11.11 │
|
|
│ │
|
|
│ 승인라인: 작성 → 승인 → 승인 → 승인 │
|
|
│ 홍길동 이름 이름 이름 │
|
|
│ │
|
|
│ ── 기본정보 ── │
|
|
│ 수주처, 수주번호, 담당자, 연락처 │
|
|
│ 현장명, 납품일, 총 개소, 접수일 │
|
|
│ │
|
|
│ ── 입력사항 (실적신고 필수 정보) ── │
|
|
│ 건축공사장: 현장명, 대지위치, 지번 │
|
|
│ 자재유통업자: 회사명, 회사주소, 대표자명, │
|
|
│ 전화번호 │
|
|
│ 공사시공자: 회사명, 회사주소, 성명, 전화번호 │
|
|
│ 공사감리자: 사무소명, 사무소주소, 성명, │
|
|
│ 전화번호 │
|
|
│ │
|
|
│ ── 검사대상 사전 고지 정보 ── │
|
|
│ No. 층수 부호 발주규격(가로/세로) │
|
|
│ 시공후규격(가로/세로) 변경사유 │
|
|
└─────────────────────────────────────────┘
|
|
```
|
|
|
|
**주의 문구** (빨간색):
|
|
- 발주 사이즈와 시공 완료된 사이즈가 다를 시 **실질 범위를 넣어야 한다**
|
|
- 변경사유를 고지하여야 인정마을을 부착할 수 있다
|
|
- 사전고지를 하지 않음으로 발생하는 문제의 귀책은 신청업체에 있다
|
|
|
|
### 5.2 제품검사성적서 (슬라이드 14~15)
|
|
|
|
- 각 개소별 `document_id`로 EAV Document 참조
|
|
- 검사 결과(inspection_data)를 EAV 필드로 저장
|
|
- **개소별 페이지 단위**: 1/50 형태의 페이지 네비게이션 (이전/이동/다음 버튼)
|
|
|
|
**문서 구성**:
|
|
|
|
```
|
|
┌─────────────────────────────────────────┐
|
|
│ 제품검사성적서 │
|
|
│ 문서번호: ABC123 | 작성일자: 2025.11.11 │
|
|
│ │
|
|
│ 제품명, 제품 LOT NO, 로트크기 │
|
|
│ 제품코드, 검사일자 │
|
|
│ 수주처, 검사자 │
|
|
│ 현장명 │
|
|
│ │
|
|
│ ── 제품 사진 ── │
|
|
│ [IMG] [IMG] │
|
|
│ │
|
|
│ ── 검사 항목 ── │
|
|
│ No. 검사항목 검사기준 검사 특정값 판정│
|
|
│ 1 외모양 │
|
|
│ 가공상태 사용상 해로운 결함이 없을 것 │
|
|
│ 재봉상태 내화심에 의해 견고하게 접합 │
|
|
│ 조립상태 핸드바 견고하게 조립되어야 함 │
|
|
│ 연기차단재 연기차단재 가이드레일 W60, │
|
|
│ 가이드레일 W50 (분체 설치) │
|
|
│ 하단마감재 내부 부재형상 설치 유무 │
|
|
│ 2 모터 인정제품과 동일사양 │
|
|
│ 3 재질 WY-SC780 인쇄상태 확인 │
|
|
│ 4 치수 │
|
|
│ 길이 수주 치수 ± 30mm │
|
|
│ 높이 수주 치수 ± 30mm │
|
|
│ 가이드레일 10 ± 5mm (측정부위 길이 100 이내)│
|
|
│ 간격 가이드레일갑과 하단마감재 25mm 이내│
|
|
│ 5 작동테스트 6mm 관절게이지 관통 여 150mm │
|
|
│ 6 내화시험 25mm 관절게이지 관통 유무 │
|
|
│ 7 차연시험 10초 이상 자속되는 화염 발생 유무 │
|
|
│ 8 개폐시험 전도/개폐 2.5~6.5m/min 등 │
|
|
│ │
|
|
│ 특이사항: │
|
|
│ 종합판정: 합격 │
|
|
│ │
|
|
│ [이전] [1] /50 [이동] [다음] │
|
|
└─────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 6. API
|
|
|
|
### 6.1 주요 엔드포인트
|
|
|
|
| Method | Path | 설명 |
|
|
|--------|------|------|
|
|
| GET | `/quality/documents` | 목록 |
|
|
| POST | `/quality/documents` | 생성 |
|
|
| GET | `/quality/documents/{id}` | 상세 |
|
|
| PUT | `/quality/documents/{id}` | 수정 (개소/규격 포함) |
|
|
| PATCH | `/quality/documents/{id}/complete` | 검사완료 |
|
|
| POST | `/quality/documents/{id}/orders` | 수주 연결 |
|
|
| DELETE | `/quality/documents/{id}/orders/{orderId}` | 수주 해제 |
|
|
| POST | `/quality/documents/{id}/locations/{locId}/inspect` | 개소별 검사 저장 |
|
|
|
|
### 6.2 검사 저장 요청 예시
|
|
|
|
```json
|
|
POST /quality/documents/1/locations/5/inspect
|
|
{
|
|
"inspection_data": {
|
|
"appearanceProcessing": "pass",
|
|
"appearanceSewing": "pass",
|
|
"appearanceAssembly": "pass",
|
|
"appearanceSmokeBarrier": "pass",
|
|
"appearanceBottomFinish": "pass",
|
|
"motor": "pass",
|
|
"material": "pass",
|
|
"lengthJudgment": "OK",
|
|
"heightJudgment": "OK",
|
|
"guideRailGap": "OK",
|
|
"bottomFinishGap": "OK",
|
|
"fireResistanceTest": "pass",
|
|
"smokeLeakageTest": "pass",
|
|
"openCloseTest": "pass",
|
|
"impactTest": "pass",
|
|
"productImages": ["https://..."]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 7. 소스 파일
|
|
|
|
### 7.1 Backend
|
|
|
|
| 파일 | 역할 |
|
|
|------|------|
|
|
| `api/app/Models/Qualitys/QualityDocument.php` | 품질관리서 모델 |
|
|
| `api/app/Models/Qualitys/QualityDocumentLocation.php` | 개소 모델 |
|
|
| `api/app/Models/Qualitys/QualityDocumentOrder.php` | 수주 연결 모델 |
|
|
| `api/app/Services/QualityDocumentService.php` | 서비스 (770줄) |
|
|
| `api/app/Http/Controllers/Api/V1/QualityDocumentController.php` | 컨트롤러 |
|
|
|
|
### 7.2 Frontend
|
|
|
|
| 파일 | 역할 |
|
|
|------|------|
|
|
| `react/src/components/quality/InspectionManagement/InspectionList.tsx` | 목록 |
|
|
| `react/src/components/quality/InspectionManagement/InspectionCreate.tsx` | 생성 |
|
|
| `react/src/components/quality/InspectionManagement/InspectionDetail.tsx` | 상세/수정 |
|
|
| `react/src/components/quality/InspectionManagement/OrderSelectModal.tsx` | 수주 선택 |
|
|
| `react/src/components/quality/InspectionManagement/ProductInspectionInputModal.tsx` | 검사 입력 |
|
|
| `react/src/components/quality/InspectionManagement/actions.ts` | Server Actions |
|
|
| `react/src/components/quality/InspectionManagement/types.ts` | 타입 정의 |
|
|
|
|
---
|
|
|
|
## 관련 문서
|
|
|
|
- [품질관리 시스템 개요](./README.md)
|
|
- [생산실적신고](./performance-reports.md)
|
|
|
|
---
|
|
|
|
**최종 업데이트**: 2026-03-09
|