# 카드/차량관리 기능

## 개요

SAM 프로젝트의 카드/차량관리 모듈은 법인카드 관리, 카드 사용내역 조회, 차량 관리, 운행일지, 정비이력을 종합적으로 관리하는 시스템입니다.
바로빌 API 연동을 통한 카드거래 자동 수집, 카드별 사용금액 집계, 차량 운행/정비 기록 관리 기능을 제공합니다.

## 메뉴 구성

| 메뉴 | 경로 | 설명 | UI 기술 |
|------|------|------|---------|
| [법인카드관리](./corporate-cards.md) | `/finance/corporate-cards` | 법인카드 등록/조회, 요약 대시보드 | React 18 |
| [카드사용내역](./card-transactions.md) | `/finance/card-transactions` | 바로빌 연동 카드거래 조회 및 회계 분류 | React 18 |
| [차량목록](./corporate-vehicles.md) | `/finance/corporate-vehicles` | 법인/렌트/리스 차량 등록 관리 | React 18 |
| [차량일지](./vehicle-logs.md) | `/finance/vehicle-logs` | 차량 운행기록 관리 | React 18 |
| [정비이력](./vehicle-maintenance.md) | `/finance/vehicle-maintenance` | 차량 정비/주유/보험 등 비용 관리 | React 18 |

## 아키텍처

```
┌───────────────────────────────────────────────────────────────┐
│                     카드/차량관리 모듈                          │
├──────────────────────┬────────────────────────────────────────┤
│    카드 관리 영역      │           차량 관리 영역                │
│                      │                                        │
│  ┌────────────────┐  │  ┌──────────┐  ┌────────┐  ┌────────┐ │
│  │ 법인카드관리    │  │  │ 차량목록  │  │ 차량일지 │  │ 정비이력│ │
│  │ (카드 CRUD)    │  │  │(차량CRUD)│  │(운행기록)│  │(비용기록)│ │
│  └───────┬────────┘  │  └────┬─────┘  └────┬───┘  └───┬────┘ │
│          │           │       │              │          │      │
│  ┌───────▼────────┐  │       └──────────────┼──────────┘      │
│  │ 카드사용내역    │  │                      │                 │
│  │(바로빌 연동)   │  │                      │                 │
│  └───────┬────────┘  │                      │                 │
├──────────┼───────────┴──────────────────────┼─────────────────┤
│          ▼                                  ▼                 │
│  ┌──────────────────────────────────────────────────────────┐ │
│  │                    데이터베이스                            │ │
│  │  corporate_cards, card_transactions,                     │ │
│  │  barobill_card_transactions, corporate_card_prepayments  │ │
│  │  corporate_vehicles, vehicle_logs, vehicle_maintenances  │ │
│  └──────────────────────────────────────────────────────────┘ │
└───────────────────────────────────────────────────────────────┘
```

## 주요 기술 스택

| 기술 | 용도 |
|------|------|
| Laravel 12 (PHP 8.4) | 백엔드 프레임워크 |
| React 18 + Babel | 클라이언트 렌더링 UI (전 페이지) |
| Tailwind CSS + Lucide | 스타일링 및 아이콘 |
| Barobill SOAP API | 카드거래 실시간 연동 |
| MySQL 8.0 | 데이터 저장 |

## 데이터 흐름

```
바로빌 SOAP API ──────────────────────────────┐
(CARD.asmx: 카드거래 자동 수집)                  │
                                               ▼
카드 관리:  corporate_cards ← 매칭 → barobill_card_transactions
           (카드번호 하이픈 제거 후 매칭)
                    │
                    ├── barobill_card_transaction_splits (분개)
                    ├── barobill_card_transaction_hides (숨김)
                    ├── barobill_card_transaction_amount_logs (수정이력)
                    └── corporate_card_prepayments (선불결제)

차량 관리:  corporate_vehicles
                    │
                    ├── vehicle_logs (운행기록 → distance_km 합산)
                    └── vehicle_maintenances (정비기록 → mileage 갱신)
```

## 공통 모델/패턴

### 멀티 테넌트

모든 테이블은 `tenant_id` 기반으로 데이터를 격리합니다.

### React 18 + Babel

모든 페이지는 브라우저 트랜스파일링 방식의 React 18을 사용합니다:
- `@push('scripts')` 블록에 React/Babel/Lucide 스크립트 포함
- `@verbatim` + `<script type="text/babel">` 패턴
- HTMX 네비게이션 시 HX-Redirect 필수 (전체 페이지 리로드)

### 카드번호 매칭 로직

```
corporate_cards.card_number  ←매칭→  barobill_card_transactions.card_num
(예: "9438-8309-3638-4247")         (예: "9438830936384247")
→ 하이픈 제거 후 매칭: str_replace('-', '', $cardNumber)
```

## 데이터베이스 테이블 요약

### 카드 관련

| 테이블 | 역할 |
|--------|------|
| `corporate_cards` | 법인카드 정보 (카드명, 카드사, 번호, 한도 등) |
| `corporate_card_prepayments` | 월별 선불결제 금액 |
| `card_transactions` | 수동 입력 카드거래 |
| `barobill_card_transactions` | 바로빌 자동 수집 카드거래 |
| `barobill_card_transaction_splits` | 카드거래 분개 (1거래→N계정과목) |
| `barobill_card_transaction_hides` | 거래 숨김 처리 |
| `barobill_card_transaction_amount_logs` | 거래 금액 수정 이력 |

### 차량 관련

| 테이블 | 역할 |
|--------|------|
| `corporate_vehicles` | 법인/렌트/리스 차량 정보 |
| `vehicle_logs` | 차량 운행기록 (출발/도착, 거리, 용도) |
| `vehicle_maintenances` | 정비/주유/보험 등 비용 기록 |

---

## 이관 현황 (2026-03-12 기준)

### 차량 관리 영역

| 기능 | MNG (현재) | DB 마이그레이션 | API REST | React UI |
|------|:--------:|:----------:|:------:|:------:|
| 차량목록 | ✅ 운영중 | ✅ API 관리 | ❌ 미이관 | ❌ 미이관 |
| 차량일지 | ✅ 운영중 | ✅ API 관리 | ❌ 미이관 | ❌ 미이관 |
| 정비이력 | ✅ 운영중 | ✅ API 관리 | ❌ 미이관 | ❌ 미이관 |

### 카드 관리 영역

| 기능 | MNG (현재) | DB 마이그레이션 | API REST | React UI |
|------|:--------:|:----------:|:------:|:------:|
| 법인카드관리 | ✅ 운영중 | — | ❌ 미이관 | ❌ 미이관 |
| 카드사용내역 | ✅ 운영중 | — | ❌ 미이관 | ❌ 미이관 |

> **참고**: 차량 관련 3개 테이블의 마이그레이션은 이미 API(`sam/api/database/migrations/`)에서 관리한다.
> API의 `VehicleDispatchController`는 출하 배차 기능이며, 차량관리와 별도이다.
