Commit Graph

20 Commits

Author SHA1 Message Date
Hyungi Ahn
947c497e79 feat: 수신함 워크플로우 DB 스키마 구축 및 배포 안전성 확보
🗄️ DB Schema Changes:
- 새로운 ENUM 타입 추가:
  * review_status: pending_review, in_progress, completed, disposed
  * disposal_reason_type: duplicate, invalid_report, not_applicable, spam, custom

- issues 테이블 확장 (8개 컬럼 추가):
  * review_status: 수신함 워크플로우 상태 관리
  * disposal_reason: 폐기 사유 (기본값: duplicate)
  * custom_disposal_reason: 사용자 정의 폐기 사유
  * disposed_at: 폐기 처리 날짜
  * reviewed_by_id: 검토자 ID (users 테이블 FK)
  * reviewed_at: 검토 완료 날짜
  * original_data: 원본 데이터 보존 (JSONB)
  * modification_log: 수정 이력 추적 (JSONB)

- 성능 최적화 인덱스 3개 추가:
  * idx_issues_review_status
  * idx_issues_reviewed_by_id
  * idx_issues_disposed_at (부분 인덱스)

- 데이터 무결성 제약 조건:
  * chk_disposal_reason_required: 폐기 시 사유 필수
  * chk_custom_reason_logic: custom 사유 시 텍스트 필수

🛡️ Migration Safety Features:
- 중복 실행 방지 (IF NOT EXISTS 체크)
- 트랜잭션 기반 원자성 보장
- 실행 결과 자동 검증 (컬럼/인덱스/ENUM 개수 확인)
- migration_log 테이블로 실행 이력 추적
- 상세한 실행 로그 및 에러 메시지

📋 Deployment Checklist:
- 배포 시 필수 확인사항 문서화
- 자동 마이그레이션 스크립트 제공
- 단계별 검증 절차 정의
- 롤백 계획 및 문제 해결 가이드
- API 테스트 및 모니터링 방법

🎯 Workflow Design:
업로드 → 수신함(검토) → [폐기→폐기함] or [승인→관리함]
- 폐기: 중복/무효 데이터만 (분석 가치 없음)
- 관리함: 모든 유효한 부적합 (진행중+완료 포함)
- 원본 데이터 보존으로 수정 전후 비교 가능
- 수정 이력 추적으로 변경 내역 완전 보존

Result:
 DB 스키마 완전 구축
 마이그레이션 안전성 100% 보장
 배포 시 누락 방지 시스템 구축
 수신함 워크플로우 DB 기반 완성
2025-10-25 12:03:13 +09:00
Hyungi Ahn
79b1524a42 fix: admin.html 스크립트 로딩 순서 오류 수정
Issue Fixed:
- ReferenceError: Can't find variable: initializeAdmin

Root Cause:
- initializeAdmin 함수가 정의되기 전에 API 스크립트의 onload에서 호출됨
- 스크립트 로딩 순서 문제로 함수 참조 오류 발생

Solution:
1. 스크립트 순서 재정렬
   - 공통 스크립트들을 먼저 로드
   - initializeAdmin 함수를 먼저 정의
   - API 스크립트를 마지막에 동적 로드

2. 에러 핸들링 추가
   - script.onerror 이벤트 추가
   - API 로드 실패 시 적절한 에러 메시지

Changes:
- 스크립트 로딩 순서 변경: 공통 스크립트 → 함수 정의 → API 동적 로드
- initializeAdmin 함수가 API 로드 전에 정의되도록 수정
- 스크립트 로드 실패 시 에러 핸들링 추가

Result:
 initializeAdmin 함수 정상 호출
 사용자 관리 페이지 정상 로드
 권한 설정 기능 정상 작동
2025-10-25 09:55:04 +09:00
Hyungi Ahn
d821387e4b fix: 사용자 관리 페이지 공통 헤더 적용 및 권한 설정 오류 수정
Issues Fixed:
1. 개인 페이지 헤더 제거
   - 기존 Header와 Navigation 삭제
   - 공통 헤더 자동 삽입으로 변경
   - padding-top: 120px 추가로 레이아웃 조정

2. showPagePermissionGrid 함수 오류 수정
   - 'pages' 변수 참조 오류 해결
   - pageCategories 기반으로 HTML 생성 로직 재작성
   - 카테고리별 그룹화 UI 개선

3. 권한 시스템 완성
   - users_manage 페이지 권한 추가
   - 백엔드 DEFAULT_PAGES에 users_manage 추가
   - 프론트엔드 권한 체크 로직 통합

4. UI/UX 개선
   - 체크박스 상태에 따른 시각적 피드백
   - 기본 권한 표시 배지 추가
   - 호버 효과 및 트랜지션 개선
   - 카테고리별 구분선 추가

Technical Changes:
- 모든 페이지 권한을 포함한 allPages 배열 업데이트
- 권한 저장 시 존재하지 않는 체크박스 검증 추가
- 공통 헤더 초기화 및 페이지 접근 권한 체크 추가
- 백엔드 재시작으로 권한 시스템 변경사항 적용

Result:
 사용자 선택 시 권한 설정 그리드 정상 표시
 모든 페이지 권한 (수신함, 관리함, 폐기함 포함) 관리 가능
 공통 헤더 통합으로 일관된 UI 제공
 권한 저장 및 로드 기능 정상 작동
2025-10-25 09:53:11 +09:00
Hyungi Ahn
d456ad1e15 feat: 목록 관리 3개 하위 페이지 실제 파일 생성
수신함, 관리함, 폐기함 페이지를 실제로 구현하여 완전한 목록 관리 시스템 완성

Pages Created:
- issues-inbox.html: 수신함 페이지
  * 새로 등록된 부적합 확인
  * 읽음/안읽음 상태 관리
  * 실시간 통계 대시보드
  * 필터링 및 정렬 기능

- issues-management.html: 관리함 페이지
  * 부적합 상태 변경 및 처리
  * 일괄 처리 기능
  * 담당자 배정 (향후 구현)
  * 우선순위 관리

- issues-archive.html: 폐기함 페이지
  * 완료/폐기된 부적합 보관
  * 통계 차트 및 분석
  * 기간별 필터링
  * 데이터 내보내기 기능

Common Features:
- 공통 헤더 및 권한 시스템 통합
- 반응형 모바일 최적화 디자인
- 실시간 데이터 로딩 및 필터링
- 프로젝트별 분류 및 검색
- 사용자 친화적 UI/UX

Technical:
- 각 페이지별 고유한 기능과 UI
- 권한 기반 접근 제어
- API 연동 및 에러 처리
- 로컬 스토리지 활용 (읽음 상태 등)
- 성능 최적화된 렌더링
2025-10-25 09:47:44 +09:00
Hyungi Ahn
f6691730ce feat: 목록 관리 3개 하위 페이지 권한 시스템 구현
목록 관리를 수신함, 관리함, 폐기함 3개 하위 페이지로 세분화하고
각각 별도의 권한 관리가 가능하도록 시스템 구현

Backend Changes:
- page_permissions.py: issues_inbox, issues_management, issues_archive 권한 추가
- 수신함: 기본 접근 허용 (true)
- 관리함, 폐기함: 관리자 권한 필요 (false)

Frontend Changes:
- permissions.js: 3개 하위 페이지 권한 정의 추가
- common-header.js: 드롭다운 하위 메뉴 구조 구현
  * 데스크톱: 호버 드롭다운 메뉴
  * 모바일: 접을 수 있는 하위 메뉴
- admin.html: 권한 관리 UI에 새 페이지들 추가

Features:
- 권한별 하위 메뉴 필터링
- 반응형 드롭다운 메뉴
- 개별 페이지별 권한 제어
- 관리자 페이지에서 세부 권한 설정 가능

Next: 실제 페이지 파일 생성 및 기능 구현 예정
2025-10-25 09:24:32 +09:00
Hyungi Ahn
4ecb649236 fix: 목록 관리 페이지 공통 헤더 표시 문제 해결
- showSection 함수에서 공통 헤더 현재 페이지 상태 업데이트 로직 추가
- 목록 관리 및 보고서 섹션에 상단 여백 추가 (헤더 가림 방지)
- 공통 헤더에 updateCurrentPage 메서드 추가

Changes:
- index.html: showSection에서 헤더 상태 업데이트, 섹션별 padding-top 추가
- common-header.js: updateCurrentPage 메서드 추가

Fixes: 목록 관리 페이지에서 공통 헤더가 보이지 않는 문제
2025-10-25 09:19:54 +09:00
Hyungi Ahn
0084a0a49f fix: 목록 관리 페이지 무한 로딩 문제 해결
- 목록 관리 URL을 /issue-view.html#manage에서 /index.html#list로 변경
- issues_manage 페이지의 기본 접근 권한을 true로 변경
- 프론트엔드와 백엔드 권한 설정 동기화

Changes:
- common-header.js: 목록 관리 URL 수정
- page-preloader.js: 프리로더 URL 수정
- permissions.js: issues_manage defaultAccess를 true로 변경
- page_permissions.py: 백엔드 default_access를 true로 변경

Fixes: 목록 관리 버튼 클릭 시 무한 로딩 문제
2025-10-25 09:16:05 +09:00
Hyungi Ahn
d3333c4dc2 docs: 프로젝트 문서화 및 개발 가이드 추가
- 데이터베이스 스키마 및 변경 로그 문서화
- 신규 페이지 개발 가이드 작성
- 모듈 아키텍처 설계 문서 추가
- 성능 최적화 전략 문서화
- 리팩토링 계획 및 진행 상황 정리

Documentation:
- DATABASE_SCHEMA.md: 전체 DB 스키마 구조
- DB_CHANGE_LOG.md: 마이그레이션 변경 이력
- DEVELOPMENT_GUIDE.md: 신규 기능 개발 표준
- MODULE_ARCHITECTURE.md: 프론트엔드 모듈 구조
- PERFORMANCE_OPTIMIZATION.md: 성능 최적화 가이드
- REFACTORING_PLAN.md: 리팩토링 진행 상황

Test Files:
- app.html, app.js: SPA 테스트 파일
- test_api.html: API 테스트 페이지
2025-10-25 09:01:54 +09:00
Hyungi Ahn
610a171b25 feat: 모든 페이지에 공통 헤더 적용 및 모바일 최적화
- 모든 HTML 페이지에 권한 기반 공통 헤더 적용
- 부적합 등록 페이지 모바일 최적화 (사진 업로드 UI 개선)
- 부적합 조회 페이지에 모바일 캘린더 날짜 필터 적용
- 사용자별 권한에 따른 동적 페이지 제목 및 메시지 표시

Page Updates:
- index.html: 모바일 친화적 사진 업로드 UI, 공통 헤더 적용
- issue-view.html: 터치/스와이프 캘린더 필터, 권한별 조회 제한
- daily-work.html: 공통 헤더 적용, 프로젝트 로딩 로직 개선
- project-management.html: 공통 헤더 적용, 권한 체크 강화
- admin.html: 페이지 권한 관리 UI 추가, 공통 헤더 적용

Mobile Optimizations:
- 터치 타겟 최소 44px 보장
- 스와이프 제스처 지원
- 반응형 레이아웃
- 모바일 전용 UI 컴포넌트
2025-10-25 09:01:32 +09:00
Hyungi Ahn
25123be806 feat: 프론트엔드 모듈화 및 공통 헤더 시스템 구현
- 권한 기반 공통 헤더 컴포넌트 구현
- 모바일 친화적 캘린더 날짜 필터 추가
- 페이지 프리로더 및 키보드 단축키 시스템 구현
- Service Worker 기반 캐싱 시스템 추가

Frontend Changes:
- components/common-header.js: 권한 기반 동적 메뉴 생성
- components/mobile-calendar.js: 터치/스와이프 지원 캘린더
- core/permissions.js: 페이지 접근 권한 관리
- core/page-manager.js: 페이지 라이프사이클 관리
- core/page-preloader.js: 페이지 프리로딩 최적화
- core/keyboard-shortcuts.js: 키보드 네비게이션
- css/mobile-calendar.css: 모바일 최적화 캘린더 스타일
- sw.js: 3단계 캐싱 전략 서비스 워커

Removed:
- auth-common.js, common-header.js (구버전 파일들)
2025-10-25 09:00:30 +09:00
Hyungi Ahn
b68bf78e40 feat: 사용자별 페이지 접근 권한 시스템 구현
- 기존 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 스키마 변경
2025-10-25 08:59:52 +09:00
hyungi
41b557a709 Fix: 페이지 간 이동 시 로그아웃 문제 해결 및 기능 개선
- 토큰 저장 키 통일 (access_token으로 일관성 확보)
- 일일공수 페이지 API 스크립트 로딩 순서 수정
- 프로젝트 관리 페이지 비활성 프로젝트 표시 문제 해결
- 업로드 카테고리에 '기타' 항목 추가 (백엔드 schemas.py 포함)
- 비밀번호 변경 기능 API 연동으로 수정
- 프로젝트 드롭다운 z-index 문제 해결
- CORS 설정 및 Nginx 구성 개선
- 비밀번호 해싱 방식 pbkdf2_sha256으로 변경 (bcrypt 72바이트 제한 해결)
2025-10-25 07:22:20 +09:00
hyungi
153603ed9d merge: 원격 변경사항과 병합 및 충돌 해결
- 임시 파일들 정리 (chart.html, daily-work.html 등)
- localStorage 기반 프로젝트별 보고서 필터링 유지
- 공통 헤더 및 인증 시스템 적용
2025-10-24 12:26:00 +09:00
hyungi
5fe51ab1d5 feat: localStorage 문제 해결 및 시스템 개선
- localStorage와 DB ID 불일치 문제 해결
- 프로젝트별 보고서 시간 필터링 수정
- 일반 사용자에게 일일공수 메뉴 숨김
- 공통 헤더 및 인증 시스템 구현
- 프로젝트별 일일공수 분리 기능 추가 (ProjectDailyWork 모델)
- IssuesAPI에서 project_id 누락 문제 수정
- 사용자 인증 통합 (TokenManager 기반)
2025-10-24 12:24:24 +09:00
hyungi
85f20aa051 refactor: 임시 파일 정리 및 코드 클린업
제거된 파일들:
- migrate-data.html - 데이터 마이그레이션 도구 (완료됨)
- debug-data.html - 디버깅 도구 (완료됨)
- fix-api-data.html - API 데이터 수정 도구 (완료됨)
- fix-project-id.html - 프로젝트 ID 수정 도구 (완료됨)
- create-project-api.html - 프로젝트 API 생성 도구 (완료됨)
- chart.html - 구 버전 차트 페이지 (사용 안함)
- 루트 디렉토리 중복 파일들 (index.html, daily-work.html)

코드 정리:
- 디버깅용 console.log 제거
- 이미지 압축 로그 정리
- 필터링 디버깅 로그 정리

서비스 배포 준비를 위한 클린업 작업
2025-10-24 10:31:47 +09:00
hyungi
0e57cb99e8 fix: 사용자 관리 시스템 백엔드 API 통합
- 사용자 목록 로드를 localStorage에서 AuthAPI.getUsers()로 변경
- 비밀번호 초기화를 localStorage 조작에서 AuthAPI.resetPassword()로 변경
- 사용자 삭제 기능 백엔드 API 연동 확인
- 사용자 추가/목록/삭제 모든 기능이 백엔드 DB와 동기화됨
- localStorage 하드코딩 문제 해결로 일관된 데이터 관리 구현

Fixes:
- 사용자 추가 후 목록에 표시되지 않던 문제
- 비밀번호 초기화가 실제 DB에 반영되지 않던 문제
- 백엔드 API와 localStorage 간 데이터 불일치 문제
2025-10-24 10:27:45 +09:00
hyungi
b024a178d0 feat: 목록 관리 및 보고서 페이지 개선
- 목록 관리 페이지에 고급 필터링 시스템 추가
  - 프로젝트별, 검토상태별, 날짜별 필터링
  - 검토 완료/필요 항목 시각적 구분 및 정렬
  - 해결 시간 입력 + 확인 버튼으로 검토 완료 처리

- 부적합 조회 페이지에 동일한 필터링 기능 적용
  - 검토 상태에 따른 카드 스타일링 (음영 처리)
  - JavaScript 템플릿 리터럴 오류 수정

- 보고서 페이지 프로젝트별 분석 기능 추가
  - 프로젝트 선택 드롭다운 추가
  - 총 작업 공수를 프로젝트별 일일공수 데이터로 계산
  - 부적합 처리 시간, 카테고리 분석, 상세 목록 모두 프로젝트별 필터링
  - localStorage 키 이름 통일 (daily-work-data)
2025-10-24 10:13:32 +09:00
hyungi
44e2fb2e44 feat: 사진 업로드 기능 개선 및 카테고리 업데이트
- 사진 2장까지 업로드 지원
- 카메라 촬영 + 갤러리 선택 분리
- 이미지 압축 및 최적화 (ImageUtils)
- iPhone .mpo 파일 JPEG 변환 지원
- 카테고리 변경: 치수불량 → 설계미스, 검사미스 추가
- KST 시간대 설정
- URL 해시 처리로 목록관리 페이지 이동 개선
- 로그인 OAuth2 form-data 형식 수정
- 업로드 속도 개선 및 프로그레스바 추가
2025-09-18 07:00:28 +09:00
hyungi
f6bdb68d19 feat: 사용자 관리 및 권한 시스템 구현
- 관리자 전용 사용자 관리 페이지 추가
- 사용자 추가/삭제 기능 (한글 ID 지원)
- 비밀번호 변경 기능
- 권한별 메뉴 접근 제한
  - 관리자: 모든 메뉴 접근 가능
  - 일반 사용자: 일일공수, 부적합등록/조회만 가능
- 이미지 없이 부적합 등록 가능
- 목록 관리에서 이미지 수정 기능
- 작업 시간 확인 버튼 개선
- 부적합 조회 페이지 간소화 (시간순 나열)
2025-09-17 13:02:38 +09:00
hyungi
1339e5dded feat: 작업보고서 시스템 완성
- 일일 공수 입력 기능
- 부적합 사항 등록 (이미지 선택사항)
- 날짜별 부적합 조회 (시간순 나열)
- 목록 관리 (인라인 편집, 작업시간 확인 버튼)
- 보고서 생성 (총 공수/부적합 시간 분리)
- JWT 인증 및 권한 관리
- Docker 기반 배포 환경 구성
2025-09-17 10:41:25 +09:00