liuyun f9b801a047
Some checks are pending
CI / backend (push) Waiting to run
CI / frontend (push) Waiting to run
docs(spec): 脚手架可定制面 + 升级同步策略
- guide.md 补「升级同步(git upstream+merge)+ 可定制面三条铁律」
- shared/platform 主 spec 新增「脚手架可定制面」需求

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 23:06:12 +08:00

2.3 KiB
Raw Blame History

Platform Specification

Purpose

定义跨前后端、跨模块的全局规范:时间、多租户隔离、URL 契约与安全红线,作为所有 spec 的共同约束。

Requirements

Requirement: 统一时间戳格式

系统 SHALL 在 API 层以 Unix 毫秒时间戳(number)表示所有时间字段,前端负责本地化显示。

Scenario: 接口返回时间

  • WHEN 任一接口返回时间字段
  • THEN 该字段为 Unix 毫秒整数(number),不返回格式化字符串

Requirement: 多租户数据隔离

所有业务数据 SHALL 归属某一租户;任何业务接口 SHALL 仅返回当前租户的数据。

Scenario: 跨租户越权

  • WHEN 用户 A(租户 1)请求租户 2 的数据
  • THEN 系统拒绝或返回空,绝不返回租户 2 的数据

Requirement: URL 契约

所有 API SHALL 统一挂载在 /api/v1 前缀下。

Scenario: 版本前缀

  • WHEN 客户端调用任一业务接口
  • THEN 路径以 /api/v1 开头

Requirement: 安全红线

系统 SHALL 不以明文存储或传输密码;日志 SHALL 对手机号、邮箱、密码等敏感信息脱敏。

Scenario: 密码存储

  • WHEN 用户设置或修改密码
  • THEN 系统仅存储不可逆哈希,绝不落明文

Scenario: 日志脱敏

  • WHEN 记录操作/登录日志
  • THEN 密码字段不落日志,手机号/邮箱部分打码

Requirement: 脚手架可定制面

脚手架 SHALL 为 fork 项目划定「可定制面」:框架自带模块/页面/服务为框架代码,fork 项目只读不改;业务新增代码落入独立业务目录,与框架目录分离,保证上游升级可经 git merge 干净同步。

Scenario: 框架代码只读

  • WHEN fork 项目需要扩展能力
  • THEN 不修改框架自带模块/页面/服务,而是新增业务模块/页面或经扩展点定制

Scenario: 业务代码落点

  • WHEN fork 项目新增业务
  • THEN 代码落入独立业务目录(后端新域 src/<domain>/、前端新页面 src/pages/<biz>/),不侵入框架目录

Scenario: 数据驱动扩展点

  • WHEN fork 项目需要定制外观或权限
  • THEN 优先经数据驱动扩展点(租户品牌、字典、主题色、资源注册 tenant-template)而非改源码