
# 实施计划： [FEATURE]

**分支**：`[###-feature-name]` | **日期**： [DATE] | **规范**： [link]
**输入**：`/specs/[###-feature-name]/spec.md` 中的功能规范

## 执行流程（/plan 命令作用范围）
```
1. 从 Input 路径加载功能规范
   → 如果缺失：ERROR "No feature spec at {path}"
2. 填写技术背景（扫描 NEEDS CLARIFICATION）
   → 根据文件结构或上下文判断项目类型（web=前后端，mobile=App+API）
   → 根据项目类型给出结构决策
3. 根据宪章内容完成 Constitution Check 部分（原则 I–V、运营约束、流程质量门槛、治理要求）
4. 评估 Constitution Check
   → 若存在违例：记录在 Complexity Tracking
   → 若无法给出理由：ERROR "Simplify approach first"
   → 更新 Progress Tracking：Initial Constitution Check
5. 执行 Phase 0 → research.md（确保记录行情数据源、敞口目标与风险约束）
   → 若仍有 NEEDS CLARIFICATION：ERROR "Resolve unknowns"
6. 执行 Phase 1 → contracts、data-model.md、quickstart.md、agent 文件
7. 再次评估 Constitution Check
   → 若出现新违例：回到 Phase 1 调整
   → 更新 Progress Tracking：Post-Design Constitution Check
8. 规划 Phase 2 → 描述任务生成策略（不要创建 tasks.md）
9. 停止 - 准备执行 /tasks 命令
```

**重要提示**：/plan 命令到步骤 7 即结束。后续阶段由其他命令完成：
- Phase 2：/tasks 生成 tasks.md
- Phase 3-4：按计划实施

## 总结
构建多平台账户凭据管理与签名服务，专注于单一职责：账户凭据注入、平台分类管理、签名服务。系统从外部配置文件读取凭据信息，支持Pacifica（Ed25519）、Aster（EIP-191）、Binance（HMAC-SHA256）、OKX等平台的签名算法，提供统一的签名接口和配置热重载功能。

## 技术背景
**语言/版本**： TypeScript 5.1, Node.js 18.12+
**主要依赖**： bs58, tweetnacl, ethers, axios, winston, dotenv, ccxt
**存储**： 文件系统（外部配置）+ Redis（缓存）+ PostgreSQL（审计日志）
**测试框架**： Jest 29.7 + ts-jest
**目标平台**： Linux server（生产）+ macOS/Windows（开发）
**项目类型**： 单体后端服务（凭据管理器）
**性能目标**： 签名响应时间 <50ms，支持 <100 QPS 并发请求
**约束条件**： AES-256加密存储，99.95%可用性，配置热重载 <5秒
**规模/范围**： 多交易所（4+），多账户类型，可插拔签名适配器

## 宪章核对（Constitution Check）
*关卡：必须在 Phase 0 前通过，并在 Phase 1 后再次确认。*

### I. Delta-Neutral First
- ⚠️ **不适用**: 本功能为凭据管理服务，不涉及交易执行或敞口管理
- ✅ **符合**: 为交易系统提供底层支持，不破坏Delta中性策略
- ✅ **符合**: 提供统一签名服务，支持对冲交易的权限管理

### II. Deterministic Market Data Intake
- ⚠️ **不适用**: 本功能不涉及市场数据获取
- ✅ **符合**: 不干扰现有行情数据流，仅提供账户凭据支持
- ✅ **符合**: 签名服务响应时间<50ms，不影响交易延迟

### III. Capital Protection & Risk Controls
- ✅ **符合**: 提供平台级权限控制，防止未授权账户访问
- ✅ **符合**: 凭据加密存储（AES-256），防止私钥泄露风险
- ✅ **符合**: 审计日志记录所有签名操作，支持风险追踪
- ✅ **符合**: 支持账户状态监控和紧急禁用机制

### IV. Transparent Observability & Audit
- ✅ **符合**: 所有签名操作必须记录审计日志（24个月保留）
- ✅ **符合**: 提供结构化日志，包含签名请求、权限验证、账户使用
- ✅ **符合**: 支持凭据生命周期管理的完整追踪
- ✅ **符合**: 配置文件变化和热重载操作的监控记录

### V. Tested Execution Paths
- ✅ **符合**: 每个平台签名适配器必须通过单元测试和集成测试
- ✅ **符合**: 凭据注入和权限验证的自动化测试覆盖
- ✅ **符合**: 多环境隔离测试，防止开发/生产凭据混用
- ✅ **符合**: 新交易所接入前必须完成签名算法验证测试

**初步评估**: ✅ 通过 - 功能作为基础设施服务，与宪章原则兼容，为交易系统提供安全的凭据管理支持

### 设计后再次核对
*基于 Phase 1 完成后的数据模型和契约设计*

**评估结果**: ✅ 设计符合宪章要求
- **Delta-Neutral First**: 签名服务支持对冲交易的快速签名，不干扰Delta中性策略
- **Deterministic Market Data**: 不涉及市场数据，签名响应时间<50ms，不影响交易时效性
- **Capital Protection & Risk Controls**:
  - PlatformCredentialSchema 强制执行凭据格式验证
  - PermissionPolicy 实体确保权限控制和资源访问限制
  - AuditLog 实体提供完整的操作追踪和合规检查
- **Transparent Observability**:
  - 所有签名操作记录结构化审计日志
  - 权限验证过程完全可追踪
  - 配置变更和系统状态完整监控
- **Tested Execution Paths**:
  - quickstart.md 涵盖8个关键测试场景
  - 包含故障处理和恢复验证
  - 多平台签名算法的完整测试覆盖

**无新发现的违例或复杂度问题**

## 项目结构

### 文档（本功能）
```
specs/[###-feature]/
├── plan.md              # 本文件（/plan 输出）
├── research.md          # Phase 0 输出（/plan）
├── data-model.md        # Phase 1 输出（/plan）
├── quickstart.md        # Phase 1 输出（/plan）
├── contracts/           # Phase 1 输出（/plan）
└── tasks.md             # Phase 2 输出（/tasks，非 /plan 生成）
```

### 源码目录（仓库根目录）
```
src/
├── app/
│   └── main.ts              # 主入口点和HTTP服务器
├── core/
│   ├── credential-manager.ts # 凭据管理器（主服务）
│   ├── config-loader.ts     # 配置文件加载和热重载
│   └── signature-adapters/  # 签名适配器
│       ├── pacifica.ts      # Pacifica Ed25519签名
│       ├── aster.ts         # Aster EIP-191签名
│       ├── binance.ts       # Binance HMAC-SHA256签名
│       └── okx.ts           # OKX签名适配器
├── shared/
│   ├── types.ts             # 类型定义
│   ├── constants.ts         # 常量定义
│   └── utils.ts             # 工具函数
└── api/
    ├── routes.ts            # API路由定义
    └── handlers.ts          # 请求处理器

__tests__/
├── unit/                    # 单元测试
├── integration/             # 集成测试
└── fixtures/               # 测试数据
```

**结构决策**：采用简化的单体服务架构，专注于核心功能。credential-manager.ts 作为主服务，集成配置加载、账户管理和签名调度。signature-adapters/ 目录包含各平台的签名实现，保持良好的扩展性。

## Phase 0：概述与调研
1. **从技术背景提取未知项**：
   - 每个 NEEDS CLARIFICATION → 研究任务
   - 每个新依赖 → 最佳实践任务
   - 每个外部集成 → 设计模式任务
2. **生成调研任务**：
   ```
   对每个未知项：
     任务：调研 {未知点} 在 {功能背景} 的最佳做法
   对每个技术选项：
     任务：收集 {技术} 在 {领域} 的最佳实践
   ```
3. **整理输出**至 `research.md`：
   - 决策：选择方案
   - 理由：为何选择
   - 备选：评估过的其他方案

**产出**：research.md，所有未知项已解决

## Phase 1：设计与契约
*前提：research.md 已完成*

1. **从功能规范提取实体** → `data-model.md`
   - 实体名称、字段、关系
   - 验证规则
   - 状态变化若有
2. **从需求生成 API 契约**
   - 每个用户行为 → 对应接口
   - REST/GraphQL 等标准格式
   - 输出到 `/contracts/`
3. **从契约生成契约测试**
   - 每个接口一个测试文件
   - 校验请求/响应结构
   - 测试必须先失败
4. **从用户故事提取测试场景**
   - 每个故事 → 集成测试场景
   - Quickstart 测试 = 验收步骤
5. **增量更新 agent 文件**（O(1) 操作）：
   - 运行 `.specify/scripts/bash/update-agent-context.sh cursor`
   - 仅添加本轮新增技术信息
   - 保留手工补充内容
   - 记录最近 3 次变更
   - 保持文件在 150 行以内

**产出**：data-model.md、/contracts/*、失败的契约测试、quickstart.md、更新后的 agent 文件

## Phase 2：任务规划方法
*说明 /tasks 命令的工作方式（本阶段不执行）*

**任务生成策略**：
基于简化设计文档生成实现任务：

### 核心模块任务（基于 data-model.md）
1. **数据模型层** [P]：
   - PlatformAccount 实体实现
   - SignatureAdapter 接口定义
   - ConfigManager 配置管理器

2. **签名适配器** [P]：
   - PacificaAdapter: Ed25519 签名实现
   - AsterAdapter: EIP-191 签名实现
   - BinanceAdapter: HMAC-SHA256 签名实现
   - OkxAdapter: OKX 特有签名实现

### 契约测试任务（基于 contracts/）
1. **签名服务契约** [P]: signature-service.md → 测试多平台签名和批量操作
2. **配置管理契约** [P]: 配置加载、热重载、状态查询测试

### 集成测试任务（基于 quickstart.md）
1. **配置文件加载**: 多平台账户注入测试
2. **Pacifica签名**: Ed25519 签名流程测试
3. **Aster签名**: EIP-191 签名验证测试
4. **Binance签名**: HMAC-SHA256 签名测试
5. **配置热重载**: 文件监控和动态更新测试
6. **批量签名性能**: 并发处理性能测试
7. **故障恢复**: 错误处理和降级运行测试

### 实现顺序策略
**Phase A - 核心功能** [2周]：
- 配置加载和数据模型
- 4个平台的签名适配器
- 主服务和API接口

**Phase B - 集成测试** [1周]：
- 契约测试覆盖
- 端到端集成测试
- 性能验证和调优

**预估输出**：
- tasks.md：约 15-18 个有序任务
- 总工期：3周，简化实现
- 关键路径：配置加载 → 签名适配器 → API集成

**质量门控**：
- 签名适配器单元测试覆盖率 >90%
- Quickstart 场景 100% 通过
- 签名性能 <50ms 要求

**注意**：Phase 2 具体任务由 /tasks 命令生成，此处仅描述生成策略

## Phase 3+：后续实施
*超出 /plan 命令范围*

**Phase 3**：执行 /tasks 生成 tasks.md  
**Phase 4**：按 tasks.md 实施  
**Phase 5**：验证（运行测试、执行 quickstart、性能验证）

## 复杂度追踪
*仅在 Constitution Check 有违例时填写*

| 违例 | 原因 | 被否决的简单方案 |
|------|------|------------------|
| [示例：新增第 4 个项目] | [现实需求] | [为何前三个不足] |

## 进度追踪
*执行流程中的状态记录*

**阶段状态**：
- [x] Phase 0：调研完成 (/plan) - 2025-09-28 ✅
- [x] Phase 1：设计完成 (/plan) - 简化设计文档完成 ✅
- [x] Phase 2：任务规划完成 (/plan，仅描述方法) - 简化策略已制定 ✅
- [ ] Phase 3：任务已生成 (/tasks) - 待执行
- [ ] Phase 4：实现完成 - 预计3周（简化）
- [ ] Phase 5：验证通过 - 依赖实现完成

**关卡状态**：
- [x] 初次宪章核对：通过 ✅
- [x] 设计后宪章核对：通过 ✅
- [x] 所有 NEEDS CLARIFICATION 已解决 ✅
- [x] 复杂度偏差已记录：无偏差，已简化设计 ✅

**简化成果**:
- 数据模型：从7个实体简化为3个核心实体
- API契约：从3个复杂契约简化为1个签名服务契约
- 测试场景：从8个复杂场景简化为7个核心场景
- 实施周期：从8周简化为3周

**当前状态**: ✅ /plan 阶段完成（简化版），准备执行 /tasks 命令生成具体实现任务

---
*基于宪章 v1.0.0 - 详见 `/memory/constitution.md`*
