Kiểm toán độ sẵn sàng

Trang này là bản tự kiểm cuối trước khi gửi tài liệu cho thầy hoặc dùng trong ngày báo cáo. Nó trả lời thẳng các câu hỏi: font đã ổn chưa, luồng nghiệp vụ đã đủ chưa, thông tin có đủ không, UX/UI có hợp lý không, câu chữ có quá đà không, và claim nào có evidence.

Kết luận hiện tại

Mảng kiểm Trạng thái Evidence hiện có Cách nói an toàn
Font/tiếng Việt Đạt ở source và browser Encoding scan docs-site không có mojibake marker; browser smoke trang audit badText=false “Nếu terminal hiện méo chữ, kiểm lại bằng browser/Node UTF-8 trước khi kết luận file lỗi.”
Luồng nghiệp vụ Đã bao phủ core flow, có sơ đồ Bản đồ trả lời nhanh, Luồng nghiệp vụ, Ma trận bao phủ “Docs có flowchart tổng quan và sequence diagram cho các flow chính; từng flow nêu UI -> API -> use case -> DB -> invariant.”
Thông tin công nghệ Đã có Kiến trúc, Backend, Frontend, Runtime “Nói theo stack thật: Angular 20, Spring Boot 3.2, PostgreSQL/Flyway, Docker, R2/Shaka/PWA/Wiii.”
UX/UI Đã có trang riêng UX/UI và design system “Design system là hybrid: token SCSS + shared primitives + utility class theo feature, không nói là component library hoàn chỉnh.”
Vị trí file code Đã có trang riêng Vị trí file code, Source map, Symbol index “Khi sửa, mở route/component trước, rồi đi service/API/client/backend nếu logic thay đổi.”
Sơ đồ thư mục Đã có ảnh và trang riêng Sơ đồ thư mục và luồng file “Có SVG cây thư mục và luồng mở file khi sửa UI, logic, API, DB, upload, video, Wiii.”
Database count Đã xác thực từ generator node scripts\generate-schema-catalog.mjs sinh 78 tables, 2 materialized views, 107 migrations “Theo Flyway hiện tại có 78 application tables, 2 materialized views, 107 migration SQL files.”
Deploy docs Đã có runbook và custom domain docs Deploy docs lên Cloudflare “Docs chạy trên Cloudflare Pages tại docs.holilihu.online; khi sửa nội dung thì build, smoke và deploy lại docs-site, không deploy LMS production.”
SEO docs Đã bật index/follow và social preview robots.txt, _headers, _includes/head_custom.html, sitemap.xml “Docs có canonical, OG/Twitter image dùng logo/ảnh chung Holilihu, JSON-LD và sitemap public.”
Search docs Đã có fallback Search data có 259 documents; query không dấu như doi mau, ux ui design, ARB có kết quả “Có thể dùng Ctrl+K hoặc search bar, gõ cả tiếng Việt có dấu hoặc không dấu.”
Link/build Đã kiểm Jekyll build pass; link-check _sitebroken: 0 “Docs build được và link nội bộ không vỡ tại thời điểm kiểm.”

Requirement audit theo yêu cầu gốc

Yêu cầu gốc Nơi đã đáp ứng Evidence cần nhớ
“Lỗi font chữ rồi” Checklist chất lượng docs, trang này Source scan không có marker mojibake phổ biến; browser smoke không báo badText; terminal PowerShell có thể hiển thị sai codepage
“Các luồng nghiệp vụ đã đủ chưa” Luồng nghiệp vụ, Bản đồ trả lời nhanh 12 flow: auth, course authoring, publication, learning, assessment, upload, video, offline, payment, Wiii, STCW, admin; các flow chính có sequence diagram
“Thông tin đã đủ chưa” Ma trận bao phủ, Search guide Mỗi mảng có trang chính, evidence, và query search
“UX/UI cách thiết kế hợp lý chưa” UX/UI và design system, Frontend Có nguyên tắc LMS operational UI, token, file source, smoke checklist
“Câu chữ đúng chưa” Bản đồ trả lời nhanh, Câu hỏi bảo vệ Có bảng “Không nên nói/Nên nói”: không đoán 500k users, không nói Wiii tự publish, không nói frontend chặn là đủ
“Sắp xếp khoa học” Trang chủ, Học Codebase LMS, Kế hoạch ôn Reading order: dashboard -> audit -> local -> architecture -> flow -> DB -> Q&A
“Trang riêng cho vị trí file code” Vị trí file code Có map theo việc cần sửa: UI, logic, API, DB, upload, video, Wiii, payment
“Không có sơ đồ cây thư mục/luồng file” Sơ đồ thư mục và luồng file Có 2 SVG tĩnh và Mermaid flow để mở được cả local lẫn Cloudflare
“Thông tin SQL/bảng đủ” SQL schema catalog, Database timeline Catalog sinh từ Flyway, có quick index, table details, migration inventory
“Muốn đưa docs lên domain riêng” Deploy docs lên Cloudflare Có config Pages, Worker example, _headers, custom domain checklist và SEO crawl config

12 flow phải thuộc

Flow Trang chính Câu chốt
Auth/JWT/role Luồng nghiệp vụ, Roles Frontend guard hỗ trợ UX; backend security mới quyết định cuối cùng.
Teacher tạo course Luồng nghiệp vụ, Vị trí file code Teacher sửa draft qua course editor và course authoring backend.
Submit/approve/publication Publication Learner đọc publication snapshot, không đọc draft trực tiếp.
Student enroll/học Luồng nghiệp vụ Student cần entitlement hợp lệ trước khi học.
Quiz/assignment/grading Assessment nâng cao Grade cần role/ownership/audit; AI không tự submit/grade.
Upload file/document Luồng nghiệp vụ Upload lớn đi qua presigned flow và upload session.
Video ingest/playback Video và offline Video ingest tách khỏi request UI, phát HLS/DASH qua Shaka.
Offline/PWA Interactive video và storage health IndexedDB là cache; backend vẫn là source of truth.
Payment/revenue Payment và revenue Gateway/webhook verified mới là payment truth.
Wiii/AI Wiii integration Wiii chỉ safe click/preview/diff, không mutate nguy hiểm.
STCW competency STCW competency map Mapping là evidence coverage theo chuẩn đào tạo.
Admin/ORG_ADMIN Roles và permission ADMIN làm system-sensitive; ORG_ADMIN vận hành trong boundary.

Claim hygiene

Câu dễ bị bắt lỗi Câu nên nói
“Docs hoàn thiện 100%.” “Docs đã qua build/link/search/encoding smoke tại thời điểm kiểm; nếu code merge mới thì chạy lại generator và build.”
“Database có 88 hoặc 108 bảng.” “Theo Flyway migration folder hiện tại có 78 application tables, 2 materialized views, 107 migration SQL files.”
“108 SQL là 108 migration.” “Đếm toàn repo có thể dính thêm SQL dump ngoài migration; Flyway migration folder hiện có 107 file.”
“Web chịu được 500.000 người.” “Chưa load test thì không khẳng định số tuyệt đối; cần đo RPS, concurrent users, p95 latency, DB pool, cache, media bandwidth.”
“UI dùng một design system hoàn chỉnh.” “UI đang theo design system hybrid: token, shared primitive và utility class theo màn hình.”
“Wiii tự sửa course.” “Wiii tạo draft/patch; LMS preview/diff và teacher/admin xác nhận thì LMS mới apply.”
“Frontend chặn là đủ.” “Frontend guard giúp UX; backend role/ownership/use case là ranh giới bảo mật.”

Evidence commands đã dùng

docker exec lms-docs-site bash -lc "cd /workspace/docs-site && bundle exec jekyll build"
node scripts\generate-schema-catalog.mjs

Các script kiểm bổ sung đã xác nhận:

Kiểm tra Kết quả
Jekyll build Pass; chỉ có Sass deprecation warning từ upstream Just-the-Docs
Schema generator 78 tables, 2 materialized views, 107 migrations
Link-check _site 41 HTML, broken: 0
Encoding scan source docs Smart scan mở rộng docs-site + docs/reports + AGENTS.md + README.md110 files, mojibakeFiles: 0
Search data 259 documents; query ux ui design, doi mau, ARB, 78 application tables, 107 migration sql có kết quả
Browser smoke audit page badText=false, bodyOverflow=0, h1=Kiểm toán độ sẵn sàng, hasCounts=true

Những việc cần chạy lại nếu code đổi

Khi nào Cần chạy lại
Có migration mới node scripts\generate-schema-catalog.mjs, build docs, kiểm 78/107 có đổi không
Có route/component mới lớn Cập nhật Vị trí file code, Source map, search hints
Có flow nghiệp vụ mới Cập nhật Luồng nghiệp vụ, Bản đồ trả lời nhanh, Exam questions
Có thay đổi UX/UI lớn Cập nhật UX/UI và design system, smoke desktop/mobile
Có merge Wiii/payment/security Cập nhật các câu “Không nên nói/Nên nói” để tránh claim sai

Trang này không thay thế kiểm thử sản phẩm thật. Nó là audit tài liệu và bằng chứng học codebase. Khi demo production hoặc báo cáo số tải, vẫn cần smoke sản phẩm, log, metric hoặc load-test report riêng.