- 법인카드관리: 카드 CRUD, 결제일 휴일조정, 사용금액 집계, 선불결제 - 카드사용내역: 바로빌 SOAP 연동, 분개, 거래숨김, 금액수정 - 차량목록: 법인/렌트/리스 차량 등록, 주행거리 자동계산 - 차량일지: 운행기록, 용도별 통계, 출발↔도착 교환 - 정비이력: 카테고리별 비용 관리, 주행거리 자동갱신 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.7 KiB
5.7 KiB
차량일지
개요
차량일지는 법인차량의 운행기록을 관리하는 기능입니다. 출발/도착지, 운행 거리, 용도(출퇴근/업무/비업무), 월별 통계 등을 지원합니다.
- 라우트:
GET /finance/vehicle-logs - UI 기술: React 18 + Babel (브라우저 트랜스파일링)
파일 구조
mng/
├── app/Http/Controllers/Finance/
│ └── VehicleLogController.php # 메인 컨트롤러 (7개 메서드)
├── app/Models/
│ └── VehicleLog.php # 운행기록 모델
└── resources/views/finance/
└── vehicle-logs.blade.php # React 기반 단일 페이지
api/
└── database/migrations/
├── 2026_02_03_100000_create_vehicle_logs_table.php
└── 2026_02_03_133000_modify_vehicle_logs_trip_type_enum.php
라우트
// routes/web.php (finance prefix 그룹 내)
GET /vehicle-logs → index() 페이지 렌더링
GET /vehicle-logs/vehicles → vehicles() 차량 목록 (드롭다운용)
GET /vehicle-logs/list → list() 운행기록 목록 (JSON)
GET /vehicle-logs/summary → summary() 월별 통계
POST /vehicle-logs → store() 기록 등록
PUT /vehicle-logs/{id} → update() 기록 수정
DELETE /vehicle-logs/{id} → destroy() 기록 삭제
컨트롤러
VehicleLogController
| 메서드 | HTTP | 설명 |
|---|---|---|
index() |
GET | React 페이지 렌더링 (HX-Redirect 적용) |
vehicles() |
GET | 전체 차량 목록 (드롭다운 선택용) |
list() |
GET | 운행기록 목록 (필터, 검색) |
summary() |
GET | 월별 용도별 통계 (건수, 거리) |
store() |
POST | 운행기록 등록 |
update() |
PUT | 운행기록 수정 |
destroy() |
DELETE | 운행기록 삭제 |
list() 필터 파라미터
| 파라미터 | 설명 |
|---|---|
vehicle_id |
차량 ID |
year / month |
연/월 |
trip_type |
운행 용도 |
search |
검색 (운전자, 부서, 출발지, 도착지, 비고) |
summary() 응답 구조
{
"success": true,
"data": [
{ "trip_type": "business", "count": 15, "total_distance": 450 },
{ "trip_type": "commute_to", "count": 22, "total_distance": 330 },
{ "trip_type": "commute_from", "count": 22, "total_distance": 330 },
{ "trip_type": "personal", "count": 3, "total_distance": 45 }
]
}
모델
VehicleLog
테이블: vehicle_logs
| 필드 | 타입 | 설명 |
|---|---|---|
tenant_id |
bigint | 테넌트 ID |
vehicle_id |
bigint | 차량 FK (corporate_vehicles) |
log_date |
date | 운행일 |
department |
string(50) | 부서 |
driver_name |
string(50) | 운전자명 |
trip_type |
enum | 운행 용도 (아래 참조) |
departure_type |
string | 출발지 유형 |
departure_name |
string | 출발지명 |
departure_address |
string | 출발지 주소 |
arrival_type |
string | 도착지 유형 |
arrival_name |
string | 도착지명 |
arrival_address |
string | 도착지 주소 |
distance_km |
int | 운행거리 (km) |
note |
string(200) | 비고 |
운행 용도 (trip_type)
| 값 | 설명 |
|---|---|
commute_to |
출근용 |
commute_from |
퇴근용 |
business |
업무용 |
personal |
비업무 |
commute_round |
출퇴근 왕복 |
business_round |
업무용 왕복 |
personal_round |
비업무 왕복 |
위치 유형 (departure_type / arrival_type)
| 값 | 설명 |
|---|---|
home |
자택 |
office |
회사 |
client |
거래처 |
other |
기타 |
Relationships
$log->vehicle // BelongsTo CorporateVehicle
$log->tenant // BelongsTo Tenant
Static 메서드
VehicleLog::getTripTypes() // 용도 라벨 배열
VehicleLog::getLocationTypes() // 위치 유형 라벨 배열
VehicleLog::getNoteOptions() // 미리 정의된 비고 옵션
뷰 구성 (React)
vehicle-logs.blade.php
┌─ 페이지 헤더 ──────────────────────
│ 차량 선택 드롭다운 (현재 주행거리 표시)
│ 연/월 선택 | Excel 다운로드 | 기록 추가 버튼
│
├─ 용도별 통계 카드 ─────────────────
│ 출근 | 퇴근 | 업무 | 비업무
│ 건수 + 총 거리(km)
│
├─ 운행기록 테이블 ──────────────────
│ 날짜 | 차량 | 부서/이름 | 용도 | 출발지 | 도착지 | 거리 | 비고
│ └─ 용도: 출근(초록), 퇴근(파랑), 업무(보라), 비업무(회색) 배지
│ └─ 복사 버튼 (이전 기록 복제)
│ └─ 출발↔도착 교환 버튼 (trip_type도 자동 전환)
│
├─ 등록/수정 모달 ───────────────────
│ 차량 선택, 날짜, 부서, 운전자, 용도
│ 출발지: 유형 + 이름 + 주소
│ 도착지: 유형 + 이름 + 주소
│ 운행거리(km)
│ 비고: 미리 정의된 옵션 버튼 + 자유 입력
│ [삭제] [취소] [등록/저장]
│
└─ 비어있을 때: 안내 메시지
특수 기능
| 기능 | 설명 |
|---|---|
| 기록 복사 | 이전 운행기록을 새 날짜로 복제 |
| 출발↔도착 교환 | 출발지와 도착지를 스왑, trip_type도 자동 전환 (commute_to ↔ commute_from) |
| 미리 정의 비고 | 버튼 클릭으로 빠른 비고 입력 + 자유 텍스트 |
| 용도별 통계 | 월별 용도별 건수 및 총 거리 집계 |
HTMX 호환성
- React 기반 페이지이므로 HX-Redirect 필요
@push('scripts')블록에 React/Babel 스크립트 포함