# Tasks: HTTP客户端模块化重构

**Input**: Design documents from `/specs/002-httpclient-http-api/`
**Prerequisites**: plan.md (✓), research.md (✓), data-model.md (✓), contracts/ (✓), quickstart.md (✓)

## Execution Flow (main)
```
1. Load plan.md from feature directory ✓
   → Tech stack: TypeScript 5.1+, Node.js 18.12+, Jest 29.7+
   → Libraries: axios, ethers, tweetnacl, https-proxy-agent, winston
   → Structure: src/core/http-client/, src/adapters/, src/types/
2. Load design documents ✓:
   → data-model.md: 6 entities (HttpClient, PlatformAccount, HTTPRequest, HTTPResponse, AuthenticationContext, PlatformConfiguration)
   → contracts/: http-client.contract.md, platform-adapter.contract.md
   → research.md: Adapter pattern, credential-manager integration, performance optimization
3. Generate tasks by category:
   → Setup: TypeScript environment, ESLint config, credential integration
   → Tests: Contract tests, integration scenarios, performance validation
   → Core: HTTP client refactor, platform adapters, authentication integration
   → Integration: Credential-manager connection, proxy support, logging
   → Polish: Performance benchmarks, documentation, quality validation
4. Apply task rules: Different files = [P], TDD order maintained
5. Number tasks sequentially (T001-T032)
6. Validate completeness ✓
```

## Format: `[ID] [P?] Description`
- **[P]**: Can run in parallel (different files, no dependencies)
- Include exact file paths in descriptions

## Phase 3.1: Setup

- [x] T001 Create `src/core/http-client/` module directory structure per plan.md
- [x] T002 Initialize TypeScript strict mode configuration in `src/core/http-client/tsconfig.json`
- [x] T003 [P] Configure ESLint rules for import/extensions, import/order, import/no-unresolved in `src/core/http-client/.eslintrc.json`
- [x] T004 [P] Set up Jest test configuration for HTTP client module in `tests/jest.config.http-client.js`

## Phase 3.2: Tests First (TDD) ⚠️ MUST COMPLETE BEFORE 3.3

**CRITICAL: These tests MUST be written and MUST FAIL before ANY implementation**

- [x] T005 [P] Contract test IUniversalHttpClient.request() in `tests/contract/http-client-core.contract.test.ts`
- [x] T006 [P] Contract test IUniversalHttpClient.batchRequest() in `tests/contract/http-client-batch.contract.test.ts`
- [x] T007 [P] Contract test IUniversalHttpClient.registerPlatform() in `tests/contract/http-client-platform.contract.test.ts`
- [x] T008 [P] Contract test IPlatformAdapter.request() in `tests/contract/platform-adapter-request.contract.test.ts`
- [x] T009 [P] Contract test IPlatformAdapter.prepareRequest() in `tests/contract/platform-adapter-auth.contract.test.ts`
- [x] T010 [P] Contract test IPlatformAdapter.setProxyConfig() in `tests/contract/platform-adapter-proxy.contract.test.ts`
- [x] T011 [P] Integration test Pacifica account balance query in `tests/integration/pacifica-balance.integration.test.ts`
- [x] T012 [P] Integration test multi-platform concurrent requests in `tests/integration/multi-platform-concurrent.integration.test.ts`
- [x] T013 [P] Integration test credential-manager authentication in `tests/integration/credential-auth.integration.test.ts`
- [x] T014 [P] Integration test proxy configuration and routing in `tests/integration/proxy-routing.integration.test.ts`

## Phase 3.3: Core Implementation (ONLY after tests are failing)

- [x] T015 [P] Extend HttpClientRequest interface in `src/types/httpClient.ts`
- [x] T016 [P] Extend HttpClientResponse interface in `src/types/httpClient.ts`
- [x] T017 [P] Define IPlatformAdapter interface in `src/types/platformAdapter.ts`
- [x] T018 [P] Define IUniversalHttpClient interface in `src/types/httpClientCore.ts`
- [ ] T019 Create HttpClientCore base class in `src/core/http-client/HttpClientCore.ts`
- [ ] T020 Create PlatformAdapterFactory in `src/core/http-client/PlatformAdapterFactory.ts`
- [ ] T021 Create AuthenticationManager in `src/core/http-client/AuthenticationManager.ts`
- [ ] T022 [P] Enhance PacificaAdapter with credential-manager integration in `src/adapters/pacifica/PacificaHttpAdapter.ts`
- [ ] T023 [P] Enhance AsterAdapter with credential-manager integration in `src/adapters/aster/AsterHttpAdapter.ts`
- [ ] T024 [P] Enhance BinanceAdapter with credential-manager integration in `src/adapters/binance/BinanceHttpAdapter.ts`
- [ ] T025 Refactor UniversalHttpClient to use HttpClientCore in `src/utils/universalHttpClient.ts`
- [ ] T026 Implement createPlatformAdapter factory method in `src/core/http-client/PlatformAdapterFactory.ts`

## Phase 3.4: Integration

- [ ] T027 Connect AuthenticationManager to credential-manager SignerFactory in `src/core/http-client/AuthenticationManager.ts`
- [ ] T028 Integrate proxy configuration from existing httpClient.ts in `src/core/http-client/ProxyManager.ts`
- [ ] T029 Add performance monitoring and metrics collection in `src/core/http-client/PerformanceMonitor.ts`
- [ ] T030 Integrate winston logging with structured request/response logging in `src/core/http-client/HttpLogger.ts`

## Phase 3.5: Polish

- [ ] T031 [P] Performance benchmark tests for <100ms response time in `tests/performance/response-time.performance.test.ts`
- [ ] T032 [P] Unit tests for error handling and retry logic in `tests/unit/error-handling.unit.test.ts`
- [ ] T033 [P] Unit tests for connection pooling in `tests/unit/connection-pool.unit.test.ts`
- [ ] T034 [P] Update quickstart.md examples with new API in `specs/002-httpclient-http-api/quickstart.md`
- [ ] T035 Run ESLint and fix all import/extensions violations across HTTP client module
- [ ] T036 Validate TypeScript strict mode compliance and remove any 'any' types
- [ ] T037 Execute quickstart scenarios from quickstart.md for acceptance validation

## Dependencies

**Critical Dependencies:**
- Setup (T001-T004) before all other phases
- Contract tests (T005-T010) before implementation (T015-T026)
- Integration tests (T011-T014) before implementation (T015-T026)
- Core interfaces (T015-T018) before implementations (T019-T026)

**Implementation Dependencies:**
- T019 (HttpClientCore) blocks T020, T021, T025
- T020 (PlatformAdapterFactory) blocks T026
- T021 (AuthenticationManager) blocks T027
- T022-T024 (Platform adapters) can run in parallel
- T025 (UniversalHttpClient refactor) needs T019, T020

**Integration Dependencies:**
- T027 (credential-manager) needs T021
- T028-T030 (supporting modules) can run in parallel
- Polish phase (T031-T037) after all implementation

## Parallel Execution Examples

```bash
# Phase 3.2: Launch contract tests together (all must fail initially)
Task: "Contract test IUniversalHttpClient.request() in tests/contract/http-client-core.contract.test.ts"
Task: "Contract test IUniversalHttpClient.batchRequest() in tests/contract/http-client-batch.contract.test.ts"
Task: "Contract test IUniversalHttpClient.registerPlatform() in tests/contract/http-client-platform.contract.test.ts"
Task: "Contract test IPlatformAdapter.request() in tests/contract/platform-adapter-request.contract.test.ts"

# Phase 3.3: Launch type definitions in parallel
Task: "Extend HttpClientRequest interface in src/types/httpClient.ts"
Task: "Define IPlatformAdapter interface in src/types/platformAdapter.ts"
Task: "Define IUniversalHttpClient interface in src/types/httpClientCore.ts"

# Phase 3.3: Launch platform adapters in parallel (after core interfaces)
Task: "Enhance PacificaAdapter with credential-manager integration in src/adapters/pacifica/PacificaHttpAdapter.ts"
Task: "Enhance AsterAdapter with credential-manager integration in src/adapters/aster/AsterHttpAdapter.ts"
Task: "Enhance BinanceAdapter with credential-manager integration in src/adapters/binance/BinanceHttpAdapter.ts"

# Phase 3.5: Launch polish tasks in parallel
Task: "Performance benchmark tests for <100ms response time in tests/performance/response-time.performance.test.ts"
Task: "Unit tests for error handling and retry logic in tests/unit/error-handling.unit.test.ts"
Task: "Unit tests for connection pooling in tests/unit/connection-pool.unit.test.ts"
```

## Notes

- **[P] tasks**: Different files, no dependencies, safe for parallel execution
- **TDD Order**: All contract and integration tests (T005-T014) must fail before starting implementation
- **Credential Integration**: Priority focus on integrating with existing `src/core/credential-manager/`
- **Performance Targets**: <100ms response time, 99.9% availability, 1000+ concurrent requests
- **Quality Gates**: ESLint compliance, TypeScript strict mode, no 'any' types
- **Architecture**: Adapter pattern with credential-manager deep integration

## Task Generation Rules Applied

1. **From Contracts**:
   - http-client.contract.md → T005-T007 (core client tests)
   - platform-adapter.contract.md → T008-T010 (adapter tests)

2. **From Data Model**:
   - HttpClient entity → T019 (HttpClientCore)
   - PlatformAccount entity → T022-T024 (platform adapters)
   - HTTPRequest/Response entities → T015-T016 (type definitions)
   - AuthenticationContext entity → T021 (AuthenticationManager)

3. **From Quickstart Scenarios**:
   - Multi-platform balance query → T011 (Pacifica integration test)
   - Concurrent requests → T012 (multi-platform test)
   - Authentication flow → T013 (credential integration test)
   - Proxy configuration → T014 (proxy routing test)

4. **From Research Decisions**:
   - Adapter pattern → T020 (PlatformAdapterFactory)
   - Performance optimization → T029 (PerformanceMonitor)
   - Credential-manager integration → T021, T027 (AuthenticationManager)

## Validation Checklist ✓

- [x] All contracts have corresponding tests (T005-T010)
- [x] All entities have model/implementation tasks (T015-T026)
- [x] All tests come before implementation (Phase 3.2 → 3.3)
- [x] Parallel tasks are truly independent (different files)
- [x] Each task specifies exact file path
- [x] No task modifies same file as another [P] task
- [x] TDD approach maintained (tests fail before implementation)
- [x] Credential-manager integration covered (T013, T021, T027)
- [x] Performance requirements addressed (T031, T036, T037)