# Core `cp-store` — Store · Entitlements · License

> 07/7/2026 · Repo: **controlplane** · Đánh giá: **⚠ Khung có, enforcement chưa bật** · Bản HTML: [cp-store.html](cp-store.html) · [Review tổng core](core-review-2026-07-07.md)

## 1. Vai trò
Chợ module + quyền cài đặt: **StorePackage** (.ogapp), **Plan/Subscription**, **WorkspaceInstall** — nền cho mô hình bán theo gói (mỗi module = 1 đơn vị license per-workspace).

## 2. Thành phần chính

| Thành phần | Vai trò |
|---|---|
| **StorePackage** | Gói .ogapp đăng trên CP · endpoint download `/api/store/registry/<key>/<version>/download` |
| **Plan · Subscription** | Gói thương mại × workspace |
| **WorkspaceInstall** | Sổ module đã cài theo workspace |
| **verifyLicense (RT hook)** | Điểm cắm CP-03 ở runtime — **hiện default pass** (OPENGATE_REQUIRE_LICENSE chưa bật) |

## 3. Hiện trạng (đọc từ code)
- Đường tải qua CP có hỗ trợ Bearer (`CP_AUTH_TOKEN`) — tốt hơn registry mở
- Hook verifyLicense đã chừa sẵn trong runtime-core (throw = chặn cài) — thiết kế đúng chỗ
- ⚠ **CP-03 chưa build:** chưa có kiểm tra license thật lúc cài; đang trusted-dev mode
- ⚠ Chưa có ràng buộc plan → danh sách module được cài (entitlement enforcement)

## 4. Khuyến nghị — tham chiếu hệ phổ biến

| Tham chiếu | Khuyến nghị |
|---|---|
| **Atlassian Marketplace / Odoo Enterprise** | Build CP-03 theo 2 lớp: **(1) check lúc cài** (entitlement theo subscription) + **(2) heartbeat định kỳ** ở runtime (grace period khi CP mất kết nối — không chết giữa giờ làm việc) |
| **Mô hình giá roadmap** | Roadmap bán **theo đầu học viên/khóa** — license cần trường usage-based (đếm hồ sơ active) chứ không chỉ on/off module; thiết kế StorePackage/Subscription sớm theo hướng này |
| **Sản phẩm hóa** | Ưu tiên vừa phải: 1 khách (Vĩnh An) chưa cần enforcement — nhưng phải xong **trước trường thứ 2** |

## 5. Liên kết trong core
- **rt-host** — verifyLicense lúc install
- **registry** — nơi chứa artifact
- **cp-workspace** — entitlement theo workspace


## Ma trận tác nhân × năng lực

Core không phải module nghiệp vụ — ma trận theo **tác nhân**, kèm cơ chế/quyền gate. R đọc · W thực hiện · A duyệt.

| Năng lực | Cơ chế / quyền gate | SUPER | OWNER/QTHT | DEV | SVC | USER |
|---|---|:--:|:--:|:--:|:--:|:--:|
| Đăng package lên store | tài khoản publisher (đích) | A (duyệt listing) | — | W (publish) | — | — |
| Plan / Subscription | quyền admin CP | W | — | — | — | — |
| Cài module vào workspace | entitlement theo subscription (CP-03 đích) | — | W | — | — | — |
| Download artifact | Bearer CP_AUTH_TOKEN | — | — | — | R | — |

SUPER = super admin CP · OWNER/QTHT = quản trị WS · DEV = developer/publisher · SVC = service-to-service · USER = người dùng cuối. Mục **(đích)** = theo khuyến nghị P1–P5.
