feat: 알림 시스템 및 시설설비 관리 기능 구현

- 알림 시스템 구축 (navbar 알림 아이콘, 드롭다운)
- 알림 수신자 설정 기능 (계정관리 페이지)
- 시설설비 관리 페이지 추가 (수리 워크플로우)
- 수리 신청 → 접수 → 처리중 → 완료 상태 관리
- 사이드바 메뉴 구조 개선 (공장 관리 카테고리)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-02-04 15:56:57 +09:00
parent d1aec517a6
commit b8ccde7f17
24 changed files with 3204 additions and 9 deletions

View File

@@ -6,7 +6,7 @@
<title>관리자 설정 | (주)테크니컬코리아</title>
<link rel="stylesheet" href="/css/design-system.css">
<link rel="stylesheet" href="/css/common.css?v=1">
<link rel="stylesheet" href="/css/admin-settings.css?v=1">
<link rel="stylesheet" href="/css/admin-settings.css?v=2">
<link rel="icon" type="image/png" href="/img/favicon.png">
</head>
<body>
@@ -69,6 +69,20 @@
</div>
</div>
</div>
<!-- 알림 수신자 설정 섹션 -->
<div class="settings-section" id="notificationRecipientsSection">
<div class="section-header">
<h2 class="section-title">알림 수신자 설정</h2>
<p class="section-description">알림 유형별 수신자를 지정합니다. 지정된 사용자에게만 알림이 전송됩니다.</p>
</div>
<div class="notification-recipients-container">
<div class="notification-type-cards" id="notificationTypeCards">
<!-- 동적으로 생성됨 -->
</div>
</div>
</div>
</div>
</main>
</div>
@@ -233,6 +247,33 @@
</div>
</div>
<!-- 알림 수신자 편집 모달 -->
<div id="notificationRecipientModal" class="modal-overlay" style="display: none;">
<div class="modal-container">
<div class="modal-header">
<h2 id="recipientModalTitle">알림 수신자 설정</h2>
<button class="modal-close-btn" onclick="closeRecipientModal()">×</button>
</div>
<div class="modal-body">
<p class="modal-description" id="recipientModalDesc">이 알림을 받을 사용자를 선택하세요.</p>
<div class="recipient-search-box">
<input type="text" id="recipientSearchInput" placeholder="사용자 검색..." class="form-control">
</div>
<div class="recipient-user-list" id="recipientUserList">
<!-- 사용자 체크박스 목록 -->
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" onclick="closeRecipientModal()">취소</button>
<button type="button" class="btn btn-primary" onclick="saveNotificationRecipients()">저장</button>
</div>
</div>
</div>
<!-- 토스트 알림 -->
<div class="toast-container" id="toastContainer"></div>
@@ -240,6 +281,6 @@
<script src="/js/api-base.js"></script>
<script src="/js/app-init.js?v=2" defer></script>
<script src="https://instant.page/5.2.0" type="module"></script>
<script src="/js/admin-settings.js?v=8"></script>
<script src="/js/admin-settings.js?v=9"></script>
</body>
</html>