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:
109
룰.md
109
룰.md
@@ -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)
|
||||
|
||||
---
|
||||
본 규칙은 프로젝트 진행 상황에 따라 지속적으로 개선될 수 있습니다.
|
||||
Reference in New Issue
Block a user