- README.md: 전체 개요, 역할별 프로세스 플로우, 메뉴 구조, 데이터 구조, API, 스토리보드 참조 - inspection-management.md: 제품검사 관리 (15개 검사항목, 상태판정, 캘린더뷰, 요청서/성적서 양식) - performance-reports.md: 생산실적신고 (자동생성, 확정, 누락체크, 건기원 프로세스) - quality-certification-audit.md: 품질인정심사 (기준/매뉴얼 심사 + 로트 추적 심사) - INDEX.md에 품질관리 문서 등록
269 lines
7.8 KiB
Markdown
269 lines
7.8 KiB
Markdown
# 생산실적신고 (Performance Reports)
|
|
|
|
> **작성일**: 2026-03-09
|
|
> **상태**: 운영 중
|
|
> **URL**: `/quality/performance-reports`
|
|
|
|
---
|
|
|
|
## 1. 개요
|
|
|
|
### 1.1 목적
|
|
|
|
건설기술진흥법에 따라 방화문 제품검사 완료 건에 대해 **분기별 실적신고**를 관리한다.
|
|
건기원(한국건설기술연구원) 온라인 시스템에 제출할 데이터를 자동 수집하고, 필수정보 검증 후 확정 처리한다.
|
|
|
|
### 1.2 비즈니스 배경
|
|
|
|
- **법적 의무**: 방화문은 건축자재 품질관리 대상으로, 제품검사 후 실적을 건기원에 신고해야 함
|
|
- **신고 주기**: 분기별 (Q1: 1~3월, Q2: 4~6월, Q3: 7~9월, Q4: 10~12월)
|
|
- **신고 내용**: 품질관리서 번호, 현장정보, LOT, 규격, 검사결과
|
|
- **제출 방식**: 건기원 온라인 시스템 수기 입력 또는 엑셀 업로드
|
|
|
|
### 1.3 SAM에서의 역할
|
|
|
|
```
|
|
제품검사 완료 → 실적신고 자동생성 → 필수정보 검증 → 확정 → 건기원 제출
|
|
(SAM 자동) (SAM 자동) (담당자) (수동/향후 자동)
|
|
```
|
|
|
|
---
|
|
|
|
## 2. 상태 흐름
|
|
|
|
### 2.1 상태 정의
|
|
|
|
| 상태 | 코드 | 설명 |
|
|
|------|------|------|
|
|
| 미확정 | `unconfirmed` | 자동생성 직후, 필수정보 미완료 가능 |
|
|
| 확정 | `confirmed` | 필수정보 완료 후 담당자가 확정 |
|
|
| 신고완료 | `reported` | 건기원에 신고 완료 (미구현) |
|
|
|
|
### 2.2 상태 전이
|
|
|
|
```
|
|
confirm()
|
|
unconfirmed ─────────────────→ confirmed
|
|
↑ │
|
|
│ unconfirm() │
|
|
└──────────────────────────────┘
|
|
│
|
|
distribute()
|
|
↓
|
|
reported (미구현)
|
|
```
|
|
|
|
### 2.3 확정 조건
|
|
|
|
확정(`confirm`) 시 **필수정보 4개 섹션** 검증:
|
|
|
|
```
|
|
✅ 건축공사장: name, land_location, lot_no
|
|
✅ 자재유통업자: company, address, ceo, tel
|
|
✅ 공사시공자: company, address, name, phone
|
|
✅ 공사감리자: office, address, name, phone
|
|
```
|
|
|
|
하나라도 누락되면 확정 불가 → `cannotConfirmWithMissingInfo` 에러 반환
|
|
|
|
---
|
|
|
|
## 3. 자동 생성 로직
|
|
|
|
### 3.1 트리거
|
|
|
|
`QualityDocumentService::complete()` 호출 시:
|
|
|
|
```php
|
|
PerformanceReport::firstOrCreate(
|
|
[
|
|
'tenant_id' => $tenantId,
|
|
'quality_document_id' => $qualityDocument->id,
|
|
],
|
|
[
|
|
'year' => now()->year, // 현재 연도
|
|
'quarter' => ceil(now()->month / 3), // 현재 분기
|
|
'confirmation_status' => 'unconfirmed',
|
|
'created_by' => $userId,
|
|
]
|
|
);
|
|
```
|
|
|
|
### 3.2 특징
|
|
|
|
- `firstOrCreate`: 동일 품질관리서에 대해 중복 생성 방지
|
|
- 검사완료 시점의 연도/분기로 자동 배정
|
|
- Unique 제약: `(tenant_id, quality_document_id)`
|
|
|
|
---
|
|
|
|
## 4. 화면 구성
|
|
|
|
### 4.1 탭 구조
|
|
|
|
| 탭 | 내용 |
|
|
|----|------|
|
|
| **분기별 실적신고** | 기본 탭. 연도/분기별 실적 목록 |
|
|
| **누락체크** | 출고완료 수주 중 품질관리서 미등록 건 |
|
|
|
|
### 4.2 통계 카드
|
|
|
|
```
|
|
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
│ 전체 │ │ 확정 │ │ 미확정 │ │ 총 개소 │
|
|
│ 12건 │ │ 8건 │ │ 4건 │ │ 48개소 │
|
|
└──────────┘ └──────────┘ └──────────┘ └──────────┘
|
|
```
|
|
|
|
### 4.3 테이블 컬럼 (분기별 실적신고)
|
|
|
|
| 컬럼 | 설명 |
|
|
|------|------|
|
|
| 선택 | 체크박스 (일괄 처리용) |
|
|
| 번호 | 순번 |
|
|
| 품질관리서번호 | KD-QD-YYYYMM-NNNN |
|
|
| 작성일 | 품질관리서 접수일 |
|
|
| 현장명 | 시공 현장명 |
|
|
| 수주처 | 거래처 |
|
|
| 개소 | 검사 개소 수 |
|
|
| 필수정보 | "완료" 또는 "N건 누락" |
|
|
| 확정상태 | 미확정/확정/신고완료 |
|
|
| 확정일 | 확정 처리일 |
|
|
| 메모 | 메모 내용 |
|
|
|
|
### 4.4 액션 버튼
|
|
|
|
| 버튼 | 조건 | 설명 |
|
|
|------|------|------|
|
|
| 선택 확정 | 미확정 건 선택 시 | 필수정보 완료된 건만 일괄 확정 |
|
|
| 확정 해제 | 확정 건 선택 시 | 확정 → 미확정 되돌리기 |
|
|
| 배포 | 확정 건 선택 시 | 건기원 신고 (미구현) |
|
|
| 메모 | 건 선택 시 | 메모 일괄 작성 |
|
|
|
|
---
|
|
|
|
## 5. 누락체크 (슬라이드 18)
|
|
|
|
### 5.1 목적
|
|
|
|
실적신고 기간이 지났지만 확정이 안된 목록을 확인한다.
|
|
출고(배송)가 완료되었지만 품질관리서가 등록되지 않은 수주를 탐지한다.
|
|
|
|
### 5.2 누락 발생 원인
|
|
|
|
| 원인 | 설명 |
|
|
|------|------|
|
|
| 품질관리서 발행일 기준 분기 불일치 | 품질관리서가 해당 분기에 포함되어야 하나, 공사 미완료로 다음 분기로 이월 |
|
|
| 수주 중복 등록 | 수주통 시 다른 현장명으로 등록되어 제품검사 발행 시 누락 |
|
|
| 납품 후 미등록 | 납품 후 제품검사 등록이 누락된 경우 |
|
|
|
|
### 5.3 누락체크 목록 표시
|
|
|
|
| 컬럼 | 설명 |
|
|
|------|------|
|
|
| 품질관리서 번호 | 관련 품질관리서 (있는 경우) |
|
|
| 현장명 | 수주 현장명 |
|
|
| 수주처 | 거래처 |
|
|
| 개소 | 수주 개소 수 |
|
|
| 제품검사완료일 | 검사 완료 일자 |
|
|
| 메모 | 누락 사유 메모 |
|
|
|
|
### 5.4 로직
|
|
|
|
```sql
|
|
-- 출고완료 수주 중 quality_document_orders에 미등록된 건
|
|
SELECT orders.*
|
|
FROM orders
|
|
WHERE delivery_status = 'completed'
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM quality_document_orders
|
|
WHERE order_id = orders.id
|
|
)
|
|
```
|
|
|
|
---
|
|
|
|
## 6. API
|
|
|
|
### 6.1 엔드포인트
|
|
|
|
| Method | Path | 설명 |
|
|
|--------|------|------|
|
|
| GET | `/quality/performance-reports` | 목록 (year, quarter, status 필터) |
|
|
| GET | `/quality/performance-reports/stats` | 확정/미확정 통계 |
|
|
| GET | `/quality/performance-reports/missing` | 누락체크 |
|
|
| PATCH | `/quality/performance-reports/confirm` | 일괄 확정 |
|
|
| PATCH | `/quality/performance-reports/unconfirm` | 확정 해제 |
|
|
| PATCH | `/quality/performance-reports/memo` | 메모 일괄 업데이트 |
|
|
|
|
### 6.2 요청/응답 예시
|
|
|
|
**목록 조회**:
|
|
```
|
|
GET /quality/performance-reports?year=2026&quarter=1&status=unconfirmed
|
|
```
|
|
|
|
**일괄 확정**:
|
|
```json
|
|
PATCH /quality/performance-reports/confirm
|
|
{
|
|
"ids": [1, 2, 3]
|
|
}
|
|
```
|
|
|
|
**응답**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "message.performance_report.confirmed",
|
|
"data": {
|
|
"confirmed_count": 2,
|
|
"skipped_count": 1,
|
|
"skipped_ids": [3]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 7. 소스 파일
|
|
|
|
### 7.1 Backend
|
|
|
|
| 파일 | 역할 |
|
|
|------|------|
|
|
| `api/app/Models/Qualitys/PerformanceReport.php` | 모델 |
|
|
| `api/app/Services/PerformanceReportService.php` | 서비스 (280줄) |
|
|
| `api/app/Http/Controllers/Api/V1/PerformanceReportController.php` | 컨트롤러 |
|
|
| `api/routes/api/v1/quality.php` | 라우트 |
|
|
|
|
### 7.2 Frontend
|
|
|
|
| 파일 | 역할 |
|
|
|------|------|
|
|
| `react/src/app/[locale]/(protected)/quality/performance-reports/page.tsx` | 페이지 |
|
|
| `react/src/components/quality/PerformanceReportManagement/PerformanceReportList.tsx` | 목록 컴포넌트 |
|
|
| `react/src/components/quality/PerformanceReportManagement/MemoModal.tsx` | 메모 모달 |
|
|
| `react/src/components/quality/PerformanceReportManagement/actions.ts` | Server Actions |
|
|
|
|
---
|
|
|
|
## 8. 미구현 기능
|
|
|
|
| 기능 | 설명 | 우선순위 |
|
|
|------|------|---------|
|
|
| 배포(distribute) API | 건기원 시스템 연동 자동 신고 | 중 |
|
|
| 엑셀 다운로드 | 확정건 건기원 양식 엑셀 내보내기 | 높음 |
|
|
| 분기 마감 알림 | 분기 종료 전 미확정건 알림 | 낮음 |
|
|
|
|
---
|
|
|
|
## 관련 문서
|
|
|
|
- [품질관리 시스템 개요](./README.md)
|
|
- [제품검사 관리](./inspection-management.md)
|
|
|
|
---
|
|
|
|
**최종 업데이트**: 2026-03-09
|