- 목록 관리 페이지에 고급 필터링 시스템 추가 - 프로젝트별, 검토상태별, 날짜별 필터링 - 검토 완료/필요 항목 시각적 구분 및 정렬 - 해결 시간 입력 + 확인 버튼으로 검토 완료 처리 - 부적합 조회 페이지에 동일한 필터링 기능 적용 - 검토 상태에 따른 카드 스타일링 (음영 처리) - JavaScript 템플릿 리터럴 오류 수정 - 보고서 페이지 프로젝트별 분석 기능 추가 - 프로젝트 선택 드롭다운 추가 - 총 작업 공수를 프로젝트별 일일공수 데이터로 계산 - 부적합 처리 시간, 카테고리 분석, 상세 목록 모두 프로젝트별 필터링 - localStorage 키 이름 통일 (daily-work-data)
9.1 KiB
9.1 KiB
M-Project 프로젝트 개요
📋 프로젝트 소개
작업보고서 시스템 - 부적합 사항 관리 및 공수 계산을 위한 웹 애플리케이션
🏗️ 시스템 아키텍처
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │ │ Database │
│ (HTML/JS) │◄──►│ (FastAPI) │◄──►│ (PostgreSQL) │
│ Port: 16080 │ │ Port: 16000 │ │ Port: 16432 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
▲ ▲ ▲
│ │ │
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Nginx │ │ Docker │ │ File Storage │
│ (Reverse Proxy)│ │ (Container) │ │ (/uploads) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
📁 프로젝트 구조
M-Project/
├── backend/ # FastAPI 백엔드
│ ├── database/ # 데이터베이스 관련
│ │ ├── database.py # DB 연결 설정
│ │ ├── models.py # SQLAlchemy 모델
│ │ └── schemas.py # Pydantic 스키마
│ ├── migrations/ # DB 마이그레이션 파일
│ │ ├── 001_init.sql
│ │ ├── 002_add_second_photo.sql
│ │ ├── 003_update_categories.sql
│ │ ├── 004_fix_category_values.sql
│ │ ├── 005_recreate_enum_type.sql
│ │ └── 006_add_projects_table.sql
│ ├── routers/ # API 라우터
│ │ ├── auth.py # 인증 관련 API
│ │ ├── projects.py # 프로젝트 관리 API
│ │ ├── issues.py # 부적합 사항 API
│ │ ├── daily_work.py # 일일 공수 API
│ │ └── reports.py # 보고서 API
│ ├── services/ # 비즈니스 로직
│ │ ├── auth_service.py # 인증 서비스
│ │ └── file_service.py # 파일 처리 서비스
│ ├── uploads/ # 업로드된 파일 저장소
│ ├── main.py # FastAPI 애플리케이션 진입점
│ ├── requirements.txt # Python 의존성
│ └── Dockerfile # 백엔드 Docker 설정
├── frontend/ # 프론트엔드
│ ├── static/ # 정적 파일
│ │ ├── css/ # 스타일시트
│ │ └── js/ # JavaScript 파일
│ │ ├── api.js # API 통신
│ │ ├── date-utils.js # 날짜 유틸리티
│ │ └── image-utils.js # 이미지 처리
│ ├── admin.html # 관리자 페이지
│ ├── index.html # 메인 페이지
│ ├── daily-work.html # 일일 공수 페이지
│ ├── chart.html # 차트 페이지
│ └── issue-view.html # 부적합 사항 상세 페이지
├── nginx/ # Nginx 설정
│ ├── nginx.conf # Nginx 설정 파일
│ └── Dockerfile # Nginx Docker 설정
├── docker-compose.yml # Docker Compose 설정
├── DATABASE_SCHEMA.md # 데이터베이스 스키마 문서
├── API_DOCUMENTATION.md # API 문서
├── PROJECT_OVERVIEW.md # 프로젝트 개요 (이 파일)
└── README.md # 프로젝트 설명
🚀 시작하기
1. 시스템 요구사항
- Docker & Docker Compose
- Git
2. 프로젝트 클론 및 실행
# 프로젝트 클론
git clone <repository-url>
cd M-Project
# Docker 컨테이너 실행
docker-compose up -d
# 로그 확인
docker-compose logs -f
3. 접속 정보
- 프론트엔드: http://localhost:16080
- 백엔드 API: http://localhost:16000
- API 문서: http://localhost:16000/docs
- 데이터베이스: localhost:16432
4. 기본 계정
- 관리자: hyungi / djg3-jj34-X3Q3
- 일반 사용자: inspector1 / pass123, inspector2 / pass456
👥 사용자 권한
관리자 (admin)
- ✅ 프로젝트 생성/수정/삭제
- ✅ 사용자 계정 관리
- ✅ 모든 부적합 사항 조회/수정
- ✅ 보고서 생성
- ✅ 시스템 설정
일반 사용자 (user)
- ✅ 부적합 사항 등록
- ✅ 자신이 등록한 부적합 사항 수정
- ✅ 일일 공수 입력
- ✅ 보고서 조회
- ❌ 프로젝트 관리
- ❌ 사용자 관리
🔧 주요 기능
1. 프로젝트 관리 (신규 추가)
- Job No. 기반 프로젝트 생성
- 관리자만 접근 가능한 프로젝트 생성 배너
- 프로젝트 목록 조회 및 관리
2. 부적합 사항 관리
- 사진 업로드 (최대 2장)
- 카테고리별 분류
- 자재누락 (material_missing)
- 설계미스 (design_error)
- 입고자재 불량 (incoming_defect)
- 검사미스 (inspection_miss)
- 상태 관리 (신규/진행중/완료)
- 작업 시간 기록
3. 일일 공수 관리
- 작업자 수 입력
- 정규/야근 시간 계산
- 날짜별 공수 추적
4. 보고서 생성
- 기간별 통계
- 카테고리별 분석
- 작업 시간 집계
- 인쇄 기능
🛠️ 개발 가이드
백엔드 개발
# 백엔드 컨테이너 접속
docker-compose exec backend bash
# 의존성 설치
pip install -r requirements.txt
# 개발 서버 실행
uvicorn main:app --reload --host 0.0.0.0 --port 8000
프론트엔드 개발
- 정적 파일은
frontend/디렉토리에 위치 - Nginx를 통해 서빙됨
- 실시간 수정 가능 (볼륨 마운트)
데이터베이스 관리
# DB 접속
docker-compose exec db psql -U mproject -d mproject
# 마이그레이션 실행
docker-compose exec db psql -U mproject -d mproject -f /docker-entrypoint-initdb.d/새파일.sql
# 백업
docker-compose exec db pg_dump -U mproject mproject > backup.sql
# 복구
docker-compose exec -T db psql -U mproject mproject < backup.sql
🔍 트러블슈팅
1. 백엔드가 시작되지 않는 경우
# 로그 확인
docker-compose logs backend
# 컨테이너 재시작
docker-compose restart backend
2. 데이터베이스 연결 오류
# DB 상태 확인
docker-compose ps db
# DB 로그 확인
docker-compose logs db
# DB 재시작
docker-compose restart db
3. 마이그레이션 오류
# 수동 마이그레이션 실행
docker-compose exec db psql -U mproject -d mproject -f /docker-entrypoint-initdb.d/파일명.sql
4. 파일 업로드 오류
# uploads 디렉토리 권한 확인
docker-compose exec backend ls -la /app/uploads
# 권한 수정
docker-compose exec backend chmod 755 /app/uploads
📊 모니터링
헬스체크
# 백엔드 상태 확인
curl http://localhost:16000/api/health
# 프론트엔드 상태 확인
curl http://localhost:16080
로그 모니터링
# 전체 로그
docker-compose logs -f
# 특정 서비스 로그
docker-compose logs -f backend
docker-compose logs -f db
docker-compose logs -f nginx
🔐 보안 고려사항
1. 인증
- JWT 토큰 기반 인증
- 토큰 만료 시간: 7일
- bcrypt 해시를 사용한 비밀번호 암호화
2. 권한 관리
- 역할 기반 접근 제어 (RBAC)
- API 레벨에서 권한 검증
- 프론트엔드 UI 레벨에서 권한별 표시/숨김
3. 데이터 보호
- SQL 인젝션 방지 (SQLAlchemy ORM 사용)
- XSS 방지 (입력값 검증)
- 파일 업로드 검증
📈 성능 최적화
1. 데이터베이스
- 자주 조회되는 컬럼에 인덱스 설정
- 페이지네이션 구현
- 연결 풀링 사용
2. API
- 응답 캐싱
- 압축 전송
- 비동기 처리
3. 프론트엔드
- 이미지 최적화
- 지연 로딩
- 로컬 스토리지 활용
🚀 배포 가이드
프로덕션 환경 설정
-
환경 변수 수정 (
docker-compose.yml)SECRET_KEY변경ADMIN_PASSWORD변경- 데이터베이스 비밀번호 변경
-
SSL 인증서 설정
-
방화벽 설정
-
백업 스케줄 설정
업데이트 절차
- 코드 업데이트
- 데이터베이스 백업
- 마이그레이션 실행
- 컨테이너 재시작
- 헬스체크 확인
📞 지원 및 문의
개발자 정보
- 개발자: M-Project Team
- 이메일: support@m-project.com
- 문서 업데이트: 2024-10-24
버전 정보
- 현재 버전: 1.0.0
- 최종 업데이트: 2024-10-24
- 호환성: Docker 20.10+, Python 3.11+