# 多交易所Delta中性宪章
<!--
同步影响报告
版本: 1.5.0 → 1.6.0
修改原则:
- 增强原则一：添加防止过度设计的具体要求和AccountRegistry简化模式
- 新增架构简化强制性要求：必须定期审查和简化复杂抽象层
- 强化代码质量标准：明确模块化边界和依赖管理要求
添加章节: 架构简化和过度设计防护
删除章节: 无
需要更新的模板:
- ✅ .specify/templates/plan-template.md (已更新宪章版本引用 1.5.0 → 1.6.0)
- ✅ .specify/templates/spec-template.md (无需更改)
- ✅ .specify/templates/tasks-template.md (无需更改)
- ✅ .specify/templates/commands/*.md (无需更改)
后续TODOs: 无
-->

## 核心原则

### 一、优先架构与现实测试
系统设计必须以模块化、可维护和可扩展为核心，采用分层架构

遵循 SOLID 原则和设计模式。

追求高内聚低耦合的设计思维，编写结构良好、可集成、模块化程度高的代码。

为实际业务集成而设计，拒绝为了抽象而变复杂，完全避免过度设计。

系统必须支持模块化、组件化、服务化架构，优先考虑与现有系统的无缝集成，便于敏捷开发、持续集成和高扩展性。

核心HTTP客户端库必须维持企业级性能标准：响应时间<100ms、99.9%可用性、支持1000+并发请求。所有平台适配器必须实现统一接口，支持Ed25519（Pacifica）、EIP-191（Aster）、HMAC-SHA256（Binance）认证。代理管理必须包含负载均衡、健康检查、自动故障转移。

**过度设计防护要求：**
- 禁止创建不必要的抽象层和桥接模式，除非有明确的技术需求
- 优先使用简单的注册表模式（如AccountRegistry）而非复杂的工厂和适配器组合
- 每季度必须进行架构审查，识别和简化过度复杂的模块间交互
- 任何超过3层的调用链必须有明确的技术理由和性能证明
- 循环依赖必须在设计阶段就被识别和消除
- 接口设计必须直接支持业务需求，避免为了"未来扩展性"而增加当前不需要的复杂性

**TypeScript代码质量标准：**
- 必须使用严格的TypeScript配置，禁用any类型
- import语句必须不含文件扩展名，使用路径别名(@/)
- ESLint规则必须强制执行：import/extensions、import/order、import/no-unresolved
- 所有模块必须提供完整的类型定义和导出接口
- 代码格式化必须通过Prettier自动执行，保存时自动修复

测试必须使用现实环境：
- 优先使用真实数据库而非模拟
- 使用实际服务实例而非存根
- 实施前必须进行契约测试
- 集成测试必须覆盖真实工作流
- 性能测试必须在生产类似环境中进行
- 所有测试必须在CI中自动运行
- HTTP客户端库必须通过TDD开发，测试先行
- 契约测试必须先于实现，确保测试失败后再开发功能

### 二、Delta中性优先
所有策略必须在任何时候都针对所有连接的交易所和账户对保持总Delta ≈ 0。除非缓解订单已在途中并已记录，否则每个资产的净敞口必须保持在±0.0005 BTC等值内。当利用率或敞口突破配置阈值时，必须立即进行重新平衡。

### 三、确定性市场数据摄取
系统必须维持每个交易场所的连续、低延迟订单簿访问（WebSocket主要，5秒内HTTP回退）。订单簿快照必须验证单调买卖价和深度新鲜度<2秒。任何降级的数据源必须在新交易执行前自动触发回退和警报。通用HTTP客户端必须支持实时数据流、批量请求处理和连接池管理。

### 四、资金保护与风险控制
每个账户必须执行可配置的头寸、杠杆和回撤上限。紧急止损路径必须在触发后30秒内取消或对冲剩余敞口。所有订单流必须携带幂等标识符和回滚计划，以防止部分失败期间的孤立敞口。HTTP客户端必须实现全面错误处理、自动重试机制和熔断器模式。

### 五、透明可观测性与安全审计
执行、对冲和清理服务必须为每个账户和交易所发出结构化日志、指标和健康信号。订单意图、成交、取消和余额快照必须通过关联ID进行端到端可追踪。历史操作必须通过持久化配置和可重放事件日志保持可重现性。HTTP客户端必须提供性能监控、SLA跟踪和实时健康检查。

**凭证管理安全要求：**
- 凭证管理模块必须支持多平台热加载，配置更新在100ms内完成
- 所有私钥和API密钥必须在静态时加密存储，传输时使用安全通道
- 签名操作必须在50ms内完成，支持Ed25519、EIP-191、HMAC-SHA256算法
- 平台检测必须智能识别账户类型，自动选择对应签名方法
- 凭证轮换程序必须每季度演练，支持零停机时间更新
- 审计日志必须记录所有凭证访问、签名操作和配置变更

### 六、架构简化强制要求
系统架构必须定期审查和简化，防止技术债务积累。

**简化审查要求：**
- 每个功能模块的调用链不得超过3层，除非有明确的性能或安全需求
- 任何包含超过2个中间层的模块间交互必须有简化计划
- 优先使用直接依赖注入而非复杂的工厂模式
- 账户管理必须使用简单注册表模式，避免复杂的适配器桥接
- 认证流程必须直接访问凭证，避免多层转换和包装

**强制简化标准：**
- 模块间耦合度评估：每月检查循环依赖和过度抽象
- 接口简化：所有对外接口必须直接对应业务需求
- 代码可读性：任何需要超过3层注释才能理解的代码架构必须重构
- 性能影响：架构复杂性不得影响50ms签名性能目标
- 维护成本：新功能添加不得因架构复杂性而需要修改超过5个模块

## 运营约束
平台必须维持高频信号评估（≤8秒循环），同时保持每次迭代计算在配置预算内。网络访问必须在需要时通过批准的代理路由，而不破坏延迟承诺。HTTP客户端代理池必须支持地理合规、IP轮换和自动故障转移。

敏感凭据必须在静态时保持加密，轮换程序必须每季度演练。交易日志的数据保留必须满足最少90天重放要求。HTTP客户端必须支持多种认证方式的安全存储和自动轮换。

API响应缓存必须考虑数据新鲜度要求，批量请求处理必须包含并发控制和错误隔离。连接池管理必须优化资源利用率并防止连接泄漏。

**代码质量保障：**
开发环境必须配置自动化代码质量检查，包括ESLint规则验证、TypeScript类型检查和Prettier格式化。所有Pull Request必须通过代码质量门槛，包含完整类型声明、规范的import语句和通过的测试覆盖率。工程师IDE必须配置统一的开发规范，确保代码一致性。

**架构健康监控：**
持续监控模块间依赖关系，自动检测循环依赖和过度耦合。每个模块的复杂度指标必须低于配置阈值，超出时必须触发重构警告。架构决策必须记录在案，包含简化方案的评估过程。

## 工作流程与质量门槛
规划产物必须在开发开始前明确将功能映射到这些原则。规格必须声明敞口限制、数据源和测试矩阵。计划和任务必须安排对冲、订单清理、可观测性改进以及HTTP客户端库性能验证的TDD覆盖。

拉取请求必须包含证据（日志、测试输出或仪表板），显示对原则一至六的持续合规性。任何偏差都需要在合并前记录缓解措施。HTTP客户端库的更改必须包含性能基准测试和向后兼容性验证。

新的平台集成必须完整实现数据接口（价格、订单簿、K线、交易历史）和操作接口（订单创建、修改、取消、批量操作），包括WebSocket实时数据流和全面的错误处理。

**代码审查标准：**
代码审查必须验证TypeScript类型安全、import语句规范性、ESLint合规性和测试覆盖率。凭证管理相关代码必须经过安全审查，确保敏感信息处理符合最佳实践。所有模块化组件必须提供清晰的导出接口和使用文档。

**架构审查要求：**
每个Pull Request必须评估架构复杂性影响，确保不引入不必要的抽象层。重构请求必须包含简化前后的复杂度对比和性能影响分析。新增依赖必须证明其必要性，避免为解决简单问题而引入复杂方案。

## 治理
本宪章取代交易堆栈的先前流程指导。修正案需要维护者共识、对保障措施影响的文档以及对依赖模板的更新。版本控制遵循SemVer：主要版本用于原则删除/不兼容治理，次要版本用于新原则或重大范围增加，补丁版本用于澄清。

合规性审查必须至少每月进行一次，检查敞口报告、健康警报、测试覆盖率变化以及HTTP客户端库性能指标。偏差必须记录修复负责人和时间线。库的发布必须遵循语义版本控制，包含完整的变更日志和迁移指南。

代码质量合规性检查必须包括ESLint规则遵守率、TypeScript编译错误率、import语句规范性和测试覆盖率指标。凭证管理模块的安全审查必须验证加密存储、访问控制和审计日志完整性。

**架构治理要求：**
架构决策记录(ADR)必须包含简化方案的考虑过程。每季度架构审查必须评估系统整体复杂度趋势，制定简化路线图。任何新增的抽象层必须通过架构委员会审批，证明其不可替代性。

**版本**: 1.6.0 | **批准**: 2025-09-29 | **最后修订**: 2025-09-29