# 차량/지게차 메뉴 구현 계획

## 1. 개요

### 1.1 목적
5130 사이트(레거시)의 차량/지게차 메뉴를 SAM 프로젝트로 마이그레이션

### 1.2 메뉴 구조

```
📁 차량/지게차
├── 📄 차량관리 (vehicle)
├── 📄 차량일지/월간사진기록 (vehicle-log)
└── 📄 지게차 관리 (forklift)
```

### 1.3 페이지 구성 방식

| 페이지 | 리스트 | 등록 | 상세 | 수정 |
|--------|--------|------|------|------|
| 차량관리 | ✅ 페이지 | ✅ 페이지 | ✅ 페이지 | ✅ 페이지 |
| 차량일지 | ✅ 페이지 | ✅ 페이지 | ✅ 페이지 | ✅ 페이지 |
| 지게차 관리 | ✅ 페이지 | ✅ 페이지 | ✅ 페이지 | ✅ 페이지 |

### 1.4 사용할 공통 컴포넌트

| 페이지 타입 | 사용 템플릿 | 비고 |
|------------|------------|------|
| 리스트 | **UniversalListPage** | config 기반 |
| 등록/상세/수정 | **IntegratedDetailTemplate** | config 기반 |

**구현 패턴**:
```
config.ts → 컬럼/필드 정의
actions.ts → API 호출 (Server Actions)
index.tsx → 템플릿에 config 전달
```

---

## 2. 페이지별 상세 분석 (5130 사이트 기준)

### 2.1 차량관리 (vehicle)

| 항목 | 내용 |
|------|------|
| **페이지 타입** | 표준 CRUD (리스트 + 등록/상세/수정 페이지) |
| **레거시 URL** | `/car/list.php` |
| **전체 건수** | 6건 (예시) |

**리스트 테이블 컬럼** (12개):
| 순서 | 컬럼명 | 타입 | 설명 |
|------|--------|------|------|
| 1 | 번호 | number | 행 번호 (1부터) |
| 2 | 차량번호 | string | 차량 식별번호 |
| 3 | 담당자 | string | 담당자명 |
| 4 | 보험사 | string | 보험 회사 |
| 5 | 보험만료일 | date | 보험 만료일 |
| 6 | 차량명 | string | 차량 이름 |
| 7 | 구입금액 | number | 구입 금액 |
| 8 | 구입일 | date | 구입 날짜 |
| 9 | 작성자 | string | 작성자명 |
| 10 | 정비정보 | string | 정비 관련 정보 |
| 11 | 등록일 | date | 등록 날짜 |
| 12 | 관리 | action | 상세/수정/삭제 버튼 |

---

### 2.2 차량일지/월간사진기록 (vehicle-log)

| 항목 | 내용 |
|------|------|
| **페이지 타입** | 표준 CRUD (리스트 + 등록/상세/수정 페이지) |
| **레거시 URL** | `/carrecord/list.php` |
| **전체 건수** | 41건 (예시) |

**리스트 테이블 컬럼** (5개):
| 순서 | 컬럼명 | 타입 | 설명 |
|------|--------|------|------|
| 1 | 번호 | number | 행 번호 (1부터) |
| 2 | 작성일 | date | 작성 날짜 |
| 3 | 차량종류 | string | 차량 종류/타입 |
| 4 | 작성자 | string | 작성자명 |
| 5 | 글제목 | string | 일지 제목 |

---

### 2.3 지게차 관리 (forklift)

| 항목 | 내용 |
|------|------|
| **페이지 타입** | 표준 CRUD (리스트 + 등록/상세/수정 페이지) |
| **레거시 URL** | `/lift/list.php` |
| **전체 건수** | 7건 (예시) |

**리스트 테이블 컬럼** (13개, 차량관리 + 용량):
| 순서 | 컬럼명 | 타입 | 설명 |
|------|--------|------|------|
| 1 | 번호 | number | 행 번호 (1부터) |
| 2 | 차량번호 | string | 지게차 식별번호 |
| 3 | 담당자 | string | 담당자명 |
| 4 | 보험사 | string | 보험 회사 |
| 5 | 보험만료일 | date | 보험 만료일 |
| 6 | 차량명 | string | 지게차 이름 |
| 7 | 구입금액 | number | 구입 금액 |
| 8 | 구입일 | date | 구입 날짜 |
| 9 | 작성자 | string | 작성자명 |
| 10 | 정비정보 | string | 정비 관련 정보 |
| 11 | 등록일 | date | 등록 날짜 |
| 12 | 용량 | string | 지게차 용량 ⭐ |
| 13 | 관리 | action | 상세/수정/삭제 버튼 |

---

## 3. 파일 구조

### 3.1 페이지 구조

```
src/app/[locale]/(protected)/
└── vehicle-management/                # 차량/지게차
    ├── vehicle/                       # 차량관리
    │   ├── page.tsx                   # 리스트
    │   ├── new/
    │   │   └── page.tsx               # 등록
    │   └── [id]/
    │       ├── page.tsx               # 상세
    │       └── edit/
    │           └── page.tsx           # 수정
    │
    ├── vehicle-log/                   # 차량일지/월간사진기록
    │   ├── page.tsx                   # 리스트
    │   ├── new/
    │   │   └── page.tsx               # 등록
    │   └── [id]/
    │       ├── page.tsx               # 상세
    │       └── edit/
    │           └── page.tsx           # 수정
    │
    └── forklift/                      # 지게차 관리
        ├── page.tsx                   # 리스트
        ├── new/
        │   └── page.tsx               # 등록
        └── [id]/
            ├── page.tsx               # 상세
            └── edit/
                └── page.tsx           # 수정
```

### 3.2 컴포넌트 구조

```
src/components/vehicle-management/
├── VehicleList/
│   ├── index.tsx                      # UniversalListPage 사용
│   ├── actions.ts                     # Server Actions
│   └── config.ts                      # 컬럼/필터 설정
├── VehicleDetail/
│   ├── index.tsx                      # IntegratedDetailTemplate 사용
│   └── config.ts                      # 필드 설정
│
├── VehicleLogList/
│   ├── index.tsx
│   ├── actions.ts
│   └── config.ts
├── VehicleLogDetail/
│   ├── index.tsx
│   └── config.ts
│
├── ForkliftList/
│   ├── index.tsx
│   ├── actions.ts
│   └── config.ts
└── ForkliftDetail/
    ├── index.tsx
    └── config.ts
```

---

## 4. API 엔드포인트 (예상)

| 기능 | Method | Endpoint |
|------|--------|----------|
| 차량 목록 | GET | `/api/vehicle/list` |
| 차량 상세 | GET | `/api/vehicle/{id}` |
| 차량 등록 | POST | `/api/vehicle` |
| 차량 수정 | PUT | `/api/vehicle/{id}` |
| 차량 삭제 | DELETE | `/api/vehicle/{id}` |
| 차량일지 목록 | GET | `/api/vehicle-log/list` |
| 차량일지 상세 | GET | `/api/vehicle-log/{id}` |
| 차량일지 등록 | POST | `/api/vehicle-log` |
| 차량일지 수정 | PUT | `/api/vehicle-log/{id}` |
| 차량일지 삭제 | DELETE | `/api/vehicle-log/{id}` |
| 지게차 목록 | GET | `/api/forklift/list` |
| 지게차 상세 | GET | `/api/forklift/{id}` |
| 지게차 등록 | POST | `/api/forklift` |
| 지게차 수정 | PUT | `/api/forklift/{id}` |
| 지게차 삭제 | DELETE | `/api/forklift/{id}` |

---

## 5. 구현 체크리스트

### Phase 1: 리스트 페이지 & 컴포넌트

**차량관리**
- [x] VehicleList/actions.ts ✅
- [x] VehicleList/index.tsx ✅
- [x] vehicle/page.tsx ✅

**차량일지**
- [x] VehicleLogList/actions.ts ✅
- [x] VehicleLogList/index.tsx ✅
- [x] vehicle-log/page.tsx ✅

**지게차 관리**
- [x] ForkliftList/actions.ts ✅
- [x] ForkliftList/index.tsx ✅
- [x] forklift/page.tsx ✅

### Phase 2: 상세/등록/수정 페이지 & 컴포넌트

**차량관리**
- [x] VehicleDetail/config.ts ✅
- [x] VehicleDetail/index.tsx ✅
- [x] vehicle/new/page.tsx (등록) ✅
- [x] vehicle/[id]/page.tsx (상세) ✅
- [x] vehicle/[id]/edit/page.tsx (수정) ✅

**차량일지**
- [x] VehicleLogDetail/config.ts ✅
- [x] VehicleLogDetail/index.tsx ✅
- [x] vehicle-log/new/page.tsx (등록) ✅
- [x] vehicle-log/[id]/page.tsx (상세) ✅
- [x] vehicle-log/[id]/edit/page.tsx (수정) ✅

**지게차 관리**
- [x] ForkliftDetail/config.ts ✅
- [x] ForkliftDetail/index.tsx ✅
- [x] forklift/new/page.tsx (등록) ✅
- [x] forklift/[id]/page.tsx (상세) ✅
- [x] forklift/[id]/edit/page.tsx (수정) ✅

### Phase 3: 메뉴 및 테스트 URL 등록

- [ ] 사이드바 메뉴 추가 (차량/지게차) - 백엔드 메뉴 연동 필요
- [x] /dev/test-urls에 등록 ✅

### 공통 파일
- [x] types.ts (Vehicle, VehicleLog, Forklift 타입) ✅

---

## 6. 참고 스크린샷 (Desktop)

| 파일명 | 내용 |
|--------|------|
| 5130_car_list.png | 차량관리 목록 |
| 5130_carrecord_list.png | 차량일지 목록 |
| 5130_lift_list.png | 지게차 관리 목록 |

---

## 7. 특이사항

1. **차량 vs 지게차 핵심 차이점** (2025-01-28 확인):
   - **차량**: 보험사, 보험사 연락처, 엔진오일 교환 주기/일 사용
   - **지게차**: 구입업체, 구입업체 연락처, 부속품 교환 주기/일 사용
   - 차종 필드에 용량 포함 (예: "3톤 디젤")

2. **API 미확정**: 백엔드 API가 아직 없을 수 있으므로 Mock 데이터로 우선 구현

3. **번호 컬럼**: 모든 테이블에서 1번부터 시작 (globalIndex 사용)

4. **정비정보/월간사진**: 상세 페이지에서 이미지 업로드 기능 필요할 수 있음

---

## 8. 컬럼 검증 결과 (2025-01-28)

### 8.1 차량관리 (vehicle) - ✅ 검증 완료
| 순서 | 레거시 컬럼명 | SAM 구현 | 상태 |
|------|-------------|----------|------|
| 1 | 번호 | globalIndex | ✅ |
| 2 | 차량번호 | vehicleNumber | ✅ |
| 3 | 담당자 | manager | ✅ |
| 4 | 보험사 | insuranceCompany | ✅ |
| 5 | 보험사 연락처 | insuranceContact | ✅ |
| 6 | 최초등록일 | firstRegistrationDate | ✅ |
| 7 | 구매일자 | purchaseDate | ✅ |
| 8 | 구매 유형 | purchaseType | ✅ |
| 9 | 엔진오일 교환 주기 | oilChangeCycle | ✅ |
| 10 | 엔진오일교환일 | oilChangeDate | ✅ |
| 11 | 정비 정보 | maintenanceInfo | ✅ |
| 12 | 비고 | remarks | ✅ |

### 8.2 차량일지 (vehicle-log) - ✅ 검증 완료
| 순서 | 레거시 컬럼명 | SAM 구현 | 상태 |
|------|-------------|----------|------|
| 1 | 번호 | globalIndex | ✅ |
| 2 | 작성일 | writeDate | ✅ |
| 3 | 차량종류 | vehicleType | ✅ |
| 4 | 작성자 | writer | ✅ |
| 5 | 글제목 | title | ✅ |

### 8.3 지게차 관리 (forklift) - ✅ 검증 완료
| 순서 | 레거시 컬럼명 | SAM 구현 | 상태 |
|------|-------------|----------|------|
| 1 | 번호 | globalIndex | ✅ |
| 2 | 차량번호 | vehicleNumber | ✅ |
| 3 | 차종 | vehicleType | ✅ |
| 4 | 담당자 | manager | ✅ |
| 5 | 구입업체 | purchaseCompany | ✅ |
| 6 | 구입업체 연락처 | purchaseCompanyContact | ✅ |
| 7 | 최초등록일 | firstRegistrationDate | ✅ |
| 8 | 구매일자 | purchaseDate | ✅ |
| 9 | 구매 유형 | purchaseType | ✅ |
| 10 | 부속품 교환 주기 | partsChangeCycle | ✅ |
| 11 | 부속품 교환일 | partsChangeDate | ✅ |
| 12 | 정비 정보 | maintenanceInfo | ✅ |
| 13 | 비고 | remarks | ✅ |
