# Sàn Chia Chuyến V6.1 — Green + VIETMAP

Bản này nâng tiếp từ V6 stable và giữ nguyên luồng đăng nhập Zalo / đồng bộ số điện thoại đang hoạt động.

## 1. Nâng cấp chính

- Giao diện khách hàng và quản trị chuyển sang tông xanh lá, tối giản các nội dung kỹ thuật khỏi màn hình người dùng.
- Web Admin và Admin trong ứng dụng có công tắc:
  - `fare.suggested_enabled`: bật/tắt tính giá tham khảo.
  - `maps.enabled`: bật/tắt tìm địa chỉ và tính quãng đường tự động.
- Chuyển Google Maps sang VIETMAP v4, gọi qua backend để không lộ API key.
- Khi tính giá tham khảo đang bật nhưng bản đồ tự động tắt/chưa sẵn sàng, khách nhập số km dự tính để tính giá.
- Upload logo, banner và ảnh bìa tin tức hỗ trợ JPG/PNG/WEBP/GIF, tự tạo thư mục theo năm/tháng.
- SQL lưu cả đường dẫn tương đối và URL web đầy đủ:
  - `app_media.image_path` + `app_media.image_url`
  - `news_posts.cover_image_path` + `news_posts.cover_image_url`
  - `settings.branding.logo_path` + `settings.branding.logo_url`
- Dữ liệu ảnh cũ được tự bổ sung URL đầy đủ vào SQL khi backend đọc lại bản ghi.

## 2. Cấu hình backend

Giữ nguyên `.env` đang chạy và thêm/cập nhật:

```env
APP_URL=https://domain-cua-ban.com/api
VIETMAP_API_KEY=YOUR_VIETMAP_KEY

# Nếu ảnh public ở https://domain-cua-ban.com/uploads nhưng APP_URL có /api:
PUBLIC_UPLOAD_BASE_URL=https://domain-cua-ban.com

# Có thể để trống để dùng thư mục mặc định của project:
PRIVATE_UPLOAD_DIR=
PUBLIC_UPLOAD_DIR=
UPLOAD_MAX_BYTES=8388608
```

Nếu backend được đặt trực tiếp ở domain gốc và `/uploads/...` cũng nằm trên domain đó, có thể để `PUBLIC_UPLOAD_BASE_URL` trống.

## 3. Database

### Đang dùng V6 stable

Chạy:

```text
database/upgrade_v6_1_green_vietmap.sql
```

### Nâng trực tiếp từ V5

Chạy:

```text
database/upgrade_v6.sql
```

Hai file migration không xóa dữ liệu cũ. Luôn backup database trước khi nâng cấp.

## 4. Chế độ tính giá

| Tính giá tham khảo | Tìm địa chỉ & km | Hành vi |
|---|---|---|
| Bật | Bật + có VIETMAP key | Gợi ý địa chỉ, lấy km/thời gian tự động, tính giá tham khảo |
| Bật | Tắt/chưa sẵn sàng | Khách nhập km dự tính, hệ thống tính giá theo bảng giá |
| Tắt | Bất kỳ | Không bắt buộc tính giá tham khảo; người đăng tự nhập giá chuyến |

## 5. Upload ảnh

Backend mặc định lưu ảnh public tại:

```text
public/uploads/app/YYYY/MM/
```

và ảnh minh chứng private tại:

```text
storage/private/YYYY/MM/
```

Web Admin và Admin trong ứng dụng có trang `Logo & banner`; Web Admin và Admin trong ứng dụng đều có trang `Tin tức & chính sách` để upload ảnh bìa.

Nếu trang quản trị báo chưa thể lưu ảnh, kiểm tra quyền ghi của `public/uploads` và `storage/private`, đồng thời kiểm tra `upload_max_filesize` / `post_max_size` của PHP.

## 6. Build Mini App

```bash
npm install
npm run build
```

Sau đó deploy bundle mới bằng công cụ Zalo Mini App đang sử dụng.
