Trường Số PRD/02 Học viên
Trường Số · Yêu cầu sản phẩm · 09/2026

PRD 02 · Học viên (SIS)

Hồ sơ học viên là trung tâm của vận hành: thông tin cá nhân, phụ huynh, chu trình trạng thái, lịch sử ghi danh, số dư buổi học, tài liệu, ghi chú và dữ liệu học tập từ FLYER. Mở rộng các đối tượng học viên và phụ huynh đã có sẵn trong hệ thống trường học.

Xuất xứ / Prompt / Giới hạn
Trạng thái
Dự thảo v1
Mô-đun phụ trách
Học viên
Backend
EXTEND SchoolStudent/StudentParent · NEW student record, guardians, documents
Giai đoạn
P1
Phụ thuộc vào
01 Tuyển sinh, 03 Lớp học, 05 Tài chính

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-frontend và đặc tả OpenAPI /v3 trê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ả /v3 trê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:
    • Các trạng thái học viên của đối thủ và cách "bảo lưu, nghỉ học" ảnh hưởng đến gói buổi và nhắc hẹn.
    • Họ có lưu nhiều phụ huynh không và ai là người nhận tin nhắn.
    • Định dạng mã học viên và liệu có tính theo từng chi nhánh không.
    • Cách định nghĩa "báo cáo học sinh sắp hết hạn" (theo số buổi, số ngày, hay số tiền).
    • Những tài liệu nào họ gắn vào hồ sơ học viên và ảnh có phải là bắt buộc không.

Thiết kế đề xuất

Danh sách học viên với đủ cột và chip trạng thái, hồ sơ học viên hai cột có cột phải cố định (phụ huynh chính, số dư buổi, công nợ, tài khoản FLYER) và ba hộp thoại đổi trạng thái luôn yêu cầu lý do; điều quan trọng nhất là mọi bước chuyển thủ công (bảo lưu, nghỉ học, chuyển chi nhánh) đều hiển thị trước tác động lên ghi danh, gói buổi và tài chính.

1 · Danh sách học viên

/students · desktop

Danh sách học viên
Bảng có đủ 11 cột của mục 5 (mã HV, họ tên kèm tuổi, lớp, trạng thái, phụ huynh, buổi còn lại, công nợ, điểm danh 30 ngày, chi nhánh, ngày nhập học, thao tác) với 8 tab đếm số và bộ lọc theo chi nhánh, lớp, trình độ, đồng ý Zalo, khoảng ngày nhập học. Đang hiển thị: chip trạng thái theo bảng chu trình (Đang học, Bảo lưu, Chờ xếp lớp, Học thử, Đã nghỉ), chip viền nét đứt "Chưa xếp lớp", buổi còn lại tô đỏ khi ≤ 3, công nợ tô đỏ khi quá hạn, dấu "–" cho gói theo tháng, thanh thao tác theo lô khi chọn 2 học viên và menu Xếp lớp · Thu học phí · Gửi tin trên một dòng.

2 · Hồ sơ học viên · Tổng quan

/students/:id · desktop

Hồ sơ học viên · Tổng quan
Phần đầu hồ sơ gồm ảnh đại diện, mã, tuổi, chip trạng thái, chi nhánh, chip lớp và chip "Cần lưu ý" do ghi chú dị ứng (STU-09, quy tắc 8). Cột phải: phụ huynh chính kèm trạng thái Zalo, số dư buổi, công nợ, tài khoản FLYER. Menu kebab mở ra Bảo lưu · Nghỉ học · Chuyển chi nhánh; Ẩn danh hoá bị mờ vì học viên chưa ở trạng thái Đã nghỉ (STU-10). Tab Tổng quan gồm thông tin cá nhân, tổng hợp đồng ý nhận thông báo theo phiên bản (quy tắc 7) và dòng thời gian.

3 · Hồ sơ học viên · Lớp và lịch sử

/students/:id · tab Lớp & lịch sử · desktop

Hồ sơ học viên · Lớp và lịch sử
Bảng lượt ghi danh với cột lớp, trình độ, giáo viên, ngày bắt đầu, ngày kết thúc, trạng thái và số buổi đã học / tổng; các nút Chuyển lớp, Kết thúc, Xếp lớp (STU-04). Bên dưới là danh sách các sự kiện chuyển lớp, chuyển chi nhánh (bút toán chuyển đến, STU-07) và bảo lưu đã trở lại kèm số ngày gia hạn gói (STU-05).

4 · Hồ sơ học viên · Tài liệu và ghi chú

/students/:id · tab Tài liệu, Ghi chú · desktop

Hồ sơ học viên · Tài liệu và ghi chú
Tài liệu được phân loại theo danh mục của STU-09 (giấy khai sinh, hợp đồng, đồng ý sử dụng hình ảnh, CMND/CCCD) và lưu riêng tư với URL có chữ ký. Ghi chú hiển thị người viết, thời gian và phạm vi hiển thị (Chỉ nhân sự hoặc Cả giáo viên); ghi chú "Cần lưu ý" là nguồn của chip trên phần đầu hồ sơ và trên danh sách lớp của giáo viên (quy tắc 8).

5 · Hồ sơ học viên · Học tập (dữ liệu FLYER)

/students/:id · tab Học tập · desktop

Hồ sơ học viên · Học tập (dữ liệu FLYER)
Tab Học tập đọc từ các endpoint hiện có (STU-08): thời lượng học tháng này, bài tập đã giao / đã hoàn thành, điểm gần nhất, điểm theo bốn kỹ năng từ StudentScoreEntry, kết quả kiểm tra xếp lớp và các lượt thi gần nhất. Khi học viên chưa dùng FLYER, vùng này thay bằng trạng thái trống "Chưa có dữ liệu học tập".

6 · Hộp thoại Bảo lưu

/students/:id · kebab › Bảo lưu · desktop

Hộp thoại Bảo lưu
Bảo lưu yêu cầu ngày bắt đầu, ngày dự kiến trở lại và lý do (quy tắc 4). Trường hợp đang hiển thị dài 107 ngày nên vượt mức 90 ngày mặc định: cảnh báo cần quản lý chi nhánh phê duyệt và nút chính đổi thành "Gửi phê duyệt bảo lưu" (quy tắc 5). Bảng tác động liệt kê đúng những gì STU-05 quy định: đổi trạng thái, ẩn khỏi danh sách lớp, đóng băng gói và gia hạn hạn dùng, tạo nhắc hẹn trước 7 ngày.

7 · Hộp thoại Nghỉ học

/students/:id · kebab › Nghỉ học · desktop

Hộp thoại Nghỉ học
Nghỉ học cần ngày và lý do chọn từ danh sách của STU-06 (chi phí, chuyển nhà, không hài lòng, hoàn thành mục tiêu, khác). Đang hiển thị lỗi kiểm tra: chọn "Khác" nhưng chưa nhập lý do cụ thể. Bảng tóm tắt cho thấy số buổi chưa dùng, số tiền hoàn dự kiến từ PRD 05 và liên kết "Tạo phiếu hoàn"; ghi chú nhắc rằng nghỉ học không xoá dữ liệu (quy tắc 6).

8 · Hộp thoại Chuyển chi nhánh

/students/:id · kebab › Chuyển chi nhánh · desktop

Hộp thoại Chuyển chi nhánh
Chuyển chi nhánh cần chi nhánh đích, ngày chuyển và lớp đích tuỳ chọn (STU-07). Bảng tác động thể hiện quy tắc 1: kết thúc ghi danh tại chi nhánh cũ, tạo bản ghi học viên mới tại chi nhánh đích dùng chung hồ sơ FLYER và phụ huynh, chuyển số dư buổi với bút toán "chuyển đi" / "chuyển đến" và thêm mục trên dòng thời gian của cả hai hồ sơ.

1Mục đích

Mọi mô-đun ở phía sau (lớp học, điểm danh, học phí, liên lạc) đều cần một bản ghi học viên duy nhất và có thẩm quyền cho mỗi chi nhánh, với trạng thái rõ ràng, thông tin liên hệ phụ huynh đã xác thực và lịch sử những gì học viên đã mua và đã tham gia. Backend của FLYER đã có hồ sơ người học (StudentProfile, id kiểu int64), một StudentParent duy nhất, số liệu tài chính và các bản ghi điểm số. PRD này bổ sung lớp vận hành bao quanh: chu trình trạng thái, nhiều phụ huynh kèm đồng ý nhận thông báo, lịch sử ghi danh, tài liệu, ghi chú, và số dư buổi học được tính từ các gói buổi ở PRD 05 và điểm danh ở PRD 04.

Trong phạm vi

Ngoài phạm vi

2Hiện trạng

Đối tượng / endpointTrườngDùng cho
GET /v3/teacher/school-finance/students (SchoolStudent)id, first_name, last_name, display_name, avatar_url, phone_number, email, user_name, student_name, class {id, name, code, class_type}Danh sách cơ bản, lọc theo class_ids và q
GET /v3/teacher/school-finance/students/{id} (StudentDetail)user {phone, email, user_name}, parent {id, display_name}, courses[]Chi tiết cơ bản
.../students/{id}/stats (StudentStats)current_class_name, total_amount, paid_amount, unpaid_amount, payment_countTổng hợp tài chính
.../students/{id}/tuitions, /coursesTuition[], Course[]Tab Học phí
StudentScoreEntry via exam score reportoverall, four skills, Cambridge shields, CEFR, IELTS bandTab Học tập
GET /v3/parent/learner/{id}/report, /weekly-reportassignments, self-study, learning time, skillsTab Học tập và báo cáo cho phụ huynh
CustomerLearner, GET /v3/crm/customers/learners/searchlead to learner linkChuyển đổi (PRD 01)
GET /v3/teacher/students/quick-searchBộ chọn

Còn thiếu: trạng thái học viên, nhiều phụ huynh, ghi danh dưới dạng một đối tượng riêng (hiện tại học viên chỉ đơn giản là "đang ở trong một lớp"), tài liệu, ghi chú, đồng ý nhận thông báo, chuyển chi nhánh, số dư buổi học.

3Chu trình trạng thái

Trạng tháiNhãn tiếng ViệtÝ nghĩaBắt đầu từChuyển đến
prospectTiềm năngChưa là học viên; chỉ là bản ghi lead (PRD 01). Không lưu trong bảng học viên.Học thử, Chờ xếp lớp, Đang học
trialHọc thửCó lịch học thử, chưa ghi danhĐặt lịch học thử từ leadChờ xếp lớp, Đang học, Không nhập học
waitingChờ xếp lớpĐã chuyển đổi, chưa có lớpChuyển đổi mà chưa có lớpĐang học
activeĐang họcCó ít nhất một lượt ghi danh đang hoạt độngBắt đầu ghi danhBảo lưu, Hoàn thành, Đã nghỉ
pausedBảo lưuTạm ngừng ghi danh, có ngày dự kiến trở lại; buổi học trong gói được tạm đóng băngNhân sự thực hiện, kèm lý do và ngàyĐang học, Đã nghỉ
completedHoàn thànhTất cả lượt ghi danh kết thúc do hoàn thành khoá họcLớp kết thúcĐang học (ghi danh lại), cựu học viên
withdrawnĐã nghỉNghỉ học trước khi hoàn thành; có ghi nhận lý doNhân sự thực hiệnĐang học (ghi danh lại)
droppedKhông nhập họcHọc viên học thử hoặc chờ xếp lớp nhưng không bao giờ ghi danhNhân sự thực hiện hoặc 60 ngày không hoạt độngĐang học

Trạng thái được lưu trên bản ghi học viên và được hệ thống tính lại mỗi khi ghi danh thay đổi; các bước chuyển trạng thái thủ công chỉ giới hạn ở Bảo lưu, Đã nghỉ và Không nhập học, và luôn yêu cầu lý do. Một học viên Đang học ở một chi nhánh khi chuyển sang chi nhánh khác vẫn giữ một bản ghi riêng cho mỗi chi nhánh (school); hồ sơ hiển thị cả hai.

4User story và tiêu chí chấp nhận

STU-01Tìm kiếm học viên
Giáo vụ tìm được bất kỳ học viên nào trong vài giây.
  • Given Danh sách học viên
  • When Nhập tên, số điện thoại (của học viên hoặc phụ huynh), mã học viên hoặc tên đăng nhập
  • Then Kết quả được lọc phía server trong vòng 300 ms, không phân biệt dấu, và số điện thoại phụ huynh khớp được tô sáng.
STU-02Tạo học viên trực tiếp
Nhân sự thêm một học viên đến trực tiếp mà không qua lead.
  • Given Có quyền students.create
  • When Gửi biểu mẫu học viên với ít nhất họ tên, ngày sinh, chi nhánh, một phụ huynh có số điện thoại
  • Then Một hồ sơ người học được tạo trên FLYER (tên đăng nhập được sinh tự động, thông tin đăng nhập chỉ hiển thị một lần và gửi cho phụ huynh khi có yêu cầu), bản ghi học viên ở trạng thái Chờ xếp lớp, và không tạo lead.
STU-03Quản lý phụ huynh
Nhân sự giữ thông tin liên hệ phụ huynh luôn chính xác.
  • Given Hồ sơ học viên
  • When Thêm một phụ huynh gồm họ tên, quan hệ, số điện thoại, email, đồng ý nhận Zalo, cờ "Liên hệ chính" và "Người thanh toán"
  • Then Phụ huynh được lưu lại; đúng một phụ huynh là liên hệ chính và một là người thanh toán (có thể là cùng một người); một phụ huynh dùng chung cho các anh chị em là một bản ghi duy nhất được liên kết với nhiều học viên; thay đổi số điện thoại sẽ ghi vào nhật ký và xác minh lại khả năng nhận Zalo (PRD 07).
STU-04Xếp lớp
Nhân sự xếp một học viên vào lớp ngay từ hồ sơ.
  • Given Học viên ở trạng thái Chờ xếp lớp hoặc Đang học
  • When Chọn lớp, ngày bắt đầu và (nếu có) gói học phí
  • Then Một lượt ghi danh được tạo (PRD 03) nếu còn sĩ số; học viên xuất hiện trong danh sách lớp từ ngày bắt đầu; các buổi học trước ngày bắt đầu không tính là vắng; trạng thái chuyển thành Đang học.
STU-05Bảo lưu và trở lại
Nhân sự ghi nhận một lượt bảo lưu.
  • Given Học viên đang học
  • When Đặt ngày bắt đầu bảo lưu, ngày dự kiến trở lại, lý do
  • Then Trạng thái chuyển thành Bảo lưu; danh sách lớp ẩn học viên khỏi các buổi học trong khoảng thời gian bảo lưu; hạn sử dụng gói buổi (PRD 05) được gia hạn thêm đúng số ngày bảo lưu; một nhắc hẹn được tạo 7 ngày trước ngày dự kiến trở lại; khi trở lại, trạng thái được kích hoạt lại và cần chọn lớp (lớp cũ hoặc lớp mới).
STU-06Nghỉ học
Nhân sự kết thúc quá trình học của một học viên.
  • Given Học viên đang học hoặc đang bảo lưu
  • When Cho nghỉ học kèm ngày và lý do (chọn: chi phí, chuyển nhà, không hài lòng, hoàn thành mục tiêu, khác + nhập tự do)
  • Then Tất cả lượt ghi danh kết thúc vào ngày đó; các buổi học chưa dùng được hiển thị kèm số tiền hoàn dự kiến từ PRD 05 và liên kết "Tạo phiếu hoàn"; báo cáo rời bỏ ở PRD 09 ghi nhận lý do.
STU-07Chuyển chi nhánh
Quản lý chi nhánh chuyển một học viên sang chi nhánh khác.
  • Given Học viên tại chi nhánh A
  • When Chuyển sang chi nhánh B kèm ngày và lớp đích (nếu có)
  • Then Lượt ghi danh tại A kết thúc, một bản ghi học viên tại B được tạo mới hoặc dùng lại với cùng một hồ sơ người học, phụ huynh được dùng chung, số dư gói buổi chuyển sang B (bút toán tài chính tại A ghi "chuyển đi", tại B ghi "chuyển đến"), và hồ sơ hiển thị một mục trên dòng thời gian.
STU-08Xem dữ liệu học tập
Giáo viên hoặc nhân sự xem tình hình học tập của học viên trên FLYER.
  • Given Hồ sơ người học đã được liên kết
  • When Mở tab Học tập
  • Then Thấy thời lượng học trong tháng này, số bài tập đã giao/đã hoàn thành, điểm số gần nhất theo từng kỹ năng, kết quả kiểm tra xếp lớp và các lượt thi gần nhất, tất cả lấy từ các endpoint hiện có, kèm trạng thái trống "Chưa có dữ liệu học tập" khi học viên chưa sử dụng FLYER.
STU-09Tài liệu và ghi chú
Nhân sự lưu tài liệu và ghi chú trên hồ sơ.
  • Given Có quyền students.edit
  • When Tải lên một tệp kèm loại tài liệu (giấy khai sinh, CMND/CCCD, hợp đồng, đồng ý sử dụng hình ảnh, y tế, khác) hoặc viết một ghi chú kèm phạm vi hiển thị (chỉ nhân sự, hoặc cả giáo viên)
  • Then Tệp được lưu ở chế độ riêng tư với URL có chữ ký; ghi chú hiển thị người viết và thời gian; ghi chú được đánh dấu "Cần lưu ý" xuất hiện dưới dạng chip trên danh sách lớp cho giáo viên (ví dụ dị ứng).
STU-10Ẩn danh hoá theo yêu cầu
Chủ trung tâm xử lý một yêu cầu xoá dữ liệu.
  • Given Có quyền students.anonymise và học viên ở trạng thái Đã nghỉ hoặc Không nhập học
  • When Xác nhận kèm mã tham chiếu của yêu cầu
  • Then Các trường thông tin cá nhân được thay thế (PRD 12), tài liệu bị xoá, bản ghi tài chính được giữ lại với tên đã ẩn danh, và hành động được ghi vào nhật ký.

5Màn hình

Danh sách học viên /students

Phần đầu trang: h1 Học viên, các nút Nhập từ Excel (PRD 11), + Thêm học viên. Các tab kèm số lượng: Tất cả · Đang học · Chờ xếp lớp · Học thử · Bảo lưu · Sắp hết buổi · Nợ học phí · Đã nghỉ. Bộ lọc: tìm kiếm, chi nhánh, lớp, trình độ, đồng ý nhận thông báo của phụ huynh, khoảng ngày bắt đầu. Thao tác theo lô: Gửi thông báo (PRD 07), Xuất Excel, Chuyển lớp.

CộtNguồnGhi chú
Mã HVstudent.codeHV-000123 theo từng tenant
Họ têndisplay_name + avatarliên kết; tuổi hiển thị bằng chữ nhỏ "8 tuổi"
Lớpactive enrollmentsdạng chip; viền nét đứt hiển thị "Chưa xếp lớp" khi chưa có
Trạng tháistatuschip theo bảng chu trình trạng thái
Phụ huynhprimary guardian name + phonesố điện thoại nhấn để sao chép
Buổi còn lạisession balance (PRD 05)màu đỏ khi ≤ 3; dấu "-" cho các gói theo tháng
Công nợunpaid_amount (StudentStats)màu đỏ khi > 0 và quá hạn
Điểm danh 30 ngàyattendance ratephần trăm; số lượt muộn/vắng hiển thị khi di chuột vào
Chi nhánhschool namechỉ hiển thị khi chọn "Tất cả chi nhánh"
Ngày nhập họcfirst enrollment start
Thao tácXếp lớp · Thu học phí · Gửi tin

Trạng thái trống: "Chưa có học viên. Chuyển đổi từ khách hàng hoặc thêm trực tiếp." Chiều cao dòng 44 px; 50 dòng mỗi trang; hiển thị cột được lưu qua view-configs (view key student_list).

Hồ sơ học viên /students/:id

Phần đầu trang: ảnh đại diện, họ tên, mã học viên, tuổi, chip trạng thái, chi nhánh, chip lớp học, chip "Cần lưu ý" nếu có ghi chú được đánh dấu. Các nút: Sửa · Xếp lớp · Thu học phí · Gửi tin · menu kebab (Bảo lưu, Nghỉ học, Chuyển chi nhánh, Ẩn danh hoá). Cột bên phải: Phụ huynh chính (họ tên, quan hệ, số điện thoại, trạng thái Zalo), Số dư buổi, Công nợ, Tài khoản FLYER (tên đăng nhập, lần hoạt động gần nhất).

Các tab: Tổng quan · Phụ huynh · Lớp & lịch sử · Điểm danh · Học phí · Học tập · Tài liệu · Ghi chú · Nhật ký.

  • Tổng quan: thông tin cá nhân (ngày sinh, giới tính, trường học, địa chỉ, trình độ, dị ứng), tổng hợp đồng ý nhận thông báo, dòng thời gian các sự kiện chính (tạo, chuyển đổi, ghi danh, bảo lưu, chuyển chi nhánh).
  • Phụ huynh: thẻ cho từng phụ huynh kèm cờ đánh dấu; + Thêm phụ huynh; "Gửi lại thông tin đăng nhập".
  • Lớp & lịch sử: bảng các lượt ghi danh (lớp, trình độ, giáo viên, ngày bắt đầu, ngày kết thúc, trạng thái, số buổi đã học / tổng số buổi) và các thao tác Chuyển lớp, Kết thúc.
  • Điểm danh: xem theo tháng với chip cho từng buổi học, tỷ lệ chuyên cần, danh sách các buổi vắng kèm lý do xin phép (PRD 04).
  • Học phí: số dư gói buổi, danh sách học phí kèm trạng thái, phiếu thu, "Tạo hoá đơn" (PRD 05).
  • Học tập: dữ liệu từ FLYER (STU-08).
  • Tài liệu, Ghi chú, Nhật ký (nhật ký thao tác).
Biểu mẫu học viên (drawer) /students/new · /students/:id/edit
TrườngKiểu dữ liệuRàng buộc
Họ và têntextbắt buộc, 2–80 ký tự
Ngày sinhdatebắt buộc; tuổi 3–80
Giới tínhNam/Nữ/Kháckhông bắt buộc
Chi nhánhselectbắt buộc
Trường đang học, Lớp (phổ thông)textkhông bắt buộc
Trình độ hiện tạiselect CEFR/Cambridge level list (PRD 03 catalog)không bắt buộc
Địa chỉtextkhông bắt buộc
Lưu ý sức khoẻtextkhông bắt buộc; là ghi chú được đánh dấu
Phụ huynh 1name, relationship, phone, email, consentsố điện thoại bắt buộc; hệ thống gợi ý phụ huynh đã có theo số điện thoại
Tài khoản FLYERradio: tạo mới / liên kết có sẵn (tìm theo tên đăng nhập hoặc số điện thoại)bắt buộc
Ảnhuploadkhông bắt buộc, tối đa 5 MB

6Quy tắc nghiệp vụ

  1. Một bản ghi học viên cho mỗi (school, learner_profile). Cùng một người học tại hai chi nhánh là hai bản ghi riêng, dùng chung phụ huynh và dữ liệu học tập.
  2. Mã học viên được đánh số tuần tự trong toàn tenant và không bao giờ dùng lại.
  3. Học viên phải có ít nhất một phụ huynh có số điện thoại, trừ khi từ 18 tuổi trở lên (học viên trưởng thành, tự làm liên hệ).
  4. Trạng thái được suy ra từ ghi danh, trừ các trạng thái chuyển thủ công Bảo lưu, Đã nghỉ, Không nhập học; các bước chuyển thủ công cần có lý do.
  5. Bảo lưu tối đa 90 ngày theo mặc định (cài đặt theo tenant); bảo lưu dài hơn cần quản lý chi nhánh phê duyệt.
  6. Nghỉ học không xoá bất kỳ dữ liệu nào; ghi danh lại sẽ dùng lại bản ghi cũ.
  7. Đồng ý nhận thông báo của phụ huynh được quản lý theo phiên bản; một kênh gửi tin chỉ được dùng khi đã có đồng ý cho kênh đó (PRD 07).
  8. Ghi chú được đánh dấu "Cần lưu ý" hiển thị cho giáo viên của các lớp học viên đang theo học; các ghi chú khác chỉ nhân sự xem được.

7Mô hình dữ liệu

Thực thểTrườngGhi chú
student (mới; bao quanh hồ sơ người học)id uuid; tenant_id (center_id); school_id int64; learner_profile_id int64; code; display_name; birthday; gender; school_name; grade; level_code; address; health_note; status enum (lifecycle); status_reason; status_changed_at; first_enrolled_at; avatar_file_id; created_by; created_at; updated_atunique (school_id, learner_profile_id)
guardian (mới; thay thế cho StudentParent đơn lẻ trong vận hành)id uuid; tenant_id; full_name; phone (E.164); email; zalo_user_id null; address; parent_user_id int64 null (FLYER parent account); created_atunique (tenant_id, phone)
student_guardianstudent_id; guardian_id; relationship enum(father, mother, grandparent, sibling, self, other); is_primary_contact; is_payer; created_atPK (student_id, guardian_id)
consentid; guardian_id; student_id null; type enum(service, zalo, email, marketing, photo); version; granted_at; revoked_at; channel enum(web, portal, paper); actor_id
student_status_historyid; student_id; from_status; to_status; reason; effective_date; expected_return_date null; actor_id; created_at
student_documentid; student_id; type enum(birth_cert, id, agreement, photo_consent, medical, other); file_id; name; uploaded_by; created_at
student_noteid; student_id; body; is_flagged; visibility enum(staff, teachers); author_id; created_at
enrollment (thuộc PRD 03)xem PRD 03
student_balance (bảng tổng hợp được duy trì)student_id; sessions_purchased; sessions_used; sessions_remaining; sessions_expire_on; unpaid_amount; overdue_amount; attendance_rate_30d; updated_atđược tính lại khi có ghi nhận về gói buổi, điểm danh, học phí

8Hợp đồng API

MethodPathRequest / responseStatus
GET/v3/school/studentsq, school_id, status[], class_ids[], level, has_debt, low_balance, consent_zalo, enrolled_from, enrolled_to, sort, page, limit → StudentRow[] (student + primary guardian + balance)new (bao bọc existing school-finance/students)
POST/v3/school/students{school_id, display_name, birthday, gender, school_name, grade, level_code, address, health_note, learner: {learner_profile_id} | {create: true}, guardians: [{guardian_id | {full_name, phone, email}, relationship, is_primary_contact, is_payer, consents: [type]}]} → Studentnew
GET/v3/school/students/{id}Student + guardians + enrollments + balance + flagsnew
PATCH/v3/school/students/{id}partial profilenew
POST/v3/school/students/{id}/status{to: paused|withdrawn|dropped|active, reason, effective_date, expected_return_date?, class_id?} → Student; 409 INVALID_TRANSITIONnew
POST/v3/school/students/{id}/transfer{to_school_id, effective_date, class_id?, note} → {new_student_id}new
GET/POST/v3/school/students/{id}/guardiansthêm hoặc liên kết phụ huynh; PATCH /v3/school/guardians/{id}; DELETE để xoá liên kếtnew
GET/POST/v3/school/guardians?phone=tra cứu theo số điện thoại để dùng lạinew
POST/v3/school/consents{guardian_id, student_id?, type, version, channel} ; DELETE để thu hồinew
GET/POST/DELETE/v3/school/students/{id}/documents{type, file_id, name}new
GET/POST/PATCH/DELETE/v3/school/students/{id}/notes{body, is_flagged, visibility}new
GET/v3/school/students/{id}/balancestudent_balancenew
POST/v3/school/students/{id}/anonymise{request_ref}new
GET/v3/teacher/school-finance/students/{id}/stats | /tuitions | /coursestab học phíexisting
GET/v3/parent/learner/{id}/report, /weekly-reporttab học tập (nhân sự gọi API với quyền xác thực của school)existing (cần được cấp quyền truy cập cho nhân sự)
GET/v3/teacher/students/quick-searchbộ chọnexisting
POST/v3/school/students/{id}/credentials/resendgửi thông tin đăng nhập FLYER đến kênh liên hệ của phụ huynhnew

9Phân quyền

Mã quyềnownerbranch_manageracademic_adminadmissionsaccountantteacher
students.viewTất cảChi nhánhChi nhánhChỉ xem (họ tên, lớp, phụ huynh)Xem trong chi nhánhLớp của mình
students.createCóCóCóQua chuyển đổiKhôngKhông
students.editCóCóCóKhôngKhôngChỉ ghi chú
students.status (bảo lưu, nghỉ học, không nhập học)CóCóCóKhôngKhôngKhông
students.transferCóCóKhôngKhôngKhôngKhông
students.guardiansCóCóCóKhôngCờ người thanh toánKhông
students.documentsCóCóCóKhôngKhôngKhông
students.learning.viewCóCóCóKhôngKhôngLớp của mình
students.anonymiseCóKhôngKhôngKhôngKhôngKhông
students.exportCóCóCóKhôngCóKhông

10Sự kiện phân tích

Sự kiệnThuộc tính
student_createdvia (convert|form|import), age_bucket, with_class
guardian_addedrelationship, consents[]
student_status_changedfrom, to, reason_code, manual (bool)
student_transferredfrom_school, to_school
student_profile_viewedtab, role
student_note_flagged
student_anonymised

11Trường hợp biên

12Câu hỏi còn mở

Trường Số (truongso.net) · Nội bộ FLYER