# Module `sh-road` — Chấm đường trường

> 07/7/2026 · Giai đoạn: **WS sát hạch · v3** · WS sát hạch · Bản HTML: [sh-road.html](sh-road.html) · Sơ đồ tổng thể: [../so-do-ws-module-feature-2026-07-06.md](../so-do-ws-module-feature-2026-07-06.md)
> Trạng thái: v3 — thẩm định BCA; nhẹ hơn sa hình.

## 1. Vai trò
Chấm sát hạch **lái xe trên đường**: GPS bám lộ trình quy định, camera ≥720p, **bảng nút chấm lỗi cho sát hạch viên**, máy in kết quả trên xe.

## 2. Feature / BO / Action

| Feature | BO chính | Action |
|---|---|---|
| `route` | Lộ trình quy định | view·configure |
| `result` | Kết quả chấm (tự động + nút SH viên) | view·export·**score**·download |

## 3. Dữ liệu chính

| BO | Trường chính |
|---|---|
| **Lộ trình** | Tuyến đường quy định · điểm bắt buộc (xuất phát, dừng, về đích) · tối thiểu 2km |
| **Kết quả** | Thí sinh · GPS log bám tuyến · lỗi tự động + lỗi SH viên bấm · camera (≥720p@30fps, góc ≥140°, ghi âm) · phiếu in trên xe |

## 4. Quy tắc nghiệp vụ
1. **Không cho kết thúc trước 2km** (QCVN); truyền dữ liệu ≤30s/lần, tự gửi bù khi mất sóng
2. Lưu dữ liệu khi mất kết nối ≥48 giờ (đường trường)
3. Hiển thị trạng thái sóng GSM/GNSS cho SH viên
4. Kết hợp lỗi tự động + lỗi sát hạch viên chấm tay (bảng nút)

## 5. Liên kết chéo
- **sh-schedule** — ca thi
- **sh-gateway** — truyền CSGT
- **sh-monitor** — lưu vết camera

## 6. Câu hỏi mở
- Lộ trình được duyệt tại địa phương — số tuyến, cập nhật thế nào?

## 7. Ma trận phân quyền (→ manifest & seed role)

### 7.1 Khai báo `permissions[]` trong `manifest.json`

```json
[
  {
    "group": "main",
    "feature": "route",
    "label": "Lộ trình",
    "actions": [
      "view",
      "configure"
    ]
  },
  {
    "group": "main",
    "feature": "result",
    "label": "Kết quả chấm",
    "actions": [
      "view",
      "export",
      "score",
      "download"
    ]
  }
]
```

> ⚠️ Action đặc thù (`score`) cần bổ sung vào validator manifest — xem [plan data-scope P1](../giai-doan-1-mvp/plan-data-scope-2026-07-06.md).

### 7.2 Ma trận vai trò × feature (seed `rt_role`)

| Feature | `QTHT` | `GIAM_DOC` | `KY_THUAT` | `SAT_HACH` |
|---|:--:|:--:|:--:|:--:|
| `route` | R | R | W | — |
| `result` | R | R | — | R |

> **R** xem · **W** tạo/sửa · **A** duyệt · **—** không có quyền · ¹ dữ liệu **phân công** · ² **của chính mình** · ³ **theo trạng thái** hồ sơ. Vai trò không liệt kê = không có quyền. Permission key đầy đủ: `sh-road.main.<feature>.<action>`.
> Đặc thù: result +download (SAT_HACH) · score = tự động + nút SH viên
