- Given Dashboard điều hành với kỳ Tháng này và Tất cả chi nhánh
- When Tải trang
- Then Mọi ô hiển thị trong vòng 1,5 giây (p95), mức thay đổi so với tháng trước, và khi chọn một ô sẽ mở danh sách đã lọc với cùng kỳ đang áp dụng.
PRD 09 · Báo cáo và dashboard
Một dashboard điều hành tổng hợp tuyển sinh, học viên, lớp học, điểm danh và tài chính, có drill-down, một thư viện báo cáo chuẩn theo từng mô-đun, bản tổng hợp gửi định kỳ, và tính năng xuất dữ liệu. Mở rộng từ dashboard bán hàng và trang drill-down hiện có.
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. - Nhãn existing / extend / new trong trang được xác định bằng cách đối chiếu với đặc tả
/v3trên staging tại thời điểm trên.
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:
- Danh sách báo cáo của đối thủ ("thống kê danh sách nhân sự / lớp / học sinh / buổi học còn lại / doanh số tư vấn / thu chi / công nợ / kho") và tập hợp cột của họ.
- Họ có dashboard với biểu đồ hay chỉ có báo cáo dạng bảng.
- Các định dạng xuất được cung cấp.
Thiết kế đề xuất
Bố cục chung là một dashboard điều hành bốn dòng ô theo Cloud theme, các trang chủ theo vai trò dùng lại cùng ô và bảng, và mọi số liệu đều là liên kết mở danh sách đã tạo ra số liệu đó.







1Mục đích
Câu hỏi của chủ trung tâm là "trung tâm đang hoạt động ra sao trong tháng này" và câu hỏi của quản lý chi nhánh là "hôm nay cần xử lý gì". Dashboard hiện có đã trả lời phần bán hàng (funnel, thắng/thua, nhân viên bán hàng xuất sắc, công việc hôm nay). PRD này bổ sung góc nhìn vận hành và tài chính, tuân theo cùng nguyên tắc drill-down: mọi số liệu đều liên kết đến danh sách đã tạo ra số liệu đó. Báo cáo là các danh sách có bộ lọc và tổng số liệu, có thể xuất ra; chưa có công cụ tự tạo báo cáo trong P1.
Trong phạm vi
- Dashboard điều hành (chủ trung tâm, quản lý chi nhánh) có bộ lọc theo kỳ và theo chi nhánh.
- Trang chủ theo vai trò: tuyển sinh (các thẻ bán hàng hiện có), giáo vụ, kế toán, giáo viên.
- Báo cáo chuẩn theo từng mô-đun (danh sách dưới đây), mỗi báo cáo có bộ lọc, tổng số liệu, drill-down, xuất file xlsx.
- Bản tổng hợp qua email gửi hằng tuần cho chủ trung tâm và quản lý chi nhánh.
Ngoài phạm vi
- Công cụ tự tạo báo cáo, kết nối BI (P3).
- Dự báo.
2Hiện trạng
| Widget | Endpoint | Giữ lại |
|---|---|---|
| Việc tôi cần làm hôm nay: công việc quá hạn, đến hạn hôm nay, cuộc gọi đang chờ, sắp đóng, khách hàng nguội | GET /v3/crm/dashboard/sale-summary?period | có, trang chủ tuyển sinh |
| Thẻ quản lý: giá trị pipeline, giao dịch đang mở, số lượng và giá trị đã thắng, đã thua, tỷ lệ chuyển đổi, giá trị giao dịch trung bình | /manager-summary | có, phần tuyển sinh trong dashboard điều hành |
| Xu hướng thắng/thua, funnel, nhân viên bán hàng xuất sắc (ECharts) | /won-lost-trend, /funnel, /top-sales | có |
| Trang drill-down với bản đồ danh mục (overdue_tasks, due_today, pending_calls, closing_soon, cold_customers, pipeline_open, won_period, lost_period) | endpoint danh sách customers và interactions | có; mẫu được mở rộng thêm |
| Số liệu học phí (tổng, đã thanh toán, chưa thanh toán, số lượng quá hạn) | /school-finance/tuitions/stats | có |
| Tổng hợp theo giáo viên (học viên, bài kiểm tra, tỷ lệ hoàn thành, tăng trưởng) | /v3/teacher/viewer/rollup-teachers | có |
| Widget kế hoạch hôm nay | /me/today-plan | có; bổ sung thêm mục điểm danh và tài chính |
| Chế độ demo với dữ liệu giả khi trung tâm chưa có khách hàng nào | client | giữ lại cho các trung tâm chưa có dữ liệu |
3Dashboard điều hành
Route /dashboard dành cho owner và branch_manager; bộ lọc: chi nhánh (tất cả hoặc một chi nhánh), kỳ (tuần này, tháng này, tháng trước, quý này, tuỳ chỉnh), công tắc so sánh với kỳ trước. Bố cục: bốn dòng ô và biểu đồ; mỗi ô hiển thị giá trị, mức thay đổi so với kỳ trước, và một liên kết. Các widget tải độc lập với nhau.
| Dòng | Widget | Định nghĩa | Drill-down |
|---|---|---|---|
| Tiền | Doanh thu lập hoá đơn | Σ tổng giá trị hoá đơn được tạo trong kỳ (không tính hoá đơn đã huỷ) | /finance/tuition?created |
| Thực thu | Σ các khoản thanh toán hợp lệ trong kỳ | /finance/cashbook?type=in | |
| Công nợ quá hạn | Σ số tiền còn lại trên các hoá đơn đã quá hạn tại thời điểm cuối kỳ; biểu đồ mini theo tuổi nợ | /finance/debt | |
| Chi phí | Σ các khoản chi đã được phê duyệt trong kỳ | /finance/cashbook?type=out | |
| Học viên | Học viên đang học | số lượng học viên có trạng thái đang học tại thời điểm cuối kỳ; mức thay đổi | /students?status=active |
| Nhập học mới | lượt ghi danh đầu tiên bắt đầu trong kỳ | /students?enrolled_from | |
| Nghỉ học | số học viên nghỉ học trong kỳ; tỷ lệ rời bỏ = số nghỉ học / số đang học tại đầu kỳ | /students?status=withdrawn | |
| Sắp hết buổi / hết hạn | số dư buổi ≤ 3 hoặc sắp hết hạn trong vòng 14 ngày | /students?low_balance | |
| Lớp học | Tỷ lệ lấp đầy | Σ số lượt ghi danh đang hoạt động / Σ sĩ số tối đa của các lớp đang hoạt động | /classes?tab=active |
| Chuyên cần | tỷ lệ chuyên cần trong kỳ; tỷ lệ đi muộn | /attendance?tab=report | |
| Buổi chưa điểm danh | các buổi học đã kết thúc hơn 2 giờ nhưng chưa có phiếu điểm danh | /attendance?tab=unmarked | |
| Tuyển sinh | Khách mới | số lead được tạo trong kỳ, theo nguồn (biểu đồ cột chồng) | /crm/customers?created |
| Chuyển đổi | số lượt chuyển đổi / số lead được tạo; tỷ lệ từ học thử sang nhập học | /crm/customers?status=won | |
| Giá trị pipeline và funnel | tổng hợp quản lý và funnel hiện có | drill-down hiện có | |
| Biểu đồ | Thu theo ngày | thực thu theo ngày (cột) so với đã lập hoá đơn (đường), theo kỳ | |
| Học viên theo tháng | đang học, mới, nghỉ học theo từng tháng, trong 12 tháng | ||
| Bảng | Theo chi nhánh | mỗi dòng một chi nhánh: học viên, mới, nghỉ học, tỷ lệ lấp đầy, chuyên cần, đã lập hoá đơn, thực thu, quá hạn | chọn dòng để đổi bộ lọc chi nhánh |
Quy tắc biểu đồ (dataviz nội bộ): dùng màu tím thương hiệu cho chuỗi dữ liệu chính, màu xám cho dữ liệu so sánh, chỉ dùng màu trạng thái khi thể hiện ý nghĩa trạng thái; không dùng hiệu ứng 3D, không dùng biểu đồ tròn khi có hơn 5 phần; nhãn trục cỡ 11.5 px; tooltip hiển thị giá trị và mức thay đổi.
4Trang chủ theo vai trò
| Vai trò | Nội dung trang chủ |
|---|---|
| Tuyển sinh | Các thẻ bán hàng và kế hoạch hôm nay hiện có; cùng với Học thử tuần này, Gọi lại quá hạn. |
| Giáo vụ | Buổi học hôm nay kèm số lượng chưa điểm danh, học viên đang chờ theo trình độ, các lớp gần đầy sĩ số, các lớp kết thúc trong 14 ngày tới, yêu cầu từ phụ huynh đang mở, cần giáo viên dạy thay (buổi học có giáo viên xin nghỉ). |
| Kế toán | Khoản thu hôm nay, giao dịch chuyển khoản chưa đối soát, hoá đơn đang chờ duyệt, quá hạn theo nhóm tuổi nợ, trạng thái chốt quỹ theo từng chi nhánh, lỗi phát hành hoá đơn điện tử. |
| Giáo viên | Buổi học hôm nay, buổi học chưa điểm danh, lịch trong tuần, học viên cần lưu ý (vắng học, sắp hết buổi), bài tập FLYER đến hạn (dữ liệu hiện có). |
5Thư viện báo cáo
| Mô-đun | Báo cáo | Dòng | Cột chính | Bộ lọc |
|---|---|---|---|---|
| Tuyển sinh | Nguồn khách và chuyển đổi | nguồn × kỳ | lead, học thử, kiểm tra xếp lớp, đã chuyển đổi, tỷ lệ, doanh thu từ chuyển đổi | chi nhánh, kỳ, kênh |
| Tuyển sinh | Hiệu suất tư vấn | tư vấn viên | cuộc gọi, thời gian gọi, lượt đặt học thử, chuyển đổi, giá trị đã thắng | kỳ |
| Học viên | Danh sách học viên | học viên | toàn bộ các cột hồ sơ, trạng thái, lớp, số dư, công nợ | trạng thái, lớp, trình độ, chi nhánh |
| Học viên | Nghỉ học và lý do | lượt nghỉ học | học viên, ngày, lý do, số tháng đã học, hoàn tiền | kỳ, chi nhánh |
| Học viên | Sắp hết hạn | học viên | số dư, ngày hết hạn, lớp, người thanh toán, lần nhắc gần nhất | ngưỡng |
| Lớp học | Lấp đầy lớp | lớp | sĩ số tối đa, đã ghi danh, đang chờ, % lấp đầy, số buổi còn lại, ngày kết thúc | chi nhánh, trình độ |
| Lớp học | Sử dụng phòng | phòng × ngày trong tuần | số giờ đã đặt / số giờ khả dụng | chi nhánh, tuần |
| Điểm danh | Chuyên cần theo lớp / học viên / giáo viên | theo từng nhóm | đã điểm danh, có mặt, muộn, vắng, có phép, tỷ lệ, chưa điểm danh | kỳ, chi nhánh |
| Tài chính | Doanh thu và thực thu | ngày hoặc tháng | đã lập hoá đơn, đã thu theo phương thức, hoàn tiền, thực nhận | chi nhánh, kỳ |
| Tài chính | Công nợ theo tuổi nợ | học viên | nhóm tuổi nợ, hạn quá hạn lâu nhất, ngày hẹn thanh toán | chi nhánh |
| Tài chính | Doanh thu theo khoá / gói | khoá học, gói học phí | số hoá đơn, số tiền, tổng giảm giá, giá trung bình | kỳ |
| Tài chính | Doanh thu hoãn lại | học viên | số buổi chưa dùng × đơn giá, ngày hết hạn | chi nhánh |
| Tài chính | Sổ quỹ | bút toán | sổ quỹ | tài khoản, kỳ |
| Nhân sự | Giờ dạy giáo viên | giáo viên × tháng | số buổi, số giờ, số buổi dạy thay, lương | chi nhánh, tháng |
| Kho | Tồn kho và nhập xuất | mặt hàng | tồn kho, nhập, xuất, giá trị | chi nhánh, kỳ |
| Liên lạc | Tin đã gửi | loại × kênh | đã gửi, đã nhận, thất bại, chi phí | kỳ |
Mỗi trang báo cáo gồm: tiêu đề, thanh bộ lọc (các nút dropdown theo theme Cloud), dòng tổng số liệu, bảng có header cố định, phân trang 100 dòng, các nút Xuất Excel và Lưu bộ lọc (theo từng người dùng, lưu trong view-configs). Các lượt xuất trên 5.000 dòng chạy dưới dạng job.
6User story và tiêu chí chấp nhận
- Given Ô Thực thu
- When So sánh với tổng sổ quỹ theo cùng bộ lọc
- Then Hai số liệu bằng nhau; kế hoạch kiểm thử bao gồm việc đối soát này cho mọi ô liên quan đến tiền.
- Given Chủ trung tâm và quản lý chi nhánh đã bật bản tổng hợp
- When Thứ Hai 07:30
- Then Một email chứa các số liệu chính của tuần trước theo từng chi nhánh kèm liên kết được gửi đi; nội dung tương tự cũng có sẵn tại
/reports/digest.
- Given Một báo cáo có 20.000 dòng
- When Xuất dữ liệu
- Then Một job được chạy, một thông báo gửi kèm liên kết đã ký trong vòng 60 giây, và lượt xuất được ghi nhận vào nhật ký như một lượt xuất dữ liệu cá nhân khi có liên quan.
7Dữ liệu và API
Dashboard đọc dữ liệu từ các bảng tổng hợp theo ngày được duy trì (agg_daily_school: date, school_id, billed, collected, refunds, expenses, active_students, new_enrollments, withdrawals, sessions_held, present, late, absent, excused, unmarked, leads_new, conversions), được làm mới mỗi khi có ghi mới và tính lại vào ban đêm. Các ô thời gian thực (buổi chưa điểm danh, chuyển khoản chưa đối soát, phê duyệt đang chờ) truy vấn trực tiếp từ các bảng dữ liệu sống.
| Method | Path | Request / response | Status |
|---|---|---|---|
| GET | /v3/crm/dashboard/* | không thay đổi | existing |
| GET | /v3/school/dashboard/executive | school_id?, from, to, compare=true → {tiles: {key: {value, prev, delta_pct, link}}, series: {...}, by_school: [...]} | new |
| GET | /v3/school/dashboard/home?role= | các widget trang chủ theo vai trò | new |
| GET | /v3/school/reports/{key} | bộ lọc theo từng báo cáo; page, limit; format=xlsx → rows + totals hoặc job id | new |
| GET | /v3/school/reports/jobs/{id} | status, url tải xuống | new |
| GET/PUT | /v3/crm/view-configs/{view} | bộ lọc đã lưu theo từng view key của báo cáo | existing |
| GET/PUT | /v3/school/digest-settings | {enabled, recipients, weekday, hour} | new |
8Phân quyền
| Mã quyền | owner | branch_manager | accountant | academic_admin | admissions | teacher |
|---|---|---|---|---|---|---|
reports.executive | tất cả | chi nhánh | phần tài chính | không | không | không |
reports.admissions | có | chi nhánh | không | không | khách hàng được phân công | không |
reports.academic | có | chi nhánh | không | chi nhánh | không | lớp được phân công |
reports.finance | có | chi nhánh | chi nhánh | không | không | không |
reports.export | có | có | tài chính | học vụ | không | không |
9Sự kiện phân tích
| Sự kiện | Thuộc tính |
|---|---|
| dashboard_viewed | role, period, branch_scope, load_ms |
| tile_drilldown | tile_key |
| report_viewed | key, filters_count |
| report_exported | key, rows, job |
| digest_sent / digest_opened |
10Trường hợp biên và câu hỏi còn mở
- Ranh giới kỳ theo múi giờ của trung tâm; một khoản thanh toán vào 23:50 ngày cuối tháng vẫn thuộc về tháng đó.
- Các khoản thanh toán bị huỷ sau khi ngày tổng hợp đã đóng: dữ liệu tổng hợp của ngày đó được tính lại khi có huỷ.
- Chi nhánh chưa có dữ liệu hiển thị số 0, không để trống; trung tâm mới chỉ thấy chế độ demo ở phần tuyển sinh (hành vi hiện có) và một checklist onboarding ở các phần còn lại.
- Còn mở: chủ trung tâm có muốn xem doanh thu ghi nhận theo tiến độ cung cấp dịch vụ (số buổi đã dạy) như một góc nhìn thứ hai không? Đề xuất triển khai ở P2 với tên "Doanh thu ghi nhận".
Trường Số (truongso.net) · Nội bộ FLYER