---
name: rd-design
description: >-
  根据已批准需求和架构决策形成可进入实现阶段的详细设计。当软件或基础设施需要规定
  接口契约、数据模式、关键流程、状态机、配置契约、信任边界、错误、安全、可观测性、
  并发或恢复行为时使用。需求、方案选择、评审、代码实现和运行执行分别路由到其责任工作流。
---

# rd-design

基于已确认需求和技术方案产出**可进入建设阶段的详细设计**——接口定义、数据模型、关键流程、错误处理、安全设计和并发控制。

## 交付物

- 详细设计文档（接口 / 数据模型 / 流程 / 状态机）
- API 契约定义（OpenAPI / Protobuf / GraphQL Schema）
- 数据库 Schema 设计
- 安全、错误处理和可观测性设计章节
- 基础设施或集成相关任务的配置、迁移、核验和回退契约

## 执行步骤

### 1. 设计输入确认

- 确认已批准需求以及重要技术方案或概要设计（`rd-solution` 产出）
- 提取已确定的：架构决策、技术栈选型、约束条件
- 识别设计范围边界：本次设计覆盖哪些模块/服务
- 确认设计项可追溯到 PRD 或已批准的设计决策

**完成标准：** 每个范围内设计项均可追溯到已批准需求或决策；详细契约起草前，缺失的上游决策均已明确。

### 2. 接口设计

- 定义模块间接口契约（入参、出参、不变式、前置条件、后置条件、错误码、顺序和幂等性要求）
- 内部接口与外部接口分别标注
- API 版本策略说明
- 接口变更的向后兼容性约束

**完成标准：** 每个接口均有归属、输入、输出、不变式、失败行为、适用时的顺序或幂等语义，以及兼容性边界。

### 3. 数据模型设计

- 实体关系图（ER Diagram），标注主键、外键、索引
- 字段级设计：类型、长度、约束、默认值、是否可空
- 数据生命周期：创建 → 更新 → 归档 → 删除
- 数据一致性策略：强一致 / 最终一致 / 补偿

**完成标准：** 每个持久化或交换数据元素均有类型与约束语义、生命周期归属、适用时的关系或索引理由，以及明确的一致性模型。

### 4. 关键流程设计

- 核心业务流程的时序图或流程图
- 每个流程标注：正常路径、异常路径、超时处理
- 并发控制策略：锁类型、乐观/悲观、重试策略
- 幂等性设计：哪些操作必须幂等，如何保证

**完成标准：** 每个关键流程均覆盖成功、失败、超时、重试、并发和幂等行为，尤其是会改变系统状态的边界。

### 5. 状态机设计（如适用）

- 状态定义与合法转换
- 无效转换的处理策略
- 并发状态修改的冲突解决

**完成标准：** 每个状态和合法转换均有触发条件、守卫条件、效果、非法转换处理和并发冲突规则；不适用时已明确说明。

### 6. 安全性设计

通用软件安全设计要点：

| 维度 | 设计内容 |
|------|---------|
| 身份认证 | 认证方式选型、多因素认证需求、Token 过期策略 |
| 授权控制 | 权限模型（RBAC/ABAC）、最小权限原则 |
| 信任边界 | 参与者、区域、数据流、威胁假设和滥用场景 |
| 输入校验 | 校验规则、白名单/黑名单策略、注入防护 |
| 数据保护 | 数据分级、最小化、传输/存储加密、保留和日志脱敏 |
| 接口安全 | 速率限制、签名验证、CORS 策略 |
| 密钥与凭据 | 归属、存储、轮换、吊销和泄露处置 |
| 可审计性 | 审计事件、追踪链路、日志保留、敏感字段脱敏 |

**完成标准：** 每个信任边界和受保护资产均映射到适用的认证、授权、校验、保护、密钥或凭据、滥用场景和审计控制；未采用的控制已有基于风险的理由。

### 7. 错误处理设计

- 错误分类：可恢复 / 不可恢复 / 需人工介入
- 错误码体系设计
- 错误传播策略：向上传播 / 本层处理 / 降级
- 监控与告警触发条件

**完成标准：** 每类重要故障均有归属、传播或降级行为、用户或调用方可见性、可观测性，以及恢复或升级语义。

### 8. 配置与变更设计（如适用）

- 定义配置归属、唯一权威来源、模式、默认值、校验规则、环境差异和优先级
- 将密钥与普通配置分离，并定义凭据提供、轮换、吊销和脱敏边界
- 定义迁移阶段、兼容窗口、回退条件、恢复点和状态对账
- 规定预期观察和核验标准，但不把设计文档写成执行操作手册

**完成标准：** 配置与变更行为具有唯一权威来源、优先级和校验规则、凭据边界、兼容与回退条件，以及可观察的核验标准；不适用时已明确说明。

### 9. 设计验证说明

- 定义评审方如何验证设计：追踪矩阵、检查清单、走查、原型或外部标准核验
- 未决设计项必须标注决策依赖、核验动作，以及已知负责人或目标日期；未知时标记为待指定或待确认
- 标出进入实现前必须验证的假设

**完成标准：** 评审方能够核验每项重要契约和追踪关系；所有未决事项均有分配状态、依赖和核验动作。

## 上下文与基线检查

执行前检查：
- 项目设计规范和命名约定
- 已有的接口设计规范和 API 风格指南
- 数据库设计规范（命名、索引、分区策略）
- 已固化的架构决策
- 安全、隐私、合规或标准规范对设计的约束

## 工具选择

- 优先检查已批准需求、架构决策、数据模式和本地约定
- 外部标准或当前技术事实会实质约束设计时，使用 `rd-research`
- 仅在核实当前框架、库、SDK 或 API 行为时使用 Context7 或同类文档检索能力
- 外部仓库设计只能作为示例，必须结合本系统约束验证适用性

## 质量门禁

交付前核查：

- [ ] 接口契约完整（入参/出参/错误码/幂等性）
- [ ] 数据模型的规范化或反规范化选择有理由说明
- [ ] 关键流程覆盖正常/异常/超时路径
- [ ] 并发和幂等需求已处理
- [ ] 安全性维度已覆盖（至少：认证、授权、输入校验、数据保护）
- [ ] 错误处理策略明确
- [ ] 适用时已明确配置、迁移、恢复和回退契约
- [ ] 设计可追溯到需求（每个模块可关联到需求项）
- [ ] 未决设计项具有分配状态、依赖、核验动作，以及已知负责人或目标日期
- [ ] 文档细度足以支持评审方判断可行性和一致性

## 不做

- 缺少上游决策会使设计变成猜测时不得继续；不存在重要架构选择时，已批准需求可以作为充分输入
- 不留下无核验动作、无明确分配状态的“待定”
- 不设计不会用到的抽象层
- 不写实现代码、测试、部署命令或运维操作手册
