feat(tksupport): Sprint 001 Section C — 전사 휴가관리 구현

- 전사 휴가 부여/관리 (company-holidays) CRUD + 연차차감 트랜잭션
- 전체 휴가관리 대시보드 (vacation-dashboard) 부서별/직원별 현황
- 내 휴가 현황 개선 (/my-status) balance_type별 카드, 전사 휴가일
- requireSupportTeam 미들웨어, 부서명 JOIN, 마이그레이션 002 추가
- 사이드바 roles 기반 메뉴 필터링 (하위호환 유지)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-03-23 08:16:50 +09:00
parent a3f7a324b1
commit 36391c02e1
19 changed files with 1040 additions and 62 deletions

View File

@@ -0,0 +1,25 @@
-- Section A 동시 개발 대비: 필요 테이블/컬럼 IF NOT EXISTS로 안전 생성
CREATE TABLE IF NOT EXISTS company_holidays (
id INT AUTO_INCREMENT PRIMARY KEY,
holiday_date DATE NOT NULL,
holiday_name VARCHAR(100) NOT NULL,
holiday_type ENUM('PAID', 'ANNUAL_DEDUCT') NOT NULL,
description TEXT,
created_by INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (created_by) REFERENCES sso_users(user_id),
UNIQUE KEY uq_holiday_date (holiday_date)
);
-- Section C 전용: 중복 차감 방지
ALTER TABLE company_holidays
ADD COLUMN IF NOT EXISTS deduction_applied_at TIMESTAMP NULL
COMMENT '연차차감 실행 시각 (NULL=미실행)';
-- sp_vacation_balances 컬럼 추가 (Section A 대비)
ALTER TABLE sp_vacation_balances
ADD COLUMN IF NOT EXISTS balance_type ENUM('AUTO','MANUAL','CARRY_OVER','LONG_SERVICE','COMPANY_GRANT')
DEFAULT 'AUTO';
ALTER TABLE sp_vacation_balances
ADD COLUMN IF NOT EXISTS expires_at DATE NULL;