feat: 데이터베이스 및 웹 UI 대규모 리팩토링

- 삭제된 DB 테이블들과 관련 코드 정리:
  * 12개 사용하지 않는 테이블 삭제 (activity_logs, CuttingPlan, DailyIssueReports 등)
  * 관련 모델, 컨트롤러, 라우트 파일들 삭제
  * index.js에서 삭제된 라우트들 제거

- 웹 UI 페이지 정리:
  * 21개 사용하지 않는 페이지 삭제
  * issue-reports 폴더 전체 삭제
  * 모든 사용자 권한을 그룹장 대시보드로 통일

- 데이터베이스 스키마 정리:
  * v1 스키마로 통일 (daily_work_reports 테이블)
  * JSON 데이터 임포트 스크립트 구현
  * 외래키 관계 정리 및 데이터 일관성 확보

- 통합 Docker Compose 설정:
  * 모든 서비스를 단일 docker-compose.yml로 통합
  * 20000번대 포트 유지
  * JWT 시크릿 및 환경변수 설정

- 문서화:
  * DATABASE_SCHEMA.md: 현재 DB 스키마 문서화
  * DELETED_TABLES.md: 삭제된 테이블 목록
  * DELETED_PAGES.md: 삭제된 페이지 목록
This commit is contained in:
Hyungi Ahn
2025-11-03 09:26:50 +09:00
parent 2a3feca45b
commit 94ecc7333d
71 changed files with 15664 additions and 4385 deletions

109
룰.md
View File

@@ -5,9 +5,24 @@
본 문서는 (주)테크니컬코리아 생산팀 내부 포털의 원활한 개발 및 유지보수를 위한 규칙을 정의합니다. 모든 개발자는 본 규칙을 숙지하고 준수해야 합니다.
## 2. 기술 스택
## 2. 기술 스택 및 개발 환경
### 2.1. 백엔드 (api.hyungi.net)
### 2.1. 개발 환경 (Docker 기반)
**🐳 현재 Docker Compose로 개발 중**
```bash
# 컨테이너 상태 확인
docker ps
# 주요 컨테이너들:
- api_hyungi_dev (포트: 20005) - 백엔드 API 서버
- web_hyungi_dev (포트: 20000) - 프론트엔드 웹 서버
- db_hyungi_dev (포트: 20306) - MariaDB 데이터베이스
- pma_hyungi_dev (포트: 20080) - phpMyAdmin
```
### 2.2. 백엔드 (api.hyungi.net)
- **런타임:** Node.js
- **프레임워크:** Express.js
@@ -16,13 +31,24 @@
- **프로세스 매니저:** PM2
- **컨테이너:** Docker
- **포트:** 20005 (API 서버)
- **API Base URL:** `http://localhost:20005`
### 2.2. 프론트엔드 (web-ui)
### 2.3. 프론트엔드 (web-ui)
- **언어:** HTML, CSS, JavaScript (ES6+ Modules)
- **라이브러리:** 별도 프레임워크 없이 순수 JS/HTML/CSS 사용
- **웹서버:** Nginx
- **포트:** 20000 (웹 서버)
- **Web UI URL:** `http://localhost:20000`
### 2.4. 데이터베이스 관리
- **MariaDB:** `localhost:20306`
- **사용자명:** `hyungi`
- **비밀번호:** `tycdoq-Kawcug-8wesfa`
- **데이터베이스:** `hyungi_dev`
- **phpMyAdmin:** `http://localhost:20080`
- **시스템 계정:** 동일한 계정 정보 사용
## 3. 코딩 컨벤션
@@ -253,5 +279,82 @@ docker logs web_hyungi_dev
3. `develop` 브랜치 -> `main` 브랜치로 PR
4. `main` 브랜치에 머지되면 Docker 이미지를 빌드하여 배포
## 9. API 구조 및 엔드포인트
### 9.1. 작업보고서 분석 API
#### 9.1.1. 개요
- **목적**: 데일리 워크 레포트 데이터의 종합 분석 및 시각화
- **권한**: Admin 등급 이상 (`admin`, `system`)
- **베이스 URL**: `/api/daily-work-reports-analysis`
#### 9.1.2. 엔드포인트 목록
| 메서드 | 엔드포인트 | 설명 | 권한 |
|--------|------------|------|------|
| `GET` | `/filters` | 분석용 필터 데이터 조회 | Admin+ |
| `GET` | `/period` | 기간별 종합 분석 | Admin+ |
| `GET` | `/project` | 프로젝트별 상세 분석 | Admin+ |
| `GET` | `/worker` | 작업자별 상세 분석 | Admin+ |
#### 9.1.3. 요청/응답 예시
**필터 데이터 조회:**
```http
GET /api/daily-work-reports-analysis/filters
Authorization: Bearer {jwt_token}
```
**응답:**
```json
{
"success": true,
"data": {
"projects": [
{"project_id": 1, "project_name": "프로젝트A"}
],
"workers": [
{"worker_id": 1, "worker_name": "홍길동"}
],
"workTypes": [
{"work_type_id": 1, "work_type_name": "설계"}
],
"dateRange": {
"min_date": "2025-01-01",
"max_date": "2025-12-31"
}
}
}
```
**기간별 분석:**
```http
GET /api/daily-work-reports-analysis/period?start_date=2025-08-01&end_date=2025-08-31&project_id=1
Authorization: Bearer {jwt_token}
```
#### 9.1.4. 보안 정책
- **인증**: JWT 토큰 필수
- **권한**: `admin` 또는 `system` 권한 필요
- **접근 제어**: 프론트엔드에서 권한 체크 후 페이지 접근 허용
- **오류 응답**: 권한 부족 시 403 Forbidden 반환
#### 9.1.5. 프론트엔드 연동
- **페이지**: `/pages/analysis/work-report-analytics.html`
- **네비게이션**: Admin 섹션에 `ADMIN` 배지와 함께 표시
- **권한 체크**: 페이지 로드 시 localStorage의 사용자 권한 확인
### 9.2. API 네이밍 규칙
#### 9.2.1. 라우트 네이밍
- **kebab-case** 사용 (예: `daily-work-reports-analysis`)
- **복수형 명사** 사용 (예: `reports`, `users`)
- **RESTful** 원칙 준수
#### 9.2.2. 파일 네이밍
- **컨트롤러**: `{resource}Controller.js` (camelCase)
- **라우트**: `{resource}Routes.js` (camelCase)
- **모델**: `{resource}Model.js` (camelCase)
---
본 규칙은 프로젝트 진행 상황에 따라 지속적으로 개선될 수 있습니다.