
# 实施计划：通用HTTP客户端模块化重构

**分支**：`002-httpclient-http-api` | **日期**： 2025-09-29 | **规范**： [spec.md](./spec.md)
**输入**：`/specs/002-httpclient-http-api/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：按计划实施

## 总结
重构现有的HTTP客户端库，使其更加模块化并与credential模块紧密配合，支持多平台交易签名。基于功能规范，系统需要支持Pacifica、Aster、Binance三个平台的HTTP API调用，通过统一接口实现平台特定的认证和请求处理，确保高性能(<100ms响应时间)、高可用性(99.9%)和高并发(1000+请求)。技术方案将采用适配器模式重构现有UniversalHttpClient，深度集成credential-manager模块，实现智能重试、全面日志记录和分层代理支持。

## 技术背景
**语言/版本**： TypeScript 5.1+ with Node.js 18.12+
**主要依赖**： axios, ethers, tweetnacl, @noble/secp256k1, https-proxy-agent, winston
**存储**： 内存缓存 + 文件系统配置存储
**测试框架**： Jest 29.7+ with contract testing, integration testing
**目标平台**： Node.js 服务器环境
**项目类型**： 单体项目，模块化库设计
**性能目标**： <100ms响应时间，99.9%可用性，1000+并发请求
**约束条件**： 5秒连接超时，30秒读取超时，15秒写入超时，支持HTTP代理
**规模/范围**： 3个交易平台适配器，统一HTTP客户端接口，credential-manager深度集成

**技术架构决策**：
- 采用适配器模式重构现有UniversalHttpClient
- 与credential-manager模块深度集成进行认证和签名
- 支持Ed25519(Pacifica)、EIP-191(Aster)、HMAC-SHA256(Binance)认证
- 实现智能重试策略：网络错误指数退避，认证错误立即失败
- 分层代理支持：全局代理+账户专用代理
- 完整的请求/响应日志记录，包含敏感数据(30天保留)

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

### 原则一：优先架构与现实测试 ✅
- **高内聚低耦合**：采用适配器模式，各平台适配器独立，通过统一接口交互
- **企业级性能标准**：目标<100ms响应时间，99.9%可用性，1000+并发请求
- **统一认证接口**：支持Ed25519(Pacifica)、EIP-191(Aster)、HMAC-SHA256(Binance)
- **TypeScript代码质量**：严格类型配置，无any类型，完整类型定义和导出接口
- **测试驱动开发**：契约测试先行，集成测试覆盖真实工作流，TDD开发模式

### 原则二：Delta中性优先 ✅
- **支持交易操作**：HTTP客户端为多平台交易提供基础通信能力
- **实时性要求**：满足高频交易场景的低延迟要求

### 原则三：确定性市场数据摄取 ✅
- **低延迟通信**：WebSocket和HTTP回退支持，确保数据连续性
- **批量请求处理**：支持并发请求管理和连接池优化

### 原则四：资金保护与风险控制 ✅
- **全面错误处理**：智能重试机制、熔断器模式、自动故障转移
- **审计追踪**：完整的请求/响应日志记录，包含敏感数据

### 原则五：透明可观测性与安全审计 ✅
- **凭证管理集成**：与credential-manager深度集成，支持多平台热加载
- **安全存储**：静态加密存储，传输时安全通道
- **性能监控**：SLA跟踪、实时健康检查、性能基准测试
- **审计日志**：记录所有凭证访问、签名操作和配置变更

### 运营约束检查 ✅
- **高频评估**：支持≤8秒循环的高频信号评估
- **代理合规**：支持地理合规、IP轮换和自动故障转移
- **凭证轮换**：支持季度演练和零停机时间更新
- **数据保留**：满足90天重放要求，30天日志保留

### 代码质量保障 ✅
- **ESLint配置**：强制执行import/extensions、import/order、import/no-unresolved规则
- **TypeScript严格模式**：禁用any类型，使用路径别名(@/)
- **自动格式化**：Prettier集成，保存时自动修复

## 项目结构

### 文档（本功能）
```
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/
├── core/
│   ├── credential-manager/     # 现有凭证管理模块
│   └── http-client/           # 重构后的HTTP客户端模块
├── adapters/                  # 平台适配器
│   ├── base/                  # 基础适配器
│   ├── pacifica/              # Pacifica适配器
│   ├── aster/                 # Aster适配器
│   └── binance/               # Binance适配器
├── types/                     # 类型定义
├── utils/                     # 工具函数
└── examples/                  # 示例代码

tests/
├── contract/                  # 契约测试
├── integration/               # 集成测试
└── unit/                      # 单元测试
```

**结构决策**：采用单体项目模块化设计，基于现有`src/`目录结构，新增`core/http-client/`模块，重构现有`utils/httpClient.ts`和`utils/universalHttpClient.ts`到模块化架构。充分利用现有`adapters/`目录和`core/credential-manager/`集成。

## 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]
- 每个用户故事 → 集成测试任务
- 实现任务遵循测试先行

**基于现有分析的任务规划策略**：

### 1. 核心架构任务
- **HttpClientCore重构**：基于research.md中的分层架构设计
- **平台适配器工厂**：完善universalHttpClient.ts中未实现的createPlatformAdapter
- **CredentialManager集成**：建立HTTPClient与credential-manager的深度集成

### 2. 契约测试优先策略
- **HTTP客户端契约**：基于contracts/http-client.contract.md生成TDD测试
- **平台适配器契约**：基于contracts/platform-adapter.contract.md生成适配器测试
- **认证集成契约**：验证与credential-manager的签名接口

### 3. 实现任务依赖顺序
1. **基础类型定义** [P] - 扩展现有types/httpClient.ts
2. **核心HTTP客户端** - 重构universalHttpClient.ts架构
3. **平台适配器** [P] - 增强现有adapters/目录实现
4. **认证集成** - 集成core/credential-manager/
5. **性能优化** [P] - 连接池、缓存、监控
6. **集成测试** - 多平台端到端测试

### 4. 质量保障任务
- **ESLint规则验证**：确保符合宪章的代码质量要求
- **TypeScript严格模式**：移除any类型，完善类型定义
- **性能基准测试**：验证<100ms响应时间，1000+并发支持

**排序策略**：
- TDD 顺序：先测试再实现
- 依赖顺序：类型 → 核心 → 适配器 → 集成
- [P] 用于描述可并行的工作
- 优先处理现有代码重构，后增加新功能

**预估输出**：tasks.md，约 28-32 个有序任务，重点关注模块化重构和credential集成

**注意**：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.5.0 - 详见 `/memory/constitution.md`*
