Ứng dụng quản trị nền tảng: giao diện mới

Ứng dụng quản trị nền tảng (platform-admin) là nơi đội SkillPixel quản lý mọi tổ chức trên hệ thống. Giao diện mới chia các mục quản lý tổ chức thành từng nhóm trong menu bên trái. Mỗi trang tập trung vào một công việc và có URL riêng để gửi cho đồng nghiệp.

PR #549 · 9/10/2026

Tình trạng ngày 9/10/2026

Giai đoạn
Đang chờ review. PR chưa được merge vào main, chưa lên beta và chưa có trong bản production nào.
PR
#549 gồm 7 commit trên nhánh main. PR làm lại giao diện và cách xử lý thao tác của ứng dụng quản trị nền tảng. Phần máy chủ (API), cơ sở dữ liệu và client sinh tự động giữ nguyên.
Ticket
PR này chưa liên kết với ticket Jira nào.
Kiểm thử
Đã chạy lint, type check, 194 test tự động (Vitest) và build trên commit cuối. Các thao tác thay đổi dữ liệu đã được QA trên trình duyệt ở máy phát triển. Chưa kiểm thử trên beta.
Ảnh và video
Toàn bộ ảnh chụp và video được thực hiện trên máy phát triển với dữ liệu mẫu. Tên và số liệu không phải dữ liệu khách hàng. Bản mới là bản build production từ commit cuối của PR. Bản cũ chạy từ nhánh main.

Vì sao phải làm lại

Qua nhiều lần cập nhật, các tính năng mới của ứng dụng quản trị nền tảng đều được thêm vào những trang có sẵn. Trang của một tổ chức có mười tab nằm ngang, trộn lẫn mức sử dụng, thanh toán và quyền truy cập. Riêng tab Mức sử dụng đã dài khoảng 8.400 pixel, còn tab Tính năng là một danh sách dài không có ô tìm kiếm. Các tab không có URL riêng, nên không gửi được đường dẫn tới đúng chỗ cho đồng nghiệp. Bản làm lại giữ nguyên mọi tính năng và chỉ sắp xếp lại, để mỗi việc nằm ở đúng một chỗ.

Thay đổi chính

1

Menu chia nhóm

Mười tab ngang thành menu bên trái với bốn nhóm: Mức sử dụng, Thanh toán, Cấu hình, Quyền truy cập.

2

Trang gọn hơn

Nội dung dài được chia thành các tab. Bảng số liệu chi tiết được thu gọn và chỉ mở khi cần xem.

3

Bảng và biểu mẫu thống nhất

Các thao tác với từng dòng nằm trong menu cuối dòng. Các biểu mẫu như Gói và giới hạn, Thiết lập AI, Thương hiệu chỉ có một nút "Lưu" ở đầu trang.

4

URL, giao diện và ngôn ngữ

URL lưu lại trang đang xem, bộ lọc đã chọn và khung chi tiết đang mở. Có thể chọn giao diện sáng, tối hoặc theo cài đặt hệ thống, cùng ngôn ngữ tiếng Anh hoặc tiếng Việt.

Video giới thiệu

Dài 3 phút 41 giây. Giọng đọc tiếng Anh, phụ đề tiếng Việt bật sẵn (có thể chọn phụ đề tiếng Anh). Chấm xanh là con trỏ chuột. Phần đầu là bản cũ (góc trên ghi "TRƯỚC"), phần sau là bản mới ("SAU").

Nội dung video

  1. 0:00 Giới thiệu.
  2. 0:07 Bản cũ: mười tab trên trang tổ chức, cuộn hết tab Mức sử dụng, rồi tab Tính năng.
  3. 1:00 Chuyển sang bản mới.
  4. 1:03 Menu bên trái và trang Tổng quan, với một dòng trạng thái cho từng mục.
  5. 1:28 Mức sử dụng: chọn tab "Dung lượng" và mở mục "Chi tiết".
  6. 1:42 Tính năng: tìm "docx", bật rồi tắt bộ lọc "Chỉ hiện mục đã đổi", bấm "Sửa" để mở khung chỉnh sửa bên phải.
  7. 2:00 Cấu hình: mở "Ghi đè của tổ chức" của thiết lập Contests (cuộc thi) để xem giá trị riêng của từng tổ chức.
  8. 2:08 Gói và giới hạn: nhập 50 GB vào "Dung lượng", nút "Lưu" bấm được, rồi bấm "Lưu".
  9. 2:25 Giao dịch: số giao dịch theo trạng thái, bảng, rồi "Chi tiết giao dịch". Sau đó là Cổng thanh toán.
  10. 2:44 Tên miền: mở "Chi tiết" của một tên miền riêng đang chờ xác minh.
  11. 2:55 Thành viên: menu thao tác của một dòng. Sau đó là Vùng nguy hiểm.
  12. 3:10 Đổi giao diện sáng, tối, theo hệ thống, rồi đổi ngôn ngữ sang English và quay về Tiếng Việt.
  13. 3:33 Kết thúc ở danh sách Tổ chức.

Video có ba chỗ khác ảnh chụp. Khi quay video, giới hạn dung lượng 50 GB đã được lưu vào dữ liệu mẫu, rồi xóa sau đó. Vì vậy, ảnh chụp chỉ còn "1 giá trị ghi đè". Tên miền hoc.example.com được tạo riêng cho video và đã xóa sau khi quay. Ở vài cảnh, dòng điều hướng ở đầu trang hiện mã định danh (ID) của tổ chức thay cho tên SkillPixel. Đây là lỗi nhỏ của bản mới, xem phần Giới hạn.

Trước và sau

Bốn thay đổi lớn nhất về cách sắp xếp, kèm lý do của từng thay đổi.

Mười tab ngang thành menu chia nhóm

Mười tab nằm trên một hàng, trộn mức sử dụng, thanh toán và quyền truy cập, nên muốn tìm một thiết lập phải mở lần lượt từng tab. Giờ các mục nằm trong menu bên trái, chia bốn nhóm, và mục nào cũng có URL riêng.

Trang tổ chức SkillPixel ở bản cũ, với hàng mười tab ngang dưới tên tổ chức
TRƯỚC. Hàng tab: Tổng quan, Mức sử dụng, Thanh toán, Tính năng, Tên miền, Thành viên, Lời mời, Thương hiệu, Email, Vùng nguy hiểm.
Trang Tổng quan của SkillPixel ở bản mới, menu bên trái có bốn nhóm
SAU. Menu bên trái: Tổng quan, bốn nhóm Mức sử dụng, Thanh toán, Cấu hình, Quyền truy cập, và Vùng nguy hiểm ở cuối. Menu hiện số lượng bên cạnh "Tên miền" và "Thành viên", lần lượt là 4 và 103.

Trang Mức sử dụng dài 8.400 pixel thành ba nhóm số liệu

Tab cũ xếp chồng thành viên, dung lượng, email, AI và giới hạn của gói trên một trang dài khoảng 8.400 pixel. Trang Mức sử dụng mới có ba tab: "Thành viên & MAU", "Dung lượng" và "Email". MAU là số người dùng có hoạt động trong tháng. Mỗi tab có một hàng số liệu, một biểu đồ, còn bảng dài thu gọn trong mục "Chi tiết". AI có trang riêng, giới hạn chuyển sang nhóm Thanh toán.

Toàn bộ tab Mức sử dụng ở bản cũ, rất dài, gồm nhiều bảng và biểu đồ xếp chồng
TRƯỚC. Toàn bộ tab Mức sử dụng của SkillPixel, tháng 10/2026, cao 8.478 pixel. Bấm để xem ảnh đầy đủ.
Trang Mức sử dụng ở bản mới, vừa một màn hình, với ba tab nhóm số liệu
SAU. Cùng tổ chức, cùng tháng, cả trang cao 960 pixel: 103 người dùng đã đăng ký (giới hạn 1,000), 8 người mới trong kỳ, 9 người hoạt động trong tháng, biểu đồ hằng ngày và mục "Chi tiết" đang đóng.

Danh sách Tính năng có thêm tìm kiếm và bộ lọc

Tab cũ có danh sách dài, không có ô tìm kiếm hay bộ lọc để xem các thiết lập khác mặc định. Ở bản mới, mỗi thiết lập nằm trên một dòng. Có thể tìm kiếm hoặc chọn "Chỉ hiện mục đã đổi". Các thông số liên quan nằm ngay dưới công tắc bật/tắt tính năng. Bấm "Sửa" để mở khung chỉnh sửa bên phải. Trang Cấu hình của nền tảng cũng dùng cách trình bày này.

Toàn bộ tab Tính năng ở bản cũ, một danh sách dài các thẻ cài đặt
TRƯỚC. Toàn bộ tab Tính năng của SkillPixel. Bấm để xem ảnh đầy đủ.
Trang Tính năng ở bản mới, đã lọc theo docx, bảng sửa DOCX import max file size mở bên phải
SAU. Tìm "docx" và bấm "Sửa" ở mục "DOCX import max file size (MiB)", tức dung lượng tối đa của tệp DOCX được nhập vào hệ thống. Khung bên phải có key của thiết lập, giá trị hiện tại 10, nguồn "Mặc định" và ô nhập giá trị mới.

Chuyển các nút đổi vai trò vào menu thao tác

Ở bản cũ, mỗi dòng thành viên có ba nút để đổi vai trò trực tiếp và một nút xóa, rất dễ bấm nhầm. Giờ mỗi dòng chỉ hiện vai trò, còn thao tác nằm trong menu "⋯": "Sửa vai trò" mở hộp thoại, "Gỡ khỏi tổ chức" cần xác nhận.

Tab Thành viên ở bản cũ, mỗi dòng có ba nút vai trò và biểu tượng thùng rác
TRƯỚC. Mỗi dòng có các nút Quản trị viên, Giảng viên, Học viên và nút xóa.
Trang Thành viên ở bản mới với menu thao tác của một dòng đang mở
SAU. 103 thành viên, lọc theo vai trò và tìm kiếm được. Menu của một dòng có "Sửa vai trò" và "Gỡ khỏi tổ chức".

Giới thiệu từng mục

Các ảnh dưới đây chụp tổ chức SkillPixel với dữ liệu mẫu, giao diện sáng và ngôn ngữ tiếng Việt, trên màn hình máy tính rộng 1440 pixel.

Danh sách tổ chức

Danh sách Tổ chức với 4 tổ chức, các nút lọc trạng thái và ô tìm kiếm
Bốn chỉ số: 4 tổ chức, 3 đang hoạt động, 104 thành viên, 7 tên miền. Bảng sắp xếp được theo từng cột, lọc theo trạng thái (Tất cả, Đang hoạt động, Đã khởi tạo, Tạm ngưng, Đã lưu trữ) và tìm theo tên, slug (mã dùng trong đường dẫn) hoặc tên miền.
Hộp thoại Tổ chức mới với ô Tên và Slug
Nút "Tạo tổ chức" mở hộp thoại này. Ô "Slug" được gợi ý từ tên tổ chức và dùng trong đường dẫn, tên miền phụ do SkillPixel quản lý. Tổ chức mới có trạng thái "Đã khởi tạo". Sau khi thêm tên miền và thành viên, quản trị viên chuyển tổ chức sang "Đang hoạt động".

Tổng quan của một tổ chức

Trang Tổng quan của SkillPixel với bốn ô số và biểu đồ lượt ghi danh
Đầu trang luôn có tên tổ chức, trạng thái, nút "Mở trang" và "Đổi trạng thái". Bốn chỉ số: 103 thành viên, 7 khóa học (5 đã xuất bản), 19 lượt ghi danh, doanh thu thuần 30 ngày khoảng 2 triệu đồng từ 7 đơn hàng. Phía dưới là mục "Các mục", mỗi mục một dòng trạng thái.

Mức sử dụng và AI

Tab Dung lượng của trang Mức sử dụng, mục Chi tiết đang mở
Tab "Dung lượng", tháng 10/2026: đã dùng 6.3 GB, trong đó video 4.1 GB, lần đo gần nhất 04/10/2026. Mục "Chi tiết" đang mở, có bảng 6 tháng qua và bảng theo tính năng.
Trang AI với số token, biểu đồ, bảng theo tính năng và phần Bảng kê AI
Trang AI, tháng 10/2026: 961.8K token qua 117 lượt gọi AI, chi phí ước tính 1.13 USD. Token là đơn vị đo lượng nội dung AI xử lý. Cuối trang là "Bảng kê AI" ở trạng thái "Chưa chốt", với nút "Chốt tháng" và "Tải CSV".

Thanh toán

Trang Gói và giới hạn với chọn gói, kênh bán và bảng giới hạn
Gói và giới hạn: tổ chức chưa được gán gói dịch vụ hay kênh bán. Có một giới hạn riêng ("1 giá trị ghi đè"): "Giới hạn tài khoản" đặt ở mức 1,000. Nút "Lưu" ở góc trên chỉ bấm được khi có thay đổi.
Trang Giao dịch với tổng quan tháng, các nút trạng thái và bảng giao dịch
Giao dịch, tháng 10/2026: doanh thu thuần 798.000 VND, tỷ lệ thất bại 33.3%. Các nút trạng thái (Đang chờ 2, Thành công 2, Thất bại 1...) lọc bảng bên dưới. Danh sách có 16 giao dịch.
Khung Chi tiết giao dịch của một giao dịch Thành công qua Alepay
Bấm một dòng sẽ mở "Chi tiết giao dịch": Thành công qua Alepay, số tiền 699.000 VND, giảm giá 100.000 VND, thành tiền 599.000 VND, cùng mã giảm giá (dòng "Mã voucher"), mã giao dịch và mã đơn hàng của cổng thanh toán.
Trang Cổng thanh toán với Alepay và SePay đang bật, Ngân Lượng đang tắt
Cổng thanh toán được tách thành mục riêng. Alepay và SePay đang bật, mỗi cổng có nút "Thiết lập". Ngân Lượng đang tắt và không dùng được.

Cấu hình

Trang Cấu hình của nền tảng với khung Ghi đè của tổ chức cho Contests
Trên trang Cấu hình của nền tảng, bấm số tổ chức ở một thiết lập để mở "Ghi đè của tổ chức". Thiết lập cuộc thi ("Contests") đang tắt ở cấp nền tảng (false). Cả 4 tổ chức đều đặt riêng thành bật (true).
Trang Thiết lập AI đang chọn Key của SkillPixel và mô hình Gemini 3.8 Flash
Thiết lập AI được tách thành trang riêng, để chọn bên cung cấp key AI và mô hình AI. Ảnh đang chọn "Key của SkillPixel" và Gemini 3.8 Flash, nghĩa là SkillPixel quản lý key và trả phí sử dụng AI.
Trang Thương hiệu với hình ảnh, màu sắc, liên hệ, mạng xã hội và SEO
Trang Thương hiệu gồm hình ảnh, màu sắc, thông tin liên hệ, liên kết mạng xã hội và mục "SEO" (tên trang và cách công cụ tìm kiếm lập chỉ mục). Cả trang chỉ có một nút "Lưu" ở đầu trang.
Trang Email với nội dung email bên trái và bản xem trước bên phải
Email: nội dung email bên trái, bản xem trước bên phải.

Quyền truy cập

Bảng Chi tiết của tên miền hoc.example.com với bản ghi TXT, CNAME và các bước kích hoạt
Khung chi tiết của tên miền riêng hoc.example.com cho biết cần thêm gì ở nơi quản lý DNS. Bản ghi TXT dùng để xác minh quyền sở hữu. Bản ghi CNAME trỏ tên miền về customers.skillpixel.vn. Trên máy phát triển, hai điều kiện kích hoạt chưa đạt: xác minh quyền sở hữu tên miền và cấu hình Cloudflare. Tên miền này được tạo để minh họa và đã xóa sau đó.
Trang Lời mời với bộ lọc trạng thái và danh sách lời mời
Lời mời: 2 lời mời đang chờ. Lọc được theo Đang chờ, Đã chấp nhận, Đã hết hạn, Đã thu hồi. Gửi lại và thu hồi nằm trong menu cuối dòng.
Trang Vùng nguy hiểm với Đổi tên, Lưu trữ và Xóa vĩnh viễn
Vùng nguy hiểm gom Đổi tên, Lưu trữ và Xóa vĩnh viễn. SkillPixel là tổ chức mặc định nên không lưu trữ hay xóa được, và trang ghi rõ lý do.

Các trang của nền tảng

Trang Người dùng với menu thao tác của một dòng đang mở
Người dùng: menu cuối dòng có "Cấp quyền quản trị" (quyền quản trị toàn nền tảng) và "Vô hiệu hóa" (khóa tài khoản).
Trang Nhật ký hoạt động với 30 sự kiện chia theo ngày
Nhật ký hoạt động: 30 sự kiện gần nhất, chia theo ngày, lọc theo Tổ chức, Tên miền, Thành viên, Lượt đăng ký.

Giao diện sáng và tối

Trang Tổng quan của SkillPixel, giao diện sáng
Giao diện sáng.
Trang Tổng quan của SkillPixel, giao diện tối
Cùng trang, giao diện tối. Ba nút ở góc trên bên phải chọn sáng, tối hoặc theo hệ thống.

Cách làm những việc thường gặp

  1. Mở một mục của tổ chức

    Vào "Tổ chức" và bấm tên tổ chức. Chọn mục trong menu bên trái, ví dụ "Gói và giới hạn" trong nhóm Thanh toán. URL trên thanh địa chỉ trỏ đến mục đang xem. Gửi URL này để đồng nghiệp mở đúng trang.

  2. Tìm một feature flag

    Mở "Tính năng" của tổ chức (hoặc "Cấu hình" để xem giá trị toàn nền tảng). Nhập tên, key hoặc mô tả vào ô tìm kiếm. Bấm "Chỉ hiện mục đã đổi" để chỉ xem các thiết lập khác mặc định. Bấm công tắc để bật hoặc tắt tính năng ngay, không cần bấm "Lưu". Với các thông số như dung lượng tệp tối đa, bấm "Sửa", nhập giá trị rồi bấm "Lưu" trong khung bên phải.

  3. Đặt giới hạn riêng cho tổ chức

    Mở "Gói và giới hạn" và nhập giá trị vào cột "Ghi đè" của dòng cần đổi. Nút "Lưu" ở góc trên bấm được. Bấm "Lưu", cột "Đang áp dụng" chuyển sang giá trị mới với nhãn "Ghi đè". Muốn dùng lại giá trị của gói, xóa giá trị trong ô "Ghi đè" rồi bấm "Lưu".

    Bảng giới hạn với cột Gói có, Ghi đè và Đang áp dụng
    Cột "Gói có" là giá trị của gói, "Ghi đè" là giá trị riêng của tổ chức, "Đang áp dụng" là giá trị đang có hiệu lực.
  4. Đổi giao diện và ngôn ngữ

    Ba nút ở góc trên bên phải chọn giao diện sáng, tối hoặc theo hệ thống. Nút có lá cờ bên cạnh đổi giữa English và Tiếng Việt. Ứng dụng nhớ lựa chọn trên trình duyệt đó.

Những gì đã kiểm tra

Hạn chế và việc cần xử lý

Các quyết định

Câu hỏiLựa chọn
Có sửa API không?Không. Chỉ thay đổi giao diện và cách xử lý thao tác trên trình duyệt.
Giới hạn của gói nằm ở đâu?Trong "Gói và giới hạn" thuộc nhóm Thanh toán, vì giới hạn là thiết lập của gói, không phải số liệu sử dụng.
Cổng thanh toán nằm ở đâu?Một mục riêng, tách khỏi Giao dịch, vì đó là cấu hình chứ không phải lịch sử giao dịch.
Thiết lập AI nằm ở đâu?Một mục riêng trong nhóm Cấu hình, tách khỏi Tính năng.
Đặt tên mục thanh toán trong menu thế nào?Dùng "Thanh toán" cho tên nhóm và "Giao dịch" cho trang danh sách giao dịch, để dễ phân biệt.
Thao tác nguy hiểm đặt ở đâu?Trong menu cuối dòng hoặc Vùng nguy hiểm, và luôn có bước xác nhận.
Giao diện và ngôn ngữ?Hỗ trợ sáng, tối và theo hệ thống trên mọi màn hình. Có giao diện tiếng Anh và tiếng Việt.

Các bước triển khai

  1. Sửa lỗi dòng điều hướng hiện mã định danh thay cho tên tổ chức, rồi review và merge PR #549. Không cần migration cơ sở dữ liệu hay đổi cấu hình triển khai.
  2. Sau khi merge, triển khai ứng dụng quản trị nền tảng lên beta theo quy trình hiện tại.
  3. Kiểm thử trên beta: mở một tổ chức và xem từng mục trong menu. Đặt một giới hạn riêng, lưu rồi khôi phục giá trị ban đầu. Tìm một feature flag, mở chi tiết một giao dịch, đổi giao diện và ngôn ngữ.
  4. Đưa thay đổi vào bản phát hành production tiếp theo theo quy trình hiện tại.