Skip to content

Yêu cầu phi chức năng (NFR) ​

Hai repo (16.10.2026)

Từ 16.10.2026 NFR-I18N và NFR-SEO được gác ở repo conan-web (www sang đó); xem Hai repo.

Yêu cầu dùng chung cho mọi domain. Một domain không chép lại NFR; nó trỏ tới đây, và chỉ ghi ở tests.md của mình phần NFR có cách kiểm riêng.

MãNFRTrangHiện trạng
NFR-ERRHọc từ lỗi: thu mọi lỗi GitHub + Cloudflare, dấu vân tay, chặn lặperror-learningHai sổ rà tay có; tầng tự động chạy từ PR #423; lỗi kèm stack qua Sentry (đã nối, chờ DSN)
NFR-TEXTKhông ký tự gạch dài U+2014 trong mọi nội dungCLAUDE.md, LUẬT CHỮCó gác npm run check:emdash
NFR-COLORChỉ dùng token màu từ packages/design-system/theme.cssdesign-systemCó gác npm run check:colors, mốc chặn ở 0
NFR-I18NTrang công khai của www có hai URL (/ và /en)i18n-wwwGác trong check:seo
NFR-SEOTrang công khai qua đủ bốn cửaseoCó gác node scripts/check-seo.mjs
NFR-PRIVdataLayer không mang PII; một container GTManalyticsCó gác npm run check:analytics
NFR-ONCEVòng chạy tự động có tác dụng phụ giành quyền chạy bằng ràng buộc CSDLCLAUDE.md, LUẬT VÒNG CHẠY TỰ ĐỘNGTheo mã (claimScheduledRun); bất biến đêm email-* đếm thư gửi đôi (d1-invariants)
NFR-OBSMọi Worker bật Workers Logscf-error-ledger (C12)Có gác scripts/check-worker-observability.mjs
NFR-PRIV-ERRBáo cáo lỗi (Sentry) không mang dữ liệu cá nhân, chỉ bắt lỗisentryCó gác npm run check:sentry
NFR-DEPLOYDeploy xanh phải chứng minh đúng bản đang chạy và có ruộtsmoke-productionBước cuối _deploy-cloudflare.yml; tự kiểm npm run check:smoke
NFR-DATABất biến dữ liệu D1 kiểm mỗi đêm, mốc chỉ được hạd1-invariantsd1-invariants.yml; tự kiểm npm run check:d1-invariants
NFR-CONTRACTPhản hồi công khai đúng hợp đồng; lỗi là 5xx, không là danh sách rỗngapi-contractnpm run test:contract; kiểm sống sau deploy api
NFR-A11YWCAG 2.2 AAdesign-systemChưa có gác tự động

Chưa viết trang riêng cho các NFR ngoài NFR-ERR; trang mẫu là error-learning.

Tài liệu nội bộ nền tảng Conan School.