Backend cho app học viên (iOS/Android) — công cụ tuyển sinh khác biệt: tra tiến độ km/giờ DAT thời gian thực, lịch học, đặt lịch bổ túc, ôn 600 câu, thông báo Zalo OA.
| Feature | BO chính | Action |
|---|---|---|
| account | Tài khoản học viên trên app | viewcreatereset |
| progress | Tra cứu tiến độ km/giờ | view |
| booking | Đặt lịch bổ túc với GV | viewapprovebook |
| practice | Ôn 600 câu, thi thử trên app | view |
| BO | Trường chính |
|---|---|
| Tài khoản app | Học viên (ref ma_dk/CCCD) · SĐT đăng nhập · thiết bị · trạng thái |
| Booking | Học viên × GV × khung giờ · loại (bổ túc sa hình/đường trường) · trạng thái (đặt → GV/giáo vụ duyệt → hoàn thành/hủy) |
| Tiến độ (view) | Đọc từ dat.reconcile: % km/giờ, còn thiếu, cảnh báo — chỉ dữ liệu của chính mình |
Khối permissions[] dán vào manifest.json; bảng dưới là gán quyền theo vai trò (seed rt_role). Permission key đầy đủ: portal.main.<feature>.<action>.
⚠️ Action đặc thù (book, reset) cần bổ sung vào validator manifest — xem plan data-scope P1.
| Feature | QTHT | GIAO_VU | GIAO_VIEN | HOC_VIEN |
|---|---|---|---|---|
| account | W | W | — | — |
| progress | — | — | — | R² |
| booking | — | RA | RA¹ | W² |
| practice | — | — | — | 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.
Đặc thù: account +reset · booking +book (HOC_VIEN) · hủy lịch = bước workflow
(a) Manifest bổ sung fields + scopeVars cho feature bị scope (mở rộng schema — plan data-scope P1; manifest chỉ khai "cái gì scope được", không chứa rule):
(b) Điều kiện record theo vai trò:
| Vai trò | Feature (action) | Điều kiện record |
|---|---|---|
| HOC_VIEN | progress, practice (view) · booking (view, book) | nguoi_lxid = ctx.current_nguoi_lxid |
| GIAO_VIEN | booking (view, approve) | giao_vien_id = ctx.current_giao_vien_id (lịch của mình) |
(c) Seed rt_role.grants (kind rule — nhiều rule cùng resource+action = OR):
Biến ngữ cảnh: current_user_id — engine có sẵn · current_giao_vien_id/current_ma_gv — module teacher tra từ user đăng nhập (ctxVars, plan P3) · current_nguoi_lxid/current_ma_dk_list — module student tra (1 người nhiều lượt đăng ký) · current_assigned_* — danh sách phụ trách/được phân công.