Trang event (workshop): hai trạng thái, Hero Banner, mentor
Hai repo (16.10.2026)
Từ 16.10.2026 scripts/hero_banner_svg.py sang repo conan-web cùng www (nó ghi vào www.conan.school/public/). HERO_BANNER_COUNT ở api vẫn ở đây và phải khớp số ảnh bên đó. Xem Hai repo.
Trang www.conan.school/workshops/:slug (07.10.2026).
Hai trạng thái
Event đã kết thúc khi qua 120 phút kể từ giờ bắt đầu, tính theo giờ Việt Nam (+07:00). Trạng thái tính ở loader chứ không ở trình duyệt: server và trình duyệt thấy cùng một thứ, nên không lệch khi hydrate. Trước đây mã dựng new Date("2026-10-07T10:00:00") không múi giờ, chạy trên server UTC là lệch bảy giờ.
| Chưa kết thúc | Đã kết thúc | |
|---|---|---|
| Nhãn trên banner | Sắp diễn ra | Đã kết thúc |
| Ngay dưới tiêu đề | (không có) | Khối Recording + Tài liệu, to, đứng đầu |
| Cột phải | Zoom, ghi chú "recording sẽ đăng sau", Zalo | Ngày đã diễn ra, Zalo; không còn Zoom |
Người quay lại trang sau buổi học tìm recording và tài liệu, nên hai thứ đó lên đầu. Chưa có thì khối vẫn hiện, ghi "đang được xử lý", chứ không biến mất.
Hero Banner: thư viện nội bộ
- 24 ảnh SVG vẽ bằng thuật toán,
scripts/hero_banner_svg.py, ghi rawww.conan.school/public/images/hero-banners/hb-01.svg…hb-24.svg. Màu đọc thẳng từtheme.css, không ảnh nào có chữ, nửa trái để thoáng. - Cột
workshops.hero_banner_key. Migration20261007agán sẵn cho mọi event cũ; event tạo mới được API gán mặc định (băm theo id); khoá trống hay lạ thì API vẫn trả ảnh mặc định theo id. - Admin đổi ảnh ở trang sửa workshop, khối Hero Banner.
- Ảnh Cover admin tự tải lên luôn thắng ảnh thư viện.
- Đổi số ảnh: sửa
COUNTtrong script vàHERO_BANNER_COUNTởapi.conan.school/src/shared/heroBanners.ts. Lệch nhau là API trỏ tới ảnh không tồn tại.
python3 scripts/hero_banner_svg.py --check
python3 scripts/hero_banner_svg.pyMentor
Bảng workshop_mentors(workshop_id, mentor_id, sort_order), mentor_id trỏ legacy_mentors. API công khai trả mentors (chỉ mentor published). Admin tick chọn ở khối Mentor của buổi, thứ tự tick là thứ tự hiển thị (PUT /api/admin/learning/workshops/:id/mentors). Khu vực mentor luôn hiện, chưa gán ai thì ghi "đang được cập nhật".