Skip to content

Chương trình đào tạo (Programs) ​

Program là tập hợp các khoá học (Courses) được sắp xếp theo thứ tự — định nghĩa "cái mà một cohort phải hoàn thành". Một Program có thể có nhiều Batch (đợt mở).

Một dòng tóm tắt

Program = "khung curriculum" (Lập trình Web 3 tháng) → Batch = "đợt mở thực tế" (Cohort tháng 4/2026, cohort tháng 7/2026, cohort doanh nghiệp X).

Khi nào tạo Program? ​

  • Tổ chức bán gói đào tạo theo curriculum cố định (Bootcamp Lập trình Web, Khoá Marketing 6 tháng).
  • Có đợt cohort lặp lại — tổ chức 4 đợt/năm cùng curriculum.
  • Cần tự động enroll học viên vào nhiều khoá khi mua một gói.

Nếu chỉ bán khoá lẻ → không cần Program. Học viên enroll trực tiếp khoá học.

Vào quản lý Programs ​

Sidebar trái → Đào tạo → Chương trình (URL: /admin/programs).

Bảng list hiển thị các Program với:

  • Tên chương trình + mã (code)
  • Mô tả ngắn
  • Số khoá học trong chương trình
  • Số lớp đang dùng chương trình
  • Ngày tạo

Tạo Program mới ​

  1. Click Tạo mới.
  2. Điền thông tin:
    • Tên chương trình (vd: "Lập trình Web Full-stack 12 tuần")
    • Mã chương trình (code) — duy nhất, dùng để reference (vd: WEB-FS-2026)
    • Mô tả — rich text, mô tả chi tiết curriculum, đối tượng, output
  3. Click Lưu → chuyển sang trang chi tiết.

Gắn khoá học vào Program ​

Sau khi tạo Program, vào tab Khoá học:

  1. Click Gắn khoá học.
  2. Chọn khoá học từ danh sách (dropdown — chỉ hiện khoá đã tồn tại; nếu thiếu, đề nghị course_manager tạo trước).
  3. Đặt Thứ tự (số nguyên — nhỏ trước).
  4. Click Lưu.

Lặp lại cho mọi khoá cần gắn.

Sắp xếp lại thứ tự khoá ​

Trong tab Khoá học, kéo thả các dòng để đổi thứ tự (hoặc edit số order cụ thể). Thứ tự ảnh hưởng:

  • Hiển thị trên trang Program công khai.
  • Cột thứ tự khi xem ma trận tiến độ học viên.
  • Curriculum sequencing (nếu có).

Gỡ khoá học ​

Cẩn thận khi gỡ khoá đang được dùng

Nếu gỡ khoá học khi Program đã có lớp đang chạy:

"CẢNH BÁO: Chương trình này đang được sử dụng bởi :batches lớp học. Việc gỡ bỏ sẽ huỷ ghi danh khoá học này khỏi tất cả học viên thuộc các lớp (các ghi danh thủ công kênh course vẫn được giữ nguyên). Đồng bộ chạy nền."

→ Học viên trong các lớp đang chạy mất quyền truy cập khoá vừa gỡ. Tiến độ học không bị xoá nhưng UI khoá đó biến mất khỏi danh sách "Khoá học của tôi" (nếu nguồn enrollment chỉ là Program).

Cách làm an toàn hơn:

  1. Đợi đến khi cohort hiện tại kết thúc → các lớp move sang Completed.
  2. Mới gỡ khoá khỏi Program.
  3. Cohort tiếp theo (Batch mới) sẽ không gặp khoá đó.

Thêm khoá học vào Program đang chạy ​

Tương tự, khi gắn thêm khoá vào Program đang có lớp:

"Chương trình này đang được sử dụng bởi :batches lớp học. Toàn bộ học viên trong các lớp đó sẽ được tự động ghi danh vào khoá học này (đồng bộ chạy nền)."

→ Học viên hiện tại được auto enroll khoá mới. Hữu ích khi bạn bổ sung khoá học vào giữa kỳ (vd: thêm khoá ôn thi cuối kỳ vào tuần cuối).

Template buổi học (Program Session Template) ​

Program có thể có buổi học mẫu — định nghĩa khung lịch ngày buổi học cho mọi Batch dùng Program.

Khi nào dùng? ​

  • Curriculum lặp lại với lịch buổi cố định tương đối (vd: Buổi 1 — ngày 0, Buổi 2 — ngày 3, Buổi 3 — ngày 7,…).
  • Bạn không muốn nhập lại 30 buổi học mỗi lần mở cohort mới.

Tạo template ​

Trong trang Program → tab Buổi học mẫu:

  1. Click Thêm template.
  2. Điền:
    • Tiêu đề (vd: "Buổi 1 — Giới thiệu Python")
    • Mô tả (rich text, agenda)
    • Số ngày lệch (day_offset) — vd: 0 = ngày khai giảng, 7 = một tuần sau
    • Giờ bắt đầu + Thời lượng (phút)
    • Hình thức mặc định (online / offline / hybrid)
    • Địa điểm / Link tham gia mẫu
    • Thứ tự trong list
  3. Lưu.

Lặp lại cho mọi buổi trong curriculum.

Áp dụng template khi tạo Batch ​

Khi tạo Batch mới với Program có template:

  1. Tick "Tạo buổi học từ template của chương trình" trong form Batch.
  2. Hệ thống tự sinh các BatchSession dựa vào start_date của Batch + day_offset của template.

Xem chi tiết: Lớp đào tạo.

Khi nào không dùng template?

  • Lớp có lịch hoàn toàn khác với curriculum chuẩn → tạo session thủ công.
  • Lớp cấp tốc (1 tuần thay vì 12 tuần) → tạo hàng loạt với day-of-week pattern.

Template phù hợp 80% case "cohort chuẩn"; 20% còn lại linh hoạt hơn.

Vòng đời Program ​

Program không có status rõ ràng — nó tồn tại miễn là chưa bị xoá. Vòng đời thực tế:

  1. Tạo với một số khoá ban đầu.
  2. Thêm/sửa khi curriculum được duyệt.
  3. Có Batch sử dụng — không nên thay đổi cấu trúc lớn.
  4. Cohort cuối cùng kết thúc — cân nhắc:
    • Giữ Program để tham chiếu lịch sử.
    • Xoá mềm (soft delete) nếu không còn dùng — deleted_at được set, Program biến mất khỏi list nhưng dữ liệu giữ.

Xoá Program

Soft delete an toàn — không ảnh hưởng đến lớp đã chạy + tiến độ học viên. Hard delete nguy hiểm: phá vỡ FK references. Mặc định Filament chỉ cho soft delete.

Báo cáo Program ​

Tab Lớp học trong trang Program hiển thị tất cả Batches dùng Program đó. Click vào Batch → mở chi tiết.

Để xem tổng số học viên đã hoàn thành Program (qua mọi cohort), hiện chưa có report aggregate built-in. Cần truy vấn DB hoặc xuất ra Excel.

Quan hệ với các tính năng khác ​

Với Subscription / Plan ​

Một số tổ chức bán Plan (gói đăng ký) chứa quyền vào một số khoá. Plan thường gắn với Group, không gắn trực tiếp với Program. Quan hệ:

  • Plan → Group → Courses (đa ↔ đa).
  • Program → Courses (theo thứ tự).

Một khoá có thể vừa thuộc Program (cho cohort) vừa thuộc Group (cho subscription). Học viên enroll khoá đó qua bất kỳ kênh nào đều có quyền.

Với Course Roadmap Template ​

Course Manager có thể tạo lộ trình mẫu (RoadmapTemplate) đi sâu hơn Program — chỉ rõ học bài nào trong khoá nào theo nhịp. Training Manager đặt template này làm mặc định cho Batch — học viên thêm vào lớp tự có lộ trình cá nhân clone từ template.

Xem Lớp đào tạo → Lộ trình mặc định.

Với Certificate ​

Hiện hệ thống cấp chứng chỉ theo Course, không cấp theo Program. Học viên hoàn thành tất cả khoá trong Program → có nhiều chứng chỉ. Để có "chứng chỉ Program tổng hợp", đề xuất Tenant Admin tạo Course tổng hợp + bài thi cuối Program → chứng chỉ riêng.

Câu hỏi thường gặp ​

Có thể chia sẻ Program giữa các Tenant không? Không. Program gắn với tenant — mỗi tenant tự quản lý Programs riêng.

Tôi muốn copy Program sang cohort thử nghiệm? Filament hiện chưa có nút "duplicate Program". Cách tạm:

  1. Tạo Program mới với mã khác.
  2. Gắn cùng các khoá học theo thứ tự.
  3. Copy template buổi học (thủ công, hoặc qua DB nếu có quyền).

Học viên có thấy Program hay chỉ thấy khoá học? Hiện học viên thấy khoá học cá nhân (qua "Khoá học của tôi"). Nếu tổ chức bán Program ra ngoài, cần có trang Marketing (do Marketer tạo qua CMS) giới thiệu Program như một sản phẩm.

Sửa code Program ảnh hưởng gì?code là identifier — đổi không ảnh hưởng FK trong DB (vẫn dùng id). Tuy nhiên báo cáo / API của bạn nếu reference theo code sẽ phải update.

Số khoá học tối đa trong Program? Không có giới hạn cứng. Thực tế nên ≤ 30–50 khoá để UI dễ thao tác.

LMS Documentation