Compare commits

...

8 Commits

Author SHA1 Message Date
Hyungi Ahn
6b7f9d4627 fix: 로그인 후 리다이렉트 경로를 새 대시보드로 수정
변경사항:
- authController.js: 로그인 후 /pages/dashboard.html로 리다이렉트
- config.js: 모든 대시보드 경로를 /pages/dashboard.html로 통일
- work/report-view.html: 대시보드 버튼 경로 수정

이제 로그인하면 올바른 경로로 이동합니다.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 10:50:54 +09:00
Hyungi Ahn
73e5eff7bd docs: 페이지 구조 개편 문서화
- CODING_GUIDE에 새 페이지 구조 및 네이밍 규칙 추가
- 상세한 개편 과정 문서 작성 (2026-01-20-page-restructure.md)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 10:46:10 +09:00
Hyungi Ahn
a6ab9e395d refactor: 페이지 구조 대대적 개편 - 명확한 폴더 구조 및 파일명 개선
## 주요 변경사항

### 1. 미사용 페이지 아카이브 (24개)
- admin 폴더 전체 (8개) → .archived-admin/
- 분석 페이지 (5개) → .archived-*
- 공통 페이지 (5개) → .archived-*
- 대시보드 페이지 (2개) → .archived-*
- 기타 (4개) → .archived-*

### 2. 새로운 폴더 구조
```
pages/
├── dashboard.html          (메인 대시보드)
├── work/                   (작업 관련)
│   ├── report-create.html  (작업보고서 작성)
│   ├── report-view.html    (작업보고서 조회)
│   └── analysis.html       (작업 분석)
├── admin/                  (관리 기능)
│   ├── index.html          (관리 메뉴 허브)
│   ├── projects.html       (프로젝트 관리)
│   ├── workers.html        (작업자 관리)
│   ├── codes.html          (코드 관리)
│   └── accounts.html       (계정 관리)
└── profile/                (프로필)
    ├── info.html           (내 정보)
    └── password.html       (비밀번호 변경)
```

### 3. 파일명 개선
- group-leader.html → dashboard.html
- daily-work-report.html → work/report-create.html
- daily-work-report-viewer.html → work/report-view.html
- work-analysis.html → work/analysis.html
- work-management.html → admin/index.html
- project-management.html → admin/projects.html
- worker-management.html → admin/workers.html
- code-management.html → admin/codes.html
- my-profile.html → profile/info.html
- change-password.html → profile/password.html
- admin-settings.html → admin/accounts.html

### 4. 내부 링크 전면 수정
- navbar.html 프로필 메뉴 링크 업데이트
- dashboard.html 빠른 작업 링크 업데이트
- admin/* 페이지 간 링크 업데이트
- load-navbar.js 대시보드 경로 수정

영향받는 파일: 39개

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 10:44:34 +09:00
Hyungi Ahn
33e9e2afec fix: 대시보드 버튼을 메인 대시보드(그룹장 대시보드)로 통일
모든 역할의 사용자가 group-leader.html로 이동하도록 수정

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:54:47 +09:00
Hyungi Ahn
05a9de8d2f fix: 대시보드 버튼을 역할별 공통 대시보드로 연결
변경사항:
- navbar의 대시보드 버튼이 개인 대시보드가 아닌 역할별 공통 대시보드로 이동하도록 수정
- Admin/System → /pages/dashboard/system.html
- 그룹장 → /pages/dashboard/group-leader.html
- 일반 사용자 → /pages/dashboard/user.html

수정된 파일:
- web-ui/components/navbar.html
- web-ui/js/load-navbar.js

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:53:29 +09:00
Hyungi Ahn
e8829a0bc7 docs: UI/UX 디자인 가이드 추가
- 이모지 사용 금지 정책 추가
- 모던하고 깔끔한 디자인 원칙 명시
- 색상 가이드 및 컴포넌트 구조 설명

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:52:40 +09:00
Hyungi Ahn
4f0af62d8c style: 네비게이션 색상 및 레이아웃 개선
변경사항:
1. navbar 배경색을 하늘색 계열로 변경 (#0ea5e9, #38bdf8, #7dd3fc)
2. 대시보드 버튼을 header에 눈에 띄게 추가
3. work-management.css의 navbar 관련 중복 스타일 제거하여 레이아웃 충돌 해결

수정된 파일:
- web-ui/components/navbar.html
- web-ui/css/work-management.css

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:51:49 +09:00
Hyungi Ahn
8a5480177b fix: 관리 페이지 네비게이션 구조 표준화
- 모든 관리 페이지에서 navbar-container를 work-report-container 내부로 이동
- design-system.css 임포트 추가하여 일관된 navbar 스타일 적용
- daily-work-report.html의 원래 구조를 표준으로 채택

변경된 파일:
- web-ui/pages/management/code-management.html
- web-ui/pages/management/project-management.html
- web-ui/pages/management/work-management.html
- web-ui/pages/management/worker-management.html

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 08:48:35 +09:00
45 changed files with 392 additions and 231 deletions

View File

@@ -56,6 +56,75 @@ docker-compose up -d # 수동 실행
---
## 🎨 UI/UX 디자인 가이드
### 디자인 원칙
- **모던하고 깔끔한 디자인**: 이모지 사용 지양, 아이콘 또는 심플한 텍스트 사용
- **일관성**: 모든 페이지에서 동일한 디자인 시스템 적용
- **컴포넌트 재사용**: navbar, footer 등은 컴포넌트로 관리
### 이모지 사용 금지
**금지**:
```html
<!-- 나쁜 예 -->
<button>📊 대시보드</button>
<h1>🔧 작업 관리</h1>
```
**권장**:
```html
<!-- 좋은 예 - 아이콘 라이브러리 사용 또는 심플한 텍스트 -->
<button class="btn-primary">
<i class="icon-dashboard"></i>
대시보드
</button>
<h1>작업 관리</h1>
```
### 색상 가이드
- **Primary**: 하늘색 계열 (`#0ea5e9`, `#38bdf8`, `#7dd3fc`)
- **기본 배경**: 흰색/밝은 회색 계열
- **텍스트**: `#1f2937` (dark gray)
- **보조 텍스트**: `#6b7280` (medium gray)
### 컴포넌트 구조
- **네비게이션**: `web-ui/components/navbar.html` 참조
- **일관된 헤더**: 모든 페이지에서 `<div id="navbar-container"></div>` 사용
- **CSS 로딩 순서**: `design-system.css` → 페이지별 CSS
### 페이지 구조 (2026-01-20 개편)
```
web-ui/pages/
├── dashboard.html # 메인 대시보드
├── work/ # 작업 관련 페이지
│ ├── report-create.html # 작업보고서 작성
│ ├── report-view.html # 작업보고서 조회
│ └── analysis.html # 작업 분석
├── admin/ # 관리자 기능
│ ├── index.html # 관리 메뉴 허브
│ ├── projects.html # 프로젝트 관리
│ ├── workers.html # 작업자 관리
│ ├── codes.html # 코드 관리
│ └── accounts.html # 계정 관리
├── profile/ # 사용자 프로필
│ ├── info.html # 내 정보
│ └── password.html # 비밀번호 변경
└── .archived-*/ # 미사용 페이지 보관
```
**네이밍 규칙**:
- 메인 페이지: 단일 명사 (`dashboard.html`)
- 관리 페이지: 복수형 명사 (`projects.html`, `workers.html`)
- 기능 페이지: 동사-명사 (`report-create.html`, `report-view.html`)
- 폴더명: 단수형, 소문자 (`work/`, `admin/`, `profile/`)
**네비게이션 구조**:
- 1차: `dashboard.html` (메인 진입점)
- 2차: `admin/index.html` (관리 허브)
- 모든 페이지: navbar를 통해 profile, 작업 페이지로 이동 가능
---
## 📡 API 개발 가이드
- **RESTful**: 명사형 리소스 사용 (`POST /users` O, `/createUser` X).
- **응답 포맷**:

View File

@@ -21,9 +21,9 @@ const login = asyncHandler(async (req, res) => {
throw new ApiError(result.error, result.status || 400);
}
// 로그인 성공 후, 모든 권한을 그룹장 대시보드로 통일
// 로그인 성공 후, 메인 대시보드로 리다이렉트
const user = result.data.user;
const redirectUrl = '/pages/dashboard/group-leader.html'; // 모든 사용자를 그룹장 대시보드로 리다이렉트
const redirectUrl = '/pages/dashboard.html'; // 메인 대시보드로 리다이렉트
// 새로운 응답 포맷터 사용
res.auth(user, result.data.token, redirectUrl, '로그인 성공');

View File

@@ -20,6 +20,11 @@
</div>
<div class="header-right">
<a href="#" id="dashboardBtn" class="dashboard-btn">
<span class="btn-icon">📊</span>
<span class="btn-text">대시보드</span>
</a>
<div class="user-profile" id="userProfile">
<div class="user-avatar">
<span class="avatar-text" id="userInitial"></span>
@@ -29,19 +34,15 @@
<span class="user-role" id="userRole">작업자</span>
</div>
<div class="profile-menu" id="profileMenu">
<a href="/pages/profile/my-dashboard.html" class="menu-item">
<span class="menu-icon">📊</span>
나의 대시보드
</a>
<a href="/pages/profile/my-profile.html" class="menu-item">
<a href="/pages/profile/info.html" class="menu-item">
<span class="menu-icon">👤</span>
내 프로필
</a>
<a href="/pages/profile/change-password.html" class="menu-item">
<a href="/pages/profile/password.html" class="menu-item">
<span class="menu-icon">🔐</span>
비밀번호 변경
</a>
<a href="/pages/profile/admin-settings.html" class="menu-item admin-only">
<a href="/pages/admin/accounts.html" class="menu-item admin-only">
<span class="menu-icon">⚙️</span>
관리자 설정
</a>
@@ -58,7 +59,7 @@
<style>
/* 최신 대시보드 헤더 스타일 */
.dashboard-header {
background: linear-gradient(135deg, #1e40af 0%, #1d4ed8 50%, #2563eb 100%);
background: linear-gradient(135deg, #0ea5e9 0%, #38bdf8 50%, #7dd3fc 100%);
color: white;
padding: 1rem 1.5rem;
box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1);
@@ -262,6 +263,37 @@
color: #b91c1c !important;
}
/* 대시보드 버튼 */
.dashboard-btn {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.625rem 1.25rem;
background: rgba(255, 255, 255, 0.2);
color: white;
text-decoration: none;
border-radius: 0.75rem;
font-weight: 600;
font-size: 0.9rem;
transition: all 0.3s ease;
border: 1px solid rgba(255, 255, 255, 0.3);
backdrop-filter: blur(10px);
}
.dashboard-btn:hover {
background: rgba(255, 255, 255, 0.3);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.dashboard-btn .btn-icon {
font-size: 1.1rem;
}
.dashboard-btn .btn-text {
font-family: inherit;
}
/* 반응형 디자인 */
@media (max-width: 768px) {
.dashboard-header {
@@ -283,5 +315,13 @@
.user-info {
display: none;
}
.dashboard-btn .btn-text {
display: none;
}
.dashboard-btn {
padding: 0.5rem 0.75rem;
}
}
</style>

View File

@@ -9,164 +9,7 @@ body {
min-height: 100vh;
}
/* 헤더 스타일 */
.dashboard-header {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20px);
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
padding: 1rem 2rem;
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 2px 20px rgba(0, 0, 0, 0.1);
position: sticky;
top: 0;
z-index: 100;
}
.header-left {
display: flex;
align-items: center;
}
.logo-section {
display: flex;
align-items: center;
gap: 1rem;
}
.logo {
height: 40px;
width: auto;
}
.company-info {
display: flex;
flex-direction: column;
}
.company-name {
font-size: 1.25rem;
font-weight: 700;
color: #1f2937;
margin: 0;
line-height: 1.2;
}
.company-subtitle {
font-size: 0.875rem;
color: #6b7280;
font-weight: 500;
}
.header-center {
display: flex;
align-items: center;
}
.current-time {
display: flex;
flex-direction: column;
align-items: center;
padding: 0.5rem 1rem;
background: rgba(59, 130, 246, 0.1);
border-radius: 0.5rem;
border: 1px solid rgba(59, 130, 246, 0.2);
}
.time-label {
font-size: 0.75rem;
color: #6b7280;
margin-bottom: 0.125rem;
}
.time-value {
font-size: 1rem;
font-weight: 600;
color: #1f2937;
font-family: 'Courier New', monospace;
}
.header-right {
display: flex;
align-items: center;
gap: 1rem;
}
.header-actions {
display: flex;
align-items: center;
gap: 0.75rem;
}
.dashboard-btn {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.5rem 1rem;
background: rgba(255, 255, 255, 0.15);
color: #374151;
text-decoration: none;
border-radius: 1.25rem;
font-size: 0.85rem;
font-weight: 500;
transition: all 0.3s ease;
border: 1px solid rgba(255, 255, 255, 0.3);
backdrop-filter: blur(10px);
}
.dashboard-btn:hover {
background: rgba(255, 255, 255, 0.25);
transform: translateY(-1px);
text-decoration: none;
color: #1f2937;
}
.user-profile {
display: flex;
align-items: center;
gap: 0.75rem;
padding: 0.5rem 1rem;
background: rgba(255, 255, 255, 0.1);
border-radius: 2rem;
cursor: pointer;
transition: all 0.3s ease;
position: relative;
}
.user-profile:hover {
background: rgba(255, 255, 255, 0.2);
}
.user-avatar {
width: 2.5rem;
height: 2.5rem;
background: linear-gradient(135deg, #3b82f6, #1d4ed8);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: 600;
font-size: 1rem;
}
.user-info {
display: flex;
flex-direction: column;
}
.user-name {
font-size: 0.875rem;
font-weight: 600;
color: #1f2937;
line-height: 1.2;
}
.user-role {
font-size: 0.75rem;
color: #6b7280;
}
/* 헤더 스타일은 navbar.html에서 관리됨 */
/* 메인 콘텐츠 */
.dashboard-main {
@@ -430,14 +273,10 @@ body {
/* 반응형 디자인 */
@media (max-width: 1024px) {
.dashboard-header {
padding: 1rem;
}
.dashboard-main {
padding: 1.5rem;
}
.management-grid {
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1rem;
@@ -445,30 +284,14 @@ body {
}
@media (max-width: 768px) {
.header-center {
display: none;
}
.company-info {
display: none;
}
.dashboard-btn .btn-text {
display: none;
}
.user-info {
display: none;
}
.page-title {
font-size: 2rem;
}
.management-grid {
grid-template-columns: 1fr;
}
.section-header {
flex-direction: column;
gap: 1rem;
@@ -477,22 +300,18 @@ body {
}
@media (max-width: 480px) {
.dashboard-header {
padding: 0.75rem;
}
.dashboard-main {
padding: 1rem;
}
.page-title {
font-size: 1.75rem;
}
.management-card {
padding: 1rem;
}
.recent-activity-section {
padding: 1rem;
}

View File

@@ -16,12 +16,12 @@ export const config = {
paths: {
// 로그인 페이지 경로
loginPage: '/index.html',
// 로그인 후 기본적으로 이동할 대시보드 경로
defaultDashboard: '/pages/dashboard/user.html',
// 시스템 대시보드 경로
systemDashboard: '/pages/dashboard/system.html',
// 그룹 리더 대시보드 경로
groupLeaderDashboard: '/pages/dashboard/group-leader.html',
// 메인 대시보드 경로 (모든 사용자 공통)
dashboard: '/pages/dashboard.html',
// 하위 호환성을 위한 별칭들
defaultDashboard: '/pages/dashboard.html',
systemDashboard: '/pages/dashboard.html',
groupLeaderDashboard: '/pages/dashboard.html',
},
// 공용 컴포넌트 경로 설정

View File

@@ -66,6 +66,12 @@ function populateUserInfo(doc, user) {
const el = doc.getElementById(id);
if (el) el.textContent = elements[id];
}
// 메인 대시보드 URL 설정
const dashboardBtn = doc.getElementById('dashboardBtn');
if (dashboardBtn) {
dashboardBtn.href = '/pages/dashboard.html';
}
}
/**

View File

@@ -0,0 +1 @@
# Placeholder file to create admin directory

View File

@@ -4,6 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>코드 관리 | (주)테크니컬코리아</title>
<link rel="stylesheet" href="/css/design-system.css">
<link rel="stylesheet" href="/css/common.css?v=2">
<link rel="stylesheet" href="/css/project-management.css?v=4">
<link rel="icon" type="image/png" href="/img/favicon.png">
@@ -11,14 +12,14 @@
<script type="module" src="/js/api-config.js?v=3"></script>
</head>
<body>
<!-- 네비게이션 바 -->
<div id="navbar-container"></div>
<div class="work-report-container">
<!-- 네비게이션 바 -->
<div id="navbar-container"></div>
<!-- 메인 콘텐츠 -->
<main class="work-report-main">
<!-- 뒤로가기 버튼 -->
<a href="/pages/management/work-management.html" class="back-button">
<a href="/pages/admin/index.html" class="back-button">
← 작업관리로 돌아가기
</a>

View File

@@ -4,16 +4,17 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>작업 관리 | (주)테크니컬코리아</title>
<link rel="stylesheet" href="/css/design-system.css">
<link rel="stylesheet" href="/css/common.css?v=2">
<link rel="stylesheet" href="/css/work-management.css?v=2">
<link rel="icon" type="image/png" href="/img/favicon.png">
<script src="/js/auth-check.js" defer></script>
</head>
<body>
<!-- 네비게이션 바 -->
<div id="navbar-container"></div>
<div class="work-report-container">
<!-- 네비게이션 바 -->
<div id="navbar-container"></div>
<!-- 메인 콘텐츠 -->
<main class="work-report-main">
<!-- 뒤로가기 버튼 -->
@@ -26,19 +27,19 @@
<div class="quick-access-section">
<h2 class="section-title">⚡ 빠른 액세스</h2>
<div class="quick-actions-grid">
<button class="quick-action-btn" onclick="navigateToPage('/pages/management/project-management.html')">
<button class="quick-action-btn" onclick="navigateToPage('/pages/admin/projects.html')">
<span class="quick-icon">📁</span>
<span class="quick-text">새 프로젝트</span>
</button>
<button class="quick-action-btn" onclick="navigateToPage('/pages/management/worker-management.html')">
<button class="quick-action-btn" onclick="navigateToPage('/pages/admin/workers.html')">
<span class="quick-icon">👤</span>
<span class="quick-text">작업자 등록</span>
</button>
<button class="quick-action-btn" onclick="navigateToPage('/pages/management/code-management.html')">
<button class="quick-action-btn" onclick="navigateToPage('/pages/admin/codes.html')">
<span class="quick-icon">🏷️</span>
<span class="quick-text">코드 설정</span>
</button>
<button class="quick-action-btn" onclick="navigateToPage('/pages/analysis/work-analysis.html')">
<button class="quick-action-btn" onclick="navigateToPage('/pages/work/analysis.html')">
<span class="quick-icon">📊</span>
<span class="quick-text">작업 분석</span>
</button>
@@ -50,7 +51,7 @@
<h2 class="section-title">🔧 관리 메뉴</h2>
<div class="management-grid">
<!-- 프로젝트 관리 -->
<div class="management-card" onclick="navigateToPage('/pages/management/project-management.html')">
<div class="management-card" onclick="navigateToPage('/pages/admin/projects.html')">
<div class="card-header">
<div class="card-icon">📁</div>
<h3 class="card-title">프로젝트 관리</h3>
@@ -70,7 +71,7 @@
</div>
<!-- 작업자 관리 -->
<div class="management-card" onclick="navigateToPage('/pages/management/worker-management.html')">
<div class="management-card" onclick="navigateToPage('/pages/admin/workers.html')">
<div class="card-header">
<div class="card-icon">👥</div>
<h3 class="card-title">작업자 관리</h3>
@@ -91,7 +92,7 @@
<!-- 코드 관리 -->
<div class="management-card" onclick="navigateToPage('/pages/management/code-management.html')">
<div class="management-card" onclick="navigateToPage('/pages/admin/codes.html')">
<div class="card-header">
<div class="card-icon">🏷️</div>
<h3 class="card-title">코드 관리</h3>

View File

@@ -4,20 +4,21 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>프로젝트 관리 | (주)테크니컬코리아</title>
<link rel="stylesheet" href="/css/design-system.css">
<link rel="stylesheet" href="/css/common.css?v=2">
<link rel="stylesheet" href="/css/project-management.css?v=4">
<link rel="icon" type="image/png" href="/img/favicon.png">
<script src="/js/auth-check.js" defer></script>
</head>
<body>
<!-- 네비게이션 바 -->
<div id="navbar-container"></div>
<div class="work-report-container">
<!-- 네비게이션 바 -->
<div id="navbar-container"></div>
<!-- 메인 콘텐츠 -->
<main class="work-report-main">
<!-- 뒤로가기 버튼 -->
<a href="/pages/management/work-management.html" class="back-button">
<a href="/pages/admin/index.html" class="back-button">
← 작업관리로 돌아가기
</a>

View File

@@ -4,6 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>작업자 관리 | (주)테크니컬코리아</title>
<link rel="stylesheet" href="/css/design-system.css">
<link rel="stylesheet" href="/css/common.css?v=2">
<link rel="stylesheet" href="/css/project-management.css?v=3">
<link rel="icon" type="image/png" href="/img/favicon.png">
@@ -11,14 +12,14 @@
<script type="module" src="/js/api-config.js?v=3"></script>
</head>
<body>
<!-- 네비게이션 바 -->
<div id="navbar-container"></div>
<div class="work-report-container">
<!-- 네비게이션 바 -->
<div id="navbar-container"></div>
<!-- 메인 콘텐츠 -->
<main class="work-report-main">
<!-- 뒤로가기 버튼 -->
<a href="/pages/management/work-management.html" class="back-button">
<a href="/pages/admin/index.html" class="back-button">
← 작업관리로 돌아가기
</a>

View File

@@ -85,7 +85,7 @@
</div>
<div class="card-body">
<div class="quick-actions-grid-full">
<a href="/pages/common/daily-work-report.html" class="quick-action-card">
<a href="/pages/work/report-create.html" class="quick-action-card">
<div class="action-icon-large">📝</div>
<div class="action-content">
<h3>작업 보고서 작성</h3>
@@ -94,7 +94,7 @@
<div class="action-arrow"></div>
</a>
<a href="/pages/common/daily-work-report-viewer.html" class="quick-action-card">
<a href="/pages/work/report-view.html" class="quick-action-card">
<div class="action-icon-large">📋</div>
<div class="action-content">
<h3>작업 현황 확인</h3>
@@ -103,7 +103,7 @@
<div class="action-arrow"></div>
</a>
<a href="/pages/analysis/work-analysis.html" class="quick-action-card admin-only">
<a href="/pages/work/analysis.html" class="quick-action-card admin-only">
<div class="action-icon-large">📈</div>
<div class="action-content">
<h3>작업 분석</h3>
@@ -112,7 +112,7 @@
<div class="action-arrow"></div>
</a>
<a href="/pages/management/work-management.html" class="quick-action-card admin-only">
<a href="/pages/admin/index.html" class="quick-action-card admin-only">
<div class="action-icon-large">🔧</div>
<div class="action-content">
<h3>작업 관리</h3>

View File

@@ -0,0 +1 @@
# Placeholder file to create work directory

View File

@@ -31,7 +31,7 @@
<div class="header-right">
<div class="header-actions">
<button class="btn btn-secondary dashboard-btn" onclick="window.location.href='/pages/dashboard/group-leader.html'">
<button class="btn btn-secondary dashboard-btn" onclick="window.location.href='/pages/dashboard.html'">
<span class="btn-icon">🏠</span>
대시보드
</button>

View File

@@ -0,0 +1,169 @@
# 페이지 구조 대대적 개편 - 2026-01-20
## 배경
기존 페이지 구조는 여러 폴더에 분산되어 있고, 파일명이 용도를 명확히 나타내지 못했습니다.
- 34개의 HTML 페이지 중 11개만 실제 사용
- 폴더 구조가 직관적이지 않음 (`common`, `analysis`, `management` 등)
- 파일명이 길고 일관성 없음 (`daily-work-report-viewer.html` 등)
## 목표
1. 미사용 페이지 정리 (보관)
2. 명확하고 직관적인 폴더 구조
3. 간결하고 일관성 있는 파일명
4. 향후 확장 가능한 구조
---
## 변경 내용
### 1. 미사용 페이지 아카이브 (24개)
모든 미사용 페이지를 `.archived-*` 형태로 보관:
- `.archived-admin/` (8개): 구버전 admin 페이지
- `.archived-*-analysis.html` (5개): 레거시 분석 페이지
- `.archived-*-dashboard.html` (3개): 사용하지 않는 대시보드
- `.archived-*.html` (8개): 기타 미사용 페이지
### 2. 새로운 폴더 구조
#### Before (기존)
```
pages/
├── admin/ (8개 - 전체 미사용)
├── analysis/ (6개 - 1개만 사용)
├── common/ (8개 - 2개만 사용)
├── dashboard/ (3개 - 1개만 사용)
├── management/ (4개 - 전체 사용)
├── profile/ (4개 - 3개 사용)
└── work-reports/ (2개 - 미사용)
```
#### After (개편)
```
pages/
├── dashboard.html # 메인 대시보드
├── work/ # 작업 관련 (3개)
├── admin/ # 관리 기능 (5개)
├── profile/ # 프로필 (2개)
└── .archived-*/ # 미사용 페이지 (24개)
```
### 3. 파일명 개선
| 기존 경로 | 새 경로 | 용도 |
|---------|---------|------|
| `dashboard/group-leader.html` | `dashboard.html` | 메인 대시보드 |
| `common/daily-work-report.html` | `work/report-create.html` | 작업보고서 작성 |
| `common/daily-work-report-viewer.html` | `work/report-view.html` | 작업보고서 조회 |
| `analysis/work-analysis.html` | `work/analysis.html` | 작업 분석 |
| `management/work-management.html` | `admin/index.html` | 관리 메뉴 허브 |
| `management/project-management.html` | `admin/projects.html` | 프로젝트 관리 |
| `management/worker-management.html` | `admin/workers.html` | 작업자 관리 |
| `management/code-management.html` | `admin/codes.html` | 코드 관리 |
| `profile/my-profile.html` | `profile/info.html` | 내 정보 |
| `profile/change-password.html` | `profile/password.html` | 비밀번호 변경 |
| `profile/admin-settings.html` | `admin/accounts.html` | 계정 관리 |
### 4. 내부 링크 수정
모든 페이지의 링크를 새 경로로 업데이트:
- `navbar.html`: 프로필 메뉴 링크 (3개)
- `dashboard.html`: 빠른 작업 링크 (4개)
- `admin/index.html`: 관리 메뉴 링크 (4개)
- `admin/*.html`: 뒤로가기 링크 (3개)
- `load-navbar.js`: 대시보드 버튼 경로
---
## 네이밍 규칙
### 파일명
- **메인 페이지**: 단일 명사 (`dashboard.html`)
- **관리 페이지**: 복수형 명사 (`projects.html`, `workers.html`)
- **기능 페이지**: 동사-명사 (`report-create.html`, `report-view.html`)
### 폴더명
- 단수형, 소문자
- 명확한 용도 (`work/`, `admin/`, `profile/`)
---
## 네비게이션 구조
```
dashboard.html (진입점)
├─┬─ 작업 메뉴
│ ├─→ work/report-create.html (작업 입력)
│ ├─→ work/report-view.html (작업 조회)
│ └─→ work/analysis.html (작업 분석) [관리자]
├─┬─ 관리 메뉴 [관리자만]
│ ├─→ admin/index.html (관리 허브)
│ │ ├─→ admin/projects.html
│ │ ├─→ admin/workers.html
│ │ ├─→ admin/codes.html
│ │ └─→ admin/accounts.html
└─┬─ 프로필 메뉴 (navbar)
├─→ profile/info.html
├─→ profile/password.html
└─→ admin/accounts.html [관리자]
```
---
## 영향 범위
### 변경된 파일
- **페이지**: 39개 (이동/개명 35개, 수정 4개)
- **공통 컴포넌트**: 2개 (`navbar.html`, `load-navbar.js`)
- **문서**: 1개 (`CODING_GUIDE.md`)
### CSS/JS 경로
- 모든 페이지가 절대 경로 사용 (`/css/`, `/js/`)
- 폴더 이동에 영향받지 않음 ✅
---
## 테스트 체크리스트
- [ ] 대시보드 접근 확인
- [ ] navbar 메뉴 모든 링크 작동 확인
- [ ] 작업 보고서 작성 페이지 접근
- [ ] 작업 보고서 조회 페이지 접근
- [ ] 작업 분석 페이지 접근 (관리자)
- [ ] 관리 메뉴 접근 (관리자)
- [ ] 프로젝트 관리
- [ ] 작업자 관리
- [ ] 코드 관리
- [ ] 계정 관리
- [ ] 프로필 페이지 접근
- [ ] 내 정보
- [ ] 비밀번호 변경
- [ ] 뒤로가기 버튼 작동 확인
---
## 향후 개선 사항
1. **추가 페이지 검토**
- 작업 검색 페이지 (`work/search.html`)
- 알림/공지 페이지 (`notifications.html`)
- 도움말 페이지 (`help.html`)
2. **URL 리다이렉트**
- 구버전 URL 호환성 유지 (선택사항)
- `.htaccess` 또는 JavaScript 리다이렉트
3. **폴더 정리**
- 빈 폴더 제거 (`dashboard`, `management`, `analysis`, `common`)
- `.archived-*` 폴더를 단일 `archived/` 폴더로 통합
---
## 커밋 정보
- **커밋 해시**: a6ab9e3
- **날짜**: 2026-01-20
- **영향받는 파일**: 39개
- **변경 라인**: +21, -19

View File

@@ -178,3 +178,55 @@
- [ ] 반응형 디자인 (모바일/태블릿) 확인
---
### 오후 - 네비게이션 구조 수정 (navbar-container 방식으로 통일)
- **작업**: 수정 및 복원
- **배경**:
- 오전에 진행한 변경사항 중 일부가 잘못된 접근이었음
- `daily-work-report.html`에 직접 header를 삽입한 것이 문제
- 올바른 방식: navbar-container를 통한 컴포넌트 방식
- **문제점**:
- `daily-work-report.html`은 참조 페이지로 변경하지 말았어야 함
- 다른 페이지들이 이 페이지의 구조를 따라야 했음
#### 수정 내용
1. **daily-work-report.html 복원**:
- 직접 삽입한 `<header class="dashboard-header">` 블록 제거
- 원래의 `<div id="navbar-container"></div>` 방식으로 복원
- 불필요하게 추가한 CSS/JS 임포트 제거
2. **관리 페이지들 구조 수정** (4개 파일):
- `web-ui/pages/management/code-management.html`
- `web-ui/pages/management/project-management.html`
- `web-ui/pages/management/work-management.html`
- `web-ui/pages/management/worker-management.html`
**변경사항**:
- `design-system.css` 임포트 추가 (navbar 스타일에 필요)
- `navbar-container`를 `work-report-container` 내부로 이동
```html
<!-- 이전 -->
<body>
<div id="navbar-container"></div>
<div class="work-report-container">
<main class="work-report-main">
<!-- 이후 -->
<body>
<div class="work-report-container">
<div id="navbar-container"></div>
<main class="work-report-main">
```
#### 최종 결과
- ✅ 모든 페이지가 동일한 navbar-container 컴포넌트 방식 사용
- ✅ daily-work-report.html이 원래 구조로 복원됨
- ✅ 관리 페이지들의 구조가 표준에 맞게 수정됨
- ✅ design-system.css가 모든 페이지에 로드되어 일관된 스타일 적용
#### 변경된 파일
- **복원**: `web-ui/pages/common/daily-work-report.html` (git diff 없음 - 완전 복원)
- **수정**: 4개 관리 페이지 (각 7줄 변경)
---