Skip to content

Yêu cầu chức năng (Functional)

Ký hiệu REQ-F-*·(Pn). "PHẢI/NÊN/CÓ THỂ" theo RFC-style.

FA. Xác thực & phiên

IDƯu tiênYêu cầu
REQ-F-AUTH-01P0Hệ thống PHẢI cho phép Builder đăng nhập và tạo phiên (/login, /auth/callback, /logout).
REQ-F-AUTH-02P0UI PHẢI gọi dữ liệu qua /api cùng origin để cookie phiên member được gửi kèm an toàn.
REQ-F-AUTH-03P0/api/user/me PHẢI trả về hồ sơ gồm entitlement_group, trial_expires_at, trial_days_left.
REQ-F-AUTH-04P1Khách chưa đăng nhập truy cập route cần quyền PHẢI được đưa về đăng nhập hoặc trang công khai.

FB. Membership & Trial

IDƯu tiênYêu cầu
REQ-F-MEM-01P0Hệ thống PHẢI phân loại mỗi user vào đúng một nhóm: paid, trial, free, tính tại thời điểm request.
REQ-F-MEM-02P0Ở request xác thực đầu tiên khi chưa trả phí và trial_started_at IS NULL, hệ thống PHẢI đặt trial_started_at = now, trial_expires_at = now + 7 ngày (lazy-init trong /api/user/me).
REQ-F-MEM-03P0Trong thời gian trial, Builder PHẢI có full access ngang thành viên trả phí.
REQ-F-MEM-04P0Khi trial hết hạn, hệ thống PHẢI hạ user về free hạn chế, không khóa tài khoản, và mời nâng cấp.
REQ-F-MEM-05P1Hệ thống PHẢI KHÔNG cấp lại trial sau khi đã bắt đầu và hết hạn.
REQ-F-MEM-06P0Kích hoạt trả phí PHẢI được tự động duyệt bằng đối soát chuyển khoản ngân hàng + số điện thoại trong nội dung khớp users.mobile và đạt ngưỡng tiền, qua Cloudflare Workflow.
REQ-F-MEM-07P1OCR biên lai CÓ THỂ dùng làm bằng chứng phụ, nhưng PHẢI KHÔNG là nguồn sự thật cho việc kích hoạt.
REQ-F-MEM-08P1Trang /membership PHẢI hiển thị trạng thái quyền lợi và đường nâng cấp.

FC. Học tập & lộ trình

IDƯu tiênYêu cầu
REQ-F-LRN-01P0Hệ thống PHẢI liệt kê khóa học (/courses) và khóa của Builder (/my-courses).
REQ-F-LRN-02P0Trang khóa (/courses/:slug) PHẢI trình bày Clarity Question, Big Concepts, các Unit và Artifact cần tạo.
REQ-F-LRN-03P0Cấu trúc khóa PHẢI theo Course → Unit → Learning Experience → Activity; PHẢI KHÔNG dùng Module hay lồng sâu.
REQ-F-LRN-04P0Mỗi Concept PHẢI thuộc đúng một Course (course-owned); PHẢI KHÔNG chia sẻ concept giữa các khóa.
REQ-F-LRN-05P1Một Unit PHẢI được đánh dấu hoàn thành dựa trên Artifact thật, không dựa trên "đã xem hết nội dung".
REQ-F-LRN-06P1/my-journey PHẢI hiển thị vị trí hiện tại của Builder trong hành trình và gợi ý bước tiếp theo.
REQ-F-LRN-07P2/concepts/:id NÊN hiển thị định nghĩa + mô tả của concept trong ngữ cảnh khóa.
REQ-F-LRN-08P2Thư viện đọc sâu (/deep-books, /library, /library/studio, /handbook) NÊN truy cập được theo quyền.

FD. Thực hành & xây dựng

IDƯu tiênYêu cầu
REQ-F-PRA-01P0Hệ thống PHẢI cho Builder tham gia Challenges (/challenges, /challenges/:slug) và nộp deliverable.
REQ-F-PRA-02P1Hệ thống NÊN hỗ trợ Battles, Workshops, Programs, Classes như hoạt động có cấu trúc theo lịch.
REQ-F-PRA-03P1/portfolio PHẢI tổng hợp deliverables & Proof of Work của Builder.
REQ-F-PRA-04P2Các tính năng thương hiệu (/my-brands, /business-brands, /brand-model, /personal-brands) NÊN cho Builder tổ chức tài sản thương hiệu.

FE. Cộng đồng & sự kiện

IDƯu tiênYêu cầu
REQ-F-COM-01P1Hệ thống PHẢI hiển thị và cho đăng ký sự kiện (/events, /online-events/:slug, /calendars).
REQ-F-COM-02P2/feedback NÊN cho Builder gửi và nhận phản hồi.
REQ-F-COM-03P2/affiliate NÊN cung cấp chương trình giới thiệu với theo dõi quyền lợi.
REQ-F-COM-04P2/insiders CÓ THỂ giới hạn nội dung theo nhóm quyền.

FF. Tiến bộ & thành tựu

IDƯu tiênYêu cầu
REQ-F-PRG-01P1/score/badges PHẢI phản ánh hoạt động/tiến bộ của Builder.
REQ-F-PRG-02P2/member-intelligence NÊN tổng hợp dữ liệu Builder và gợi ý bước tiếp theo.
REQ-F-PRG-03P2/profile, /portrait NÊN cho Builder quản lý danh tính trong cộng đồng.

Ràng buộc phân quyền (áp cho mọi module)

  • Route cần quyền PHẢI kiểm tra entitlement_group phía backend, không chỉ ẩn ở UI.
  • free (trial hết hạn) PHẢI vẫn giữ quyền đọc/cơ bản và luôn có lối nâng cấp.

Tài liệu nội bộ nền tảng Conan School.