feat: 권한 탭 분리 + 부서 인원 표시 + 다수 시스템 개선

- tkuser: 권한 관리를 별도 탭으로 분리, 부서 클릭 시 소속 인원 목록 표시
- system1: 모바일 UI 개선, nginx 권한 보정, 신고 카테고리 타입 마이그레이션
- system2: 신고 상세/보고서 개선, 내 보고서 페이지 추가
- system3: 이슈 뷰/수신함/관리함 개선
- gateway: 포털 라우팅 수정
- user-management API: 부서별 권한 벌크 설정 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-02-23 14:12:57 +09:00
parent bf4000c4ae
commit 3cc29c03a8
37 changed files with 1751 additions and 233 deletions

View File

@@ -120,18 +120,28 @@ body {
justify-content: space-between;
width: 100%;
padding: 0 var(--space-4);
flex-wrap: nowrap;
}
.header-left {
display: flex;
align-items: center;
min-width: 0;
flex-shrink: 1;
}
.header-left .brand {
display: flex;
align-items: center;
gap: var(--space-3);
min-width: 0;
}
.header-right {
display: flex;
align-items: center;
gap: var(--space-4);
flex-shrink: 0;
}
.brand-logo {
@@ -634,25 +644,41 @@ body {
@media (max-width: 768px) {
.dashboard-header {
padding: var(--space-2) var(--space-3);
height: 64px;
padding: 0 0.5rem;
height: 52px;
}
body {
padding-top: 64px;
padding-top: 52px;
}
.header-content {
padding: 0 var(--space-2);
padding: 0;
gap: 0.25rem;
}
.header-left {
flex: 1;
min-width: 0;
overflow: hidden;
}
.header-left .brand {
gap: 0.5rem;
min-width: 0;
}
.brand-logo {
width: 36px;
height: 36px;
width: 30px;
height: 30px;
flex-shrink: 0;
}
.brand-title {
font-size: var(--text-base);
font-size: 0.8125rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.brand-subtitle {
@@ -663,13 +689,19 @@ body {
display: none;
}
.header-right {
gap: 0.25rem;
flex-shrink: 0;
}
.user-info {
display: none;
}
.user-avatar {
width: 36px;
height: 36px;
width: 30px;
height: 30px;
font-size: 0.8rem;
}
.dashboard-btn .btn-text,
@@ -679,48 +711,52 @@ body {
.dashboard-btn,
.report-btn {
padding: var(--space-2);
width: 40px;
height: 40px;
padding: 0;
width: 32px;
height: 32px;
justify-content: center;
border: none;
background: rgba(255, 255, 255, 0.12);
}
.dashboard-btn .btn-icon,
.report-btn .btn-icon {
margin: 0;
font-size: 1rem;
}
.notification-btn {
width: 40px;
height: 40px;
width: 32px;
height: 32px;
}
.notification-dropdown {
position: fixed;
top: 64px;
left: var(--space-3);
right: var(--space-3);
top: 52px;
left: 0.5rem;
right: 0.5rem;
width: auto;
}
.header-right {
gap: var(--space-2);
}
.mobile-menu-btn {
width: 40px;
height: 40px;
margin-right: var(--space-2);
width: 32px;
height: 32px;
margin-right: 0.25rem;
font-size: 1.125rem;
background: rgba(255, 255, 255, 0.12);
border: none;
}
.user-profile {
padding: var(--space-1) var(--space-2);
padding: 0.125rem 0.25rem;
background: transparent;
border: none;
}
.profile-menu {
position: fixed;
top: 64px;
right: var(--space-3);
top: 52px;
right: 0.5rem;
left: auto;
width: 200px;
}

View File

@@ -66,8 +66,11 @@
<span class="nav-arrow">&#9662;</span>
</button>
<div class="nav-category-items">
<a href="#" class="nav-item cross-system-link" data-system="report" data-path="/pages/safety/report-status.html" data-page-key="safety.report_status">
<span class="nav-text">안전신고 현황</span>
<a href="#" class="nav-item cross-system-link" data-system="report" data-path="/pages/safety/my-reports.html" data-page-key="safety.my_reports">
<span class="nav-text">신고 현황</span>
</a>
<a href="#" class="nav-item cross-system-link admin-only" data-system="report" data-path="/pages/safety/report-status.html" data-page-key="safety.report_status">
<span class="nav-text">전체 신고 현황</span>
</a>
<a href="/pages/safety/visit-request.html" class="nav-item" data-page-key="safety.visit_request">
<span class="nav-text">출입 신청</span>