Files
trade-message-center/.trellis/spec/server/frontend/quality-guidelines.md
T

2.6 KiB
Raw Blame History

服务端前端质量规范

已确认的工具链

  • 使用 pnpm 11.7.0、Node.js >=22.22.2 <23 和根级严格 TypeScript 配置。
  • 根级 devbuildtypechecktest 命令只调用实际存在的子包脚本;手工联调页由 mind-test-harness 独立提供,server 不新增前端构建脚本。
  • 根级 formatformat:check 使用 Oxfmtlint-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 框架、状态库或构建工具?