Cloud theme · Báo cáo rà soát giao diện
Đối chiếu toàn bộ giao diện Trường Số CRM với hệ thống thiết kế Cloud tại roadmap.flyer.vn/cloudtheme. Tài liệu ghi lại các sai lệch đã phát hiện, cách xử lý từng nhóm và giá trị đo được sau khi sửa.
Xuất xứ / Prompt / Giới hạn
build cho anh một version cloudtheme UI/UX 100% giống system design này https://roadmap.flyer.vn/cloudtheme, làm theme default của truongso.net tại git này https://gitea.flyer.vn/flyer/center-crm-frontend và đẩy lên https://dev.crm.flyer.us/vi/dashboard luôn cho anh xem thử nha
this theme https://dev.crm.flyer.us/vi/dashboard/cloudtheme need to be consistent and 100% follow documents and system design Cloudtheme here https://roadmap.flyer.vn/cloudtheme (pop-up, notes, annotation, anything....) For example, this one is Cloud consistent: https://enterprise.flyer.vn/app/
anh muốn theme màu cần quality chất lượng của Apple, check lại màn này thử xem sao nhé
Tài liệu được soạn bởi một trợ lý AI trong cùng phiên làm việc, dựa trên: đặc tả Cloud tại roadmap.flyer.vn/cloudtheme (gồm bốn khung mẫu trang-chu, hoc-sinh, lop-hoc, giao-bai), ứng dụng tham chiếu enterprise.flyer.vn/app cho những thành phần đặc tả chưa nêu, và việc đọc trực tiếp mã nguồn center-crm-frontend.
Đây là bản ghi nhận hiện trạng và đề xuất, chưa phải quyết định cuối cùng. Ba mục ở phần 7 vẫn còn để ngỏ.
Nguồn
- Toàn bộ số đo trong tài liệu được lấy bằng
getComputedStyletrên bản dựng đang chạy, không suy ra từ mã nguồn. Ảnh minh hoạ dùng dữ liệu mẫu; các con số trong ảnh không phải số liệu thật của bất kỳ trung tâm nào. - Phương pháp kiểm chứng ở mục 7: Kiểm chứng thực hiện bằng Playwright trên bản dựng đang chạy, với lớp giả lập dữ liệu thay cho môi trường staging. Mỗi màn hình được mở, thao tác để bật lớp phủ tương ứng, chụp ảnh và đọc giá trị tính toán của các thuộc tính cần đối chiếu.
Giới hạn
- Trạng thái triển khai (theo lần cập nhật cuối của tài liệu):
Đợt Nội dung Nhánh Trạng thái PR #65 Cloud trở thành theme mặc định; mỗi theme có địa chỉ riêng dạng /vi/dashboard/<theme>; bổ sung theme classic dựng theo bản mẫu truongso.net/crmfeat/cloud-theme-uivàodevđã merge 12/09/2026 PR #66 Chuyển hướng dải màu; chín thành phần lớp phủ và biểu mẫu; ba chỉnh sửa trên dashboard feat/cloud-theme-uivàodevchờ merge Quyền merge vào nhánh
devgiới hạn ở một tài khoản duy nhất theo cấu hình bảo vệ nhánh của Gitea. Sau khi PR #66 được merge, bản dựng tự động đưa thay đổi lên dev.crm.flyer.us trong khoảng hai phút, và bộ kiểm chứng 24 màn hình sẽ được chạy lại trực tiếp trên môi trường dev.
1Phạm vi và nguồn chuẩn
Cloud là hệ thống thiết kế do FLYER công bố tại roadmap.flyer.vn/cloudtheme, đặt làm giao diện mặc định của Trường Số CRM. Đặc tả quy định năm sắc độ tím, bộ màu trung tính, bốn màu trạng thái, mật độ hiển thị và hình dạng của các thành phần cơ bản. Nguyên tắc bắt buộc được nêu ngay trong đặc tả: chủ đề chỉ thay đổi cách trình bày, giữ nguyên biểu tượng, thứ tự điều hướng, tên gọi chức năng và luồng thao tác.
Đặc tả mô tả đầy đủ thanh bên, thẻ, bảng, nút, nhãn trạng thái, tab và hộp thoại. Một số thành phần không được nêu: menu thả xuống, thông báo nổi, chú giải, ngăn kéo, bảng lệnh tìm nhanh, công tắc, thanh tiến trình, khung ghi chú. Với những thành phần này, tài liệu lấy ứng dụng enterprise.flyer.vn/app làm tham chiếu, vì đây là sản phẩm đang vận hành trên cùng hệ thống thiết kế.
Phạm vi rà soát
- 24 màn hình và lớp phủ: dashboard, danh sách và chi tiết khách hàng, nhập dữ liệu, cuộc gọi, kiểm tra xếp lớp, năm trang cài đặt, tài khoản, đăng nhập, đăng ký, cùng các lớp phủ menu, hộp thoại, ngăn kéo, bảng lệnh, thông báo nổi.
- Cả hai ngôn ngữ vi và en dùng chung một bộ quy tắc trình bày; rà soát thực hiện trên bản tiếng Việt.
- Ngoài phạm vi: các theme còn lại (classic, navy, emerald, sunset, rose, amber, sáng, tối) giữ nguyên, không chịu ảnh hưởng.
2Sai lệch đã phát hiện
Đợt đầu tiên áp dụng Cloud ở tầng token và tầng các thành phần dùng chung. Cách làm này phủ được phần khung của sản phẩm, nhưng phần lớn giao diện nghiệp vụ được viết trực tiếp bằng lớp tiện ích của Tailwind nên không nhận được token của chủ đề. Thống kê trên mã nguồn cho thấy 2.010 lượt dùng lớp màu cố định, trong đó 1.423 lượt thuộc dải slate — một dải xám ngả xanh không có trong hệ thống Cloud.
| Nhóm sai lệch | Biểu hiện | Số lượng | Ảnh hưởng |
|---|---|---|---|
| Dải màu cố định | slate, emerald, blue, red, amber, indigo viết thẳng trong mã giao diện | 2.010 lượt | Chữ phụ, viền và nền lệch khỏi bộ trung tính Cloud trên hầu hết màn hình nghiệp vụ |
| Hình dạng nhãn | Nhãn trạng thái bo tròn hoàn toàn thay vì bo góc nhỏ | toàn bộ nhãn | Trái quy ước “nhãn bo góc nhỏ” của đặc tả |
| Đổ bóng | Thẻ và bảng dùng lớp tiện ích đổ bóng | 71 lượt | Đặc tả nêu rõ thẻ không đổ bóng |
| Bán kính bo góc | 14 px đến 18 px trên thẻ và ô | 75 lượt | Hệ thống chỉ dùng 8 px, 10 px và 14 px theo từng vai trò |
| Chuyển sắc | Dải tiêu đề tài khoản, huy hiệu người phụ trách, nút đăng nhập | 12 lượt | Hệ thống không có chuyển sắc |
| Trường nhập liệu | Nền xám, không viền, cao 44 px | 16 lượt | Hệ thống quy định nền trắng, viền mảnh, chiều cao thống nhất |
| Thành phần chưa áp dụng | Thông báo nổi, chú giải, ngăn kéo, bảng lệnh, công tắc, thanh tiến trình, khung ghi chú | 9 thành phần | Giữ nguyên giao diện mặc định của thư viện |
| Biểu đồ | Màu cố định cho đường thắng và thua; ba màu huy chương vàng, bạc, đồng | 3 biểu đồ | Nằm ngoài bảng màu của hệ thống |
3Cách xử lý
Sửa trực tiếp 2.010 lượt dùng trên khoảng sáu mươi tệp là phương án tốn công và dễ bỏ sót. Tailwind phiên bản 4 phân giải mọi lớp màu qua biến --color-<dải>-<mức>, nên phương án được chọn là định nghĩa lại chính các biến đó trong phạm vi chủ đề Cloud. Mã giao diện giữ nguyên; màu sắc được chuyển hướng ở tầng token.
| Dải gốc của Tailwind | Chuyển về | Cơ sở |
|---|---|---|
slate, gray, zinc, neutral, stone | Bộ trung tính Cloud, từ #1b1b1f đến #fafafa | Bốn sắc trung tính được khai báo trong đặc tả |
blue, sky, cyan, indigo, violet, purple, fuchsia, pink | Năm sắc độ tím thương hiệu | Đặc tả nêu rõ màu xanh mặc định được thay hoàn toàn, và tím là màu dành cho thông tin thương hiệu |
green, emerald, lime, teal | #127a41 trên nền #e6f6ec | Màu trạng thái tốt |
amber, yellow, orange | #92600a trên nền #fdf3e0 | Màu trạng thái cần chú ý |
red, rose | #b42318 trên nền #fdeaea | Màu trạng thái cảnh báo |
Các lớp có kèm độ trong suốt được Tailwind nội suy thẳng thành giá trị màu thay vì đọc qua biến, nên những lớp loại này mà mã nguồn có dùng được khai báo lại riêng bằng color-mix. Toàn bộ quy tắc nằm trong phạm vi html.cloud, vì vậy các theme khác không chịu ảnh hưởng.
Hai điểm về thứ tự áp dụng quy tắc, đã ghi chú trong mã nguồn
- Lớp tiện ích có dấu
!chỉ bị ghi đè bởi một quy tắc quan trọng khác đứng sau, trong cùng lớp@layer utilities. Quy tắc quan trọng nằm ngoài lớp sẽ thua. - Khai báo
backdrop-filter: nonekhông gỡ được hiệu ứng làm mờ, vì lớp tiện ích đặt đồng thời cả biến tiền tố-webkit-. Cách xử lý là đặt lại biến--tw-backdrop-blurvề rỗng.
4Đối chiếu token
Cột “đo được” lấy bằng getComputedStyle trên bản dựng. Cột “kết quả” phân biệt phần đã có trên môi trường dev với phần còn nằm trong PR #66.
| Hạng mục | Đặc tả Cloud | Đo được | Kết quả |
|---|---|---|---|
| Màu chính | #6A309B | #6a309b | đã có trên dev |
| Nền vùng làm việc | #fafafa | #fafafa | đã có trên dev |
| Chữ chính | #1b1b1f | #1b1b1f | đã có trên dev |
| Chữ phụ | #71717a | #71717a | đã có trên dev |
| Đường viền | #e4e4e7 | #e4e4e7 | đã có trên dev |
| Nền tím nhạt | #F3EBFA | #f3ebfa | đã có trên dev |
| Thẻ | viền 1 px, bo 10 px, không đổ bóng | 1px #e4e4e7 · 10px · none | đã có trên dev |
| Nút | chiều cao thống nhất, bo 8 px | 36px · 8px | đã có trên dev |
| Hàng bảng | cao 44 px, tiêu đề cột viết hoa 12 px | 44px · 12px viết hoa | đã có trên dev |
| Thanh bên | rộng 292 px, mục đang mở nền tím nhạt | 292px · #f3ebfa | đã có trên dev |
| Xám trong mã giao diện | #71717a | #71717a (dev hiện là #62748e) | PR #66 |
| Nhãn trạng thái | bo góc nhỏ 6 px, cỡ chữ 11,5 px | 6px · 11.5px | PR #66 |
| Trường nhập liệu | nền trắng, viền #d4d4d8, bo 8 px | #fff · #d4d4d8 · 8px · 36px | PR #66 |
| Hộp thoại | bo 14 px, lớp phủ rgba(24,24,27,.45) | 14px · rgba(24,24,27,.45), không làm mờ | PR #66 |
| Thông báo nổi | theo tham chiếu enterprise: nền tối, bo 10 px | #1b1b1f · 10px, góc dưới bên phải | PR #66 |
| Đổ bóng từ lớp tiện ích | không có | 0 phần tử còn đổ bóng | PR #66 |
5Sáu màn hình trước và sau
Ảnh chụp ở chiều rộng 1440 px, cùng một bộ dữ liệu mẫu, cùng một công cụ. Ảnh “trước” dựng từ đúng commit đang chạy trên môi trường dev; ảnh “sau” dựng từ nhánh feat/cloud-theme-ui.


- Bảng xếp hạng Top Sales trước đây liệt kê từ người thấp nhất, do trục phân loại của thư viện biểu đồ xếp từ dưới lên; nay đảo lại để hạng nhất đứng đầu, dùng dải tím đậm dần thay cho ba màu huy chương.
- Hai ô “Giá trị Pipeline” và “Deal đang mở” trước đây là hộp xám lồng trong thẻ, nhãn viết hoa 10 px; nay dùng đúng khuôn ô chỉ số của năm ô phía trên.
- Nhãn “Dữ liệu mẫu” lặp lại chín lần trên từng thẻ, khiến nhãn chỉ số bị gãy hai dòng; nay ghi một lần dưới tiêu đề trang.
- Đường biểu diễn thắng và thua chuyển sang màu trạng thái của hệ thống; trục biểu đồ phễu làm tròn lên mốc chẵn thay vì dừng ở giá trị lẻ chạm nhãn kế bên.
- Trỏ chuột lên dòng danh sách chuyển nền xám; nền tím được giữ lại cho trạng thái đang chọn.
- Chữ trong biểu đồ trước đây hiển thị bằng phông mặc định của trình duyệt: biểu đồ vẽ trên canvas, nơi
ctx.fontkhông có cơ chế kế thừa nên giá trịinheritbị bỏ qua. Nay bộ phông của chủ đề được truyền thẳng vào biểu đồ. Lỗi này dễ nhận ra nhất khi trỏ chuột, vì chú giải là phần tử HTML nên vẫn đúng phông, đứng ngay cạnh nhãn trục sai phông. - Thanh bên đổi tên thành School OS · Trường Số, kèm logo chính thức.


- Dải xám ngả xanh chuyển về bộ trung tính của hệ thống trên toàn bộ chữ phụ, đường viền và nền.
- Nhãn trạng thái chuyển từ hình viên thuốc sang hình chữ nhật bo 6 px, dùng đúng bốn màu quy ước.


- Trường nhập liệu chuyển sang nền trắng, viền
#d4d4d8, cao 36 px, viền tím kèm quầng sáng khi lấy tiêu điểm. - Ô hiển thị giá trị cơ hội chuyển từ nền xanh lá sang nền tím nhạt của thương hiệu; xanh lá chỉ dành cho trạng thái tốt.
- Các nhãn loại hoạt động bo 6 px và dùng đúng bốn màu quy ước; dải giai đoạn phẳng một màu, bỏ chuyển sắc và đổ bóng.


- Bo 14 px, chân hộp thoại nền
#fafafangăn bằng một đường kẻ, nút Huỷ dạng phẳng đặt sát mép trái, nhóm nút tác vụ đặt bên phải. - Lớp phủ dùng đúng
rgba(24,24,27,.45)và không làm mờ nền phía sau.


- Hộp rộng 620 px, ô nhập cao 50 px không viền ngăn cách bằng một đường kẻ, danh sách kết quả lót 6 px với từng dòng bo 8 px.


- Thông báo dùng một kiểu duy nhất cho mọi loại: nền
#1b1b1f, chữ trắng, bo 10 px, hiện ở góc dưới bên phải. - Dải tiêu đề trang tài khoản bỏ chuyển sắc và đổ bóng, chuyển thành một màu phẳng.
6Quy tắc theo từng thành phần
Bảng dưới đây là phần bổ sung cho đặc tả: với mỗi thành phần mà đặc tả chưa nêu, tài liệu ghi lại giá trị đã áp dụng để những lần xây dựng sau có căn cứ thống nhất.
| Thành phần | Nguồn | Giá trị áp dụng |
|---|---|---|
| Menu thả xuống | enterprise | Lót 6 px, dòng cao 7 px trên 10 px, bo 8 px, nền xám khi trỏ chuột, chữ tím đậm cho mục đang chọn, nhãn nhóm viết hoa 11 px |
| Thông báo nổi | enterprise | Nền #1b1b1f, chữ trắng 13 px, bo 10 px, góc dưới bên phải, một kiểu cho mọi loại thông báo |
| Chú giải | enterprise | Nền màu chữ chính, chữ trắng 12,5 px, bo 8 px |
| Khung ghi chú | đặc tả, thẻ gợi ý | Nền #f9f5fd, viền #e4d5f1, tiêu đề tím 13,5 px, nội dung 12,5 px |
| Ngăn kéo | enterprise | Đầu và chân ngăn kéo có đường kẻ ngăn cách, chân nền #fafafa, tiêu đề 15 px |
| Bảng lệnh tìm nhanh | enterprise | Rộng 620 px, ô nhập 50 px không viền, danh sách lót 6 px, dòng bo 8 px |
| Công tắc | enterprise | Đường ray 30 px trên 17 px, núm 13 px, bật màu tím |
| Thanh tiến trình | đặc tả | Cao 6 px, bo 3 px, nền #eeeef0, phần đã đạt màu tím |
| Biểu mẫu | đặc tả, hộp thoại | Nhãn 13 px đậm đặt phía trên, chú thích và thông báo lỗi 12,5 px |
| Biểu đồ | đặc tả | Nhãn trục 11,5 px, chuỗi chính dùng dải tím, chỉ dùng màu trạng thái khi thể hiện ý nghĩa trạng thái |
7Kiểm chứng và các mục còn để ngỏ
Kết quả kiểm chứng: biến xám phân giải đúng #71717a; nhãn trạng thái đo được 6 px; không còn phần tử nào mang đổ bóng từ lớp tiện ích; lớp phủ không còn hiệu ứng làm mờ; menu bo 10 px; thông báo nền #1b1b1f; toàn bộ trường nhập trong ngăn kéo cao 36 px nền trắng viền #d4d4d8. Các bước kiểm tra kiểu, kiểm tra quy tắc mã nguồn và dựng bản phát hành đều không phát sinh lỗi mới.
Ba mục chờ thống nhất
- Dải màu
bluehiện được chuyển về tím thương hiệu. Cách này đúng với nguyên tắc một màu nhấn của đặc tả, nhưng làm mất khả năng dùng màu xanh dương như một màu thông tin trung lập. Cần xác nhận đây là lựa chọn mong muốn. - Nhãn “Dữ liệu mẫu” hiện bị ẩn ở cấp từng thẻ và chỉ hiển thị một lần dưới tiêu đề trang. Cần xác nhận mức độ nhắc nhở như vậy là đủ.
- Bảng tiêu đề cột: đặc tả yêu cầu viết hoa 12 px, trong khi mã CSS mẫu kèm theo đặc tả không viết hoa. Tài liệu này theo phần lời văn của đặc tả. Cần xác nhận để cập nhật lại khung mẫu.
Trường Số (truongso.net) · Nội bộ FLYER