PRD 00 · Tổng quan và kiến trúc
Tầm nhìn sản phẩm của Trường Số với vai trò một nền tảng quản lý trung tâm, các đối tượng sử dụng mà sản phẩm phục vụ, mô hình tenant và vai trò, kiến trúc thông tin, và một bản đồ chi tiết về những gì mã nguồn CRM hiện tại đã cung cấp so với những gì mỗi PRD bổ sung thêm.
Xuất xứ / Prompt / Giới hạn
Tài liệu do trợ lý AI soạn trong một phiên làm việc ngày 10/09/2026, theo yêu cầu gốc được trích nguyên văn ở trang mục lục; mục Thiết kế đề xuất được bổ sung ngày 16/09/2026. Đây là bản đề xuất để đội thảo luận, chưa phải quyết định của đội sản phẩm.
Nguồn
- Nghiên cứu công khai về đối thủ cạnh tranh (PSE ONE, pse4.one), mã nguồn
center-crm-frontendvà đặc tả OpenAPI/v3trên staging (182 endpoint), tính đến ngày 10/09/2026. - Hiện trạng ở mục 6 dựa trên việc đọc mã nguồn
center-crm-frontendngày 10/09/2026 và OpenAPI staging đang chạy (182 endpoint). Client được sinh tự động trong repo được build tại thời điểm phát triển từ cùng spec này.
Giới hạn
- Cần xác minh khi khảo sát trực tiếp trong ứng dụng, vì đăng nhập tự động vào sản phẩm tham chiếu chưa được cấp phép trong phiên soạn:
- Cây điều hướng chính xác và tên mô-đun của đối thủ, như hiển thị cho một admin đã đăng nhập.
- Mô hình chi nhánh của đối thủ là bộ chuyển đổi hay giao diện gộp, và một người dùng có thể thuộc nhiều chi nhánh hay không.
- Những vai trò họ cung cấp theo mặc định, và quyền được phân theo màn hình hay theo hành động.
- Các trạng thái trong chu trình học viên của họ, và điều kiện kích hoạt "sắp hết hạn" (theo số buổi còn lại hay theo ngày).
Thiết kế đề xuất
Bộ khung này là lớp vỏ mà mọi PRD còn lại đặt vào: một thanh trên cùng với bộ chuyển chi nhánh, một sidebar chung cho toàn bộ mô-đun, và trang Tổng quan thay đổi theo vai trò đăng nhập; phụ huynh và giáo viên có giao diện di động riêng thay vì dùng lại sidebar.






1Tầm nhìn sản phẩm
Trường Số (truongso.net) là hệ điều hành của FLYER cho các trung tâm tiếng Anh và trường tư nhỏ tại Việt Nam. Sản phẩm bắt đầu từ CRM tuyển sinh đang hoạt động tại b2c.truongso.net và phát triển thành công cụ sử dụng hằng ngày cho toàn trung tâm: nhân viên lễ tân làm thủ tục nhập học cho một học viên, giáo vụ xây dựng thời khoá biểu, giáo viên điểm danh trên điện thoại, kế toán thu học phí và đôn đốc công nợ, và chủ trung tâm xem một tổng quan duy nhất trên tất cả chi nhánh.
Đường tham chiếu cạnh tranh là nhóm phần mềm quản lý trung tâm tại Việt Nam (PSE ONE và các đối thủ tương tự) quảng cáo bảy mô-đun: tuyển sinh, học viên, đào tạo, báo cáo, kho, tài chính và sổ liên lạc phụ huynh, bán theo bậc số lượng học viên với giá khoảng 199.000 đến 1.000.000 VND mỗi tháng. Trường Số bao phủ cùng phạm vi vận hành đó, nhưng có ba điểm khác biệt mà các đơn vị dẫn đầu thị trường chưa có:
- Dữ liệu học tập nằm ngay trong hồ sơ vận hành. Mọi học viên đều có một Tài khoản FLYER. Điểm kiểm tra xếp lớp, bài tập được giao, tỷ lệ hoàn thành và kết quả chấm nói, viết bằng AI đã có sẵn trên nền tảng FLYER và hiển thị ngay trong hồ sơ học viên mà không cần thêm công việc tích hợp.
- Tiền được luân chuyển qua chuyển khoản đã xác minh. Liên kết tài khoản ngân hàng SePay và mã QR thanh toán hiện có giúp phiếu thu tự đối soát; tiền mặt là ngoại lệ, không phải phương thức mặc định.
- Một hệ thống thiết kế duy nhất. Cloud theme dùng trên toàn bộ sản phẩm giáo viên của FLYER cũng là ngôn ngữ giao diện ở đây, nên một trung tâm đã dùng teacher.flyer.us sẽ nhận ra mọi màn hình.
Chỉ số thành công (12 tháng sau khi P1 ra mắt)
| Chỉ số | Mục tiêu | Nguồn |
|---|---|---|
| Trung tâm dùng Trường Số cho nhập học và điểm danh hằng tuần | 150 tenant, 60% hoạt động hằng tuần | Sự kiện hoạt động của tenant |
| Học phí thu qua sản phẩm (đã phát hành phiếu thu) | 70% tenant đang hoạt động phát hành ít nhất một phiếu thu mỗi tháng | Sự kiện tài chính |
| Giáo viên điểm danh trong vòng 24 giờ sau buổi học | 90% buổi học đã diễn ra | Sự kiện điểm danh |
| Phụ huynh được sổ liên lạc tiếp cận | 60% học viên đang hoạt động có kênh liên hệ với phụ huynh đã xác minh (Zalo hoặc ứng dụng) | Liên lạc phụ huynh |
| Di chuyển dữ liệu Excel hoàn tất mà không cần yêu cầu hỗ trợ | 80% tenant mới | Tác vụ nhập liệu |
2Đối tượng sử dụng và vai trò
Owner (Chủ trung tâm)
Vận hành một đến năm chi nhánh, 200 đến 2.000 học viên. Xem doanh thu, công nợ, số lượng nhập học và mức sử dụng giáo viên hằng tuần. Muốn có số liệu mà không cần hỏi nhân viên. Dùng laptop và điện thoại.
Branch manager (Quản lý chi nhánh)
Chịu trách nhiệm về chỉ tiêu của một chi nhánh. Duyệt giảm giá, bảng công và các khoản xoá nợ. Theo dõi quy trình lead và tỷ lệ lấp đầy lớp học hằng ngày.
Admissions consultant (Tư vấn tuyển sinh)
Xử lý 30 đến 80 lead mỗi tuần từ Facebook, Zalo và khách đến trực tiếp. Gọi điện, đặt lịch học thử và kiểm tra xếp lớp, chốt và chuyển giao. Là người dùng CRM hiện tại.
Academic admin / front desk (Giáo vụ)
Nhập học cho học viên, xây dựng lớp học và thời khoá biểu, phân công giáo viên, xử lý học bù và chuyển lớp, in phiếu điểm danh, trả lời phụ huynh tại quầy.
Accountant (Kế toán)
Phát hành phiếu thu, ghi nhận tiền mặt, đối soát chuyển khoản, đôn đốc các khoản quá hạn, ghi nhận chi phí, chuẩn bị bảng lương và hoá đơn điện tử.
Teacher (Giáo viên)
Dạy 10 đến 25 buổi mỗi tuần, thường tại nhiều hơn một chi nhánh. Điểm danh trên điện thoại ngay trong lớp, viết nhận xét buổi học ngắn hai dòng, giao bài tập trên FLYER.
Guardian (Phụ huynh)
Nhận tin nhắn điểm danh và học phí qua Zalo, xem báo cáo học tập hằng tuần, thanh toán bằng QR, yêu cầu học bù. Không cài thêm ứng dụng riêng nếu liên kết Zalo đã dùng được.
Student (Học viên)
Học trên các ứng dụng FLYER. Trong Trường Số, học viên là một bản ghi, không phải người dùng, trừ trường hợp học viên là người lớn được cấp vai trò cổng phụ huynh cho chính mình.
3Đa chi nhánh (tenant)
Backend hiện có đã sẵn hai lớp chứa: Center của CRM (center_id, id dạng chuỗi, được tạo khi onboarding) và School của FLYER (school_id, kiểu int64, đơn vị sở hữu lớp học, học viên, học phí và thành viên giáo viên). Customer của CRM mang cả hai id này, và GET /v3/crm/me/accessible-schools hiện đã trả về nhiều school cho một người dùng CRM.
Một tenant là một Center của CRM. Mỗi chi nhánh vật lý là một School của FLYER thuộc Center đó. Danh sách accessible_schools hiện có trở thành phạm vi chi nhánh của người dùng, và dropdown lọc school hiện có trở thành bộ chuyển chi nhánh. Không cần bảng "branch" mới cho phase 1; một bản ghi branch_profile (địa chỉ, số điện thoại, phòng học, tài khoản ngân hàng mặc định) mở rộng School.
Hệ quả: học viên, lớp học, học phí và điểm danh được tính theo từng chi nhánh (từng school) như backend đã mô hình hoá; lead thuộc về center và được gán một chi nhánh mục tiêu khi chuyển đổi; báo cáo tổng hợp trên tất cả school của center.
| Cấp độ | Định danh hiện có | Sở hữu | UI chuyển đổi |
|---|---|---|---|
| Tenant | Center (center_id) | Người dùng và vai trò, pipeline, nguồn, kênh, tag, package, trường tuỳ chỉnh, lead, cài đặt, tích hợp | Không có (một center cho mỗi lượt đăng nhập); có bộ chuyển tài khoản nếu người dùng thuộc nhiều center |
| Chi nhánh | School (school_id) | Học viên, lớp học, buổi học, điểm danh, học phí, tài khoản ngân hàng, phân công nhân sự, kho, phòng học | Dropdown chi nhánh trên thanh trên cùng: "Tất cả chi nhánh" cho các vai trò cấp chủ trung tâm, còn lại hiển thị các chi nhánh của người dùng |
4Vai trò và ma trận phân quyền
CRM hiện đã có vai trò do tenant định nghĩa với một danh mục quyền (GET /v3/crm/permissions-catalog, các mã quyền được nhóm theo module) và phạm vi theo từng người dùng own | team | all. Thành viên trong school dùng enum cố định SchoolRole OWNER / ADMIN / TEACHER. Quyết định D2: một danh mục vai trò duy nhất. Mô hình vai trò của CRM được mở rộng thêm các mã quyền của những mô-đun mới; vai trò thành viên school được suy ra (cờ teacher, cờ admin) khi một vai trò Trường Số được gán, để các ứng dụng giáo viên của FLYER tiếp tục hoạt động.
Các vai trò mặc định đi kèm mọi tenant (có thể sao chép, không thể xoá):
| Nhóm quyền theo mô-đun | owner | branch_manager | admissions | academic_admin | accountant | teacher | parent |
|---|---|---|---|---|---|---|---|
| Lead và pipeline (PRD 01) | tất cả | chi nhánh | của mình / nhóm | chỉ xem | không có | không có | không có |
| Học viên (PRD 02) | tất cả | chi nhánh | tạo qua chuyển đổi | chi nhánh | chỉ xem | lớp của mình | con của mình |
| Lớp học và xếp lịch (PRD 03) | tất cả | chi nhánh | chỉ xem | chi nhánh | chỉ xem | chỉ xem lớp của mình | lớp của con mình |
| Điểm danh (PRD 04) | tất cả | chi nhánh | không có | chi nhánh (sửa bất kỳ) | chỉ xem | điểm danh buổi của mình | chỉ xem của con mình |
| Học phí và tài chính (PRD 05) | tất cả | chi nhánh + duyệt giảm giá | chỉ xem số dư | phát hành phiếu thu (nếu được cấp quyền) | toàn quyền trong chi nhánh | không có | hoá đơn của mình, thanh toán |
| Giáo viên và nhân sự (PRD 06) | tất cả | chi nhánh | không có | danh bạ | hợp đồng, lương, bảng công | của bản thân | không có |
| Liên lạc phụ huynh (PRD 07) | tất cả | chi nhánh | không có | gửi | nhắc học phí | lớp của mình | nhận, phản hồi |
| Kho (PRD 08) | tất cả | chi nhánh | không có | phát | quản lý | chỉ xem | không có |
| Báo cáo (PRD 09) | tất cả | chi nhánh | funnel của mình | học vụ | tài chính | lớp của mình | không có |
| Cài đặt (PRD 10) | tất cả | hồ sơ chi nhánh | không có | danh mục | cài đặt tài chính | không có | không có |
Danh sách đầy đủ mã quyền theo từng mô-đun nằm trong phần Phân quyền của mỗi PRD và được hợp nhất tại PRD 10.
5Kiến trúc thông tin và bản đồ điều hướng
Sidebar hiện tại hiển thị Tổng quan, Khách hàng, Nhập dữ liệu và Cài đặt trung tâm. File constants đã khai báo route cho học viên, lớp học, điểm danh và học phí với nhãn điều hướng tiếng Việt, được nhóm thành Tổng quan / CRM & Hiệu suất / Quản lý trường học / Tài chính / Cài đặt. Điều hướng mục tiêu giữ nguyên cách nhóm này và bổ sung các mô-đun mới.
Ghi chú về tiền tố route: các route CRM hiện có vẫn giữ dưới /crm/* để các liên kết trong thông báo và bookmark tiếp tục hoạt động. Các mô-đun mới nằm ở gốc (/students, /classes ...) trong cùng layout (dashboard). Cài đặt được hợp nhất dưới /settings với một redirect từ /crm/settings/*.
Tổng quan mô hình đối tượng
6Hiện trạng so với những gì PRD bổ sung
| Khu vực | Frontend hiện tại | Backend hiện tại (/v3) | PRD bổ sung |
|---|---|---|---|
| Đăng nhập và onboarding | Đăng nhập (mật khẩu, Google), đăng ký bằng OTP, onboarding (hồ sơ sale, tạo hoặc tham gia center) | GraphQL v2 viewer mutations; /v3/crm/onboarding/*, /v3/crm/me | Onboarding theo vai trò (chủ trung tâm đầu tiên thiết lập chi nhánh), đăng nhập OTP cho phụ huynh (07) |
| Lead / khách hàng | Kanban + table, filter, drawer tạo/sửa, shell chi tiết có timeline, sản phẩm, thảo luận, tài liệu đính kèm, phân công, học viên liên kết; lưu trữ và phân công lại theo lô; cấu hình cột; xuất xlsx | Customers (hơn 60 endpoint), pipeline, stage, status, source, channel, tag, trường tuỳ chỉnh, package, interaction, quick action, tìm kiếm, thông báo, việc hôm nay, dashboard | 01: đặt lịch học thử, hàng đợi gọi lại, wizard chuyển đổi thành học viên nhập học, quy tắc lưu trữ lead; sửa lỗi: các trang cài đặt nguồn/kênh dùng API thay cho mock trong localStorage |
| Kiểm tra xếp lớp | Danh sách, tạo mới, modal nhập kết quả | /v3/crm/placement-tests, /v3/teacher/placement-test/send, FLYER report schema | 01: nhãn trạng thái khớp với enum của API, kết quả đề xuất trình độ lớp |
| Học viên | Chưa có (chỉ có route constant) | school-finance/students list và detail, StudentProfile, StudentParent, StudentStats, StudentScoreEntry, learner search | 02: bản ghi học viên có chu trình trạng thái, phụ huynh (nhiều người), lịch sử ghi danh, tài liệu, ghi chú, đồng ý nhận thông báo |
| Lớp học | Chưa có | /v3/teacher/classes, ClassSchedule (recurrence + program lessons), class-schedules/{id}/remind, Course (price, lessons, pricing method) | 03: phòng học, lịch buổi học thực tế, sĩ số, phân công giáo viên và dạy thay, học bù, các kiểu xem thời khoá biểu, kiểm tra trùng lịch |
| Điểm danh | Chưa có | Chưa có | 04: toàn bộ mô-đun |
| Học phí | Chưa có | Tuition (cost, amount, discount, VAT, status, transactions CASH/BANK_TRANSFER, SePay), GroupInvoice, stats, notify (app/email/zalo), bank accounts, company legal profile, payment QR, parent tuition views | 05: gói học phí và gói buổi, số dư buổi, giảm giá và mã giảm giá, đánh số phiếu thu, thanh toán một phần, phân loại công nợ theo thời gian quá hạn, hoàn tiền và phiếu giảm, chi phí, hook hoá đơn điện tử, báo cáo doanh thu |
| Giáo viên và nhân sự | Trang Users (hồ sơ sale của CRM) với lời gọi mock cho school-access | TeacherProfile, school membership, rollup KPIs, sale profiles and roles | 06: danh bạ nhân sự, hợp đồng, cách tính lương, bảng công, đánh giá |
| Liên lạc phụ huynh | Chưa có | Danh sách học phí cho phụ huynh, báo cáo học viên, báo cáo hằng tuần; kênh thông báo app/email/zalo cho nhắc học phí và nhắc lớp học | 07: thông báo chung, tin nhắn sổ liên lạc, cấu hình Zalo OA/ZNS, cổng phụ huynh, đồng ý nhận thông báo |
| Kho | Chưa có | Chưa có | 08: toàn bộ mô-đun |
| Báo cáo | Dashboard sale (card cho sale và quản lý, funnel, xu hướng, top sale), trang drill-down | 5 endpoint dashboard | 09: dashboard điều hành trên toàn bộ mô-đun, báo cáo học vụ và tài chính, xuất file |
| Cài đặt | Users, roles (chỉ cập nhật), quyền của sale, tag (API), nguồn và kênh (mock), tenant (chưa lưu vào database) | Roles, danh mục quyền, hồ sơ sale, view config, trường tuỳ chỉnh, cấu hình school | 10: hồ sơ chi nhánh, phòng học, danh mục cho các mô-đun mới, tích hợp, xem nhật ký, mẫu tin thông báo |
| Nhập dữ liệu | Wizard 3 bước cho lead với mẫu xlsx và báo cáo lỗi | ImportJob cho customers | 11: nhập dữ liệu cho học viên, phụ huynh, lớp học, ghi danh, số dư đầu kỳ, nhân sự |
Các điểm chưa nhất quán cần xử lý trong P1
- Có hai cách triển khai
PermissionGate; bản stub trongsrc/components/crmluôn cho phép. Cần loại bỏ bản stub này. - Thuật ngữ phạm vi quyền chưa đồng nhất: bộ sửa ma trận dùng none/read/write/manage, còn
/me/permissionstrả về own/team/all. PRD 10 chuẩn hoá thuật ngữ vềown | branch | allcộng với mã hành động. - Nhãn trạng thái kiểm tra xếp lớp trong i18n (scheduled) không khớp với enum của API (not_started, in_progress, completed, cancelled).
- Các endpoint được frontend tham chiếu nhưng không có trong spec: customers/{id}/convert, do-not-call, transfer-school, tasks, meetings, saved-views, users/{id}/school-access. PRD 01 và 10 quy định cách thay thế.
- Một số nội dung cài đặt và form đang hard-code bằng tiếng Anh; toàn bộ chuỗi văn bản sẽ được chuyển vào file message vi/en.
7Phân kỳ triển khai
| Giai đoạn | Phạm vi | Tiêu chí hoàn thành |
|---|---|---|
| P1 (Q4/2026) | 00, 01 (chuyển đổi, học thử), 02, 03 (lớp học, thời khoá biểu, buổi học), 04, 05 (gói học phí, phiếu thu, công nợ), 07 (nhắc điểm danh và học phí qua Zalo ZNS), 09 (dashboard điều hành v1), 10 (chi nhánh, vai trò, danh mục), 11 (nhập dữ liệu), 12 phiên bản nền | Ba trung tâm thử nghiệm vận hành nhập học, điểm danh và học phí trong một tháng đầy đủ mà không cần Excel |
| P2 (Q1/2027) | 05 (mã giảm giá, hoàn tiền, chi phí, hoá đơn điện tử), 06 (hợp đồng, lương, bảng công), 07 (cổng phụ huynh, thông báo chung), 08, 09 (báo cáo học vụ và tài chính), 12 tăng cường bảo mật (2FA, công cụ PDPD) | Bảng lương và hoá đơn điện tử được kế toán tại các trung tâm thử nghiệm sử dụng |
| P3 (Q2/2027) | 06 đánh giá, nghỉ phép; 07 chat hai chiều; 09 công cụ tự tạo báo cáo; vùng dữ liệu Việt Nam | Đạt mức tính năng tương đương nhóm đối thủ tham chiếu, cộng thêm các yếu tố khác biệt về dữ liệu học tập |
8Các quyết định cần phê duyệt
- D1 Tenant = Center, Branch = School (phần 3).
- D2 Một danh mục vai trò duy nhất mở rộng từ vai trò CRM; vai trò school được suy ra (phần 4).
- D3 Ưu tiên danh sách hơn board: pipeline vẫn giữ Kanban như một lựa chọn, nhưng mọi mô-đun mới ra mắt với giao diện dạng bảng trước và không có board.
- D4 Học viên nhập học chính là hồ sơ learner của FLYER; việc chuyển đổi luôn tạo mới hoặc liên kết một tài khoản learner để dữ liệu học tập được gắn kèm từ ngày đầu.
- D5 Buổi học là các dòng dữ liệu cụ thể được sinh ra từ lịch học của lớp, và điểm danh cùng bảng công gắn vào buổi học, không gắn vào mẫu lịch học.
- D6 Tài chính tái sử dụng mô hình Tuition và GroupInvoice; gói buổi là một loại gói học phí, và số dư buổi của học viên là một số liệu tổng hợp được duy trì.
- D7 Phụ huynh được liên hệ qua Zalo ZNS trước, trong ứng dụng thứ hai, email thứ ba; SMS không được xây dựng.
- D8 Các route CRM hiện có vẫn giữ dưới /crm; các mô-đun mới là route ở gốc trong cùng một shell.
- D9 Tiếng Việt là ngôn ngữ chính của sản phẩm; tiếng Anh là locale thứ hai đầy đủ từ ngày đầu, và toàn bộ chuỗi văn bản nằm trong file message.
- D10 Kho, lương nhân sự và hoá đơn điện tử thuộc phase 2; phase 1 ra mắt vòng lặp vận hành hằng ngày gồm nhập học, xếp lịch, điểm danh, thu tiền, báo cáo.
Trường Số (truongso.net) · Nội bộ FLYER