Metadata của khoá học
Metadata này viết cho agent, không cho người học. Người mở trang khoá học gần như không cần gì trong bảng course_metadata; nhưng một AI agent sắp sinh nội dung cho khoá đó thì cần gần như toàn bộ.
Nguyên tắc chọn trường: mỗi trường phải ứng với một thứ mà máy sinh nội dung đã phải đoán, không phải một thứ nghe hay. Vài trường ra đời sau khi máy đoán sai.
Ba trường định vị
| Trường | Vì sao có |
|---|---|
domain_vi · domain_en | Máy sinh từng mượn khái niệm của lĩnh vực khác. Prompt cũ phải dặn "khái niệm phải thuộc đúng lĩnh vực chuyên môn của khoá này" mà không nói lĩnh vực đó là gì. |
audience_vi | Ai học, viết bằng tình huống họ đang ở chứ không phải chức danh suông, vì ví dụ phải đặt vào đúng tình huống ấy. |
audience_roles | Dạng danh sách để lọc và so khớp bằng máy. |
Bốn trường hàng rào
Nhóm quan trọng nhất. Chúng giữ cho nội dung không trôi sang khoá bên cạnh.
| Trường | Chặn gì |
|---|---|
owned_terms | Thuật ngữ khoá này sở hữu |
foreign_terms | Thuật ngữ của mọi khoá khác, trừ phần giao |
anti_scope | 3–5 điều khoá này không dạy |
register_vi | Giọng văn, tả bằng cách viết chứ không bằng tính từ |
foreign_terms là trường đáng giá nhất. Nó được tính tự động từ khái niệm của mọi khoá còn lại, khoá Customer Understanding có 366 thuật ngữ cấm mượn. Trước đó danh sách cấm phải truyền tay ở mỗi lượt gọi.
Trừ đi phần giao
"Claim" xuất hiện ở cả Argument lẫn Essay. Cấm cứng thì cả hai khoá đều không viết nổi, nên chỉ cấm những thuật ngữ mà khoá này không sở hữu.
anti_scope chống trôi. Không có nó, nội dung khoá Offer sẽ dần lấn sang Sales sau vài chục lượt sinh, mà không lượt nào sai rõ ràng.
Hai trường nguyên liệu
| Trường | Dùng vào đâu |
|---|---|
scenes | Nơi chốn đặt ví dụ. Phải là chỗ có người và có việc đang diễn ra, "quầy giao dịch ngân hàng", "buổi họp duyệt ngân sách", không phải tên hoạt động như "phát triển sản phẩm". |
evidence_kinds | Loại sản phẩm người học nộp được, dùng để ra đề Performance Task. Mỗi cái phải đếm được. |
Hai trường nối và một dấu vết
prerequisites · leads_to cho biết khoá đứng đâu trong hành trình. generated_at để biết metadata đã cũ chưa.
Một chỗ phải chốt bằng mã
Lượt sinh đầu tiên, mô hình liệt kê owned_terms là tên unit (Evidence Ladder, Customer Signals) thay vì tên khái niệm (Fact, Assumption, Hypothesis), mà chính tên khái niệm mới là thứ các khoá khác phải tránh.
Nay danh sách sở hữu luôn gồm mọi khái niệm thật đọc thẳng từ D1; phần mô hình đề xuất chỉ là bổ sung. Đây là mẫu chung của cả hệ: thứ gì đã có trong dữ liệu thì đọc từ dữ liệu, đừng hỏi mô hình.
Hồ sơ khoá cho agent
GET /api/course-intelligence/courses/:slug/briefMột lần gọi trả về metadata + mức hoàn thiện + khung Unit/Lesson, đủ để một agent khác bắt tay làm việc với khoá này mà không phải dò lại.
Endpoint này cố ý trả nhiều hơn một màn hình cần. Nó không phục vụ giao diện.
Sinh lại
POST /api/course-intelligence/authoring/courses/:courseId/metadataChạy lại là thay trọn gói. foreign_terms được tính lại theo hiện trạng các khoá khác, nên thêm một khoá mới thì nên sinh lại metadata của mọi khoá, không thì hàng rào của các khoá cũ không biết đến thuật ngữ của khoá mới.