feat: 모바일 UX 대폭 개선 + PWA 구현 + 로그인 루프 수정

- 모바일 하단 네비: 메뉴 제거, 4개 핵심 기능(홈/TBM/작업보고/출근) SVG 아이콘
- 모바일 사이드바 스킵: 768px 이하에서 사이드바 미로드, 레이아웃 오프셋 해결
- 모바일 헤더: 햄버거 메뉴 숨김, 본문 margin/overflow 정리
- TBM 모바일: 풀스크린 모달, 저장 버튼 하단 고정, 터치 UX 개선
- PWA: manifest.json, sw.js(network-first), 앱 아이콘, iOS 메타태그, 킬스위치
- 로그인 무한루프 수정: 토큰 만료 검증, 쿠키 정리, loginPage 경로 수정
- 신고 메뉴 tkreport 리다이렉트: navbar + sidebar cross-system-link 적용
- TBM API: 작업장별 안전점검 체크리스트 조회 엔드포인트 추가
- 안전점검 체크리스트 관리 UI 개선
- tkuser: 이슈유형 관리 기능 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-02-24 08:20:50 +09:00
parent 3cc29c03a8
commit d36303101e
60 changed files with 1418 additions and 270 deletions

View File

@@ -29,23 +29,6 @@
margin: 0;
}
.btn-add {
padding: 0.75rem 1.5rem;
background: linear-gradient(135deg, #3b82f6, #2563eb);
color: white;
border: none;
border-radius: 8px;
font-weight: 600;
cursor: pointer;
display: flex;
align-items: center;
gap: 0.5rem;
}
.btn-add:hover {
background: linear-gradient(135deg, #2563eb, #1d4ed8);
}
/* 탭 메뉴 */
.tab-menu {
display: flex;
@@ -401,6 +384,65 @@
margin-bottom: 1rem;
}
/* 인라인 추가 행 */
.inline-add-row {
display: flex;
gap: 0.5rem;
padding: 0.75rem 1.25rem;
background: #f9fafb;
border-top: 1px dashed #e5e7eb;
align-items: center;
}
.inline-add-input {
flex: 1;
padding: 0.5rem 0.75rem;
border: 1px solid #d1d5db;
border-radius: 6px;
font-size: 0.9rem;
}
.inline-add-input:focus {
outline: none;
border-color: #3b82f6;
box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
}
.inline-add-btn {
padding: 0.5rem 1rem;
background: #3b82f6;
color: white;
border: none;
border-radius: 6px;
font-weight: 500;
cursor: pointer;
white-space: nowrap;
}
.inline-add-btn:hover {
background: #2563eb;
}
.inline-add-select {
padding: 0.5rem;
border: 1px solid #d1d5db;
border-radius: 6px;
font-size: 0.85rem;
max-width: 160px;
}
.inline-add-standalone {
background: white;
border-radius: 12px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
margin-bottom: 1rem;
overflow: hidden;
}
.inline-add-standalone .inline-add-row {
border-top: none;
}
/* 날씨 아이콘 */
.weather-icon {
display: inline-flex;
@@ -437,9 +479,6 @@
<div class="page-container">
<div class="page-header">
<h1 class="page-title">안전 체크리스트 관리</h1>
<button class="btn-add" onclick="openAddModal()">
<span>+</span> 항목 추가
</button>
</div>
<!-- 탭 메뉴 -->
@@ -589,7 +628,7 @@
</div>
<script src="/js/api-base.js"></script>
<script src="/js/app-init.js?v=2" defer></script>
<script src="/js/app-init.js?v=3" defer></script>
<script src="https://instant.page/5.2.0" type="module"></script>
<script type="module" src="/js/safety-checklist-manage.js"></script>
</body>