- API URL 생성 로직에서 localhost 환경 감지 개선
- 모든 페이지에서 하드코딩된 API URL 제거
- ManagementAPI, InboxAPI 추가로 API 호출 통합
- ProjectsAPI 사용으로 프로젝트 로드 통일
- permissions.js에서 API URL 동적 생성 적용
- 신고 및 완료 사진 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>
- Enum 값을 소문자로 변경 (material_missing, design_error, incoming_defect, complete)
- nonconformity_name -> description 필드명 변경
- completion_date -> actual_completion_date 필드명 변경
- Excel 다운로드 시 한글 파일명 URL 인코딩 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- PagePermissionResponse 스키마의 granted_at 필드 타입 수정
* str → Optional[datetime]으로 변경
* Pydantic ResponseValidationError 해결
- datetime import 추가
- 사용자 권한 설정 저장 기능 정상화
주요 변경사항:
- 비활성화된 프로젝트 관리 기능 추가
* 프로젝트 관리 페이지에 접을 수 있는 비활성 프로젝트 섹션 추가
* 비활성화된 프로젝트 복구 기능 제공
* 업로드 시에는 활성 프로젝트만 표시되도록 API 호출 분리
- 헤더 비밀번호 변경 기능 완전 구현
* CommonHeader.js에 완전한 비밀번호 변경 모달 구현
* ESC 키 지원, 실시간 유효성 검사, 토스트 메시지 추가
* 중복 코드 제거 및 통일된 함수 호출 구조
- 수신함 수정 내용 표시 문제 해결
* description 우선 표시로 최신 수정 내용 반영
* 관리함에서 final_description/final_category 업데이트 로직 추가
- 현황판 날짜 그룹화 개선
* 업로드일 기준에서 관리함 진입일(reviewed_at) 기준으로 변경
* Invalid Date 오류 해결
- 프로젝트 관리 페이지 JavaScript 오류 수정
* 중복 변수 선언 및 함수 참조 오류 해결
* 페이지 초기화 로직 개선
기술적 개선:
- API 호출 최적화 (active_only 매개변수 명시적 전달)
- 프론트엔드 표시 우선순위 통일 (description || final_description)
- 백엔드 final_* 필드 업데이트 로직 추가
✨ 새로운 기능:
- 완료됨 탭을 테이블에서 카드 형식으로 완전 변경
- 완료 시 입력한 모든 정보를 포괄적으로 표시
- 3단 구조로 정보 체계화 (기본정보 | 관리정보 | 완료정보)
🎨 UI/UX 개선:
- 진행 중 탭과 일관된 카드 디자인 적용
- 녹색 테마로 완료 상태 시각화
- 반응형 3단 그리드 레이아웃
- HEIC 완료 사진 다운로드 지원
📋 포함된 완료 정보:
- 완료 사진 (HEIC 지원)
- 완료 코멘트
- 완료 신청일
- 해결방안, 담당부서/담당자
- 원인부서, 관리 코멘트
- 원본 업로드 사진
🔧 기술적 개선:
- getDepartmentText() 함수 추가 (부서 코드 한글 변환)
- 레거시 테이블 헤더 함수 정리
- 카드 기반 통합 렌더링 시스템
✨ 새로운 기능:
- iPhone HEIC 사진 업로드 지원 (pillow-heif 라이브러리 추가)
- 완료 사진 업로드/교체 기능
- 완료 코멘트 수정 기능
- 통합 이슈 수정 모달 (진행 중/완료 대기 공통)
🔧 기술적 개선:
- HEIC 파일 자동 감지 및 원본 저장
- Base64 이미지 처리 로직 강화
- 상세한 디버깅 로그 추가
- 프론트엔드 파일 정보 로깅
📝 문서화:
- 배포 가이드 (DEPLOYMENT_GUIDE_20251026.md) 추가
- DB 변경사항 로그 업데이트
- 마이그레이션 스크립트 (020_add_management_completion_fields.sql)
🐛 버그 수정:
- loadManagementData -> initializeManagement 함수명 통일
- 모달 저장 후 즉시 닫히는 문제 해결
- 422 Unprocessable Entity 오류 해결
🔧 통합 수정 모달:
- 모든 진행 중 상태에서 '확인' 버튼으로 모달 열기
- 완료 대기 상태에서도 '수정' 버튼으로 동일 모달 사용
- 6열 와이드 모달로 모든 정보 한눈에 표시
📝 모달 구성:
- 왼쪽: 기본 정보 (프로젝트, 부적합명, 상세내용, 원인분류, 업로드 사진)
- 오른쪽: 관리 정보 (해결방안, 담당부서/자, 조치예상일) + 완료 신청 정보
🎯 버튼 시스템 개선:
- 일반 진행 중: 저장 | 확인 | 완료처리
- 완료 대기: 반려 | 수정 | 최종확인
- 모달에서 통합 수정 가능
✏️ 수정 기능:
- 부적합명, 상세내용 직접 수정
- 해결방안, 담당부서/자, 조치예상일 수정
- 모달에서 저장 시 실시간 반영
📋 히스토리 추적 방안 문서화:
- 단일 히스토리 테이블 vs 페이지별 테이블 비교
- 변경 이력 기록 서비스 클래스 설계
- 프론트엔드 히스토리 조회 모달 구현 방안
- 감사 추적, 데이터 복구, 보안 고려사항 포함
🔍 구현 우선순위:
- Phase 1: 기본 히스토리 테이블 + 관리함 이력
- Phase 2: 수신함 이력 + 히스토리 UI
- Phase 3: 데이터 복구 + 감사 보고서
💡 추가 아이디어:
- 변경 승인 워크플로우
- 자동 백업 시스템
- 변경 영향도 분석
Expected Result:
✅ 모든 진행 중 상태에서 통합 수정 모달 사용
✅ 완료 대기 상태 정보 포함 표시
✅ 체계적인 히스토리 추적 방안 수립
✅ 투명하고 추적 가능한 이슈 관리 기반 마련
📊 통계 카드 확장:
- 기존 3개 → 4개 카드로 확장
- 새로운 '완료 대기' 카드 추가
🟣 완료 대기 카드:
- 보라색 테마 (bg-purple-50)
- 모래시계 아이콘 (fas fa-hourglass-half)
- completion_requested_at 필드 기준 카운트
🔢 통계 계산 로직:
- 총 부적합: 전체 이슈 수
- 진행 중: review_status='in_progress' && !completion_requested_at
- 완료 대기: review_status='in_progress' && completion_requested_at
- 완료됨: review_status='completed'
🎨 UI 개선:
- 4열 그리드 레이아웃 (md:grid-cols-4)
- 일관된 색상 체계 유지
- 각 카드별 고유 아이콘과 색상
💡 사용자 경험:
- 완료 대기 상태를 한눈에 파악 가능
- 프로젝트 필터링 시 실시간 업데이트
- 관리자가 승인 대기 건수 즉시 확인
Expected Result:
✅ 총 부적합 | 진행 중 | 완료 대기 | 완료됨
✅ 완료 대기 건수 실시간 표시
✅ 프로젝트별 필터링 지원
✅ 시각적으로 구분되는 보라색 테마
🎯 상태별 UI 개선:
- 진행 중: 파란색 (일반 상태)
- 긴급: 주황색 (마감 3일 이내)
- 지연됨: 빨간색 (마감일 초과)
- 완료 대기: 보라색 (완료 신청 후)
🔒 완료 대기 상태 제한:
- 모든 입력 필드 비활성화 (readonly/disabled)
- 상세 내용 수정 버튼 → '완료 대기 중' 표시
- 저장 버튼 제거
- 회색 배경으로 비활성화 표시
📋 완료 대기 상태 정보 표시:
- 완료 신청 정보 섹션 추가
- 완료 사진, 코멘트, 신청일시 표시
- 보라색 테마로 구분
🔧 3단계 버튼 시스템:
1. 수정: 완료 대기 상태 해제 → 수정 모드 전환
2. 반려: 완료 신청 반려 + 사유 입력
3. 확인: 모든 정보 확인 모달 → 최종 완료 처리
📊 완료 확인 모달:
- 기본 정보 (프로젝트, 부적합명, 상세내용, 원인분류)
- 관리 정보 (해결방안, 담당부서/자, 조치예상일)
- 완료 신청 정보 (완료 사진, 코멘트, 신청일시)
- 업로드 사진 (원본 사진 1, 2)
- 최종 확인 버튼
🔄 API 엔드포인트 (구현 예정):
- POST /api/issues/{id}/reset-completion (수정 모드 전환)
- POST /api/issues/{id}/reject-completion (반려 처리)
- POST /api/issues/{id}/final-completion (최종 완료)
💡 사용자 경험:
- 상태별 색상 코딩으로 직관적 구분
- 완료 대기 시 수정 불가 명확 표시
- 모든 정보 한눈에 확인 가능한 모달
- 단계별 승인 프로세스
Expected Result:
✅ 완료 대기 상태 시각적 구분
✅ 수정 기능 적절한 제한
✅ 체계적인 완료 승인 프로세스
✅ 관리자 친화적 인터페이스
📊 통계 카드 재구성:
- 전체 진행 중: 모든 진행 중인 이슈 수
- 오늘 신규: 오늘 수신함에서 진행중으로 넘어온 이슈
- 완료 대기: 완료 신청된 이슈 (completion_requested_at 존재)
- 지연 중: 마감일이 지난 이슈
🎨 UI 개선:
- 완료 대기: 보라색 배경 + 모래시계 아이콘
- 지연 중: 빨간색 배경 + 시계 아이콘
- 각 카드별 애니메이션 점 효과 유지
🔧 로직 개선:
- reviewed_at 기준으로 오늘 신규 계산
- completion_requested_at 필드로 완료 대기 상태 판별
- expected_completion_date 기준으로 지연 상태 판별
- 실시간 통계 업데이트
💡 사용자 경험:
- 한눈에 파악 가능한 상태별 분류
- 색상 코딩으로 우선순위 구분
- 직관적인 아이콘 사용
Expected Result:
✅ 전체 진행 중 | 오늘 신규 | 완료 대기 | 지연 중
✅ 실시간 상태별 통계 표시
✅ 시각적으로 구분되는 색상 체계
✅ 관리자가 우선순위를 쉽게 파악
🔧 백엔드 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 오류 해결
🎯 진행 상태 4단계 세분화:
- 진행 중 (파란색): 일반적인 진행 상태
- 긴급 (주황색): 마감 3일 이내
- 지연됨 (빨간색): 마감시간 초과
- 완료 대기 (보라색): 완료 신청 후 승인 대기
🔧 상태 판별 로직:
- 마감시간 기준 자동 상태 변경
- completion_requested_at 필드로 완료 대기 상태 판별
- 각 상태별 고유 색상, 아이콘, 텍스트
📱 완료 신청 기능:
- 마감시간 카드 우하단에 '완료신청' 버튼
- 완료 사진 업로드 (필수, 5MB 제한)
- 완료 코멘트 입력 (선택사항)
- 실시간 이미지 미리보기
🗄️ DB 구조 확장:
- completion_requested_at: 완료 신청 시간
- completion_requested_by_id: 신청자 ID
- completion_photo_path: 완료 사진 경로
- completion_comment: 완료 코멘트
🎨 UI/UX 개선:
- 상태별 그라데이션 배경색
- 애니메이션 아이콘 (톱니바퀴, 경고, 시계 등)
- 드래그 앤 드롭 사진 업로드
- 모달 기반 완료 신청 폼
💡 워크플로우:
1. 담당자가 작업 완료 후 '완료신청' 클릭
2. 완료 사진과 코멘트 업로드
3. 상태가 '완료 대기'로 변경
4. 관리자 승인 후 '완료됨'으로 최종 처리
🔐 보안 및 검증:
- 이미지 파일 타입 검증
- 파일 크기 제한 (5MB)
- Base64 인코딩으로 안전한 전송
- 사용자 인증 및 권한 확인
Expected Result:
✅ 진행 상황을 한눈에 파악 가능한 색상 코딩
✅ 마감 관리 자동화 (긴급/지연 상태)
✅ 완료 신청 프로세스로 품질 관리 강화
✅ 직관적인 UI로 사용자 경험 향상
🐛 해결된 오류들:
1️⃣ ReferenceError: allIssues 변수 참조 오류:
- allIssues → issues로 변수명 수정
- 관리함 페이지에서 사용하는 올바른 변수명 적용
- cancelDetailEdit(), saveDetailEdit() 함수에서 수정
2️⃣ TypeError: additionalInfoForm 요소 참조 오류:
- document.getElementById() 결과 null 체크 추가
- 요소가 존재할 때만 이벤트 리스너 등록
- 안전한 DOM 요소 접근으로 개선
🔧 코드 안정성 개선:
- DOM 요소 존재 여부 확인 후 접근
- 변수 스코프 일관성 유지
- 오류 방지를 위한 방어적 프로그래밍
💡 수정 사항:
- issues.find() 사용으로 올바른 데이터 접근
- if (additionalInfoForm) 조건부 이벤트 리스너 등록
- 중괄호 누락 문제 해결
Expected Result:
✅ 상세 내용 편집 기능 정상 작동
✅ JavaScript 오류 없는 안정적인 실행
✅ DOM 요소 안전 접근
✅ 일관된 변수 참조
📝 상세 내용 인라인 편집 시스템:
🎨 프론트엔드 UI 개선:
- 상세 내용 섹션에 '수정' 버튼 추가
- 읽기 모드 ↔ 편집 모드 토글 기능
- 편집 시 텍스트 영역으로 전환
- 취소/저장 버튼으로 편집 제어
- 실시간 UI 업데이트
🔧 백엔드 API 확장:
- PUT /api/management/{issue_id} 엔드포인트 추가
- ManagementUpdateRequest에 final_description 필드 추가
- 진행중 상태 이슈만 수정 가능하도록 제한
- 권한 검증 및 오류 처리
💡 핵심 기능:
- 부적합명은 유지하고 상세 내용만 수정
- 수신함에서 입력한 상세 부분을 관리함에서 보완 가능
- 원본 데이터와 수정 데이터 자동 결합
- 실시간 저장 및 화면 반영
🔐 보안 및 제한사항:
- 관리함 페이지 권한 필요
- 진행중 상태 이슈만 편집 가능
- 완료된 이슈는 편집 불가
- 사용자 인증 및 권한 검증
🎯 사용 시나리오:
1. 관리함 진행중 탭에서 '수정' 버튼 클릭
2. 텍스트 영역에서 상세 내용 편집
3. 저장 시 부적합명과 자동 결합
4. 실시간으로 화면에 반영
Expected Result:
✅ 수신함 검토 후 관리함에서 상세 내용 보완 가능
✅ 직관적인 인라인 편집 인터페이스
✅ 데이터 일관성 유지 (부적합명 + 상세 내용)
✅ 안전한 권한 기반 편집 제어
🗑️ 정렬 기준 필터 완전 제거:
- 정렬 기준 드롭다운 UI 삭제
- sortIssues() 함수 제거
- 관련 함수 호출 제거
💡 UI 단순화 효과:
- 필터 영역이 더 깔끔해짐
- 프로젝트 선택에 집중
- 사용자 인터페이스 복잡도 감소
🎯 기본 정렬 유지:
- 날짜별 그룹화는 그대로 유지
- 최신순 정렬 (newest first) 기본 적용
- 핵심 기능은 보존하면서 불필요한 옵션만 제거
Expected Result:
✅ 더 간단하고 직관적인 필터 인터페이스
✅ 프로젝트 선택 + 새로고침 버튼만 유지
✅ 사용자 혼란 요소 제거
✅ 핵심 기능에 집중
🖼️ 이미지 크기 최대 확장:
- 이미지 크기: 20x20 → 24x24 (20% 추가 증가)
- 아이콘 크기: text-lg → text-xl (더 선명한 표시)
- 카드 영역을 최대한 활용하여 시각적 정보 전달력 극대화
🎯 진행중 태그 프리미엄 디자인:
- 배경: 연한 파란색 → 진한 파란색 그라데이션 (blue-500 to blue-600)
- 텍스트: 그라데이션 → 흰색 볼드체 (더 강한 대비)
- 패딩: px-3 py-1 → px-4 py-1.5 (더 풍성한 느낌)
- 그림자: shadow-sm → shadow-md (입체감 강화)
- 아이콘: 정적 시계 → 회전하는 톱니바퀴 (fa-cog fa-spin)
- 상태 점: 파란색 → 흰색 (더 명확한 대비)
📅 발생날짜 독립 디자인:
- 회색 배경 캡슐로 분리하여 정보 구분 명확화
- 진행중 태그와 시각적으로 분리되어 가독성 향상
👥 일정 & 담당 순서 변경:
- 담당자 → 마감시간 순으로 재배치
- 사람 중심의 정보 우선 표시
- 패딩 증가 (p-2 → p-3)로 더 여유로운 느낌
🎨 전체적인 시각적 개선:
- 더 강한 색상 대비로 정보 구분 명확화
- 애니메이션 효과로 생동감 추가
- 공간 활용도 최적화로 정보 밀도 향상
Expected Result:
✅ 이미지 가시성 44% 향상 (16→24px)
✅ 진행중 상태의 강력한 시각적 임팩트
✅ 담당자 우선 표시로 책임 소재 명확화
✅ 전체적으로 더 프로페셔널한 느낌
🎨 헤더 레이아웃 최적화:
- 진행중 태그와 발생날짜를 한 줄로 배치
- '발생 날짜' → '발생:' 으로 간소화하여 공간 절약
- 우측 상단 공간 효율성 향상
📏 부적합명 크기 조정:
- 텍스트 크기: text-lg → text-base (18px → 16px)
- 패딩: py-2 → py-1.5 (8px → 6px)
- 전체적으로 더 컴팩트한 느낌
🖼️ 이미지 크기 확대:
- 이미지 크기: 16x16 → 20x20 (25% 증가)
- 간격: space-x-2 → space-x-3 (8px → 12px)
- 상태 표시 점: 2x2 → 3x3 (더 명확한 시각적 피드백)
- 아이콘 크기: text-sm → text-lg (더 선명한 표시)
💡 공간 배치 개선:
- 상단 영역 압축으로 하단 콘텐츠 영역 확보
- 이미지 가시성 향상으로 시각적 정보 전달력 증대
- 전체적인 정보 밀도 최적화
Expected Result:
✅ 헤더 영역 공간 효율성 향상
✅ 이미지 가시성 25% 증가
✅ 진행중/발생날짜 한눈에 파악 가능
✅ 전체적으로 더 균형잡힌 레이아웃
🎨 헤더 레이아웃 재구성:
- 원인 태그를 오른쪽으로 이동하여 균형감 향상
- 발생 날짜를 오른쪽 상단에 배치하여 시간 정보 강조
- 카테고리 한글 표시 (자재 누락, 설계 오류, 반입 불량, 검사 누락, 기타)
📊 콘텐츠 영역 2x2 그리드 재구성:
- 상세 내용 | 해결 방안 (상단 나란히 배치)
- 이미지 | 일정 & 담당 (하단 배치)
🎯 해결 방안 섹션 강화:
- 녹색 테마로 해결책 강조 (bg-green-50, border-green-200)
- 전구 아이콘으로 아이디어 시각화
- 상세 내용과 동등한 비중으로 배치
💼 일정 & 담당 UI 개선:
- 마감시간: 오렌지 테마 카드 (긴급성 표현)
- 담당자: 보라색 테마 카드 (책임감 표현)
- 각각 아이콘과 색상으로 구분
- 컴팩트한 카드 형태로 가독성 향상
🖼️ 이미지 섹션 최적화:
- 크기를 16x16으로 조정하여 공간 효율성 증대
- 상태 표시 점 크기 축소로 깔끔함 유지
🏷️ 카테고리 태그 개선:
- 영어 → 한글 표시로 직관성 향상
- 오른쪽 배치로 시각적 균형 개선
Expected Result:
✅ 정보 우선순위에 따른 배치 최적화
✅ 상세 내용과 해결 방안의 동등한 비중
✅ 색상 코딩으로 정보 구분 명확화
✅ 컴팩트하면서도 가독성 높은 레이아웃
🎨 부적합명 강조 디자인:
- 파란색 배경 박스 (bg-blue-50)
- 왼쪽 파란색 보더 (border-l-4 border-blue-400)
- 진한 파란색 텍스트 (text-blue-900)
- 볼드 폰트로 중요도 강조
📝 상세 내용 보조 디자인:
- 회색 배경 (bg-gray-50)
- 얇은 회색 테두리 (border border-gray-200)
- 회색 이탤릭 텍스트 (text-gray-600 italic)
- 아이콘과 라벨로 구분 명확화
💡 시각적 계층 구조:
1️⃣ 부적합명: 눈에 띄는 파란색 강조 박스
2️⃣ 상세 내용: 차분한 회색 보조 정보
🔧 적용 범위:
- 현황판 카드 레이아웃
- 관리함 진행중 카드 레이아웃
- 일관된 디자인 언어 적용
Expected Result:
✅ 부적합명이 즉시 눈에 들어옴
✅ 상세 내용과 명확한 구분
✅ 정보 우선순위가 시각적으로 명확
✅ 전체적인 가독성 향상
🎯 부적합 정보 구조화 개선:
📝 수신함 검토 모달 개선:
- '설명' → '부적합명' + '상세 내용'으로 분리
- 부적합명: 간단한 제목 (필수 입력)
- 상세 내용: 자세한 설명 (선택 입력)
- 저장 시 첫 번째 줄에 제목, 나머지는 상세 내용으로 결합
🏢 관리함 진행중 페이지 개선:
- No. 옆에 프로젝트명 표시 (작은 글씨)
- 부적합명을 카드 헤더에 큰 제목으로 표시
- '부적합 내용' → '상세 내용'으로 변경
- getIssueTitle(), getIssueDetail() 헬퍼 함수 추가
📊 현황판 페이지 개선:
- No. 옆에 프로젝트명과 카테고리 태그 표시
- 부적합명을 카드 헤더에 제목으로 표시
- '부적합 내용' → '상세 내용'으로 변경
- 동일한 헬퍼 함수로 일관성 유지
💡 핵심 개선사항:
- 정보 계층 구조 명확화 (제목 vs 상세)
- 시각적 가독성 향상 (헤더에 중요 정보 집중)
- 일관된 표시 방식 (수신함 → 관리함 → 현황판)
- 기존 데이터 호환성 유지
🔧 기술적 구현:
- 첫 번째 줄을 제목으로 추출
- 두 번째 줄부터를 상세 내용으로 분리
- 기존 description 필드 활용 (DB 변경 없음)
- 폴백 처리로 안정성 확보
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로 사용자 경험 향상
🎨 현황판 카드 레이아웃 개선사항:
1️⃣ 헤더 레이아웃 재구성:
- ❌ 단순한 좌우 배치 → ✅ 좌측: No. + 원인분류 태그, 우측: 긴급 + 진행중 상태
- 원인분류를 No. 옆으로 이동하여 한눈에 파악 가능
- 진행중 상태를 우측 상단으로 이동하여 시각적 균형 개선
2️⃣ 이미지 미리보기 기능 추가:
- ❌ 아이콘만 표시 → ✅ 실제 이미지 미리보기
- 크기 확대: 16x16px → 20x20px (25% 증가)
- 실제 이미지 로드 실패시 fallback 아이콘 표시
- object-cover로 이미지 비율 유지하며 완전 채움
3️⃣ 레이아웃 최적화:
- 불필요한 '원인 분류' 섹션 삭제 (헤더로 이동)
- 하단 '진행 중' 상태 표시 제거 (헤더로 이동)
- 해결방안을 col-span-2로 확장하여 공간 효율성 증대
- 전체적으로 더 깔끔하고 정보 밀도 높은 레이아웃
4️⃣ 시각적 개선:
- 이미지 hover 효과: 그림자 + 확대 애니메이션
- 상태 표시 아이콘 추가 (시계 아이콘)
- 그라데이션과 그림자 효과로 현대적 느낌
- 정보 계층 구조 명확화
🎯 사용성 개선 효과:
- 이미지 내용을 바로 확인 가능 (클릭 전 미리보기)
- 중요 정보(No., 원인분류, 상태)가 상단에 집중
- 공간 활용도 증가로 더 많은 정보 표시
- 시각적 노이즈 감소로 가독성 향상
🔧 기술적 개선:
- img 태그 onerror 핸들링으로 안정성 확보
- CSS object-cover로 이미지 왜곡 방지
- 반응형 레이아웃 유지
- 접근성 개선 (alt 텍스트 추가)
Expected Result:
✅ 실제 이미지 미리보기로 내용 파악 용이
✅ 정보 배치 최적화로 스캔 효율성 증대
✅ 깔끔하고 현대적인 카드 디자인
✅ 공간 효율성과 정보 밀도 향상
🎨 관리함 UI 개선사항:
1️⃣ 진행중 카드 헤더:
- ❌ 단순한 파란색 배지 → ✅ 그라데이션 텍스트 + 애니메이션 점
- 현황판과 동일한 세련된 스타일 적용
2️⃣ 완료됨 테이블 No. 셀:
- ❌ 단순한 텍스트 → ✅ 녹색 그라데이션 + 상태 점
- 완료 상태를 시각적으로 강조
3️⃣ 테이블 헤더 개선:
- 진행중: 파란색 그라데이션 + 애니메이션 점
- 완료됨: 녹색 그라데이션 + 상태 점
- 각 탭의 성격에 맞는 색상 구분
4️⃣ 모달 제목 개선:
- ❌ 단순한 텍스트 → ✅ 그라데이션 No. + 상태 점
- '부적합 No.1 상세 정보' 형태로 시각적 강조
🎯 시각적 개선 효과:
- 프로젝트별 순번이 더욱 눈에 띄게 표시
- 진행중(파란색) vs 완료됨(녹색) 상태 구분
- 현황판과 일관된 디자인 언어
- 애니메이션 효과로 생동감 추가
Expected Result:
✅ 관리함에서 No.1, No.2... 가 세련되게 표시
✅ 상태별 색상 구분으로 직관적 인식
✅ 전체적으로 통일된 브랜드 경험
🎯 핵심 개선사항:
- 수신함에서 진행중/완료로 상태 변경시 project_sequence_no 자동 할당
- 프로젝트별로 1부터 시작하는 깔끔한 순번 체계
🔧 백엔드 수정:
- inbox.py: update_issue_status에 자동 할당 로직 추가
- generate_project_sequence_no() DB 함수 활용
- 진행중/완료 상태 변경시에만 실행
📁 DB 마이그레이션:
- 017_fix_project_sequence_no.sql 생성
- 기존 데이터 보정 (누락된 순번 0개 확인)
- migration_log 테이블 구조에 맞게 로그 기록
📋 문서화:
- DB_CHANGES_LOG.md 생성 및 업데이트
- 배포 가이드, 검증 방법, 주의사항 명시
- Docker 환경 기준 실행 방법 제공
✅ 실행 완료 상태:
- 마이그레이션 성공 (2025-10-26 11:15:44+09:00)
- 백엔드 서비스 재시작 완료
- 모든 검증 항목 통과
Expected Result:
🎯 현황판에서 프로젝트별 No.1, No.2, No.3... 표시
🎯 6개월 후에도 각 프로젝트 내에서 작은 번호 유지
🎯 전체 통합 번호 대신 프로젝트별 깔끔한 순번 체계
📋 Information Display Improvements:
1️⃣ 마감시간/담당자 섹션 개선:
- ❌ '마감시간 | 담당부서 담당자' (복잡한 한 줄 표시)
- ✅ 마감시간: / 담당자: (깔끔한 분리 표시)
- 담당부서 제거 (불필요한 정보)
- 각각 별도 라인으로 구분하여 가독성 향상
2️⃣ 부적합 내용 섹션 개선:
- ❌ 단순한 텍스트 표시
- ✅ 제목과 본문 구분 표시
- 첫 번째 단어를 제목으로 강조 (font-semibold)
- 나머지 내용을 본문으로 표시 (작은 글씨)
- 회색 배경 + 파란색 좌측 테두리로 시각적 구분
🎨 Visual Enhancements:
- 마감시간/담당자: 라벨(text-xs) + 값(font-medium) 구조
- 부적합 내용: 배경 박스 + 좌측 강조 테두리
- 제목: font-semibold + 약간 큰 글씨
- 본문: 작은 글씨 + 줄간격 조정 (leading-relaxed)
📱 Better Readability:
- 정보 계층 구조 명확화
- 시각적 구분으로 스캔 가능성 향상
- 공간 효율성과 가독성 균형
Expected Result:
✅ 더 깔끔한 정보 표시
✅ 제목-본문 구분으로 내용 파악 용이
✅ 마감시간/담당자 정보 명확화
✅ 시각적 계층 구조 개선
🎨 Modern Card Design:
- ❌ 촌스러운 작은 이미지 → ✅ 세련된 큰 이미지 (16x16px)
- 그라데이션 배경과 테두리로 고급스러운 느낌
- 이미지 있을 때 초록색 상태 점 표시
🖼️ Enhanced Image Display:
- 크기: 8x8px → 16x16px (2배 확대)
- 그라데이션 배경 (파란색 계열)
- hover 효과: 그림자 + 확대 애니메이션
- 상태 표시: 우상단 초록색 점으로 이미지 존재 표시
🎯 Visual Improvements:
- No. 텍스트: 그라데이션 텍스트 효과
- 긴급 배지: 🔥 이모지 + 그라데이션 배경
- 원인 분류: 태그 아이콘 + 노란-주황 그라데이션
- 해결방안: 회색 배경 박스로 구분
- 진행 중 상태: 파란색 그라데이션 배경 + 테두리
🚀 Advanced Hover Effects:
- 카드 전체: 위로 이동 + 살짝 확대
- 고급 그림자 효과 (3단계 레이어)
- 파란색 글로우 효과
- 부드러운 cubic-bezier 애니메이션
🎨 Color Scheme:
- 배경: 미묘한 그라데이션 (흰색 → 연한 회색)
- 이미지: 파란색 계열 그라데이션
- 원인분류: 노란-주황 그라데이션
- 상태: 파란-인디고 그라데이션
Expected Result:
✅ 훨씬 세련되고 모던한 디자인
✅ 이미지 가독성 대폭 향상
✅ 고급스러운 hover 애니메이션
✅ 직관적인 시각적 피드백
🎯 Simplified Card Layout:
- ❌ 긴 편집 가능한 카드 → ✅ 간결한 읽기 전용 카드
- 2x3 그리드 형식으로 정보 압축
- 카드 높이 대폭 단축
📋 Grid Structure (2 columns x 3 rows):
Row 1: 부적합 내용 | 발생 날짜
Row 2: 이미지 | 마감시간 + 담당부서/담당자
Row 3: 원인 분류 | 해결 방안
Bottom: 상태 (진행 중)
🎨 Visual Improvements:
- 작은 이미지 아이콘 (8x8px)
- 원인 분류: 노란색 배지
- 마감시간과 담당 정보 결합
- 중앙 정렬된 상태 표시
📱 Compact Design:
- 패딩 축소 (p-6 → p-4)
- 텍스트 크기 최적화 (text-sm)
- 불필요한 여백 제거
- 한눈에 들어오는 정보 배치
🔧 Read-Only Features:
- 모든 필드 읽기 전용
- 편집 버튼 제거
- 사진 클릭 시 모달 확대만 가능
- 깔끔한 정보 표시
Expected Result:
✅ 훨씬 간결한 카드 디자인
✅ 한눈에 들어오는 정보 배치
✅ 읽기 전용 모드
✅ 모바일 친화적 크기
🔄 Complete Layout Change:
- ❌ 단순 카드 그리드 → ✅ 관리함 스타일 날짜별 그룹화
- 날짜별 접기/펼치기 기능 추가
- 업로드일 기준으로 그룹화 및 최신순 정렬
📋 Card Layout (Management Style):
- 헤더: No., 긴급 표시 + 저장/완료처리 버튼
- 업로드 사진: 맨 위로 이동 (2개 슬롯, 없으면 '사진 없음')
- 부적합 내용: 읽기 전용 텍스트
- 원인 분류: 노란색 배지로 표시
- 관리 정보: 편집 가능한 입력 필드들
🎯 Interactive Features:
- 해결방안: textarea (편집 가능)
- 담당부서: select dropdown (편집 가능)
- 담당자: text input (편집 가능)
- 조치 예상일: date input (편집 가능)
- 원인부서: 읽기 전용
📅 Date Grouping:
- 업로드일(report_date) 기준 그룹화
- 날짜 헤더: 클릭으로 접기/펼치기
- 각 그룹별 건수 표시
- '업로드일' 배지로 기준 명시
🎨 Visual Improvements:
- 이모지 아이콘으로 필드 구분 (💡🏢👤📅)
- 진행 중 상태 애니메이션 유지
- 부드러운 hover 효과
- 일관된 색상 체계
🔧 Functionality:
- toggleDateGroup() 함수로 그룹 접기/펼치기
- 사진 모달 확대 기능 유지
- 긴급 표시 (3일 이내 마감)
- 저장/완료처리 버튼 (UI만, 기능은 추후)
Expected Result:
✅ 관리함과 완전히 동일한 UI/UX
✅ 날짜별 체계적 정리
✅ 편집 가능한 관리 인터페이스
✅ 직관적인 정보 표시
🎨 UI Format Change:
- ❌ 가로 테이블 형식 (정보 압축, 가독성 저하)
- ✅ 관리함 진행 중 카드 형식 (직관적, 모바일 친화적)
📋 Card Layout Features:
- 헤더: No., 긴급 표시, 등록일
- 기본 정보: 프로젝트, 부적합 내용, 원인 분류
- 관리 정보: 해결방안, 담당부서, 담당자, 조치 예상일, 원인부서
- 업로드 사진: 클릭 시 모달 확대
- 진행 중 표시: 애니메이션 점 + 상태 표시
🎯 UX Improvements:
- 3컬럼 반응형 그리드 (데스크톱/태블릿/모바일)
- 카드 hover 효과: 위로 이동 + 그림자 + 좌측 파란 테두리
- 긴급 표시: 예상완료일 3일 이내 시 빨간 배지
- 부드러운 애니메이션: 0.3초 transition
- 사진 hover 효과: 확대 + 색상 변경
📱 Mobile Optimization:
- 1컬럼 레이아웃으로 모바일 최적화
- 터치 친화적 카드 인터페이스
- 스크롤 가능한 세로 배치
- 적절한 패딩과 간격
🎨 Visual Enhancements:
- 진행 중 상태 애니메이션 (pulse 효과)
- 일관된 색상 체계 (파란색 강조)
- 깔끔한 카드 디자인
- 정보 계층 구조 명확화
🔧 Code Structure:
- createIssueRow → createIssueCard 함수 변경
- 테이블 HTML → 카드 그리드 HTML
- 테이블 CSS → 카드 CSS 스타일
- 반응형 그리드 시스템 적용
Expected Result:
✅ 관리함과 일관된 UI/UX
✅ 대폭 향상된 가독성
✅ 모바일 최적화
✅ 직관적인 정보 표시
🔄 Major Changes:
- ❌ 복잡한 모바일 캘린더 → ✅ 간단한 시작/끝 날짜 입력
- ❌ 전체 부적합 조회 → ✅ 자신이 올린 내용만 조회
📅 Date Filter Improvements:
- 시작날짜/끝날짜 직접 입력 방식
- 빠른 선택 버튼: 오늘, 이번 주, 이번 달, 전체
- 날짜 기준: report_date (등록일) 기준으로 필터링
- 기본값: 이번 주 (일요일~오늘)
🔒 Privacy Enhancement:
- 자신이 올린 부적합 사항만 표시 (reporter_id 기준)
- 전체 항목은 현황판에서 확인 가능
- 개인 데이터 보호 강화
🎯 UX Improvements:
- 모바일 캘린더 CSS/JS 제거로 페이지 로딩 속도 향상
- 직관적인 날짜 입력 인터페이스
- 날짜 유효성 검증 (시작날짜 ≤ 끝날짜)
- 명확한 에러 메시지
📱 Mobile Friendly:
- 네이티브 date picker 사용
- 터치 친화적 인터페이스
- 반응형 레이아웃 유지
🔧 Code Cleanup:
- 모바일 캘린더 관련 코드 완전 제거
- 불필요한 CSS/JS 의존성 제거
- 함수 간소화 및 최적화
Expected Result:
✅ 더 빠르고 직관적인 날짜 선택
✅ 개인 데이터 보호
✅ 모바일 최적화
✅ 코드 복잡성 감소
🔄 Major UI Redesign:
- ❌ 세로 카드 레이아웃 (가독성 저하)
- ✅ 가로 테이블 레이아웃 (한눈에 정보 확인)
📊 Table Structure:
- 11개 컬럼: No., 프로젝트, 부적합내용, 카테고리, 해결방안, 담당부서, 담당자, 예상완료일, 원인부서, 사진, 등록일
- 가로 스크롤 지원으로 모든 정보 표시
- 각 컬럼별 최적화된 너비 설정
🎯 UX Improvements:
- 긴급 표시: 예상완료일 3일 이내 시 빨간 배지
- 텍스트 truncate: 긴 내용은 말줄임표로 처리 (hover시 전체 내용 표시)
- 사진 아이콘: 클릭 시 모달로 확대
- 행 hover 효과: 마우스 오버 시 배경색 변경
📱 Responsive Features:
- 가로 스크롤로 모바일에서도 모든 정보 확인 가능
- Sticky 헤더: 스크롤 시 헤더 고정
- 최소 너비 보장으로 정보 압축 방지
🎨 Visual Enhancements:
- 깔끔한 테이블 디자인
- 적절한 패딩과 간격
- 일관된 색상 체계
- 부드러운 hover 애니메이션
Expected Result:
✅ 대폭 향상된 가독성
✅ 한 화면에서 모든 정보 확인
✅ 효율적인 공간 활용
✅ 관리함과 일관된 UX
🎨 UI Redesign:
- 기존 프로젝트별 그룹 카드 → 개별 이슈 카드로 변경
- 관리함 진행 중 페이지와 동일한 카드 형식 적용
- 읽기 전용으로 구현 (수정 기능 없음)
📋 Card Content:
- 헤더: No., 긴급 표시, 등록일
- 기본 정보: 프로젝트, 부적합 내용, 카테고리
- 관리 정보: 해결방안, 담당부서, 담당자, 예상완료일, 원인부서
- 사진 정보: 업로드 사진 미리보기 (클릭 시 확대)
🔧 Features:
- 내용이 없는 부분은 '-'로 표시
- 사진 모달 확대 기능 (ESC 키 지원)
- 긴급도 표시 (예상완료일 3일 이내)
- 반응형 그리드 레이아웃 (1/2/3 컬럼)
🎯 Layout:
- 데스크톱: 3컬럼 그리드
- 태블릿: 2컬럼 그리드
- 모바일: 1컬럼 그리드
Expected Result:
✅ 관리함과 일관된 UI/UX
✅ 상세 정보 한눈에 확인 가능
✅ 사진 확대 기능으로 편의성 향상
✅ 읽기 전용으로 안전한 조회
🔧 Permission System Fix:
- loadPermissions() → setUser() + loadPagePermissions() 수정
- PagePermissionManager 중복 생성 제거 (전역 인스턴스 사용)
- issues_dashboard 페이지를 permissions.js에 추가 (defaultAccess: true)
🐛 Fixed Error:
- ❌ TypeError: window.pagePermissionManager.loadPermissions is not a function
- ✅ 올바른 메서드 호출: setUser() + loadPagePermissions()
📋 Permission Structure:
- issues_dashboard: { title: '현황판', defaultAccess: true }
- 모든 사용자가 기본적으로 현황판 접근 가능
Expected Result:
✅ 현황판 페이지 권한 시스템 정상 초기화
✅ 페이지 접근 권한 확인 정상 동작
✅ 공통 헤더 및 메뉴 정상 표시
🐛 Script Path Fix:
- common-header.js 경로 수정: /static/js/components/common-header.js
- page-manager.js 경로 수정: /static/js/components/page-manager.js
- 다른 페이지들과 동일한 경로 구조로 통일
🔧 Fixed Paths:
- ❌ /static/js/common-header.js
- ✅ /static/js/components/common-header.js
- ❌ /static/js/page-manager.js
- ✅ /static/js/components/page-manager.js
Expected Result:
✅ 현황판 페이지 정상 로드
✅ 404 오류 해결
✅ 무한 로딩 문제 해결
✅ 공통 헤더 및 권한 시스템 정상 동작
📍 Menu Structure Change:
- 현황판을 목록관리 서브메뉴에서 제거
- 목록관리 옆에 독립적인 메인 메뉴로 배치
- 보고서 앞에 위치하도록 순서 조정
🎯 New Menu Layout:
작업보고서 | 일일 공수 | 부적합 등록 | 부적합 조회 | 목록관리 | 현황판 | 보고서 | 프로젝트 관리 | 사용자 관리
🎨 Menu Properties:
- 아이콘: fas fa-chart-line
- 색상: 보라색 (text-purple-600)
- 배경: bg-purple-50 hover:bg-purple-100
- URL: /issues-dashboard.html
Expected Result:
✅ 현황판이 목록관리 옆에 독립 메뉴로 표시
✅ 서브메뉴 없는 직접 접근 가능한 메뉴
✅ 목록관리와 보고서 사이에 위치
🔧 Menu Integration:
- 공통 헤더의 목록관리 서브메뉴에 현황판 추가
- 아이콘: fas fa-chart-line (보라색)
- URL: /issues-dashboard.html
🔓 Permission Update:
- 현황판 기본 접근 권한을 True로 변경
- 모든 사용자가 기본적으로 현황판 접근 가능
- 사용자 관리에서 권한 설정 가능
📍 Navigation Path:
목록관리 → 현황판 (4번째 서브메뉴)
- 수신함
- 관리함
- 폐기함
- 현황판 ← NEW
Expected Result:
✅ 헤더 메뉴에서 현황판 접근 가능
✅ 모든 사용자 기본 접근 권한 보유
✅ 사용자 관리에서 권한 설정 표시
📊 Dashboard Overview Page:
- 진행 중인 부적합들을 프로젝트별로 한눈에 볼 수 있는 현황판
- 실시간 통계 및 시각적 대시보드 구현
- 프로젝트 선택 및 다양한 정렬 옵션 제공
🎯 Key Features:
- 전체 통계 카드 (전체 진행 중, 오늘 신규, 지연 위험, 활성 프로젝트)
- 프로젝트별 그룹화된 이슈 카드 표시
- 긴급도 기반 우선순위 표시 (마감일 3일 이내)
- 프로젝트 필터링 및 정렬 기능
🎨 Visual Design:
- 그라데이션 통계 카드 with 호버 애니메이션
- 프로젝트 카드 with 좌측 테두리 호버 효과
- 이슈 미니 카드 with 긴급도 색상 구분
- 반응형 그리드 레이아웃
📋 Dashboard Components:
- 4개 통계 카드: 진행 중, 신규, 지연 위험, 활성 프로젝트
- 프로젝트 선택 드롭다운
- 정렬 옵션: 우선순위, 신고일순, 마감일순
- 프로젝트별 이슈 그룹화 표시
🔧 Technical Implementation:
- issues_dashboard 페이지 권한 추가
- 진행 중 상태(in_progress) 이슈만 필터링
- 긴급도 계산 로직 (마감일 기준)
- 프로젝트별 그룹화 및 통계 계산
- 공통 헤더 및 권한 시스템 적용
🚀 Interactive Features:
- 이슈 카드 클릭 → 관리함 상세보기 이동
- 실시간 새로고침 기능
- 프로젝트별 필터링
- 우선순위/날짜/마감일 기준 정렬
💡 User Experience:
- 로딩 애니메이션 및 페이드인 효과
- 빈 상태 메시지
- 긴급 이슈 시각적 강조
- 직관적인 네비게이션
Expected Result:
✅ 진행 중인 부적합 현황을 한눈에 파악
✅ 프로젝트별 작업 우선순위 확인
✅ 지연 위험 이슈 조기 발견
✅ 효율적인 부적합 관리 워크플로우
🎯 Card-Based Interface for In-Progress Issues:
- 테이블 형태에서 카드 형태로 완전 변경
- 입력하기 편한 사용자 친화적 인터페이스 구현
- 진행 중/완료됨 탭별 다른 레이아웃 적용
📋 Enhanced Card Layout:
- 2컬럼 그리드 레이아웃 (기본정보 vs 편집정보)
- 카드 헤더: No. + 프로젝트명 + 액션 버튼들
- 왼쪽: 읽기전용 정보 (내용, 원인, 업로드사진)
- 오른쪽: 편집가능 정보 (해결방안, 담당부서/담당자, 예상일)
🎨 Visual Improvements:
- 아이콘과 색상으로 필드 구분
- 호버 효과 (카드 상승, 입력 필드 확대)
- 상태 배지 및 진행 상황 표시
- 사진 썸네일 개선 (테두리, 호버 효과)
✏️ Input Field Enhancements:
- 해결방안: 3줄 textarea with placeholder
- 담당부서: 아이콘이 있는 select 드롭다운
- 담당자: placeholder가 있는 text input
- 조치예상일: date picker with 아이콘
- 모든 필드에 focus 효과 적용
🔄 Tab-Specific Rendering:
- 진행 중: 카드 형식 (space-y-4 컨테이너)
- 완료됨: 테이블 형식 (기존 유지)
- displayIssues()에서 currentTab에 따른 조건부 렌더링
🎯 User Experience Focus:
- 입력하기 편한 넓은 필드들
- 시각적으로 구분되는 정보 영역
- 직관적인 아이콘과 라벨링
- 부드러운 애니메이션 효과
🔧 Technical Implementation:
- createInProgressRow(): 카드 HTML 생성
- CSS 애니메이션 및 호버 효과
- 반응형 그리드 레이아웃 (lg:grid-cols-2)
- 아이콘 정렬 및 스타일링
Expected Result:
✅ 진행 중 이슈 입력이 훨씬 편리해짐
✅ 시각적으로 구분되는 정보 영역
✅ 카드별 독립적인 작업 공간 제공
✅ 완료됨은 기존 테이블 형태 유지
🐛 Debug Enhancement:
- 프론트엔드: 요청/응답 상세 로그 추가
- 백엔드: 각 단계별 디버그 로그 추가
- 에러 메시지 개선 (JSON 파싱 포함)
🔍 Frontend Debugging:
- console.log로 전송 데이터 확인
- response.text()로 원본 에러 메시지 확인
- JSON 파싱 실패 시 원본 텍스트 표시
🔧 Backend Debugging:
- 요청 데이터 로그 출력
- 각 필드 처리 과정 로그
- 데이터베이스 커밋 과정 로그
- 상세한 에러 메시지 제공
Expected Result:
✅ 422 오류의 정확한 원인 파악 가능
✅ 프론트엔드에서 전송하는 데이터 확인
✅ 백엔드에서 처리 과정 추적
✅ 구체적인 에러 메시지로 빠른 문제 해결
🎯 Tab-Specific Interface Design:
- 진행 중 탭: 편집 가능한 테이블 형태 (11개 컬럼)
- 완료됨 탭: 입력 여부 표시 + 클릭으로 상세보기 (13개 컬럼)
- 탭별 다른 헤더 구조로 최적화된 정보 표시
✅ 완료됨 탭 - 입력 여부 표시:
- ✅ 입력됨 (초록색 체크)
- ❌ 미입력 (회색 X)
- 사진: ✅ 2장 형태로 개수 표시
- 클릭 시 상세보기 모달 팝업
🔧 진행 중 탭 최적화:
- 완료 처리 버튼 한 줄로 표시 (white-space: nowrap)
- 불필요한 컬럼 제거 (완료확인일, 확인자, 원인부서, 의견, 조치결과, 완료사진)
- 핵심 편집 필드만 표시로 깔끔한 인터페이스
📋 완료된 이슈 상세보기 모달:
- 2컬럼 레이아웃 (읽기전용 vs 편집가능)
- 읽기전용: 프로젝트, 내용, 원인, 확인자, 업로드사진
- 편집가능: 해결방안, 담당부서, 담당자, 조치예상일, 원인부서, 의견, 완료사진
- 완료 사진 업로드 기능 포함
🎨 Enhanced UX Features:
- 완료됨 행 호버 효과 (hover:bg-blue-50)
- 모달 내 사진 클릭으로 확대보기
- 파일 업로드 → Base64 변환 → API 전송
- 저장 후 자동 목록 새로고침
🔄 Dynamic Header Generation:
- createTableHeader() 함수로 탭별 헤더 동적 생성
- 진행 중: 11개 컬럼 (편집 중심)
- 완료됨: 13개 컬럼 (검토 중심)
📊 Status Icon System:
- getStatusIcon(): 입력 여부를 시각적으로 표시
- getPhotoStatusIcon(): 사진 개수와 함께 상태 표시
- 일관된 ✅/❌ 아이콘으로 직관적 인식
🚀 Technical Implementation:
- openIssueDetailModal(): 완료된 이슈 상세보기
- createModalContent(): 동적 모달 내용 생성
- saveModalChanges(): 편집된 내용 저장
- fileToBase64(): 파일 업로드 처리
Expected Result:
✅ 진행 중: 편집 중심의 간소화된 테이블
✅ 완료됨: 입력 여부 확인 + 상세 편집 모달
✅ 완료 처리 버튼 한 줄로 깔끔한 표시
✅ 권한별 필드 구분으로 명확한 워크플로우
🎯 Major Management Page Overhaul:
- 테이블 최소 너비 2000px로 확장 (좌우 스크롤 최적화)
- 컬럼별 개별 너비 설정으로 내용에 맞는 크기 조정
- 편집 가능한 필드들 (해결방안, 담당부서, 담당자, 조치예상일, 원인부서, 의견)
- 진행 중 → 완료됨 처리 버튼 추가
📊 Enhanced Table Structure:
- 업로드 사진 2장 표시 (photo_path, photo_path2)
- 완료 사진 별도 컬럼으로 표시
- 작업 컬럼 추가 (저장 버튼)
- 완료 확인 컬럼 (진행 중: 완료 처리 버튼, 완료됨: 완료일)
✏️ Editable Fields Implementation:
- createEditableField() 함수로 동적 입력 필드 생성
- textarea, select, date, text 타입 지원
- 부서 선택 드롭다운 (생산, 품질, 구매, 설계, 영업)
- 실시간 편집 및 저장 기능
🔧 Backend API Enhancement:
- PUT /api/issues/{issue_id}/management 엔드포인트 추가
- ManagementUpdateRequest 스키마 활용
- 관리함 페이지 권한 검증
- 완료 사진 업로드 지원
📈 Smart Sequencing System:
- 수신함에서 넘어온 순서대로 No. 할당 (reviewed_at 기준)
- 프로젝트별 그룹화 후 순번 재할당
- 진행 중 A → 진행 중 B → 완료됨 C → 진행 중 D = 1, 2, 3, 4
🎨 UI/UX Improvements:
- 컬럼별 CSS 클래스로 일관된 스타일링
- 편집 가능한 필드 포커스 효과
- 사진 컨테이너로 2장 사진 깔끔한 배치
- 버튼 크기 최적화 (btn-sm 클래스)
🚀 Functional Features:
- completeIssue(): 진행 중 → 완료됨 처리
- saveIssueChanges(): 편집된 필드들 일괄 저장
- 실시간 목록 새로고침
- 확인 다이얼로그로 안전한 작업 처리
Expected Result:
✅ 좌우 스크롤로 모든 정보 편리하게 확인
✅ 관리함에서 필요한 정보 직접 입력/수정
✅ 진행 중에서 완료 처리 원클릭
✅ 수신함 순서 기반 체계적인 No. 관리
✅ 업로드 사진 2장 + 완료 사진 명확한 구분
🐛 Error Fix:
- 제거된 DOM 요소를 참조하는 기존 updateStatistics() 함수 제거
- needActionCount, processingCount 등 존재하지 않는 요소 참조 오류 해결
- TypeError: null is not an object 오류 완전 해결
🧹 Code Cleanup:
- 중복된 updateStatistics 함수 제거 (올바른 버전만 유지)
- selectedIssues 관련 불필요한 코드 제거
- toggleIssueSelection, toggleSelectAll 함수 제거
- selectedIssues 변수 선언 제거
🔧 Technical Details:
- 기존 통계 함수가 제거된 DOM 요소 참조로 인한 런타임 오류
- 새로운 통계 시스템과 충돌하는 레거시 코드 정리
- 선택 기능 미사용으로 인한 불필요한 코드 제거
✅ Result:
- 관리함 페이지 정상 로드
- 통계 기능 올바른 동작
- 깔끔한 코드베이스 유지
- 런타임 오류 완전 해결
Expected Behavior:
✅ 페이지 로드 시 오류 없음
✅ 프로젝트별 통계 정상 표시
✅ 탭 전환 시 통계 업데이트 정상 동작
📊 Statistics Section Redesign:
- 기존 5개 통계 카드에서 3개로 단순화
- 총 부적합 | 진행 중 | 완료됨 구조로 변경
- 프로젝트 선택 아래로 통계 섹션 이동
- 프로젝트별 필터링에 따른 동적 통계 업데이트
🗑️ Unnecessary Features Removal:
- 일괄 처리 버튼 제거 (다른 페이지에서 구현 예정)
- 엑셀 내보내기 버튼 제거 (다른 페이지에서 구현 예정)
- bulkAction, exportData 함수 제거
🎯 Enhanced User Experience:
- 프로젝트 선택 시 해당 프로젝트의 통계만 표시
- 탭 전환 시에도 통계 자동 업데이트
- 선택된 프로젝트 기준으로 정확한 카운트 제공
🔧 Technical Implementation:
- updateStatistics() 함수 추가
- filterIssues()에 통계 업데이트 로직 통합
- 프로젝트 필터와 탭 상태에 따른 조건부 카운팅
- 실시간 통계 반영으로 사용자 편의성 향상
💡 Logical Flow:
1. 프로젝트 선택 → 해당 프로젝트 통계 표시
2. 상태 탭 전환 → 선택된 프로젝트 내에서 상태별 필터링
3. 통계는 항상 선택된 프로젝트 기준으로 계산
Expected Result:
✅ 프로젝트별 정확한 통계 표시
✅ 총 부적합, 진행 중, 완료됨 3개 카드로 단순화
✅ 불필요한 버튼 제거로 깔끔한 UI
✅ 실시간 통계 업데이트로 향상된 UX
📅 Date Grouping Logic Improvement:
- 진행 중 탭: 업로드한 날짜(report_date) 기준으로 그룹화
- 완료됨 탭: 완료된 날짜(actual_completion_date) 기준으로 그룹화
- 완료일이 없는 경우 업로드일로 폴백
🎨 Visual Indicator Enhancement:
- 날짜 헤더에 기준 표시 추가
- 진행 중: '업로드일' 파란색 배지
- 완료됨: '완료일' 초록색 배지
- 사용자가 어떤 기준으로 그룹화되었는지 명확히 인지 가능
🔧 Technical Implementation:
- currentTab 상태에 따른 조건부 날짜 선택
- 동적 배지 색상 및 텍스트 적용
- 완료일 없는 경우 안전한 폴백 처리
💡 User Experience:
- 진행 중: 언제 업로드되었는지 시간순 확인
- 완료됨: 언제 완료되었는지 완료순 확인
- 각 탭의 목적에 맞는 날짜 기준으로 체계적 관리
Expected Result:
✅ 진행 중 탭에서는 업로드일 기준 그룹화
✅ 완료됨 탭에서는 완료일 기준 그룹화
✅ 날짜 헤더에 기준 표시로 명확한 구분
✅ 상태별 목적에 맞는 시간순 관리
📊 Complete Issue Display Redesign:
- 기존 카드 형태에서 테이블 형태로 완전 변경
- No.부터 완료 사진까지 모든 정보를 일렬로 표시
- 좌우 스크롤 가능한 테이블 구조 (min-width: 1200px)
📅 Date-based Grouping:
- 날짜별로 이슈들을 그룹화하여 표시
- 각 날짜 그룹마다 접기/펼치기 기능 구현
- 날짜 헤더 클릭으로 해당 그룹 토글 가능
- 부드러운 애니메이션 효과 적용
🗂️ Comprehensive Data Display:
- No. (프로젝트별 순번)
- 프로젝트명
- 내용 (final_description 우선, 없으면 description)
- 원인 (카테고리)
- 해결방안 (solution)
- 담당부서 (responsible_department)
- 담당자 (responsible_person)
- 조치예상일 (expected_completion_date)
- 완료확인일 (actual_completion_date)
- 확인자 (신고자 + 중복 신고자들)
- 원인부서 (cause_department)
- 의견 (management_comment)
- 조치결과 (진행 중/완료됨)
- 업로드 사진 (photo_path, photo_path2)
- 완료 사진 (completion_photo_path)
🎨 Enhanced UI/UX:
- 좌우 스크롤로 모든 정보 확인 가능
- 사진 클릭 시 확대 모달 표시
- 텍스트 오버플로우 시 툴팁으로 전체 내용 표시
- 상태별 색상 구분 (진행 중: 파란색, 완료됨: 초록색)
- 호버 효과로 행 강조
🔧 Technical Implementation:
- CSS 그리드 및 테이블 스타일링
- 반응형 스크롤 컨테이너
- 날짜 그룹 토글 애니메이션
- 사진 모달 팝업 기능
- 유틸리티 함수로 데이터 변환
🚀 User Experience:
- 한 화면에서 모든 정보 확인 가능
- 날짜별 정리로 체계적인 관리
- 접기/펼치기로 필요한 정보만 표시
- 직관적인 테이블 형태로 데이터 비교 용이
Expected Result:
✅ No.부터 사진까지 모든 정보가 테이블 형태로 표시
✅ 좌우 스크롤로 긴 데이터도 편리하게 확인
✅ 날짜별 그룹화로 체계적인 관리
✅ 접기/펼치기로 필요한 정보만 선택적 표시
✅ 사진 클릭으로 확대 보기 가능