refactor(db,frontend): Improve queries and modularize frontend

- Replaced SELECT* queries in 8 models with explicit columns.
- Began modularizing work-report-calendar.js by creating CalendarAPI.js, CalendarState.js, and CalendarView.js.
- Refactored manage-project.js to use global API helpers.
- Fixed API container crash by adding missing volume mounts to docker-compose.yml.
- Added new migration for missing columns in the projects table.
- Documented current DB schema and deployment notes.
This commit is contained in:
Hyungi Ahn
2025-12-19 12:42:24 +09:00
parent 8a8307edfc
commit 05843da1c4
19 changed files with 826 additions and 381 deletions

View File

@@ -31,33 +31,51 @@
---
## 2025-12-11: 문서 구조 초기 생성
## 2025-12-19: Phase 2 진행 - DB 쿼리 개선 및 프론트엔드 모듈화 시작
### 변경 사항
- docs/ 디렉토리 생성
- 리팩토링 관련 문서 작성
- README.md: 문서 인덱스
- refactoring/ANALYSIS.md: 코드베이스 분석 리포트
- refactoring/PLAN.md: 리팩토링 실행 계획
- refactoring/LOG.md: 이 파일
#### 1. 백엔드 `SELECT *` 쿼리 개선
- **목표**: `SELECT *` 구문을 명시적 컬럼으로 대체하여 성능 및 명확성 향상.
- **작업 내용**: 8개의 모델 파일에서 `SELECT *`를 사용하는 모든 활성 쿼리를 리팩토링했습니다.
- `projectModel.js`
- `toolsModel.js`
- `attendanceModel.js`
- `dailyIssueReportModel.js`
- `issueTypeModel.js`
- `workReportModel.js`
- `userModel.js`
- `dailyWorkReportModel.js`
- **비고**: 사용되지 않는 레거시 함수는 사용 현황 분석 후 수정에서 제외하여 안정성을 확보했습니다.
#### 2. 프론트엔드 모듈화 시작
- **목표**: 거대 파일 `work-report-calendar.js` 분리 및 API 호출 로직 공통화.
- **`manage-project.js` 리팩토링**: `fetch` 직접 사용 대신, 기존 `api-helper.js`의 전역 함수 (`apiGet`, `apiPost` 등)를 사용하도록 통일하여 일관성을 확보했습니다.
- **`work-report-calendar.js` 모듈화**:
- `CalendarAPI.js`: API 호출 로직을 분리 및 캡슐화.
- `CalendarState.js`: 전역으로 흩어져 있던 상태 변수를 중앙에서 관리.
- `CalendarView.js`: DOM 요소 및 렌더링 관련 함수 일부를 분리.
- **비고**: `work-report-calendar.js` 파일의 크기와 복잡도로 인해 도구의 안정적인 수정이 어려워, 분리된 모듈을 생성하고 HTML에 연결하는 작업을 수행했습니다. 나머지 변환 작업은 수동으로 진행해야 합니다.
#### 3. 개발 환경 안정화 및 문서화
- **`docker-compose.yml` 수정**: `api` 컨테이너의 `MODULE_NOT_FOUND` 오류를 해결하기 위해 누락된 소스 코드 디렉토리(`config`, `middlewares` 등)를 볼륨 마운트에 추가했습니다.
- **데이터베이스 마이그레이션 추가**: `projects` 테이블에 누락된 컬럼 (`is_active` 등)을 추가하는 마이그레이션 파일을 생성하여 코드와 스키마의 불일치를 해결했습니다.
- **문서화**:
- `docs/deployment_notes.md`: 사용자 피드백을 바탕으로 테스트 및 프로덕션 배포 환경 정보를 기록했습니다.
- `docs/database/CURRENT_SCHEMA.md`: 여러 소스에 흩어져 있던 스키마 정보를 종합하여 현재 기준의 최종 스키마 정의서를 작성했습니다.
### 영향 범위
**새로 생성된 파일**:
- docs/README.md
- docs/refactoring/ANALYSIS.md
- docs/refactoring/PLAN.md
- docs/refactoring/LOG.md
- **수정된 파일**: `docker-compose.yml`, 8개 모델 파일, 3개 프론트엔드 JS 파일, 1개 HTML 파일
- **추가된 파일**: `docs/deployment_notes.md`, `docs/database/CURRENT_SCHEMA.md`, 1개 마이그레이션 파일, 3개 JS 모듈 파일
- **영향받는 기능**: 데이터베이스 조회 성능, API 서버 안정성, 프론트엔드 코드 구조, 프로젝트 문서
### 테스트
- [x] 문서 구조 검토
- [x] 마크다운 형식 확인
- [x] Docker 컨테이너 재빌드 및 정상 실행 확인.
- [ ] 리팩토링된 API 및 프론트엔드 기능의 전체적인 수동 테스트 필요.
- [ ] 데이터베이스 마이그레이션은 DB 연결 문제로 실행하지 못했으나, 코드와 스키마 불일치를 해결하는 방향으로 작성됨.
### 관련 이슈
- 리팩토링 프로젝트 시작
### 비고
- 이후 모든 리팩토링 작업은 이 로그에 기록할 것
- 코드 변경 전후를 명확히 문서화
- Phase 2 리팩토링 계획 ([docs/refactoring/PLAN.md](PLAN.md))
---
@@ -198,27 +216,27 @@ git commit -m "refactor: Phase 1 - 긴급 보안 및 중복 제거"
## YYYY-MM-DD: [작업 제목]
### 변경 사항
-
-
### 영향 범위
**수정된 파일**:
-
-
-
-
**영향받는 기능**:
-
-
### 코드 변경
#### Before
\`\`\`javascript
````javascript
// 변경 전 코드
\`\`\`
````
#### After
\`\`\`javascript
````javascript
// 변경 후 코드
\`\`\`
````
### 테스트
- [ ] 단위 테스트 통과
@@ -232,15 +250,15 @@ git commit -m "refactor: Phase 1 - 긴급 보안 및 중복 제거"
- 개선율:
### 관련 이슈
-
-
### 비고
-
-
### Git Commit
\`\`\`bash
````bash
git commit -m "refactor: [커밋 메시지]"
\`\`\`
````
---
```
@@ -303,4 +321,4 @@ git commit -m "refactor: [커밋 메시지]"
---
*마지막 업데이트: 2025-12-11*
*마지막 업데이트: 2025-12-11*