Trường Số PRD/Cloud theme
Trường Số · Yêu cầu sản phẩm · 09/2026

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
Đối tượng rà soát
center-crm-frontend · theme Cloud
Nguồn chuẩn
roadmap.flyer.vn/cloudtheme
Tham chiếu bổ sung
enterprise.flyer.vn/app
Phạm vi
24 màn hình và lớp phủ
Trạng thái
PR #65 đã merge · PR #66 chờ merge
Công việc được yêu cầu qua ba lượt trao đổi trong ngày 12/09/2026, trích dẫn nguyên vă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ử nhathis 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 getComputedStyle trê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):
    ĐợtNội dungNhánhTrạng thái
    PR #65Cloud 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-ui vào devđã merge 12/09/2026
    PR #66Chuyể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 dashboardfeat/cloud-theme-ui vào devchờ merge

    Quyền merge vào nhánh dev giớ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ệchBiểu hiệnSố lượngẢnh hưởng
Dải màu cố địnhslate, emerald, blue, red, amber, indigo viết thẳng trong mã giao diện2.010 lượtChữ 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ãnNhãn trạng thái bo tròn hoàn toàn thay vì bo góc nhỏtoàn bộ nhãnTrái quy ước “nhãn bo góc nhỏ” của đặc tả
Đổ bóngThẻ và bảng dùng lớp tiện ích đổ bóng71 lượtĐặc tả nêu rõ thẻ không đổ bóng
Bán kính bo góc14 px đến 18 px trên thẻ và ô75 lượtHệ thống chỉ dùng 8 px, 10 px và 14 px theo từng vai trò
Chuyển sắcDải tiêu đề tài khoản, huy hiệu người phụ trách, nút đăng nhập12 lượtHệ thống không có chuyển sắc
Trường nhập liệuNền xám, không viền, cao 44 px16 lượtHệ 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ụngThô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ầnGiữ 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, đồng3 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 TailwindChuyển vềCơ sở
slate, gray, zinc, neutral, stoneBộ trung tính Cloud, từ #1b1b1f đến #fafafaBốn sắc trung tính được khai báo trong đặc tả
blue, sky, cyan, indigo, violet, purple, fuchsia, pinkNă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 #e6f6ecMàu trạng thái tốt
amber, yellow, orange#92600a trên nền #fdf3e0Màu trạng thái cần chú ý
red, rose#b42318 trên nền #fdeaeaMà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: none khô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-blur về 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 đượcKế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óng1px #e4e4e7 · 10px · noneđã có trên dev
Nútchiều cao thống nhất, bo 8 px36px · 8pxđã có trên dev
Hàng bảngcao 44 px, tiêu đề cột viết hoa 12 px44px · 12px viết hoađã có trên dev
Thanh bênrộng 292 px, mục đang mở nền tím nhạt292px · #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áibo góc nhỏ 6 px, cỡ chữ 11,5 px6px · 11.5pxPR #66
Trường nhập liệunền trắng, viền #d4d4d8, bo 8 px#fff · #d4d4d8 · 8px · 36pxPR #66
Hộp thoạibo 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ổitheo tham chiếu enterprise: nền tối, bo 10 px#1b1b1f · 10px, góc dưới bên phảiPR #66
Đổ bóng từ lớp tiện íchkhông có0 phần tử còn đổ bóngPR #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.

Dashboard

/vi/dashboard/cloudtheme

Dashboard sau khi rà soát
Màn hình được rà soát kỹ nhất, vì là màn hình đầu tiên người dùng nhìn thấy sau khi đăng nhập.
  • 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.font không có cơ chế kế thừa nên giá trị inherit bị 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.

Danh sách khách hàng

/vi/crm/customers

Danh sách khách hàng sau khi rà soát
Bảng danh sách là hình thức trình bày chính của sản phẩm, nên mức độ tuân thủ ở đây quyết định cảm nhận chung.
  • 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.

Chi tiết khách hàng

/vi/crm/customers/<id>

Chi tiết khách hàng sau khi rà soát
Ngăn kéo chi tiết chứa nhiều thành phần viết tay nhất, do đó lệch khỏi hệ thống nhiều nhất.
  • 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.

Hộp thoại xuất dữ liệu

Danh sách khách hàng · Xuất dữ liệu

Hộp thoại xuất dữ liệu sau khi rà soát
Hộp thoại là thành phần lớp phủ duy nhất được đặc tả mô tả đầy đủ.
  • Bo 14 px, chân hộp thoại nền #fafafa ngă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.

Bảng lệnh tìm nhanh

Phím tắt Command K

Bảng lệnh tìm nhanh sau khi rà soát
Thành phần đặc tả không nêu; lấy ứng dụng enterprise.flyer.vn/app làm tham chiếu.
  • 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 sau thao tác

/vi/account

Thông báo sau thao tác sau khi rà soát
Thông báo nổi và dải tiêu đề trang tài khoản.
  • 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ầnNguồnGiá trị áp dụng
Menu thả xuốngenterpriseLó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ổienterpriseNề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ảienterpriseNề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éoenterpriseĐầ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 nhanhenterpriseRộ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ắcenterpriseĐườ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ạiNhã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 blue hiệ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