docs: [근태] 자동 결근 처리 수동 트리거 전환 변경이력 추가

This commit is contained in:
김보곤
2026-03-20 09:32:08 +09:00
parent a38e06e28c
commit ba731f3b3b
2 changed files with 77 additions and 0 deletions

View File

@@ -298,6 +298,7 @@ DB 도메인별:
| [20260319_card_transaction_display_unification.md](changes/20260319_card_transaction_display_unification.md) | 카드거래 표시 포맷 3개 화면 통일 (계정별원장·일반전표·카드사용내역) |
| [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) | 근태현황 자동 결근 처리 → 수동 트리거 전환 (스케줄러 비활성화, 버튼 추가) |
---

View File

@@ -0,0 +1,76 @@
# 근태현황 자동 결근 처리 → 수동 트리거 전환
**날짜:** 2026-03-20
**작업자:** Claude Code
## 변경 개요
근태현황의 자동 결근 처리 기능을 **수동 트리거 방식**으로 전환한다.
- 기존: 매일 23:50 스케줄러가 전체 테넌트 대상으로 자동 실행
- 변경: 근태현황 페이지에서 관리자가 날짜를 선택하여 수동 실행
---
## 수정된 파일
| 파일 | 변경 내용 |
|------|----------|
| `mng/routes/console.php` | 매일 23:50 스케줄러 비활성화 (주석 처리) |
| `mng/app/Services/HR/AttendanceService.php` | `markAbsentees()` 단일 테넌트 기반 + 제외 사원 필터 + 결과에 사원명 포함 |
| `mng/app/Http/Controllers/Api/Admin/HR/AttendanceController.php` | `markAbsent()` 수동 트리거 API 엔드포인트 추가 |
| `mng/routes/api.php` | `POST /mark-absent` 라우트 등록 |
| `mng/resources/views/hr/attendances/index.blade.php` | 결근 처리 버튼 + 모달 + JavaScript 추가 |
| `mng/app/Console/Commands/MarkAbsentEmployees.php` | 새 반환 형식(`array`)에 맞게 출력 수정 |
---
## 상세 변경 사항
### 1. 스케줄러 비활성화
`routes/console.php`에서 `attendance:mark-absent` 스케줄 주석 처리. artisan 커맨드는 유지하여 필요 시 CLI에서 수동 실행 가능.
### 2. `markAbsentees()` 메서드 변경
| 항목 | 기존 | 변경 |
|------|------|------|
| 대상 범위 | 전체 테넌트 순회 | 현재 세션 테넌트만 |
| 제외 처리 | 없음 | `getExcludedUserIds()` 적용 (영업팀 + `is_excluded`) |
| 반환값 | `int` (처리 건수) | `array` (`count`, `skipped_weekend`, `names`) |
| `created_by` | `null` (시스템) | `auth()->id()` (실행한 관리자) |
| `remarks` | `'자동 결근 처리'` | `'결근 처리 (수동)'` |
### 3. API 엔드포인트
```
POST /api/admin/hr/attendances/mark-absent
```
| 파라미터 | 타입 | 필수 | 설명 |
|---------|------|:----:|------|
| `date` | date | ✅ | 대상 날짜 (오늘 이전만 허용) |
응답 예시:
```json
{
"success": true,
"message": "3명 결근 처리 완료",
"data": {
"count": 3,
"skipped_weekend": false,
"names": ["홍길동", "김철수", "이영희"]
}
}
```
### 4. UI 변경
근태현황 페이지 우상단에 빨간색 **"결근 처리"** 버튼 추가. 클릭 시 모달에서 날짜 선택 → 확인 → 실행 → 결과(사원명 목록) 표시. 처리 후 테이블과 통계 자동 갱신.
---
## 관련 문서
- [근태현황 승인된 휴가 누락 attendance 레코드 자동 보정](20260319_attendance_leave_sync_fix.md)