feat(attendance): 주말+회사 휴무일 통합 처리
- monthlyComparisonModel: getCompanyHolidays 추가 - monthlyComparisonController: isHoliday에 company_holidays 포함 + holiday_name - proxyInputModel: getDailyStatus에 is_holiday/holiday_name 추가 - proxy-input.js: 휴무일 배너 + both_missing 작업자 비활성화 (특근자는 활성 유지) - 마이그레이션: 2026년 공휴일 16건 일괄 INSERT Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,10 +22,11 @@ function determineStatus(report, attendance, isHoliday) {
|
||||
|
||||
// 날짜별 비교 데이터 생성
|
||||
async function buildComparisonData(userId, year, month) {
|
||||
const [reports, attendances, confirmation] = await Promise.all([
|
||||
const [reports, attendances, confirmation, holidays] = await Promise.all([
|
||||
Model.getWorkReports(userId, year, month),
|
||||
Model.getAttendanceRecords(userId, year, month),
|
||||
Model.getConfirmation(userId, year, month)
|
||||
Model.getConfirmation(userId, year, month),
|
||||
Model.getCompanyHolidays(year, month)
|
||||
]);
|
||||
|
||||
// 날짜 맵 생성
|
||||
@@ -57,7 +58,7 @@ async function buildComparisonData(userId, year, month) {
|
||||
const date = new Date(year, month - 1, day);
|
||||
const dateStr = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
|
||||
const dayOfWeek = date.getDay();
|
||||
const isHoliday = dayOfWeek === 0 || dayOfWeek === 6;
|
||||
const isHoliday = dayOfWeek === 0 || dayOfWeek === 6 || holidays.dateSet.has(dateStr);
|
||||
|
||||
const report = reportMap[dateStr] || null;
|
||||
const attend = attendMap[dateStr] || null;
|
||||
@@ -89,6 +90,7 @@ async function buildComparisonData(userId, year, month) {
|
||||
date: dateStr,
|
||||
day_of_week: DAYS_KR[dayOfWeek],
|
||||
is_holiday: isHoliday,
|
||||
holiday_name: holidays.nameMap[dateStr] || (dayOfWeek === 0 || dayOfWeek === 6 ? '주말' : null),
|
||||
work_report: report ? {
|
||||
total_hours: parseFloat(report.total_hours),
|
||||
entries: [{ project_name: report.project_names || '', work_type: report.work_type_names || '', hours: parseFloat(report.total_hours) }]
|
||||
|
||||
Reference in New Issue
Block a user