# Module `sh-monitor` — Giám sát & công khai kết quả

> 07/7/2026 · Giai đoạn: **WS sát hạch · v3** · WS sát hạch · Bản HTML: [sh-monitor.html](sh-monitor.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 — phần cứng camera/NVR/LED lắp ráp thương mại; giá trị ở phần mềm điều phối.

## 1. Vai trò
Camera xe/sân/phòng thi, **màn hình công khai điểm trực tiếp** cho người nhà theo dõi, lưu vết đầy đủ từng bài thi — yêu cầu minh bạch của quy định mới.

## 2. Feature / BO / Action

| Feature | BO chính | Action |
|---|---|---|
| `camera` | Luồng camera + NVR | view·configure |
| `public` | Màn hình công khai điểm | view·**broadcast** |
| `trace` | Lưu vết bài thi | view·export |

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

| BO | Trường chính |
|---|---|
| **Camera** | Danh mục camera (xe/sân/phòng) · luồng · vùng lưu NVR · thời hạn lưu theo quy định |
| **Công khai** | Hàng đợi kết quả realtime (từ sh-yard/road/theory) → LED/màn hình phòng chờ |
| **Lưu vết** | Bài thi × video clip + log chấm — truy xuất theo thí sinh/kỳ |

## 4. Quy tắc nghiệp vụ
1. Điểm hiện **trực tiếp** khi bài thi kết thúc — công khai cho người nhà
2. Video gắn với bài thi (timestamp đồng bộ toàn sân)
3. UPS ≥15 phút (QCVN) — không mất giám sát khi mất điện lưới
4. Truyền dữ liệu giám sát về CSGT đúng chuẩn kết nối (qua sh-gateway)

## 5. Liên kết chéo
- **sh-yard/road/theory** — nguồn kết quả + video
- **sh-gateway** — truyền giám sát
- **sh-kiosk** — vết check-in

## 6. Câu hỏi mở
- Thời hạn lưu video theo quy định hiện hành?

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

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

```json
[
  {
    "group": "main",
    "feature": "camera",
    "label": "Camera & NVR",
    "actions": [
      "view",
      "configure"
    ]
  },
  {
    "group": "main",
    "feature": "public",
    "label": "Công khai điểm",
    "actions": [
      "view",
      "broadcast"
    ]
  },
  {
    "group": "main",
    "feature": "trace",
    "label": "Lưu vết bài thi",
    "actions": [
      "view",
      "export"
    ]
  }
]
```

> ⚠️ Action đặc thù (`broadcast`) 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` | `SAT_HACH` |
|---|:--:|:--:|:--:|
| `camera` | W | R | R |
| `public` | R | R | W |
| `trace` | 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-monitor.main.<feature>.<action>`.
> Đặc thù: public +broadcast (SAT_HACH)
