feat(tkuser): 입사일 자동표시 + 퇴사자 목록 분리 + 퇴사일 관리

- 사용자 추가 시 hire_date 전송 (서울 오늘날짜 기본값)
- resigned_date 컬럼 마이그레이션 + CRUD 지원
- 비활성화(삭제) 시 resigned_date 자동 설정 (COALESCE)
- 활성/비활성 사용자 목록 분리, 퇴사자 접기/펼치기
- 퇴사자 재활성화 기능 (resigned_date 초기화)
- 편집 모달에 퇴사일 필드 추가

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-03-23 15:47:14 +09:00
parent 1f3eb14128
commit f09aa0875a
8 changed files with 120 additions and 27 deletions

View File

@@ -137,6 +137,10 @@
</select>
</div>
</div>
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">입사일</label>
<input type="date" id="newHireDate" class="input-field w-full px-3 py-1.5 rounded-lg text-sm">
</div>
<button type="submit" class="w-full px-4 py-2 bg-slate-700 text-white rounded-lg hover:bg-slate-800 text-sm font-medium">
<i class="fas fa-plus mr-1"></i>추가
</button>
@@ -152,6 +156,20 @@
</div>
</div>
<!-- 퇴사자 목록 -->
<div id="resignedSection" class="mt-6 bg-white rounded-xl shadow-sm p-5 hidden">
<div class="flex items-center justify-between mb-4">
<h2 class="text-base font-semibold text-gray-800">
<i class="fas fa-user-slash text-gray-400 mr-2"></i>퇴사자 목록
<span id="resignedCount" class="text-xs font-normal text-gray-400 ml-1"></span>
</h2>
<button onclick="toggleResignedList()" id="resignedToggleBtn" class="text-xs text-gray-500 hover:text-gray-700">
<i class="fas fa-chevron-down mr-1"></i>펼치기
</button>
</div>
<div id="resignedUserList" class="space-y-2 max-h-[300px] overflow-y-auto hidden"></div>
</div>
</div>
@@ -1043,9 +1061,15 @@
</select>
</div>
</div>
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">입사일</label>
<input type="date" id="editHireDate" class="input-field w-full px-3 py-1.5 rounded-lg text-sm">
<div class="grid grid-cols-2 gap-3">
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">입사일</label>
<input type="date" id="editHireDate" class="input-field w-full px-3 py-1.5 rounded-lg text-sm">
</div>
<div>
<label class="block text-xs font-medium text-gray-600 mb-1">퇴사일</label>
<input type="date" id="editResignedDate" class="input-field w-full px-3 py-1.5 rounded-lg text-sm">
</div>
</div>
<div class="flex gap-3 pt-3">
<button type="button" onclick="closeEditModal()" class="flex-1 px-4 py-2 border border-gray-300 rounded-lg hover:bg-gray-50 text-sm">취소</button>
@@ -2323,11 +2347,11 @@
</div>
<!-- JS: Core (config, token, api, toast, helpers, init) -->
<script src="/static/js/tkuser-core.js?v=2026032301"></script>
<script src="/static/js/tkuser-core.js?v=2026032303"></script>
<!-- JS: Tabs -->
<script src="/static/js/tkuser-tabs.js?v=2026032301"></script>
<!-- JS: Individual modules -->
<script src="/static/js/tkuser-users.js?v=2026032302"></script>
<script src="/static/js/tkuser-users.js?v=2026032303"></script>
<script src="/static/js/tkuser-projects.js?v=2026031401"></script>
<script src="/static/js/tkuser-departments.js?v=2026032302"></script>
<script src="/static/js/tkuser-issue-types.js?v=2026031401"></script>