feat: 작업보고서 시스템 완성

- 일일 공수 입력 기능
- 부적합 사항 등록 (이미지 선택사항)
- 날짜별 부적합 조회 (시간순 나열)
- 목록 관리 (인라인 편집, 작업시간 확인 버튼)
- 보고서 생성 (총 공수/부적합 시간 분리)
- JWT 인증 및 권한 관리
- Docker 기반 배포 환경 구성
This commit is contained in:
hyungi
2025-09-17 10:41:25 +09:00
commit 1339e5dded
36 changed files with 5233 additions and 0 deletions

165
Rules.md Normal file
View File

@@ -0,0 +1,165 @@
# 작업보고서 시스템 규칙 (Rules)
## 🎯 시스템 목적
1. **전체 공수 계산**
- 작업에 소요된 총 시간을 자동으로 집계
- 기간별, 카테고리별 통계 제공
- 일일 작업 공수 관리
2. **발생한 부적합 사항 정리**
- 현장에서 핸드폰으로 간편하게 업로드
- 사진(선택), 카테고리, 설명을 빠르게 입력
- 이미지 없이도 등록 가능
3. **날짜별 부적합 사항 조회**
- 기간별 필터링 (오늘, 이번주, 이번달)
- 카테고리별 통계 확인
- 날짜별 그룹화된 목록 표시
4. **상세 내역 확인 및 수정**
- 등록된 부적합 사항의 카테고리/설명 수정
- 사진 추가/변경 기능
- 작업 시간 입력 (자동으로 완료 상태 변경)
- 진행 상태는 자동 관리
5. **최종 보고서 출력**
- 전문적인 형식의 보고서 자동 생성
- 인쇄 가능한 레이아웃
6. **일일 공수 관리**
- 날짜별 작업 인원 입력
- 정규 근무 및 잔업 시간 계산
- 총 작업 시간 자동 집계
## 📱 모바일 입력 최적화
### 필수 입력 항목 (간단하게)
1. **사진** - 카메라 직접 연동
2. **카테고리** - 선택형 (자재누락/치수불량/입고자재 불량)
3. **간단 설명** - 짧은 텍스트
### UI/UX 원칙
- 큰 버튼과 입력 필드
- 최소한의 스크롤
- 즉각적인 피드백
- 오프라인에서도 작동 (로컬 저장)
## 📊 보고서 형식
### 1페이지 - 요약
```
작업 보고서
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
작업 기간: YYYY-MM-DD ~ YYYY-MM-DD
총 공수: XXX 시간
카테고리별 분석:
- 자재누락: X건
- 치수불량: X건
- 입고자재 불량: X건
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
### 2페이지부터 - 상세 내역
```
부적합 사항 #1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[사진]
카테고리: XXX
설명: XXX
작업시간: X시간
추가메모: XXX
보고자: XXX
보고일시: YYYY-MM-DD HH:MM
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
## 🔐 사용자 권한
### 일반 사용자 (inspector)
- 부적합 사항 등록
- 자신이 등록한 항목 수정
- 보고서 조회
### 관리자 (admin)
- 모든 부적합 사항 조회/수정
- 사용자 관리
- 데이터 백업/복원
## 💾 데이터 구조
### 부적합 사항 (Issue)
```javascript
{
id: timestamp,
photo: base64_image,
category: enum['material_missing','dimension_defect','incoming_defect'],
description: string,
status: enum['new','progress','complete'],
reporter: user_id,
reporterName: string,
reportDate: ISO_datetime,
workHours: number,
detailNotes: string
}
```
### 일일 공수 (Daily Work)
```javascript
{
id: timestamp,
date: YYYY-MM-DD,
workerCount: number, // 작업 인원 수
regularHours: number, // 정규 근무 시간 (인원 × 8시간)
overtimeWorkers: number, // 잔업 인원 수
overtimeHours: number, // 잔업 시간 (1인당)
overtimeTotal: number, // 총 잔업 시간
totalHours: number, // 전체 작업 시간
timestamp: ISO_datetime // 입력 시각
}
```
## 🚀 향후 개선 사항
1. **백엔드 연동**
- 실제 데이터베이스 사용
- 다중 사용자 동시 작업 지원
- 데이터 백업 자동화
2. **추가 기능**
- 부적합 사항 알림 기능
- 작업자 배정 기능
- 사진 여러 장 업로드
- GPS 위치 자동 기록
- 바코드/QR 코드 스캔
3. **보고서 확장**
- Excel 내보내기
- PDF 생성
- 이메일 발송
- 월간/연간 통계
## 📝 사용 시나리오
1. **현장 작업자**
- 부적합 사항 발견
- 핸드폰으로 사진 촬영
- 카테고리 선택과 간단 설명 입력
- 등록 완료
2. **작업 완료 후**
- 등록된 부적합 사항 확인
- 카테고리/설명 수정 가능
- 작업 시간 입력
- 상태는 자동으로 '완료'로 변경
3. **보고서 작성**
- 보고서 섹션 접속
- 자동 생성된 내용 확인
- 필요시 인쇄 또는 공유
---
작성일: 2025-09-17
버전: 1.0