- 신고 및 완료 사진 5장 지원 (photo_path3, photo_path4, photo_path5 추가)
- 엑셀 일일 리포트 개선:
- 사진 5장 모두 한 행에 일렬 배치 (A, C, E, G, I 열)
- 상태별 색상 구분 (지연중: 빨강, 진행중: 노랑, 완료: 진한 초록)
- 우선순위 기반 정렬 (지연중 → 진행중 → 완료됨)
- 프로젝트 현황 통계 박스 UI 개선 (색상 구분)
- 프론트엔드 모든 페이지 5장 사진 표시 (flex-wrap 레이아웃)
- 관리함, 수신함, 현황판, 신고내용 확인 페이지
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- backend: completion_rejection_reason 등 전용 필드 추가
- 기존 management_comment에 섞여있던 완료 반려 내용 분리
- 현황판: 완료 반려 내역 별도 카드로 표시
- 관리함: 해결방안에 완료 반려 내용 제외하여 표시
- DB 마이그레이션: completion_rejected_at, completion_rejected_by_id, completion_rejection_reason 필드 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
주요 변경사항:
- 비활성화된 프로젝트 관리 기능 추가
* 프로젝트 관리 페이지에 접을 수 있는 비활성 프로젝트 섹션 추가
* 비활성화된 프로젝트 복구 기능 제공
* 업로드 시에는 활성 프로젝트만 표시되도록 API 호출 분리
- 헤더 비밀번호 변경 기능 완전 구현
* CommonHeader.js에 완전한 비밀번호 변경 모달 구현
* ESC 키 지원, 실시간 유효성 검사, 토스트 메시지 추가
* 중복 코드 제거 및 통일된 함수 호출 구조
- 수신함 수정 내용 표시 문제 해결
* description 우선 표시로 최신 수정 내용 반영
* 관리함에서 final_description/final_category 업데이트 로직 추가
- 현황판 날짜 그룹화 개선
* 업로드일 기준에서 관리함 진입일(reviewed_at) 기준으로 변경
* Invalid Date 오류 해결
- 프로젝트 관리 페이지 JavaScript 오류 수정
* 중복 변수 선언 및 함수 참조 오류 해결
* 페이지 초기화 로직 개선
기술적 개선:
- API 호출 최적화 (active_only 매개변수 명시적 전달)
- 프론트엔드 표시 우선순위 통일 (description || final_description)
- 백엔드 final_* 필드 업데이트 로직 추가
✨ 새로운 기능:
- iPhone HEIC 사진 업로드 지원 (pillow-heif 라이브러리 추가)
- 완료 사진 업로드/교체 기능
- 완료 코멘트 수정 기능
- 통합 이슈 수정 모달 (진행 중/완료 대기 공통)
🔧 기술적 개선:
- HEIC 파일 자동 감지 및 원본 저장
- Base64 이미지 처리 로직 강화
- 상세한 디버깅 로그 추가
- 프론트엔드 파일 정보 로깅
📝 문서화:
- 배포 가이드 (DEPLOYMENT_GUIDE_20251026.md) 추가
- DB 변경사항 로그 업데이트
- 마이그레이션 스크립트 (020_add_management_completion_fields.sql)
🐛 버그 수정:
- loadManagementData -> initializeManagement 함수명 통일
- 모달 저장 후 즉시 닫히는 문제 해결
- 422 Unprocessable Entity 오류 해결
🔧 백엔드 API 추가:
- POST /api/issues/{issue_id}/completion-request
- 완료 사진 Base64 업로드 및 저장
- 완료 코멘트 저장
- 완료 신청 시간 및 신청자 기록
📊 데이터 모델 확장:
- completion_requested_at: 완료 신청 시간
- completion_requested_by_id: 완료 신청자 ID
- completion_photo_path: 완료 사진 경로
- completion_comment: 완료 코멘트
🛡️ 검증 로직:
- 진행 중 상태만 완료 신청 가능
- 중복 완료 신청 방지
- 파일 업로드 오류 시 롤백 처리
🔄 프론트엔드 연동:
- refreshDashboard() 함수 추가
- 완료 신청 후 현황판 자동 새로고침
- 오류 처리 및 사용자 피드백
Expected Result:
✅ 완료 신청 API 정상 작동
✅ 완료 사진 업로드 및 저장
✅ 완료 대기 상태로 변경
✅ 404 오류 해결
📝 상세 내용 인라인 편집 시스템:
🎨 프론트엔드 UI 개선:
- 상세 내용 섹션에 '수정' 버튼 추가
- 읽기 모드 ↔ 편집 모드 토글 기능
- 편집 시 텍스트 영역으로 전환
- 취소/저장 버튼으로 편집 제어
- 실시간 UI 업데이트
🔧 백엔드 API 확장:
- PUT /api/management/{issue_id} 엔드포인트 추가
- ManagementUpdateRequest에 final_description 필드 추가
- 진행중 상태 이슈만 수정 가능하도록 제한
- 권한 검증 및 오류 처리
💡 핵심 기능:
- 부적합명은 유지하고 상세 내용만 수정
- 수신함에서 입력한 상세 부분을 관리함에서 보완 가능
- 원본 데이터와 수정 데이터 자동 결합
- 실시간 저장 및 화면 반영
🔐 보안 및 제한사항:
- 관리함 페이지 권한 필요
- 진행중 상태 이슈만 편집 가능
- 완료된 이슈는 편집 불가
- 사용자 인증 및 권한 검증
🎯 사용 시나리오:
1. 관리함 진행중 탭에서 '수정' 버튼 클릭
2. 텍스트 영역에서 상세 내용 편집
3. 저장 시 부적합명과 자동 결합
4. 실시간으로 화면에 반영
Expected Result:
✅ 수신함 검토 후 관리함에서 상세 내용 보완 가능
✅ 직관적인 인라인 편집 인터페이스
✅ 데이터 일관성 유지 (부적합명 + 상세 내용)
✅ 안전한 권한 기반 편집 제어
🎯 관리함 진행중 페이지 추가 정보 입력 시스템:
📊 DB 구조 확장:
- responsible_person_detail: 해당자 상세 정보 (VARCHAR 200)
- cause_detail: 원인 상세 정보 (TEXT)
- additional_info_updated_at: 추가 정보 입력 시간
- additional_info_updated_by_id: 추가 정보 입력자 ID
- 018_add_additional_info_fields.sql 마이그레이션 실행 완료
🔧 백엔드 API:
- /api/management/{issue_id}/additional-info (PUT): 추가 정보 업데이트
- /api/management/{issue_id}/additional-info (GET): 추가 정보 조회
- AdditionalInfoUpdateRequest 스키마 추가
- management.py 라우터 생성 및 등록
🎨 프론트엔드 UI:
- 진행중 탭 상단에 '추가 정보 입력' 버튼 추가
- 완료됨 탭에서는 버튼 자동 숨김
- 세련된 모달 디자인 (오렌지 테마)
- 원인부서 드롭다운 (생산/품질/구매/설계/영업)
- 해당자 상세 입력 필드
- 원인 상세 텍스트 영역
💡 핵심 특징:
- 모든 필드 선택사항 (NULL 허용)
- 기록용 정보로 외부 노출 없음
- 기존 데이터 자동 로드 및 수정 가능
- 입력 시간/입력자 자동 추적
- 진행중 상태 이슈만 대상
🔐 권한 관리:
- issues_management 페이지 권한 필요
- 진행중 상태 이슈만 수정 가능
- 사용자별 입력 이력 추적
🎯 사용 시나리오:
1. 관리함 > 진행중 탭 접근
2. '추가 정보 입력' 버튼 클릭
3. 원인부서, 해당자, 원인상세 입력
4. 저장 후 내부 기록으로 보관
Expected Result:
✅ 관리함에서 상세한 원인 정보 기록 가능
✅ 체계적인 이슈 추적 및 분석 기반 마련
✅ 선택적 정보 입력으로 유연한 운영
✅ 깔끔한 UI로 사용자 경험 향상
🗑️ Remove Unnecessary Field:
- 처리 메모 (statusNotes) 필드 제거
- 완료됨 선택 시 해결방안 필드가 있어 중복 불필요
- 진행 중 선택 시 별도 메모 불필요
🎨 UI Simplification:
- 모달 UI에서 처리 메모 텍스트 영역 제거
- 더 깔끔하고 집중된 사용자 인터페이스
- 필수 정보에만 집중할 수 있도록 개선
🔧 Backend Cleanup:
- IssueStatusUpdateRequest에서 notes 필드 제거
- API 엔드포인트에서 notes 처리 로직 제거
- 불필요한 detail_notes 업데이트 로직 제거
💡 User Experience:
- 더 간단하고 직관적인 상태 변경 프로세스
- 완료 시에는 해결방안으로 충분한 정보 제공
- 진행 중 시에는 바로 처리 가능
Expected Result:
✅ 처리 메모 필드 완전 제거
✅ 더 간결한 상태 결정 모달
✅ 중복 기능 제거로 사용자 혼란 방지
✅ 핵심 기능에 집중된 워크플로우
🔄 Status Modal Improvements:
- 진행 중 / 완료됨 2개 옵션으로 단순화
- 진행 중 선택 시 바로 관리함으로 이동
- 완료됨 선택 시 추가 정보 입력 섹션 표시
📝 Completion Information Fields:
- 완료 사진 업로드 (1장, 선택사항)
- 해결방안 입력 (어떻게 해결했는지)
- 해결한 부서 선택 (담당부서)
- 해결한 사람 입력 (담당자)
- 모든 필드는 선택사항으로 관리함에서 나중에 입력 가능
🎨 Frontend Implementation:
- completionSection으로 통합된 완료 관련 UI
- 상태 선택에 따른 동적 섹션 표시/숨김
- 부서 선택 드롭다운 (생산, 품질, 구매, 설계, 영업)
- 직관적인 아이콘과 색상으로 필드 구분
- 사용자 안내 메시지로 UX 개선
🔧 Backend API Updates:
- IssueStatusUpdateRequest에 solution, responsible_department, responsible_person 필드 추가
- update_issue_status API에서 완료 상태 시 추가 필드 처리
- 해결방안, 담당부서, 담당자 정보 자동 저장
🚀 User Experience:
- 진행 중: 클릭 한 번으로 바로 관리함 이동
- 완료됨: 필요한 정보를 한 번에 입력하고 완료 처리
- 선택사항 필드로 유연한 워크플로우 지원
- 관리함에서 나중에 추가/수정 가능한 구조
💡 Workflow Optimization:
- 수신함에서 완료 처리 시 필요한 정보를 미리 입력
- 관리함 작업량 감소 및 효율성 향상
- 완료 확인일 자동 기록으로 추적 개선
Expected Result:
✅ 진행 중 선택 시 바로 관리함 이동
✅ 완료됨 선택 시 해결방안, 담당부서, 담당자 입력 가능
✅ 완료 사진과 함께 종합적인 완료 정보 수집
✅ 선택사항 필드로 유연한 사용 가능
✅ 관리함에서 추가 편집 가능한 구조
📸 Completion Photo Upload:
- 수신함에서 '완료됨' 상태 선택 시 완료 사진 업로드 기능 추가 (1장 제한)
- Base64 인코딩으로 사진 업로드 및 미리보기 기능
- 완료 상태 변경 시 actual_completion_date 자동 설정
🗄️ Final Issue DB Structure:
- 최종 부적합 사항을 위한 포괄적인 DB 스키마 설계 및 구현
- 프로젝트별 순번 (project_sequence_no) 자동 생성 시스템
📋 New Database Fields:
- completion_photo_path: 완료 사진 경로
- solution: 해결방안 (관리함에서 입력)
- responsible_department: 담당부서 (department_type ENUM)
- responsible_person: 담당자 (VARCHAR 100)
- expected_completion_date: 조치 예상일 (DATE)
- actual_completion_date: 완료 확인일 (DATE, 자동 설정)
- cause_department: 원인부서 (department_type ENUM)
- management_comment: ISSUE에 대한 의견 (TEXT)
- final_description: 최종 내용 (수정본 또는 원본)
- final_category: 최종 카테고리 (수정본 또는 원본)
🔧 Backend Implementation:
- Issue 모델에 11개 새 필드 추가
- IssueStatusUpdateRequest에 completion_photo 필드 추가
- ManagementUpdateRequest 스키마 신규 생성
- update_issue_status API에 완료 사진 처리 로직 추가
- generate_project_sequence_no() 함수로 프로젝트별 순번 자동 생성
🎨 Frontend Implementation:
- 상태 결정 모달에 완료 사진 업로드 섹션 추가
- 완료 상태 선택 시에만 사진 업로드 UI 표시
- 파일 크기 제한 (5MB), 이미지 파일 검증
- 사진 미리보기 및 Base64 변환 처리
- 완료 사진 없이 완료 처리 시 확인 다이얼로그
🚀 User Experience:
- 직관적인 완료 사진 업로드 워크플로우
- 실시간 사진 미리보기로 업로드 확인 가능
- 완료 처리 시 자동으로 완료 확인일 기록
- 프로젝트별 순번으로 체계적인 이슈 관리
🔍 Database Migration:
- 016_add_management_fields.sql 마이그레이션 성공적으로 실행
- 멱등성 보장 및 기존 데이터 보존
- 인덱스 최적화 (project_sequence, responsible_department, expected_completion)
- 기존 이슈들의 final_description/final_category 자동 초기화
Expected Result:
✅ 수신함에서 완료 상태 선택 시 완료 사진 업로드 가능
✅ 완료 처리 시 완료 확인일 자동 기록
✅ 프로젝트별 순번으로 체계적인 이슈 번호 관리
✅ 관리함에서 사용할 모든 필드 준비 완료
✅ 최종 부적합 사항 리포트 생성을 위한 DB 구조 완성
🔄 Duplicate Tracking System:
- 중복 신고 시 원본 이슈에 신고자 정보 자동 추가
- 신고 인지도 및 대응 속도 분석을 위한 데이터 수집
- 뒷북치는 신고자 파악 및 집계 기능
📊 Database Schema Updates:
- duplicate_of_issue_id: 중복 대상 이슈 ID (FK)
- duplicate_reporters: 중복 신고자 목록 (JSONB 배열)
- 015_add_duplicate_tracking.sql 마이그레이션 실행
- GIN 인덱스로 JSONB 검색 성능 최적화
🔧 Backend Enhancements:
- 중복 폐기 시 대상 이슈에 신고자 정보 자동 추가
- 신고자 중복 체크 로직 (동일 사용자 재추가 방지)
- /api/inbox/management-issues API 추가 (중복 선택용)
- 프로젝트별 관리함 이슈 목록 조회 지원
🎨 Frontend UI Improvements:
- 중복 선택 시 관리함 이슈 목록 표시
- 프로젝트별 필터링된 이슈 목록 제공
- 간단한 이슈 정보 표시 (제목, 카테고리, 신고자, 중복 건수)
- 직관적인 선택 UI (클릭으로 선택, 시각적 피드백)
📋 Duplicate Selection Process:
1. 폐기 사유로 '중복' 선택
2. 동일 프로젝트의 관리함 이슈 목록 자동 로드
3. 중복 대상 이슈 선택 (필수)
4. 확인 시 신고자 정보가 원본 이슈에 추가
💾 Data Structure:
- duplicate_reporters: [
{
user_id: 123,
username: 'reporter1',
full_name: '신고자1',
report_date: '2024-10-25T14:30:00',
added_at: '2024-10-25T15:00:00'
}
]
🔍 Analytics Features:
- 중복 신고 건수 표시
- 신고자별 신고 시점 추적
- 원본 이슈 대비 지연 신고 분석 가능
- 부서별/사용자별 인지도 분석 데이터 제공
🚀 User Experience:
- 중복 처리 시 명확한 안내 메시지
- 관리함 이슈 목록 실시간 로드
- 선택 필수 검증 (중복 대상 미선택 시 경고)
- 처리 완료 후 자동 목록 새로고침
Expected Result:
✅ 중복 신고 시 신고자 정보 자동 추적
✅ 신고 인지도 및 대응 속도 분석 데이터 수집
✅ 직관적인 중복 대상 선택 UI
✅ 부서별/개인별 신고 패턴 분석 기반 마련
🏢 Department Management System:
- 5개 부서 지원: 생산, 품질, 구매, 설계, 영업
- 사용자 생성/수정 시 부서 선택 가능
- 부서별 사용자 분류 및 표시
📊 Database Schema Updates:
- department_type ENUM 추가 (production, quality, purchasing, design, sales)
- users 테이블에 department 컬럼 추가
- idx_users_department 인덱스 생성 (성능 최적화)
- 014_add_user_department.sql 마이그레이션 실행
🔧 Backend Enhancements:
- DepartmentType ENUM 클래스 추가 (models.py, schemas.py)
- User 모델에 department 필드 추가
- UserBase, UserUpdate 스키마에 department 필드 포함
- 기존 API 엔드포인트 자동 호환
🎨 Frontend UI Improvements:
- 사용자 추가 폼에 부서 선택 드롭다운 추가
- 사용자 목록에 부서 정보 배지 표시 (녹색 배경)
- 사용자 편집 모달 새로 구현
- 부서명 한글 변환 함수 (AuthAPI.getDepartmentLabel)
✨ User Management Features:
- 편집 버튼으로 사용자 정보 수정 가능
- 부서, 이름, 권한 실시간 변경
- 사용자 ID는 수정 불가 (읽기 전용)
- 모달 기반 직관적 UI
🔍 Visual Enhancements:
- 부서 정보 아이콘 (fas fa-building)
- 색상 코딩: 부서(녹색), 권한(빨강/파랑)
- 반응형 레이아웃 (flex-1, gap-3)
- 호버 효과 및 트랜지션
🚀 API Integration:
- AuthAPI.getDepartments() - 부서 목록 반환
- AuthAPI.getDepartmentLabel() - 부서명 변환
- AuthAPI.updateUser() - 부서 정보 포함 업데이트
- 기존 createUser API 확장 지원
Expected Result:
✅ 사용자 생성 시 부서 선택 가능
✅ 사용자 목록에 부서 정보 표시
✅ 편집 버튼으로 부서 변경 가능
✅ 5개 부서 분류 시스템 완성
✅ 직관적인 사용자 관리 UI
🎨 Universal Smooth Animation System:
- 6개 모든 페이지에 통일된 애니메이션 적용
- 헤더 우선 표시 → 본문 부드러운 페이드인
- 일관성 있는 사용자 경험 제공
📱 Applied Pages:
✅ index.html (메인 페이지)
✅ issues-inbox.html (수신함)
✅ issue-view.html (부적합 조회)
✅ daily-work.html (일일공수)
✅ project-management.html (프로젝트 관리)
✅ admin.html (관리자)
🎯 Animation Flow (모든 페이지 동일):
Step 1: 헤더 빠른 페이드인 (0.4s, -10px → 0)
Step 2: 본문 지연 페이드인 (0.8s, +30px → 0, 0.2s delay)
Step 3: 컨텐츠 순차 표시 (100ms 간격)
🔧 Unified Implementation:
- 동일한 CSS 애니메이션 클래스 (.header-fade-in, .content-fade-in)
- 통일된 JavaScript 함수 (animateHeaderAppearance, animateContentAppearance)
- 헤더 초기화 후 자동 애니메이션 시작
- 에러 상황에서도 애니메이션 적용
🎨 Enhanced UX Features:
- 헤더 우선 표시로 즉시 네비게이션 가능
- 부드러운 전환으로 시각적 만족감 증대
- 브랜드 일관성을 위한 통일된 애니메이션
- 성능 최적화된 애니메이션 시스템
🎯 Visual Improvements:
- 헤더: 위에서 부드럽게 등장 (빠름)
- 본문: 아래에서 부드럽게 등장 (느림)
- 컨텐츠: 순차적 페이드인 (리듬감)
- 매끄러운 페이지 전환
Expected Result:
✨ 모든 페이지에서 동일한 부드러운 로딩 경험
✨ 헤더 우선 표시로 즉시 네비게이션 가능
✨ 통일된 브랜드 경험 및 사용자 만족도 증대
✨ 성능 최적화와 시각적 완성도 양립
🔧 Models & Schemas:
- 새로운 ENUM 클래스 추가:
* ReviewStatus: pending_review, in_progress, completed, disposed
* DisposalReasonType: duplicate, invalid_report, not_applicable, spam, custom
- Issue 모델 확장 (8개 새 필드):
* review_status: 수신함 워크플로우 상태 (기본값: pending_review)
* disposal_reason: 폐기 사유 ENUM
* custom_disposal_reason: 사용자 정의 폐기 사유
* disposed_at: 폐기 처리 시간
* reviewed_by_id: 검토자 FK (users.id)
* reviewed_at: 검토 완료 시간
* original_data: 원본 데이터 보존 (JSONB)
* modification_log: 수정 이력 추적 (JSONB)
- User 모델 관계 수정:
* issues: 신고한 부적합 (foreign_keys 명시)
* reviewed_issues: 검토한 부적합 (새로 추가)
🎯 Pydantic Schemas:
- 기존 Issue 스키마에 워크플로우 필드 추가
- 수신함 전용 스키마들:
* IssueDisposalRequest: 폐기 요청
* IssueReviewRequest: 검토/수정 요청
* IssueStatusUpdateRequest: 상태 변경 요청
* InboxIssue: 수신함용 간소화 모델
* ModificationLogEntry: 수정 이력 항목
🚀 API Endpoints (/api/inbox):
- GET /: 수신함 부적합 목록 (프로젝트 필터링, 페이징)
- POST /{id}/dispose: 부적합 폐기 처리 (관리자 전용)
- POST /{id}/review: 부적합 검토/수정 (관리자 전용)
- POST /{id}/status: 최종 상태 결정 (관리자 전용)
- GET /{id}/history: 수정 이력 조회
- GET /statistics: 수신함 통계
🔒 Security & Validation:
- 관리자 전용 액션 (폐기, 검토, 상태변경)
- 사용자 정의 폐기 사유 검증
- 프로젝트 존재 여부 확인
- 상태 변경 로직 검증
📊 Data Preservation:
- 원본 데이터 자동 보존 (최초 1회)
- 모든 수정사항 이력 추적
- 검토자 및 시간 기록
- 폐기 사유 및 시간 기록
🎯 Workflow Logic:
업로드(pending_review) → 수신함 검토 → [폐기→폐기함] or [승인→관리함]
- 폐기: disposed 상태, 폐기함으로
- 승인: in_progress/completed 상태, 관리함으로
- 모든 변경사항 추적 및 보존
Result:
✅ 수신함 워크플로우 백엔드 100% 완성
✅ DB 스키마와 완벽 동기화
✅ 데이터 무결성 및 추적성 보장
✅ RESTful API 설계 준수
✅ 관리자 권한 기반 보안 적용
- 기존 4단계 권한을 admin/user 2단계로 단순화
- 페이지별 세부 접근 권한 관리 시스템 추가
- 부적합 조회 시 일반 사용자는 본인 등록 건만 조회 가능하도록 제한
- 관리자 전용 전체 부적합 조회 API 추가 (/api/issues/admin/all)
Backend Changes:
- models.py: UserPagePermission 모델 추가, UserRole 단순화
- page_permissions.py: 페이지 권한 관리 API 라우터 추가
- auth.py: 사용자 목록 조회 및 비밀번호 초기화 API 추가
- issues.py: 권한별 부적합 조회 제한 로직 구현
- 마이그레이션: 010~012 권한 시스템 관련 DB 스키마 변경
- 토큰 저장 키 통일 (access_token으로 일관성 확보)
- 일일공수 페이지 API 스크립트 로딩 순서 수정
- 프로젝트 관리 페이지 비활성 프로젝트 표시 문제 해결
- 업로드 카테고리에 '기타' 항목 추가 (백엔드 schemas.py 포함)
- 비밀번호 변경 기능 API 연동으로 수정
- 프로젝트 드롭다운 z-index 문제 해결
- CORS 설정 및 Nginx 구성 개선
- 비밀번호 해싱 방식 pbkdf2_sha256으로 변경 (bcrypt 72바이트 제한 해결)
- localStorage와 DB ID 불일치 문제 해결
- 프로젝트별 보고서 시간 필터링 수정
- 일반 사용자에게 일일공수 메뉴 숨김
- 공통 헤더 및 인증 시스템 구현
- 프로젝트별 일일공수 분리 기능 추가 (ProjectDailyWork 모델)
- IssuesAPI에서 project_id 누락 문제 수정
- 사용자 인증 통합 (TokenManager 기반)
- 목록 관리 페이지에 고급 필터링 시스템 추가
- 프로젝트별, 검토상태별, 날짜별 필터링
- 검토 완료/필요 항목 시각적 구분 및 정렬
- 해결 시간 입력 + 확인 버튼으로 검토 완료 처리
- 부적합 조회 페이지에 동일한 필터링 기능 적용
- 검토 상태에 따른 카드 스타일링 (음영 처리)
- JavaScript 템플릿 리터럴 오류 수정
- 보고서 페이지 프로젝트별 분석 기능 추가
- 프로젝트 선택 드롭다운 추가
- 총 작업 공수를 프로젝트별 일일공수 데이터로 계산
- 부적합 처리 시간, 카테고리 분석, 상세 목록 모두 프로젝트별 필터링
- localStorage 키 이름 통일 (daily-work-data)
- 사진 2장까지 업로드 지원
- 카메라 촬영 + 갤러리 선택 분리
- 이미지 압축 및 최적화 (ImageUtils)
- iPhone .mpo 파일 JPEG 변환 지원
- 카테고리 변경: 치수불량 → 설계미스, 검사미스 추가
- KST 시간대 설정
- URL 해시 처리로 목록관리 페이지 이동 개선
- 로그인 OAuth2 form-data 형식 수정
- 업로드 속도 개선 및 프로그레스바 추가
- 관리자 전용 사용자 관리 페이지 추가
- 사용자 추가/삭제 기능 (한글 ID 지원)
- 비밀번호 변경 기능
- 권한별 메뉴 접근 제한
- 관리자: 모든 메뉴 접근 가능
- 일반 사용자: 일일공수, 부적합등록/조회만 가능
- 이미지 없이 부적합 등록 가능
- 목록 관리에서 이미지 수정 기능
- 작업 시간 확인 버튼 개선
- 부적합 조회 페이지 간소화 (시간순 나열)
- 일일 공수 입력 기능
- 부적합 사항 등록 (이미지 선택사항)
- 날짜별 부적합 조회 (시간순 나열)
- 목록 관리 (인라인 편집, 작업시간 확인 버튼)
- 보고서 생성 (총 공수/부적합 시간 분리)
- JWT 인증 및 권한 관리
- Docker 기반 배포 환경 구성