From 3b43099fbf2a2d390e80c3d922b0de2d6e36b1c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Fri, 20 Mar 2026 10:20:51 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20[=EA=B7=BC=ED=83=9C]=20=EC=BA=98?= =?UTF-8?q?=EB=A6=B0=EB=8D=94=20=EC=98=81=EC=97=85=ED=8C=80=20=EC=A0=9C?= =?UTF-8?q?=EC=99=B8=20=ED=95=84=ED=84=B0=20=EB=88=84=EB=9D=BD=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B3=80=EA=B2=BD=EC=9D=B4=EB=A0=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INDEX.md | 1 + ...0260320_attendance_calendar_exclude_fix.md | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 changes/20260320_attendance_calendar_exclude_fix.md diff --git a/INDEX.md b/INDEX.md index aecabe5..7e4b923 100644 --- a/INDEX.md +++ b/INDEX.md @@ -299,6 +299,7 @@ DB 도메인별: | [20260319_split_card_journal_matching_fix.md](changes/20260319_split_card_journal_matching_fix.md) | 분리 카드거래 분개 매칭 + 개별 행 확장 표시 수정 | | [20260320_income_statement_monthly_total_and_items.md](changes/20260320_income_statement_monthly_total_and_items.md) | 손익계산서 월별보기 합계 열 추가 및 세부계정과목 표시 개선 | | [20260320_attendance_manual_absent.md](changes/20260320_attendance_manual_absent.md) | 근태현황 자동 결근 처리 → 수동 트리거 전환 (스케줄러 비활성화, 버튼 추가) | +| [20260320_attendance_calendar_exclude_fix.md](changes/20260320_attendance_calendar_exclude_fix.md) | 근태 캘린더 영업팀 제외 필터 누락 수정 + 운영DB 오류 데이터 삭제 | --- diff --git a/changes/20260320_attendance_calendar_exclude_fix.md b/changes/20260320_attendance_calendar_exclude_fix.md new file mode 100644 index 0000000..c550021 --- /dev/null +++ b/changes/20260320_attendance_calendar_exclude_fix.md @@ -0,0 +1,50 @@ +# 근태현황 캘린더 영업팀 제외 필터 누락 수정 + +**날짜:** 2026-03-20 +**작업자:** Claude Code + +## 변경 개요 + +근태현황 캘린더에서 영업팀 사원(오세형)이 결근으로 표시되는 오류를 수정한다. + +--- + +## 원인 분석 + +2가지 문제가 복합적으로 발생: + +1. **자동 결근 스케줄러에 영업팀 제외 로직 부재**: 기존 `markAbsentees()`가 `getExcludedUserIds()`를 호출하지 않아 영업팀 사원도 결근 처리됨 (3/19 23:50 자동 실행으로 오세형 결근 레코드 생성) +2. **캘린더 뷰에 제외 필터 누락**: `getMonthlyCalendarData()`에만 `getExcludedUserIds()` 필터가 빠져있음. 목록/통계/요약에는 적용되어 있었음 + +--- + +## 수정된 파일 + +| 파일 | 변경 내용 | +|------|----------| +| `mng/app/Services/HR/AttendanceService.php` | `getMonthlyCalendarData()`에 `getExcludedUserIds()` 필터 추가 | + +## 추가 조치 + +| 조치 | 내용 | +|------|------| +| 운영DB | 오세형(user_id:84) 잘못된 결근 레코드(id:432) 직접 삭제 | + +--- + +## 제외 필터 적용 현황 (수정 후) + +| 메서드 | 제외 필터 | +|--------|:---------:| +| `buildFilteredQuery()` (목록) | ✅ | +| `getMonthlyStats()` (통계) | ✅ | +| `getMonthlyCalendarData()` (캘린더) | ✅ (이번 수정) | +| `getEmployeeMonthlySummary()` (요약) | ✅ | +| `getOvertimeAlerts()` (초과근무) | ✅ | +| `markAbsentees()` (결근 처리) | ✅ (이전 커밋에서 수정) | + +--- + +## 관련 문서 + +- [20260320_attendance_manual_absent.md](20260320_attendance_manual_absent.md) — 자동 결근 처리 수동 트리거 전환