mirror of
https://github.com/sinanyuntu/trade-message-center.git
synced 2026-09-17 13:22:11 +08:00
2.6 KiB
2.6 KiB
服务端前端质量规范
已确认的工具链
- 使用 pnpm
11.7.0、Node.js>=22.22.2 <23和根级严格 TypeScript 配置。 - 根级
dev、build、typecheck、test命令只调用实际存在的子包脚本;手工联调页由mind-test-harness独立提供,server 不新增前端构建脚本。 - 根级
format和format:check使用 Oxfmt;lint-staged 只格式化暂存文件,Husky 在pre-commit阶段触发该检查。 - 当前没有 lint、组件测试、端到端测试或浏览器构建工具,不能把这些能力写成已经启用的检查项。
必须遵守
- UI 代码必须通过根
tsconfig.base.json的严格检查,并保持与服务端 API/消息契约的类型边界。 - 用户可见状态至少要考虑加载、空数据、错误和权限失败;实际测试方案确定后补上自动化验证。
- 联调页必须显式展示加载、空数据、插件 online/offline、授权失败、历史读取失败、WS 断线和同步状态;发送能力未接入时保持禁用。
- 联调页只能调用 Bright HTTP/WS;不得在浏览器脚本中访问数据库、server 内部模块、Mind legacy 接口或保存 credential。
- 来自 HTTP/WS 的未知数据必须先运行时校验;消息正文进入 DOM 前必须转义,事实去重键必须包含 scope、会话和原始 messageId。
- 联调页专属依赖和脚本写入
apps/mind-test-harness/package.json;该包不应声明 build/test 脚本,也不得成为其它包依赖。 - 引入浏览器端能力时,明确哪些代码只能在客户端执行,避免在服务端环境访问浏览器全局对象。
禁止做法
- 未经任务说明把服务端包改造成前端应用,或直接复制扩展包实现。
- 用
any、无理由断言或静默默认值掩盖 API 契约问题。 - 在组件中直接访问数据库、环境密钥或服务端内部模块。
- 宣称没有配置的 lint/测试工具已经通过。
验证命令
pnpm format:check
pnpm typecheck
pnpm build
pnpm test
首次出现服务端前端后,应把实际入口和测试脚本接入 workspace,并记录浏览器/SSR 场景的额外验证方法。
当前联调页没有独立浏览器构建或 E2E runner;最低验证包括服务端 typecheck/build/test、GET http://127.0.0.1:8788/ 内容 smoke,以及真实本地 HTTP/WS 网络 smoke。
评审清单
- 是否保持浏览器、服务端和 API 边界清晰?
- 是否如实区分了自动化检查与手工验证?
- 是否覆盖了加载、空、错误、权限、插件离线、重连恢复和可访问性状态?
- 是否引入了未经记录的 UI 框架、状态库或构建工具?