liuyun d086df2ba3 chore(openspec): add init-shared-foundation change
shared 三层 spec:platform / data-model / api-contract + design + tasks

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

2.4 KiB
Raw Blame History

Purpose

定义所有接口的统一契约:响应封装、错误码、分页、鉴权层级与认证接口,作为前后端联调的唯一锚点。

ADDED Requirements

Requirement: 统一响应封装

所有接口 SHALL 返回 { code, message, data } 结构;code=0 表示成功。

Scenario: 成功响应

  • WHEN 接口处理成功
  • THEN 返回 code=0、message=ok、data 为业务数据

Scenario: 失败响应

  • WHEN 接口处理失败
  • THEN 返回非 0 code 与可读 message,data 为空

Requirement: 错误码分段

错误码 SHALL 与 HTTP 状态对齐分段:401xx 认证、403xx 授权、400xx 参数、404xx 资源、409xx 冲突、500xx 系统。

Scenario: 未登录

  • WHEN 未携带有效 token 访问受保护接口
  • THEN HTTP 401,code 为 401xx 段

Requirement: 分页约定

列表接口 SHALL 使用 page/pageSize 分页,返回 { list, total, page, pageSize }。

Scenario: 分页查询

  • WHEN 客户端传 page=1&pageSize=20
  • THEN 返回 data 含 list、total、page、pageSize

Requirement: 三级鉴权

接口 SHALL 分为三级:公开接口无需 token;未登记接口仅需登录;登记为「接口」资源的接口需 token 且当前用户具备对应 code(权限标识)。

Scenario: 未登记接口

  • WHEN 已登录用户访问未登记为资源的接口
  • THEN 校验通过(仅需登录态)

Scenario: 登记接口越权

  • WHEN 已登录用户访问登记为接口资源、但自身角色无该 permission 的接口
  • THEN 系统返回 403

Requirement: 认证接口

系统 SHALL 提供登录、刷新令牌、登出接口;登录需 tenantCode+username+password,返回 access token 与 refresh token。

Scenario: 登录成功

  • WHEN 用户提供正确的租户、账号与密码
  • THEN 返回 access token(2h 过期)与 refresh token(7d 过期)

Scenario: 刷新令牌

  • WHEN access 过期后客户端携带 refresh token 请求刷新
  • THEN 系统签发新 access 与 refresh,并作废旧 refresh

Requirement: 核心域接口目录

系统 SHALL 为每个核心域提供 REST 资源接口(复数、kebab-case):/users、/roles、/resources、/orgs、/dict-types、/configs、/audit-logs、/login-logs。

Scenario: 资源 CRUD

  • WHEN 管理端操作某核心域
  • THEN 通过对应复数资源路径进行增删改查