← ClaudeAtlas

devlab-contract-web-serverlisted

前后端契约规范技能(contract 技能簇首个,定位介于 devlab-srv-* 与 devlab-web-* 之间)。约束大型前后端分离项目的接口/序列化契约、字段类型一致性、错误码与配置分层,提供契约校验与联调防错清单。Triggers on "前后端契约", "接口对不上", "序列化", "字段类型不一致", "contract", "api schema", "联调对齐".
seed-forge/harness-ai-kit · ★ 22 · API & Backend · score 74
Install: claude install-skill seed-forge/harness-ai-kit
# devlab-contract-web-server ## 用途 为**大型前后端分离项目**建立并守护"契约层":前端与服务端就接口结构、字段类型、序列化形态、错误码、配置边界达成**显式契约**,避免靠口头约定导致的联调返工与线上事故。 **定位**:`devlab-contract-*` 技能簇的首个成员,处于 `devlab-srv-*`(服务端)与 `devlab-web-*`(前端)之间的**交界地带**。 ## 适用场景 - 前后端分离、多人协作、接口频繁演进的中大型项目。 - 联调阶段反复出现"字段对不上/类型不匹配/序列化不一致"。 - 需要把接口从"约定俗成"升级为"可校验契约"。 ## 不适用场景 - 单体、无独立前端的项目。 - 一次性脚本/内部工具(契约成本大于收益)。 ## 输入 - 现有接口清单/文档(OpenAPI、代码里的 DTO/schema 等)。 - 前后端技术栈与序列化方式。 - 已发生的契约类问题(可选)。 ## 输出 - 契约规范文档(字段命名/类型/可空性/枚举/时间格式约定)。 - 契约校验建议(schema 校验、契约测试落点)。 - 联调防错清单。 ## 核心规范 ### 1. 字段类型契约 - 每个字段显式定义:类型、可空性、枚举取值、单位、时间/数字格式。 - **类型一致性**:同一字段跨前后端类型必须一致(典型坑:`id` 服务端 int、前端传 string → 解析失败)。 - 数组元素结构显式声明(典型坑:`groupBy` 期望字符串数组,前端传对象数组 `[{field: x}]`)。 ### 2. 序列化契约 - 统一约定 null/空值/缺省字段的语义(省略 vs null vs 空串)。 - 显式约定大整数/精度/日期的序列化(避免 JS number 精度、时区歧义)。 - MIME/编码显式声明(响应体类型不靠猜)。 ### 3. 错误契约 - 统一错误码 + 错误体结构;区分业务错误与系统错误。 - 前端按错误码分支,不靠 message 文本判断。 ### 4. 配置分层与"不过度" - 配置分层:与某子系统强相关的配置归其命名空间(如 LLM 配置与排序配置分离),避免大杂烩。 - "既不过度也不缺失":每个真实可变项可配,不为不存在的需求预埋开关。 - 敏感配置(密钥)**不进前端**,前端只按构建工具约定前缀暴露非敏感变量。 ### 5. 契约校验落点 - 服务端入参用 schema 校验(类型/必填/枚举),错误要可读(不是裸 500)。 - 有条件时用 OpenAPI/JSON Schema 作单一事实源,前后端各自生成/校验。 - 契��变更 → 契约测试先失败 → 双方同步 → 再合入(破坏性变更同步调用侧)。 ## 工作流 ``` Phase 1: 盘点接口与现存契约问题 Phase 2: 定义契约规范(字段/序列化/错误/配置) Phase 3: 落地校验(schema 校验 + 契约测试落点) Phase 4: 防错清单 + 变更流程(破坏性变更同步调用侧) ``` ## 联调防错清单 - [ ] 关键字段类型前后端一致(尤其 id/数字/布尔/枚举)。 - [ ] 数组元素结构一致(对象数组 vs 标量数组)。 - [ ] null/缺省/空值语义已约定。 - [ ] 时间/时区/数字精度格式已约定。 - [ ] 错误码结构统一,前端按码分支。 - [ ] 敏感配置未进前端;环境变量前缀正确。