# Module `sh-moto` — Chấm sát hạch mô tô A1/A2

> 07/7/2026 · Giai đoạn: **WS sát hạch · v3** · WS sát hạch · Bản HTML: [sh-moto.html](sh-moto.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 (làm sớm trong nhóm sát hạch) — hồ sơ thẩm định đầu tiên.

## 1. Vai trò
Chấm sa hình **mô tô A1/A2** — thiết bị nhỏ chạy pin + cảm biến vạch sân. Thị trường kỳ thi lớn hơn ô tô nhiều; là bộ **"tập dượt" quy trình thẩm định đầu tiên**.

## 2. Feature / BO / Action

| Feature | BO chính | Action |
|---|---|---|
| `lesson` | Bài thi mô tô (config) | view·configure |
| `result` | Kết quả chấm | view·export·**score** |

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

| BO | Trường chính |
|---|---|
| **Bài thi** | Vòng số 8, đường thẳng, đường gồ ghề… · vạch/cảm biến sân · điểm trừ theo lỗi |
| **Kết quả** | Thí sinh × bài · lỗi (chạm vạch, chống chân…) · điểm · wireless phục vụ ≥10 xe đồng thời (QCVN) |

## 4. Quy tắc nghiệp vụ
1. Cùng nền chấm với sa hình ô tô nhưng thiết bị pin, nhỏ gọn
2. Sân mô tô: QCVN có câu "hệ thống cảm biến lắp đặt trên sân" — xác nhận cách hiểu với cơ quan kiểm chuẩn trước khi chốt công nghệ
3. Dùng làm hồ sơ thẩm định đầu tiên để thuộc quy trình trước khi trình bộ ô tô

## 5. Liên kết chéo
- **sh-schedule** — ca thi
- **sh-gateway** — truyền kết quả
- **sh-monitor** — công khai điểm

## 6. Câu hỏi mở
- Đọc kỹ 2.3.3.1.9 QCVN 40:2024 với cơ quan kiểm chuẩn — cảm biến sân có bắt buộc?

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

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

```json
[
  {
    "group": "main",
    "feature": "lesson",
    "label": "Bài thi mô tô",
    "actions": [
      "view",
      "configure"
    ]
  },
  {
    "group": "main",
    "feature": "result",
    "label": "Kết quả chấm",
    "actions": [
      "view",
      "export",
      "score"
    ]
  }
]
```

> ⚠️ 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` |
|---|:--:|:--:|:--:|:--:|
| `lesson` | 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-moto.main.<feature>.<action>`.
> score = chấm tự động
