2.6 KiB
2.6 KiB
근태현황 자동 결근 처리 → 수동 트리거 전환
날짜: 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 | ✅ | 대상 날짜 (오늘 이전만 허용) |
응답 예시:
{
"success": true,
"message": "3명 결근 처리 완료",
"data": {
"count": 3,
"skipped_weekend": false,
"names": ["홍길동", "김철수", "이영희"]
}
}
4. UI 변경
근태현황 페이지 우상단에 빨간색 "결근 처리" 버튼 추가. 클릭 시 모달에서 날짜 선택 → 확인 → 실행 → 결과(사원명 목록) 표시. 처리 후 테이블과 통계 자동 갱신.