Files
tk-factory-services/system1-factory/web/pages/dashboard-new.html
Hyungi Ahn 1cfd4da8ba feat(pwa): Network-First 서비스 워커 — 홈화면 앱 자동 갱신
- sw.js: Network-First 캐시 전략 (GET + same-origin + res.ok만 캐시)
- tkfb-core.js: SW 등록 + 업데이트 감지 시 자동 새로고침
  (최초 설치 시 토스트 방지: controller 체크)
- manifest.json: start_url → dashboard-new.html
- nginx: sw.js, manifest.json no-cache 헤더
- 배포 시 sw.js의 APP_VERSION만 변경하면 전 사용자 자동 갱신

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 15:36:36 +09:00

55 lines
2.4 KiB
HTML

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>대시보드 - TK 공장관리</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="stylesheet" href="/static/css/tkfb.css?v=2026040103">
<link rel="stylesheet" href="/css/production-dashboard.css?v=2026040102">
<link rel="stylesheet" href="/css/tbm-mobile.css?v=2026033108">
<style>.pd-container { padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px)); }</style>
</head>
<body class="bg-gray-50">
<span id="headerUserName" class="hidden">-</span>
<span id="headerUserAvatar" class="hidden">-</span>
<nav id="sideNav"></nav>
<div id="mobileOverlay" class="mobile-overlay hidden" onclick="toggleSideNav()"></div>
<main class="pd-main">
<section class="pd-profile-card" id="profileCard"></section>
<section class="pd-section" id="deptPagesSection">
<h2 class="pd-section-title">내 메뉴</h2>
<div class="pd-grid" id="deptPagesGrid"></div>
</section>
<section class="pd-section hidden" id="personalPagesSection">
<h2 class="pd-section-title">추가 메뉴</h2>
<div class="pd-grid" id="personalPagesGrid"></div>
</section>
<section class="pd-section hidden" id="adminPagesSection">
<h2 class="pd-section-title">관리 도구</h2>
<div class="pd-grid" id="adminPagesGrid"></div>
</section>
</main>
<!-- 연차 상세 모달 -->
<div class="pd-detail-modal" id="vacDetailModal" onclick="if(event.target===this)closeVacDetail()">
<div class="pd-detail-sheet">
<div class="pd-detail-header">
<span class="pd-detail-title"><i class="fas fa-umbrella-beach"></i> 연차 상세</span>
<button class="pd-detail-close" onclick="closeVacDetail()"><i class="fas fa-times"></i></button>
</div>
<div id="vacDetailContent"></div>
</div>
</div>
<script src="/static/js/tkfb-core.js?v=2026040105"></script>
<script src="/js/production-dashboard.js?v=2026040103"></script>
<script src="/static/js/shared-bottom-nav.js?v=2026040103"></script>
</body>
</html>