# 근태현황 캘린더 영업팀 제외 필터 누락 수정

**날짜:** 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) — 자동 결근 처리 수동 트리거 전환
