docs: [근태] 자동 결근 처리 수동 트리거 전환 변경이력 추가
This commit is contained in:
1
INDEX.md
1
INDEX.md
@@ -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) | 근태현황 자동 결근 처리 → 수동 트리거 전환 (스케줄러 비활성화, 버튼 추가) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
76
changes/20260320_attendance_manual_absent.md
Normal file
76
changes/20260320_attendance_manual_absent.md
Normal 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)
|
||||
Reference in New Issue
Block a user