Đối tượng & phân quyền
Đối tượng người dùng
Tokyo phục vụ adult learners — người trưởng thành muốn xây dựng doanh nghiệp, được gọi thống nhất là Builder. Họ không tìm một khóa học hàn lâm; họ cần một nơi để ra quyết định và tạo ra sản phẩm thật cho business của mình.
Nhóm quyền lợi (entitlement groups)
Mỗi người dùng luôn thuộc đúng một nhóm, được tính tại thời điểm request:
| Nhóm | Điều kiện | Quyền truy cập |
|---|---|---|
paid | membership_tier được đặt và khác Free (vd Master, Pro, Premium) | Đầy đủ |
trial | Chưa trả phí và now < trial_expires_at | Đầy đủ (trong thời gian thử) |
free | Chưa trả phí và trial thiếu hoặc đã hết hạn | Hạn chế |
Quy tắc: isPaidTier(tier) = tier != null && lower(trim(tier)) != 'free'.
Nhóm quyền được suy ra từ users.membership_tier, users.trial_started_at, users.trial_expires_at và trả về cho frontend qua /api/user/me (profile.entitlement_group, profile.trial_expires_at, profile.trial_days_left).
Quy tắc dùng thử (trial)
- Bắt đầu: tự động. Ở request xác thực đầu tiên khi user chưa trả phí và
trial_started_at IS NULL, hệ thống đặttrial_started_at = now,trial_expires_at = now + 7 ngày. Khởi tạo lười (lazy-init) trong/api/user/menên cả người mới lẫn user Free cũ đều bắt đầu trial ở lần ghé tiếp theo. - Thời lượng: 7 ngày.
- Trong thời gian thử: full access — giống hệt thành viên trả phí.
- Khi hết hạn: hạ về Free hạn chế (không khóa tài khoản; vẫn giữ quyền đọc/cơ bản và được mời nâng cấp).
- Trial không được cấp lại sau khi đã dùng và hết hạn. Con đường duy nhất trở lại full access là trả phí.
Kích hoạt trả phí — đối soát theo số điện thoại
Tín hiệu đáng tin cậy nhất là chuyển khoản ngân hàng thật: member chuyển tới tài khoản TechcomBank đích và ghi số điện thoại đã đăng ký trong nội dung chuyển khoản. Hệ thống đối chiếu số điện thoại trong memo với mobile trên hồ sơ; nếu số tiền đạt ngưỡng, tài khoản được kích hoạt tự động qua Cloudflare Workflow.
Vì sao dùng phone-match, không OCR: model vision
@cf/meta/llama-3.2-11b-vision-instructbị license-gate (lỗi 5016), không dùng tự động được. OCR biên lai chỉ là bằng chứng phụ (model không bị gate@cf/llava-1.5-7b-hf, best-effort). Tiền thật về + khớp số điện thoại mới là nguồn sự thật.
Ma trận quyền theo tính năng (nguyên tắc)
| Khả năng | paid / trial | free (hết hạn) |
|---|---|---|
| Xem tổng quan khóa học, tài nguyên công khai | ✅ | ✅ |
| Vào Learning Experience, nộp Artifact | ✅ | ⛔ (mời nâng cấp) |
| Tham gia Challenges / Battles / Workshops | ✅ | ⛔ |
| Theo dõi Score / Badges / My Journey | ✅ | ⚠️ hạn chế |
| Sự kiện, cộng đồng, insiders | ✅ | 🔒 tùy sự kiện |
Chi tiết ánh xạ quyền ⇄ endpoint được mô tả trong Requirements — chức năng và SDD.