Files
Hyungi Ahn 485ce7d276 docs: 2026-01-26 개발 로그 업데이트
관리 페이지 UI/UX 개선 및 네비게이션 단순화 작업 내용 기록:
- 2단 레이아웃 구현 (사이드바 + 메인)
- 코드 관리 페이지 탭 디자인 개선
- admin/index.html 제거 및 네비게이션 단순화
- 관리 페이지 표준화 문서 작성

커밋 해시: ca33736, cbf1ad9, f3386a5

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-26 14:08:50 +09:00

16 KiB

리팩토링 로그

이 문서는 리팩토링 과정에서 수행한 모든 변경 사항을 기록합니다. 각 변경은 날짜, 작업 내용, 영향 범위, 테스트 결과를 포함합니다.

📝 작성 규칙

각 리팩토링 작업 후 다음 형식으로 기록:

## YYYY-MM-DD: 작업 제목

### 변경 사항
- 변경된 내용 상세 기술

### 영향 범위
- 수정된 파일 목록
- 영향받는 기능

### 테스트
- [ ] 단위 테스트 통과
- [ ] 통합 테스트 통과
- [ ] 수동 테스트 완료

### 관련 이슈
- 관련 이슈 번호 또는 참고 문서

### 비고
- 추가 메모나 주의사항

2026-01-26: 관리 페이지 UI/UX 개선 및 네비게이션 단순화

변경 사항

1. 관리 페이지 2단 레이아웃 구현

  • 목표: 프로젝트/작업자/코드 관리 페이지의 UI를 통일되고 현대적인 레이아웃으로 개선
  • 작업 내용:
    • 240px 고정폭 사이드바 네비게이션 추가
    • .page-container flexbox 레이아웃으로 변경
    • 페이지 헤더를 카드 형태로 분리하여 시각적 계층 강화
    • 3열 카드 그리드 레이아웃 적용 (repeat(3, 1fr))
    • 카드 높이 통일 (프로젝트/작업자: 420px, 코드: 최소 200px)
    • 반응형 디자인 구현 (1200px: 2열, 768px: 1열)

2. 코드 관리 페이지 특화 디자인

  • 목표: 탭 기반 코드 관리 페이지의 가독성 및 사용성 향상
  • 작업 내용:
    • 탭 네비게이션 스타일 개선 (언더라인 탭, 호버 효과)
    • 상태별/심각도별 컬러 보더 적용
      • 정상 상태: 녹색 / 오류 상태: 빨간색
      • 심각도 낮음: 녹색 / 보통: 노란색 / 높음: 주황색 / 심각: 빨간색
      • 작업 유형: 파란색
    • 해결 가이드 섹션 스타일링 (노란색 배경 + 왼쪽 보더)
    • 아이콘을 48x48 둥근 박스로 디자인
    • 탭 전환 시 페이드인 애니메이션 추가

3. 네비게이션 구조 단순화

  • 목표: 불필요한 중간 허브 페이지 제거로 사용자 경험 개선
  • 작업 내용:
    • admin/index.html (중간 허브 페이지) 삭제
    • 대시보드 → 프로젝트 관리로 직접 연결 (2단계 → 1단계)
    • 관리 페이지 사이드바 백링크 변경: "작업관리로 ◀" → "대시보드로 🏠"
    • 대시보드의 "작업 관리" 카드를 "프로젝트 관리"로 명칭 변경

4. 관리 페이지 표준화 문서 작성

  • 목표: 향후 관리 페이지 개발 시 일관성 유지를 위한 가이드라인 제공
  • 작업 내용:
    • ADMIN_PAGE_STANDARD.md 생성 (60+ 페이지)
    • HTML 템플릿, CSS 클래스, 파일 명명 규칙 정의
    • 3가지 페이지 타입 표준화 (카드 그리드/테이블/탭)
    • 28개 필수 CSS 클래스 문서화
    • 반응형 디자인 브레이크포인트 테이블
    • 개발 체크리스트 (HTML, CSS, JavaScript, 접근성)

영향 범위

신규 생성된 파일:

  • docs/ADMIN_PAGE_STANDARD.md - 관리 페이지 표준 가이드
  • web-ui/css/admin-pages.css (v7) - 관리 페이지 전용 CSS (1,537줄)

수정된 파일:

  • web-ui/pages/admin/projects.html - 2단 레이아웃 적용
  • web-ui/pages/admin/workers.html - 2단 레이아웃 적용
  • web-ui/pages/admin/codes.html - 2단 레이아웃 + 탭 디자인 개선
  • web-ui/pages/dashboard.html - 프로젝트 관리 직접 연결
  • web-ui/css/project-management.css - 카드 레이아웃 개선
  • web-ui/js/project-management.js - 메타 정보 key-value 형식으로 재구성

삭제된 파일:

  • web-ui/pages/admin/index.html (171줄) - 불필요한 중간 허브 페이지

영향받는 기능:

  • 프로젝트/작업자/코드 관리 페이지 UI
  • 대시보드에서 관리 페이지로의 네비게이션 흐름
  • 관리 페이지 간 상호 이동 (사이드바 네비게이션)

코드 변경

Before (HTML 구조)

<!-- 세로 레이아웃 -->
<body>
  <div class="work-report-container">
    <div id="navbar-container"></div>
    <main class="work-report-main">
      <a href="/pages/admin/index.html" class="back-button">
        ← 작업관리로 돌아가기
      </a>
      <div class="dashboard-main">
        <!-- 콘텐츠 -->
      </div>
    </main>
  </div>
</body>

After (HTML 구조)

<!-- 2단 레이아웃 (사이드바 + 메인) -->
<body>
  <div id="navbar-container"></div>
  <div class="page-container">
    <aside class="sidebar">
      <nav class="sidebar-nav">
        <ul class="sidebar-menu">
          <li class="menu-item active">
            <a href="/pages/admin/projects.html">
              <span class="menu-icon">📁</span>
              <span class="menu-text">프로젝트 관리</span>
            </a>
          </li>
          <!-- 작업자 관리, 코드 관리 -->
          <li class="menu-divider"></li>
          <li class="menu-item">
            <a href="/pages/dashboard.html">
              <span class="menu-icon">🏠</span>
              <span class="menu-text">대시보드로</span>
            </a>
          </li>
        </ul>
      </nav>
    </aside>
    <main class="main-content">
      <div class="page-header"><!-- 카드 형태 --></div>
      <!-- 콘텐츠 -->
    </main>
  </div>
</body>

Before (네비게이션)

대시보드 → admin/index.html → 프로젝트 관리
                             → 작업자 관리
                             → 코드 관리

After (네비게이션)

대시보드 → 프로젝트 관리 ←→ 작업자 관리 ←→ 코드 관리
           ↓ 사이드바        ↓ 사이드바      ↓ 사이드바
        대시보드           대시보드        대시보드

테스트

  • 프로젝트 관리 페이지 레이아웃 확인
  • 작업자 관리 페이지 레이아웃 확인
  • 코드 관리 페이지 레이아웃 및 탭 확인
  • 대시보드에서 프로젝트 관리로 직접 이동 확인
  • 관리 페이지 간 사이드바 네비게이션 확인
  • 반응형 디자인 확인 (1200px, 768px 브레이크포인트)
  • Docker 재시작 및 변경사항 적용 확인

성능 영향

  • 저장소 크기: 171줄 삭제, 2,277줄 추가 (순 증가: 2,106줄)
  • 파일 수: 2개 추가, 1개 삭제 (순 증가: 1개)
  • 페이지 로딩: 영향 없음 (CSS 파일 캐싱)
  • 사용자 경험: 네비게이션 단계 감소로 개선 (2단계 → 1단계)

관련 이슈

  • 관리 페이지 표준화 (docs/ADMIN_PAGE_STANDARD.md)
  • UI/UX 개선

비고

  • CSS 버전: v6 → v7
  • 모든 관리 페이지가 동일한 레이아웃 패턴 사용
  • 향후 새로운 관리 페이지 추가 시 ADMIN_PAGE_STANDARD.md 참조

Git Commits

# 1. 관리 페이지 UI 개선
git commit -m "feat: 관리 페이지(Admin Pages) UI 개선 및 표준화"

# 2. 프로젝트 카드 레이아웃 개선
git commit -m "refactor: 프로젝트 카드 레이아웃 및 메타 정보 표시 개선"

# 3. 네비게이션 단순화
git commit -m "refactor: admin/index.html 제거 및 네비게이션 단순화"

Commit Hashes:

  • ca33736 - 관리 페이지 UI 개선
  • cbf1ad9 - 프로젝트 카드 개선
  • f3386a5 - 네비게이션 단순화

변경 통계:

  • ca33736: 5 files changed, 2277 insertions(+), 57 deletions(-)
  • cbf1ad9: 2 files changed, 27 insertions(+), 9 deletions(-)
  • f3386a5: 5 files changed, 12 insertions(+), 171 deletions(-)

2025-12-19: Phase 2 진행 - DB 쿼리 개선 및 프론트엔드 모듈화 시작

변경 사항

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: 여러 소스에 흩어져 있던 스키마 정보를 종합하여 현재 기준의 최종 스키마 정의서를 작성했습니다.

영향 범위

  • 수정된 파일: docker-compose.yml, 8개 모델 파일, 3개 프론트엔드 JS 파일, 1개 HTML 파일
  • 추가된 파일: docs/deployment_notes.md, docs/database/CURRENT_SCHEMA.md, 1개 마이그레이션 파일, 3개 JS 모듈 파일
  • 영향받는 기능: 데이터베이스 조회 성능, API 서버 안정성, 프론트엔드 코드 구조, 프로젝트 문서

테스트

  • Docker 컨테이너 재빌드 및 정상 실행 확인.
  • 리팩토링된 API 및 프론트엔드 기능의 전체적인 수동 테스트 필요.
  • 데이터베이스 마이그레이션은 DB 연결 문제로 실행하지 못했으나, 코드와 스키마 불일치를 해결하는 방향으로 작성됨.

관련 이슈


2025-12-11: Phase 1 완료 - 긴급 보안 및 중복 제거

변경 사항

1. 보안 강화

  • 하드코딩된 비밀번호를 환경변수로 전환
  • .env.example 파일 생성 (보안 가이드 포함)
  • docker-compose.yml에 환경변수 적용
  • README.md에서 실제 비밀번호 제거

2. 중복 코드 제거

  • synology_deployment/ 디렉토리 완전 삭제 (268MB)
  • synology_deployment*.tar.gz 아카이브 제거 (234MB)
  • 502MB의 중복 파일 삭제

3. 백업 파일 정리

  • *.backup 파일 10개 제거
  • *복사본* 파일 제거
  • *이전* 파일 제거
  • json(백업)/ 디렉토리 제거

4. .gitignore 업데이트

  • 백업 파일 패턴 추가
  • 보안 파일 제외 규칙 강화
  • 임시/빌드 파일 제외

5. 문서화

  • docs/ 디렉토리 구조 생성
  • 7개 종합 문서 작성 (분석, 계획, 가이드, 아키텍처)

영향 범위

수정된 파일:

  • .env.example (신규)
  • .gitignore (업데이트)
  • docker-compose.yml (환경변수 적용)
  • README.md (보안 안내 추가)
  • docs/* (신규 7개 문서)

삭제된 파일:

  • 425개 파일 삭제
  • 286,950줄 코드 제거

영향받는 기능:

  • 배포 프로세스 (환경변수 설정 필요)
  • 모든 서비스 (DB, API, Web, FastAPI, phpMyAdmin)

코드 변경

Before (docker-compose.yml)

environment:
  - MYSQL_ROOT_PASSWORD=tkfb2024!
  - MYSQL_PASSWORD=hyungi2024!
  - JWT_SECRET=tkfb_jwt_secret_2024_hyungi_secure_key

After (docker-compose.yml)

environment:
  - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
  - MYSQL_PASSWORD=${MYSQL_PASSWORD}
  - JWT_SECRET=${JWT_SECRET}
  - JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET}

Before (README.md)

- 비밀번호: hyungi_password_2025
- Root 비밀번호: hyungi_root_password_2025

After (README.md)

- 비밀번호: `.env` 파일에서 설정한 `MYSQL_PASSWORD`
- Root 비밀번호: `.env` 파일에서 설정한 `MYSQL_ROOT_PASSWORD`

테스트

  • .env.example 파일 생성 확인
  • docker-compose.yml 환경변수 적용 확인
  • .gitignore 규칙 테스트
  • 문서 구조 검토
  • Docker Compose 실행 테스트 (사용자가 .env 생성 후 테스트 필요)

성능 영향

  • 저장소 크기: 502MB 감소
  • 파일 수: 425개 파일 감소
  • 코드 라인: 286,950줄 감소
  • 빌드 시간: 변화 없음 (환경변수만 변경)

보안 개선 효과

비밀번호 노출 위험 완전 제거 Git 히스토리에서 민감 정보 분리 환경별 설정 분리 가능 (dev/prod) 배포 보안 강화 .env 파일 Git 제외로 비밀번호 유출 방지

관련 이슈

비고

중요: 이 변경 후 처음 실행 시 반드시 다음 작업 필요:

# 1. .env 파일 생성
cp .env.example .env

# 2. .env 파일 편집하여 실제 비밀번호 입력
nano .env

# 3. Docker Compose 실행
docker-compose up -d

다음 단계: Phase 2 - 코드 구조화

  • index.js 분리 (889줄 → 100줄 이하)
  • 에러 처리 통일
  • SELECT * 쿼리 개선

Git Commit

git commit -m "refactor: Phase 1 - 긴급 보안 및 중복 제거"

Commit Hash: 1e7155b 변경 통계: 425 files changed, 4346 insertions(+), 286950 deletions(-)


템플릿 (아래 양식 복사해서 사용)

## YYYY-MM-DD: [작업 제목]

### 변경 사항
- 

### 영향 범위
**수정된 파일**:
- 
- 

**영향받는 기능**:
- 

### 코드 변경

#### Before
````javascript
// 변경 전 코드

After

// 변경 후 코드

테스트

  • 단위 테스트 통과
  • 통합 테스트 통과
  • 수동 테스트 완료
  • 성능 테스트 (필요시)

성능 영향

  • 이전:
  • 이후:
  • 개선율:

관련 이슈

비고

Git Commit

git commit -m "refactor: [커밋 메시지]"


## 통계

| Phase | 완료 항목 | 전체 항목 | 진행률 |
|-------|----------|----------|--------|
| Phase 1 | ✅ 4 | 4 | 100% |
| Phase 2 | 0 | 5 | 0% |
| Phase 3 | 0 | 4 | 0% |
| Phase 4 | 0 | 4 | 0% |
| **총계** | **4** | **17** | **24%** |

### 세부 진행 현황

#### ✅ Phase 1: 긴급 조치 (완료)
- [x] 중복 디렉토리 제거 (502MB 절감)
- [x] 보안 정보 환경변수화
- [x] 백업 파일 정리
- [x] .gitignore 업데이트

#### Phase 2: 코드 구조화 (예정)
- [ ] index.js 분리 (889줄 → 100줄)
- [ ] 에러 처리 통일
- [ ] SELECT * 쿼리 개선
- [ ] 공통 모듈 추출
- [ ] 큰 파일 분리

#### Phase 3: 아키텍처 개선 (예정)
- [ ] 서비스 레이어 완성
- [ ] 권한 미들웨어 통일
- [ ] 테스트 코드 작성
- [ ] API 문서화

#### Phase 4: 현대화 (예정)
- [ ] TypeScript 마이그레이션
- [ ] 프론트엔드 프레임워크 도입
- [ ] ORM 적용
- [ ] CI/CD 구축

---

## 다음 작업

**Phase 2: 코드 구조화 시작**

1. **백엔드 구조 개선** (우선순위)
   - index.js 분리 (config, middlewares, utils)
   - 에러 클래스 생성 및 적용
   - 에러 핸들러 미들웨어 통합

2. **SQL 쿼리 개선**
   - SELECT * 제거 (20+ 파일)
   - 명시적 컬럼 지정

3. **프론트엔드 모듈화**
   - API 클라이언트 통합
   - 공통 유틸리티 추출

---

*마지막 업데이트: 2025-12-11*