feat(tkuser): 부서 관리 개선 — 상위부서 제거, hard delete, 휴가 부서별 그룹

- 상위부서(parent_id) 필드 UI/API 전체 제거
- 부서 비활성화(soft delete) → 진짜 삭제(hard delete) 전환 (트랜잭션)
- 소속 인원 있는 부서 삭제 시 department_id=NULL 처리
- 편집 모달에서 활성/비활성 필드 제거
- 휴가 발생 입력 작업자 select를 부서별 optgroup으로 표시

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-03-13 20:27:14 +09:00
parent 7e10a90a1a
commit e236883c64
5 changed files with 47 additions and 73 deletions

View File

@@ -77,13 +77,25 @@ async function loadWorkers() {
return;
}
// 개별 입력 탭 - 작업자 셀렉트 박스
// 개별 입력 탭 - 작업자 셀렉트 박스 (부서별 그룹)
const selectWorker = document.getElementById('individualWorker');
const byDept = {};
workers.forEach(worker => {
const option = document.createElement('option');
option.value = worker.user_id;
option.textContent = `${worker.worker_name} (${worker.employment_status === 'employed' ? '재직' : '퇴사'})`;
selectWorker.appendChild(option);
const dept = worker.department_name || '부서 미지정';
if (!byDept[dept]) byDept[dept] = [];
byDept[dept].push(worker);
});
Object.keys(byDept).sort().forEach(dept => {
const group = document.createElement('optgroup');
group.label = dept;
byDept[dept].forEach(worker => {
const option = document.createElement('option');
option.value = worker.user_id;
option.textContent = `${worker.worker_name} (${worker.employment_status === 'employed' ? '재직' : '퇴사'})`;
group.appendChild(option);
});
selectWorker.appendChild(group);
});
console.log(`Loaded ${workers.length} workers successfully`);
} catch (error) {