# 实施计划:凭证管理模块 **分支**:`001-credential-manager` | **日期**: 2025-09-28 | **规范**: [spec.md](./spec.md) **输入**:`/Users/he/projects/binance-api/specs/001-credential-manager/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:按计划实施 ## 总结 基于功能规范,需要实现一个凭证管理模块,支持多平台账户的热加载、智能平台识别和统一签名接口。关键需求包括:文件热加载(100ms内)、智能识别Pacifica/Aster/Binance平台、统一签名接口(50ms内)、账户信息查询功能。技术方案将基于TypeScript+Node.js实现,采用模块化设计支持Ed25519、EIP-191、HMAC-SHA256等多种签名算法。 ## 技术背景 **语言/版本**: TypeScript 5.1.0, Node.js 18.12+ **主要依赖**: tweetnacl (Ed25519), ethers (EIP-191), crypto (HMAC-SHA256), winston (日志), fs/chokidar (文件监控) **存储**: 文件系统 (JSON/YAML配置文件) **测试框架**: Jest 29.7.0 **目标平台**: Node.js server环境 **项目类型**: 单体项目 (交易系统模块) **性能目标**: 热加载<100ms, 签名操作<50ms **约束条件**: 内存占用<50MB, 支持热重载, 零停机时间 **规模/范围**: 支持50+账户, 3个交易平台, 并发签名请求 ## 宪章核对(Constitution Check) *关卡:必须在 Phase 0 前通过,并在 Phase 1 后再次确认。* ### 一、集成优先架构与现实测试 ✅ - **集成优先设计**: 凭证管理模块设计为可与现有交易系统无缝集成,提供统一接口而非复杂抽象 - **企业级性能**: 热加载<100ms, 签名操作<50ms 满足性能要求 - **统一接口**: 支持Ed25519、EIP-191、HMAC-SHA256认证,符合多平台适配器要求 - **现实测试**: 使用Jest进行TDD开发,契约测试覆盖真实工作流 ### 二、Delta中性优先 N/A - 凭证管理模块不直接涉及交易敞口,无Delta中性要求 ### 三、确定性市场数据摄取 N/A - 凭证管理模块不直接处理市场数据,但为数据摄取模块提供认证支持 ### 四、资金保护与风险控制 ✅ - **凭证安全**: 静态加密存储,支持季度轮换演练 - **错误处理**: 全面错误处理和自动重试机制 - **审计追踪**: 所有签名操作记录关联ID,支持端到端可追踪 ### 五、透明可观测性与审计 ✅ - **结构化日志**: 使用winston记录凭证加载、签名操作等关键事件 - **性能监控**: 提供热加载和签名操作的性能指标 - **健康检查**: 实时监控凭证状态和平台连接健康度 ### 运营约束检查 ✅ - **高频评估**: 支持8秒内快速账户查询和签名操作 - **凭证安全**: 配置文件加密存储,支持热重载无需重启 - **数据保留**: 操作日志满足90天重放要求 ## 项目结构 ### 文档(本功能) ``` specs/001-credential-manager/ ├── 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/ ├── core/ │ ├── credential-manager/ # 新增:凭证管理核心模块 │ └── ... ├── adapters/ │ ├── pacifica/ # 现有:Pacifica平台适配器 │ ├── aster/ # 待实现:Aster平台适配器 │ └── binance/ # 待实现:Binance平台适配器 ├── types/ │ ├── credential.ts # 新增:凭证相关类型定义 │ ├── platformAdapter.ts # 现有:平台适配器类型 │ └── ... ├── config/ │ ├── simpleEnv.ts # 现有:环境配置 │ └── credential-config.ts # 新增:凭证配置管理 └── utils/ ├── logger.ts # 现有:日志工具 └── ... tests/ ├── contract/ │ └── credential-manager.contract.test.ts # 新增:凭证管理契约测试 ├── integration/ │ └── credential-manager.integration.test.ts # 新增:集成测试 └── unit/ └── credential-manager.unit.test.ts # 新增:单元测试 ``` **结构决策**:采用方案1单体项目结构,在现有src/目录下新增core/credential-manager/模块,与现有adapters/、types/、utils/等目录协同工作。选择此结构因为:1)与现有代码库架构一致;2)便于与其他交易模块集成;3)符合模块化设计原则。 ## 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 claude` - 仅添加本轮新增技术信息 - 保留手工补充内容 - 记录最近 3 次变更 - 保持文件在 150 行以内 **产出**:data-model.md、/contracts/*、失败的契约测试、quickstart.md、更新后的 agent 文件 ## Phase 2:任务规划方法 *说明 /tasks 命令的工作方式(本阶段不执行)* **任务生成策略**: - 以 `.specify/templates/tasks-template.md` 为基线 - 根据 Phase 1 文档(契约、数据模型、quickstart)生成任务 - 每个实体 → 类型定义 + 实现任务 [P] - 每个契约接口 → 契约测试 + 实现任务 [P] - 每个用户故事 → 集成测试任务 - 核心功能遵循TDD:测试先行 **具体任务类型**: 1. **类型定义任务** [P]: Platform, Account, Credentials, Signer接口 2. **契约测试任务** [P]: ICredentialManager, ConfigLoader, SignerStrategy契约 3. **核心实现任务**: 凭证管理器、配置加载器、签名策略 4. **平台适配任务** [P]: Pacifica, Binance, Aster签名器实现 5. **集成测试任务**: 热加载、多平台签名、性能测试 6. **配置和文档任务**: TypeScript配置、导出设置 **排序策略**: - TDD 顺序:契约测试 → 类型定义 → 核心实现 → 平台适配 → 集成测试 - 依赖顺序:类型 → 接口 → 核心逻辑 → 平台特定 → 集成验证 - [P] 标记可并行执行的任务组 **预估输出**:tasks.md,约 28-32 个有序任务,包含: - 8个类型定义任务 - 6个契约测试任务 - 8个核心实现任务 - 6个平台适配任务 - 4个集成测试任务 **注意**:Phase 2 由 /tasks 完成,非 /plan 输出 ## Phase 3+:后续实施 *超出 /plan 命令范围* **Phase 3**:执行 /tasks 生成 tasks.md **Phase 4**:按 tasks.md 实施 **Phase 5**:验证(运行测试、执行 quickstart、性能验证) ## 复杂度追踪 *仅在 Constitution Check 有违例时填写* | 违例 | 原因 | 被否决的简单方案 | |------|------|------------------| | [示例:新增第 4 个项目] | [现实需求] | [为何前三个不足] | ## 进度追踪 *执行流程中的状态记录* **阶段状态**: - [x] Phase 0:调研完成 (/plan) - [x] Phase 1:设计完成 (/plan) - [x] Phase 2:任务规划完成 (/plan,仅描述方法) - [ ] Phase 3:任务已生成 (/tasks) - [ ] Phase 4:实现完成 - [ ] Phase 5:验证通过 **关卡状态**: - [x] 初次宪章核对:通过 - [x] 设计后宪章核对:通过 - [x] 所有 NEEDS CLARIFICATION 已解决 - [x] 复杂度偏差已记录 (无违例) --- *基于宪章 v1.4.0 - 详见 `/memory/constitution.md`*