Compare commits
8 Commits
4ac0605887
...
6b7f9d4627
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b7f9d4627 | ||
|
|
73e5eff7bd | ||
|
|
a6ab9e395d | ||
|
|
33e9e2afec | ||
|
|
05a9de8d2f | ||
|
|
e8829a0bc7 | ||
|
|
4f0af62d8c | ||
|
|
8a5480177b |
@@ -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 개발 가이드
|
## 📡 API 개발 가이드
|
||||||
- **RESTful**: 명사형 리소스 사용 (`POST /users` O, `/createUser` X).
|
- **RESTful**: 명사형 리소스 사용 (`POST /users` O, `/createUser` X).
|
||||||
- **응답 포맷**:
|
- **응답 포맷**:
|
||||||
|
|||||||
@@ -21,9 +21,9 @@ const login = asyncHandler(async (req, res) => {
|
|||||||
throw new ApiError(result.error, result.status || 400);
|
throw new ApiError(result.error, result.status || 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 로그인 성공 후, 모든 권한을 그룹장 대시보드로 통일
|
// 로그인 성공 후, 메인 대시보드로 리다이렉트
|
||||||
const user = result.data.user;
|
const user = result.data.user;
|
||||||
const redirectUrl = '/pages/dashboard/group-leader.html'; // 모든 사용자를 그룹장 대시보드로 리다이렉트
|
const redirectUrl = '/pages/dashboard.html'; // 메인 대시보드로 리다이렉트
|
||||||
|
|
||||||
// 새로운 응답 포맷터 사용
|
// 새로운 응답 포맷터 사용
|
||||||
res.auth(user, result.data.token, redirectUrl, '로그인 성공');
|
res.auth(user, result.data.token, redirectUrl, '로그인 성공');
|
||||||
|
|||||||
@@ -20,6 +20,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="header-right">
|
<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-profile" id="userProfile">
|
||||||
<div class="user-avatar">
|
<div class="user-avatar">
|
||||||
<span class="avatar-text" id="userInitial">사</span>
|
<span class="avatar-text" id="userInitial">사</span>
|
||||||
@@ -29,19 +34,15 @@
|
|||||||
<span class="user-role" id="userRole">작업자</span>
|
<span class="user-role" id="userRole">작업자</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="profile-menu" id="profileMenu">
|
<div class="profile-menu" id="profileMenu">
|
||||||
<a href="/pages/profile/my-dashboard.html" class="menu-item">
|
<a href="/pages/profile/info.html" class="menu-item">
|
||||||
<span class="menu-icon">📊</span>
|
|
||||||
나의 대시보드
|
|
||||||
</a>
|
|
||||||
<a href="/pages/profile/my-profile.html" class="menu-item">
|
|
||||||
<span class="menu-icon">👤</span>
|
<span class="menu-icon">👤</span>
|
||||||
내 프로필
|
내 프로필
|
||||||
</a>
|
</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>
|
<span class="menu-icon">🔐</span>
|
||||||
비밀번호 변경
|
비밀번호 변경
|
||||||
</a>
|
</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>
|
<span class="menu-icon">⚙️</span>
|
||||||
관리자 설정
|
관리자 설정
|
||||||
</a>
|
</a>
|
||||||
@@ -58,7 +59,7 @@
|
|||||||
<style>
|
<style>
|
||||||
/* 최신 대시보드 헤더 스타일 */
|
/* 최신 대시보드 헤더 스타일 */
|
||||||
.dashboard-header {
|
.dashboard-header {
|
||||||
background: linear-gradient(135deg, #1e40af 0%, #1d4ed8 50%, #2563eb 100%);
|
background: linear-gradient(135deg, #0ea5e9 0%, #38bdf8 50%, #7dd3fc 100%);
|
||||||
color: white;
|
color: white;
|
||||||
padding: 1rem 1.5rem;
|
padding: 1rem 1.5rem;
|
||||||
box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1);
|
||||||
@@ -262,6 +263,37 @@
|
|||||||
color: #b91c1c !important;
|
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) {
|
@media (max-width: 768px) {
|
||||||
.dashboard-header {
|
.dashboard-header {
|
||||||
@@ -283,5 +315,13 @@
|
|||||||
.user-info {
|
.user-info {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dashboard-btn .btn-text {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard-btn {
|
||||||
|
padding: 0.5rem 0.75rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -9,164 +9,7 @@ body {
|
|||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 헤더 스타일 */
|
/* 헤더 스타일은 navbar.html에서 관리됨 */
|
||||||
.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;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 메인 콘텐츠 */
|
/* 메인 콘텐츠 */
|
||||||
.dashboard-main {
|
.dashboard-main {
|
||||||
@@ -430,10 +273,6 @@ body {
|
|||||||
|
|
||||||
/* 반응형 디자인 */
|
/* 반응형 디자인 */
|
||||||
@media (max-width: 1024px) {
|
@media (max-width: 1024px) {
|
||||||
.dashboard-header {
|
|
||||||
padding: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dashboard-main {
|
.dashboard-main {
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
}
|
}
|
||||||
@@ -445,22 +284,6 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.header-center {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.company-info {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dashboard-btn .btn-text {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.user-info {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-title {
|
.page-title {
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
@@ -477,10 +300,6 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 480px) {
|
@media (max-width: 480px) {
|
||||||
.dashboard-header {
|
|
||||||
padding: 0.75rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dashboard-main {
|
.dashboard-main {
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,12 +16,12 @@ export const config = {
|
|||||||
paths: {
|
paths: {
|
||||||
// 로그인 페이지 경로
|
// 로그인 페이지 경로
|
||||||
loginPage: '/index.html',
|
loginPage: '/index.html',
|
||||||
// 로그인 후 기본적으로 이동할 대시보드 경로
|
// 메인 대시보드 경로 (모든 사용자 공통)
|
||||||
defaultDashboard: '/pages/dashboard/user.html',
|
dashboard: '/pages/dashboard.html',
|
||||||
// 시스템 대시보드 경로
|
// 하위 호환성을 위한 별칭들
|
||||||
systemDashboard: '/pages/dashboard/system.html',
|
defaultDashboard: '/pages/dashboard.html',
|
||||||
// 그룹 리더 대시보드 경로
|
systemDashboard: '/pages/dashboard.html',
|
||||||
groupLeaderDashboard: '/pages/dashboard/group-leader.html',
|
groupLeaderDashboard: '/pages/dashboard.html',
|
||||||
},
|
},
|
||||||
|
|
||||||
// 공용 컴포넌트 경로 설정
|
// 공용 컴포넌트 경로 설정
|
||||||
|
|||||||
@@ -66,6 +66,12 @@ function populateUserInfo(doc, user) {
|
|||||||
const el = doc.getElementById(id);
|
const el = doc.getElementById(id);
|
||||||
if (el) el.textContent = elements[id];
|
if (el) el.textContent = elements[id];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 메인 대시보드 URL 설정
|
||||||
|
const dashboardBtn = doc.getElementById('dashboardBtn');
|
||||||
|
if (dashboardBtn) {
|
||||||
|
dashboardBtn.href = '/pages/dashboard.html';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
1
web-ui/pages/admin/.gitkeep
Normal file
1
web-ui/pages/admin/.gitkeep
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# Placeholder file to create admin directory
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>코드 관리 | (주)테크니컬코리아</title>
|
<title>코드 관리 | (주)테크니컬코리아</title>
|
||||||
|
<link rel="stylesheet" href="/css/design-system.css">
|
||||||
<link rel="stylesheet" href="/css/common.css?v=2">
|
<link rel="stylesheet" href="/css/common.css?v=2">
|
||||||
<link rel="stylesheet" href="/css/project-management.css?v=4">
|
<link rel="stylesheet" href="/css/project-management.css?v=4">
|
||||||
<link rel="icon" type="image/png" href="/img/favicon.png">
|
<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>
|
<script type="module" src="/js/api-config.js?v=3"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- 네비게이션 바 -->
|
|
||||||
<div id="navbar-container"></div>
|
|
||||||
|
|
||||||
<div class="work-report-container">
|
<div class="work-report-container">
|
||||||
|
<!-- 네비게이션 바 -->
|
||||||
|
<div id="navbar-container"></div>
|
||||||
|
|
||||||
<!-- 메인 콘텐츠 -->
|
<!-- 메인 콘텐츠 -->
|
||||||
<main class="work-report-main">
|
<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>
|
</a>
|
||||||
|
|
||||||
@@ -4,16 +4,17 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>작업 관리 | (주)테크니컬코리아</title>
|
<title>작업 관리 | (주)테크니컬코리아</title>
|
||||||
|
<link rel="stylesheet" href="/css/design-system.css">
|
||||||
<link rel="stylesheet" href="/css/common.css?v=2">
|
<link rel="stylesheet" href="/css/common.css?v=2">
|
||||||
<link rel="stylesheet" href="/css/work-management.css?v=2">
|
<link rel="stylesheet" href="/css/work-management.css?v=2">
|
||||||
<link rel="icon" type="image/png" href="/img/favicon.png">
|
<link rel="icon" type="image/png" href="/img/favicon.png">
|
||||||
<script src="/js/auth-check.js" defer></script>
|
<script src="/js/auth-check.js" defer></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- 네비게이션 바 -->
|
|
||||||
<div id="navbar-container"></div>
|
|
||||||
|
|
||||||
<div class="work-report-container">
|
<div class="work-report-container">
|
||||||
|
<!-- 네비게이션 바 -->
|
||||||
|
<div id="navbar-container"></div>
|
||||||
|
|
||||||
<!-- 메인 콘텐츠 -->
|
<!-- 메인 콘텐츠 -->
|
||||||
<main class="work-report-main">
|
<main class="work-report-main">
|
||||||
<!-- 뒤로가기 버튼 -->
|
<!-- 뒤로가기 버튼 -->
|
||||||
@@ -26,19 +27,19 @@
|
|||||||
<div class="quick-access-section">
|
<div class="quick-access-section">
|
||||||
<h2 class="section-title">⚡ 빠른 액세스</h2>
|
<h2 class="section-title">⚡ 빠른 액세스</h2>
|
||||||
<div class="quick-actions-grid">
|
<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-icon">📁</span>
|
||||||
<span class="quick-text">새 프로젝트</span>
|
<span class="quick-text">새 프로젝트</span>
|
||||||
</button>
|
</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-icon">👤</span>
|
||||||
<span class="quick-text">작업자 등록</span>
|
<span class="quick-text">작업자 등록</span>
|
||||||
</button>
|
</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-icon">🏷️</span>
|
||||||
<span class="quick-text">코드 설정</span>
|
<span class="quick-text">코드 설정</span>
|
||||||
</button>
|
</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-icon">📊</span>
|
||||||
<span class="quick-text">작업 분석</span>
|
<span class="quick-text">작업 분석</span>
|
||||||
</button>
|
</button>
|
||||||
@@ -50,7 +51,7 @@
|
|||||||
<h2 class="section-title">🔧 관리 메뉴</h2>
|
<h2 class="section-title">🔧 관리 메뉴</h2>
|
||||||
<div class="management-grid">
|
<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-header">
|
||||||
<div class="card-icon">📁</div>
|
<div class="card-icon">📁</div>
|
||||||
<h3 class="card-title">프로젝트 관리</h3>
|
<h3 class="card-title">프로젝트 관리</h3>
|
||||||
@@ -70,7 +71,7 @@
|
|||||||
</div>
|
</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-header">
|
||||||
<div class="card-icon">👥</div>
|
<div class="card-icon">👥</div>
|
||||||
<h3 class="card-title">작업자 관리</h3>
|
<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-header">
|
||||||
<div class="card-icon">🏷️</div>
|
<div class="card-icon">🏷️</div>
|
||||||
<h3 class="card-title">코드 관리</h3>
|
<h3 class="card-title">코드 관리</h3>
|
||||||
@@ -4,20 +4,21 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>프로젝트 관리 | (주)테크니컬코리아</title>
|
<title>프로젝트 관리 | (주)테크니컬코리아</title>
|
||||||
|
<link rel="stylesheet" href="/css/design-system.css">
|
||||||
<link rel="stylesheet" href="/css/common.css?v=2">
|
<link rel="stylesheet" href="/css/common.css?v=2">
|
||||||
<link rel="stylesheet" href="/css/project-management.css?v=4">
|
<link rel="stylesheet" href="/css/project-management.css?v=4">
|
||||||
<link rel="icon" type="image/png" href="/img/favicon.png">
|
<link rel="icon" type="image/png" href="/img/favicon.png">
|
||||||
<script src="/js/auth-check.js" defer></script>
|
<script src="/js/auth-check.js" defer></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- 네비게이션 바 -->
|
|
||||||
<div id="navbar-container"></div>
|
|
||||||
|
|
||||||
<div class="work-report-container">
|
<div class="work-report-container">
|
||||||
|
<!-- 네비게이션 바 -->
|
||||||
|
<div id="navbar-container"></div>
|
||||||
|
|
||||||
<!-- 메인 콘텐츠 -->
|
<!-- 메인 콘텐츠 -->
|
||||||
<main class="work-report-main">
|
<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>
|
</a>
|
||||||
|
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>작업자 관리 | (주)테크니컬코리아</title>
|
<title>작업자 관리 | (주)테크니컬코리아</title>
|
||||||
|
<link rel="stylesheet" href="/css/design-system.css">
|
||||||
<link rel="stylesheet" href="/css/common.css?v=2">
|
<link rel="stylesheet" href="/css/common.css?v=2">
|
||||||
<link rel="stylesheet" href="/css/project-management.css?v=3">
|
<link rel="stylesheet" href="/css/project-management.css?v=3">
|
||||||
<link rel="icon" type="image/png" href="/img/favicon.png">
|
<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>
|
<script type="module" src="/js/api-config.js?v=3"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- 네비게이션 바 -->
|
|
||||||
<div id="navbar-container"></div>
|
|
||||||
|
|
||||||
<div class="work-report-container">
|
<div class="work-report-container">
|
||||||
|
<!-- 네비게이션 바 -->
|
||||||
|
<div id="navbar-container"></div>
|
||||||
|
|
||||||
<!-- 메인 콘텐츠 -->
|
<!-- 메인 콘텐츠 -->
|
||||||
<main class="work-report-main">
|
<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>
|
</a>
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="quick-actions-grid-full">
|
<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-icon-large">📝</div>
|
||||||
<div class="action-content">
|
<div class="action-content">
|
||||||
<h3>작업 보고서 작성</h3>
|
<h3>작업 보고서 작성</h3>
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
<div class="action-arrow">→</div>
|
<div class="action-arrow">→</div>
|
||||||
</a>
|
</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-icon-large">📋</div>
|
||||||
<div class="action-content">
|
<div class="action-content">
|
||||||
<h3>작업 현황 확인</h3>
|
<h3>작업 현황 확인</h3>
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
<div class="action-arrow">→</div>
|
<div class="action-arrow">→</div>
|
||||||
</a>
|
</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-icon-large">📈</div>
|
||||||
<div class="action-content">
|
<div class="action-content">
|
||||||
<h3>작업 분석</h3>
|
<h3>작업 분석</h3>
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
<div class="action-arrow">→</div>
|
<div class="action-arrow">→</div>
|
||||||
</a>
|
</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-icon-large">🔧</div>
|
||||||
<div class="action-content">
|
<div class="action-content">
|
||||||
<h3>작업 관리</h3>
|
<h3>작업 관리</h3>
|
||||||
1
web-ui/pages/work/.gitkeep
Normal file
1
web-ui/pages/work/.gitkeep
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# Placeholder file to create work directory
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
<div class="header-right">
|
<div class="header-right">
|
||||||
<div class="header-actions">
|
<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>
|
<span class="btn-icon">🏠</span>
|
||||||
대시보드
|
대시보드
|
||||||
</button>
|
</button>
|
||||||
169
개발 log/2026-01-20-page-restructure.md
Normal file
169
개발 log/2026-01-20-page-restructure.md
Normal 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
|
||||||
@@ -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줄 변경)
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user