# UI 표준화 Phase 1: 네비게이션/헤더 통일 - 2026-01-20
## 배경
페이지마다 서로 다른 헤더 구현 방식과 하드코딩된 색상 값으로 인해 일관성이 부족했습니다:
- dashboard.html과 work/report-view.html이 각각 독립적인 헤더 코드 보유
- 색상 값이 하드코딩되어 있어 변경 시 여러 곳 수정 필요
- CSS 변수 시스템이 있지만 활용도 낮음
- 새 페이지 작성 시 참고할 표준 템플릿 부재
## 목표
1. ✅ 하늘색 계열 primary 색상으로 통일
2. ✅ Navbar 컴포넌트에 CSS 변수 적용
3. ✅ 인라인 헤더를 navbar 컴포넌트로 교체
4. ✅ 4가지 표준 레이아웃 템플릿 생성
5. ✅ CODING_GUIDE.md 업데이트
---
## 변경 내용
### 1. Design System 색상 변수 업데이트
**파일**: `web-ui/css/design-system.css`
기존 파란색 primary 색상을 하늘색 계열로 변경:
```css
/* 변경 전 (파란색) */
--primary-400: #42a5f5
--primary-500: #2196f3
--primary-600: #1e88e5
/* 변경 후 (하늘색) */
--primary-400: #38bdf8 /* 밝은 하늘색 */
--primary-500: #0ea5e9 /* 기본 하늘색 */
--primary-600: #0284c7 /* 진한 하늘색 */
/* 새로 추가 */
--header-gradient: linear-gradient(135deg, #0ea5e9 0%, #38bdf8 50%, #7dd3fc 100%);
```
### 2. Navbar 컴포넌트 CSS 변수 적용
**파일**: `web-ui/components/navbar.html`
모든 하드코딩된 스타일 값을 CSS 변수로 변경:
| 기존 하드코딩 | 변경 후 CSS 변수 |
|------------|----------------|
| `linear-gradient(135deg, #0ea5e9...)` | `var(--header-gradient)` |
| `color: white` | `var(--text-inverse)` |
| `padding: 1rem 1.5rem` | `var(--space-4) var(--space-6)` |
| `font-size: 1.5rem` | `var(--text-2xl)` |
| `font-weight: 700` | `var(--font-bold)` |
| `border-radius: 9999px` | `var(--radius-full)` |
| `background: #90caf9` | `var(--primary-200)` |
| `color: #0d47a1` | `var(--primary-900)` |
**변경 라인**: 약 50개 이상의 스타일 속성 업데이트
### 3. 인라인 헤더 제거 및 컴포넌트 적용
#### dashboard.html
**변경 전** (50줄의 인라인 헤더 코드):
```html
```
**변경 후** (2줄):
```html
```
#### work/report-view.html
동일한 방식으로 인라인 헤더 제거 및 컴포넌트 적용:
- 54줄 → 2줄로 축소
- 오래된 프로필 메뉴 링크 자동 수정 (navbar 컴포넌트 사용)
### 4. 표준 레이아웃 템플릿 생성
**디렉토리**: `web-ui/templates/`
새로 생성된 파일:
```
templates/
├── README.md # 템플릿 사용 가이드
├── dashboard-layout.html # 대시보드용 템플릿
├── work-layout.html # 작업 페이지용 템플릿
├── admin-layout.html # 관리자 페이지용 템플릿
└── simple-layout.html # 프로필/설정용 템플릿
```
#### 템플릿별 특징
**dashboard-layout.html**:
- 빠른 작업 섹션 포함
- 여러 콘텐츠 카드 지원
- 푸터 포함
- 토스트 알림 영역
**work-layout.html**:
- 페이지 제목 섹션
- 검색/필터 영역
- 작업 콘텐츠 카드
- 로딩 스피너
- 모달 예시 코드
**admin-layout.html**:
- 뒤로가기 버튼 헤더
- 탭 네비게이션
- 데이터 테이블 레이아웃
- 체크박스 일괄 선택
- 페이지네이션
- 확인 모달
**simple-layout.html**:
- 중앙 정렬 (최대 800px)
- 폼 요소 스타일링
- 정보 표시 리스트
- 반응형 레이아웃
- 완전한 폼 예시
### 5. CODING_GUIDE.md 업데이트
**파일**: `CODING_GUIDE.md`
새로 추가된 섹션:
- **표준 컴포넌트**: Navbar 사용법, CSS 변수 시스템
- **CSS 변수 시스템**: 주요 변수 목록 및 사용 예시
- **페이지 레이아웃 템플릿**: 4가지 템플릿 소개 및 사용법
---
## 테스트 결과
### 자동 테스트 (curl)
```bash
✓ Dashboard: 200
✓ Navbar container found in dashboard.html
✓ Work Report View: 200
✓ Navbar container found in work/report-view.html
✓ Navbar Component: 200
✓ Navbar component loads correctly
✓ Sky blue color variables found in design-system.css
✓ Templates README: 200
✓ Templates directory accessible
✓ Navbar component uses CSS variables
```
### 파일 변경 통계
| 파일 | 상태 | 변경 내용 |
|-----|------|---------|
| `design-system.css` | 수정 | +2줄 (color variables) |
| `navbar.html` | 수정 | ~50개 속성 CSS 변수화 |
| `dashboard.html` | 수정 | -48줄 (헤더 제거) +2줄 (컴포넌트) |
| `work/report-view.html` | 수정 | -52줄 (헤더 제거) +1줄 (스크립트) |
| `CODING_GUIDE.md` | 수정 | +68줄 (새 섹션) |
| `templates/*.html` | 신규 | 4개 템플릿 생성 |
| `templates/README.md` | 신규 | 가이드 문서 생성 |
**총 파일**: 8개 (수정 5개, 신규 3개 + 4 templates)
---
## 혜택 및 개선 사항
### 코드 중복 제거
- dashboard.html: 50줄 → 2줄 (96% 감소)
- work/report-view.html: 54줄 → 2줄 (96% 감소)
- **총 102줄의 중복 코드 제거**
### 유지보수성 향상
- 헤더 수정 시 navbar.html 한 곳만 수정
- 색상 변경 시 design-system.css 한 곳만 수정
- CSS 변수로 인한 일관성 보장
### 개발 생산성 향상
- 새 페이지 작성 시 템플릿 복사로 시작
- 표준화된 구조로 코드 리뷰 용이
- 신규 개발자 온보딩 시간 단축
### 디자인 일관성
- 모든 페이지 동일한 헤더 스타일
- 통일된 색상 체계 (하늘색)
- 일관된 간격 및 타이포그래피
---
## 향후 계획 (Phase 2-4)
### Phase 2: 버튼/카드 컴포넌트 통일 (예정)
- 26개 CSS 파일의 중복된 버튼 스타일 통합
- 카드 컴포넌트 표준화
### Phase 3: CSS 파일 구조 개선 (예정)
- 26개 → 8개 CSS 파일로 통합
- 페이지별 CSS를 모듈화
### Phase 4: 폰트 시스템 완전 통일 (예정)
- Pretendard로 완전히 통일
- 불필요한 폰트 제거
---
## 트러블슈팅
### 문제: 페이지마다 네비게이션 색상이 다름
**증상**:
- 일부 페이지는 파란색, 일부는 흰색, 일부는 하늘색 네비게이션 표시
**원인**:
1. CSS 파일에 `.dashboard-header` 스타일이 중복 정의되어 navbar 컴포넌트 스타일을 덮어씀
2. 일부 페이지에 `design-system.css`가 누락되어 CSS 변수가 작동하지 않음
**해결**:
```bash
# 1. 중복된 헤더 스타일 제거
- modern-dashboard.css: .dashboard-header 스타일 제거
- project-management.css: .dashboard-header 스타일 제거
# 2. 누락된 design-system.css 추가
- work/report-view.html
- work/analysis.html
- admin/accounts.html
```
**체크리스트 (새 페이지 작성 시)**:
- [ ] `` 최상단에 추가
- [ ] `` 추가
- [ ] `` 추가
- [ ] CSS 파일에 `.dashboard-header` 스타일 작성 금지 (navbar.html에서 관리)
---
## 사용 가이드
### 기존 페이지 수정 방법
기존 페이지에 인라인 헤더가 있다면:
```html
```
### 새 페이지 작성 방법
```bash
# 1. 용도에 맞는 템플릿 선택
cd web-ui/templates
ls -la # 4가지 템플릿 확인
# 2. 템플릿 복사
cp work-layout.html ../pages/work/new-page.html
# 3. 내용 수정
# - 변경
# - 페이지별 CSS/JS 추가
# - 콘텐츠 작성
# 4. 테스트
open http://localhost:20000/pages/work/new-page.html
```
### CSS 변수 사용 예시
```css
/* ❌ 나쁜 예 - 하드코딩 */
.my-button {
background: #0ea5e9;
padding: 16px;
border-radius: 8px;
}
/* ✅ 좋은 예 - CSS 변수 */
.my-button {
background: var(--primary-500);
padding: var(--space-4);
border-radius: var(--radius-md);
}
```
---
## 참고 문서
- `web-ui/templates/README.md`: 템플릿 상세 가이드
- `CODING_GUIDE.md`: 전체 개발 가이드
- `개발 log/2026-01-20-page-restructure.md`: 페이지 구조 개편 로그
---
## 커밋 정보
- **날짜**: 2026-01-20
- **작업자**: Claude AI
- **Phase**: 1 (네비게이션/헤더 통일)
- **영향받는 파일**: 8개
- **코드 감소**: -102줄 (중복 제거)
---
**다음 단계**: Phase 2 버튼/카드 컴포넌트 통일 작업 예정