Hình ảnh & nhận diện: một nhà cho mọi ảnh
Mọi ảnh minh hoạ của Conan, bìa sách, ảnh khoá học, bộ ảnh cộng đồng, là một nhà: minh hoạ vector phẳng, vẽ tay bằng SVG trong repo, bốn màu token, không chữ. Chuẩn gốc là kệ sách Drink (26.09.2026), được người soạn chọn làm mẫu cho mọi thứ còn lại.
Bảng tài sản
| Tài sản | Khổ | Chỗ hiện | Tệp | Prompt + metadata | Trang chuẩn |
|---|---|---|---|---|---|
| Bìa sách | 800×1200 (2:3) | kệ /c/:slug/books, /books | com…/public/images/book-covers/<slug>.svg | content/books/packs/<community>.json | Bìa sách |
| Cover khoá học | 1600×900 (16:9) | hero trang khoá (www), thẻ 16:9 | com…/public/images/course-art/<slug>-cover.svg | content/courses/art/<community>.json | Ảnh khoá học |
| Thumbnail khoá | 1200×900 (4:3) | thẻ khoá ở trang cộng đồng | …/<slug>-thumb.svg | như trên | như trên |
| Avatar khoá | 512×512 (1:1) | thẻ vuông "khoá của tôi", danh sách | …/<slug>-avatar.svg | như trên | như trên |
| Avatar cộng đồng | 512×512 | thanh trên khi ở trong cộng đồng | com…/public/images/community-art/<slug>-avatar.svg | content/communities/art/<slug>.json | Ảnh cộng đồng |
| Hero cộng đồng | 2400×800 (3:1) | đầu Trang chính /c/:slug | …/<slug>-hero.svg | như trên | như trên |
| Footer cộng đồng | 2400×400 (6:1) | cuối mọi tab /c/:slug | …/<slug>-footer.svg | như trên | như trên |
Năm luật chung (mọi tài sản)
- Vector phẳng, vẽ tay trong repo, không máy sinh ảnh, không API model. Tệp nằm trong git, CI deploy, không bí mật nào.
- Bốn màu token, bake thẳng: kem
#fff7ed, cam gạch#d94f2b, đen#111111(đậm nhạt bằng opacity), giấy#f2f2f2(+#fffffftrong gradient). Tệp trong/publicnằm ngoài cây CSS nên không đọc được biến token, đổi token là phải vẽ lại. Phân biệt cộng đồng bằng vật, không bằng màu. - Không chữ, không số đọc được, không logo, không người lộ mặt. Chữ trên giấy/bảng = vạch mờ.
- Prompt đi cùng ảnh: mỗi ảnh có prompt ≥ 160 ký tự đủ để vẽ lại sau sáu tháng, cộng metadata tạo prompt (nguồn ý: outcome, unit, lý do chọn vật). Không bao giờ để ảnh và lời dặn tạo ra nó rời nhau.
- Ảnh người soạn tải lên luôn thắng:
image_url(R2) > minh hoạ vector > ảnh hình học thuật toán > chữ đầu.
Cửa kiểm tự động: scripts/course_art_to_sql.py check <community> và scripts/community_art_check.py <slug>, chặn sai khổ, màu ngoài token, chữ, ảnh nhúng, script, id trùng, prompt ngắn, vật chính trùng trong một cộng đồng.
Quy trình một cộng đồng
- Phân cảnh trước, vẽ sau. Người điều phối đọc metadata khoá (
course_art_to_sql.py inputs <community>), chốt cảnh + vật chính cho từng khoá vào JSON, tránh trùng ý với bìa sách của cùng kệ (trườngavoid). Vẽ song song mà không phân cảnh trước thì ra mười ảnh cùng một cái ly. - Mỗi khoá một người vẽ (agent), ba khổ, xem bằng mắt qua Chrome headless.
- Kiểm → trang xem trước → người soạn duyệt → migration → PR.
Sổ các yêu cầu gốc và quyết định: Sổ yêu cầu.