# Module `sh-yard` — Chấm sa hình

> 07/7/2026 · Giai đoạn: **WS sát hạch · v3** · WS sát hạch · Bản HTML: [sh-yard.html](sh-yard.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; module định vị thiết kế thay thế được (A/B/C theo cơ quan kiểm chuẩn).

## 1. Vai trò
Chấm **tự động các bài sa hình** trên xe sát hạch: định vị chính xác cao (RTK / cảm biến sân / hybrid), đọc lỗi, **niêm phong + log bất biến**.

## 2. Feature / BO / Action

| Feature | BO chính | Action |
|---|---|---|
| `vehicle` | Xe sát hạch + thiết bị (niêm phong) | view·configure·**seal** |
| `lesson` | Bài thi sa hình (config) | view·configure |
| `result` | Kết quả chấm tự động | view·export·**score** |

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

| BO | Trường chính |
|---|---|
| **Xe/thiết bị** | Xe sát hạch · thiết bị chấm (seri, phiên bản niêm phong) · camera trong xe · nhật ký niêm phong |
| **Kết quả** | Thí sinh × bài · lỗi + điểm trừ tự động · thời gian · quỹ đạo · âm thanh đọc lỗi ≤3s · chữ ký số trên log |

## 4. Quy tắc nghiệp vụ
1. Lỗi phát hiện – trừ điểm – **thông báo ≤3 giây**; báo kết thúc bài trong 5m/3s (QCVN)
2. Log từng bài **ký số, bất biến**; lưu được khi mất kết nối ≥20 phút
3. Camera trong xe: quay thí sinh + đối chiếu khuôn mặt chống thi hộ
4. Kết quả realtime về máy chủ kỳ thi + màn hình công khai (sh-monitor)

## 5. Liên kết chéo
- **sh-schedule** — DS ca
- **sh-monitor** — công khai điểm
- **sh-gateway** — truyền CSGT
- kinh nghiệm nền từ **chip** (WS đào tạo)

## 6. Câu hỏi mở
- Chốt phương án định vị (RTK/cảm biến/hybrid) sau buổi làm việc với cơ quan kiểm chuẩn

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

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

```json
[
  {
    "group": "main",
    "feature": "vehicle",
    "label": "Xe & thiết bị chấm",
    "actions": [
      "view",
      "configure",
      "seal"
    ]
  },
  {
    "group": "main",
    "feature": "lesson",
    "label": "Bài thi sa hình",
    "actions": [
      "view",
      "configure"
    ]
  },
  {
    "group": "main",
    "feature": "result",
    "label": "Kết quả chấm",
    "actions": [
      "view",
      "export",
      "score"
    ]
  }
]
```

> ⚠️ Action đặc thù (`score`, `seal`) 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` |
|---|:--:|:--:|:--:|:--:|
| `vehicle` | R | R | W | — |
| `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-yard.main.<feature>.<action>`.
> Đặc thù: vehicle +seal (KY_THUAT) · score = chấm tự động, log ký số
