fix(tkfb): 연차 현황 balance_type 기반 분류 — LONG_SERVICE 정기연차 혼동 수정
같은 type_code(ANNUAL_FULL)에 balance_type이 AUTO와 LONG_SERVICE로 2행 존재 시, type_name='연차'로 매칭되어 LONG_SERVICE가 정기연차를 덮어쓰는 문제. balance_type 우선 분류로 변경: - LONG_SERVICE → 장기근속 컬럼 - AUTO/MANUAL → 정기연차 컬럼 - CARRY_OVER → 이월 컬럼 - 값 누적(+=)으로 같은 type의 여러 행 합산 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -437,29 +437,34 @@
|
||||
};
|
||||
});
|
||||
|
||||
// 잔액 데이터 매핑
|
||||
// 잔액 데이터 매핑 — balance_type 우선, type_code/type_name 폴백
|
||||
balances.forEach(b => {
|
||||
if (!vacationData[b.user_id]) return;
|
||||
const btype = (b.balance_type || '').toUpperCase();
|
||||
const code = b.type_code || '';
|
||||
const data = vacationData[b.user_id];
|
||||
|
||||
if (code === 'CARRYOVER' || b.type_name === '이월') {
|
||||
data.carryover = b.total_days || 0;
|
||||
data.totalUsed += b.used_days || 0;
|
||||
} else if (code === 'ANNUAL' || b.type_name === '정기연차' || b.type_name === '연차') {
|
||||
data.annual = b.total_days || 0;
|
||||
data.totalUsed += b.used_days || 0;
|
||||
} else if (code === 'LONG_SERVICE' || b.type_name === '장기근속') {
|
||||
data.longService = b.total_days || 0;
|
||||
data.totalUsed += b.used_days || 0;
|
||||
} else if (code.startsWith('SPECIAL_') || specialTypes.some(st => st.code === code)) {
|
||||
if (btype === 'CARRY_OVER' || code === 'CARRYOVER' || b.type_name === '이월') {
|
||||
data.carryover += parseFloat(b.total_days) || 0;
|
||||
data.totalUsed += parseFloat(b.used_days) || 0;
|
||||
} else if (btype === 'LONG_SERVICE') {
|
||||
data.longService += parseFloat(b.total_days) || 0;
|
||||
data.totalUsed += parseFloat(b.used_days) || 0;
|
||||
} else if (btype === 'AUTO' || btype === 'MANUAL' || code === 'ANNUAL' || code === 'ANNUAL_FULL' || b.type_name === '정기연차' || b.type_name === '연차') {
|
||||
data.annual += parseFloat(b.total_days) || 0;
|
||||
data.totalUsed += parseFloat(b.used_days) || 0;
|
||||
} else if (btype === 'COMPANY_GRANT' || code.startsWith('SPECIAL_') || specialTypes.some(st => st.code === code)) {
|
||||
data.specials.push({
|
||||
type: code,
|
||||
typeName: b.type_name,
|
||||
days: b.total_days || 0,
|
||||
id: b.id
|
||||
});
|
||||
data.totalUsed += b.used_days || 0;
|
||||
data.totalUsed += parseFloat(b.used_days) || 0;
|
||||
} else {
|
||||
// 미분류 → 정기연차에 합산
|
||||
data.annual += parseFloat(b.total_days) || 0;
|
||||
data.totalUsed += parseFloat(b.used_days) || 0;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user