Commit Graph

16 Commits

Author SHA1 Message Date
Your Name
fc3c1fe0a8 docs(gates): consolidate legacy tok archives 2026-04-14 07:26:28 +08:00
Your Name
ec62c801d8 docs(gates): admit verified 2026-04 snapshots 2026-04-13 21:47:19 +08:00
Your Name
e54cba9feb docs(gates): admit local staging evidence 2026-04-13 21:45:35 +08:00
Your Name
af3b9943be chore(cleanup): resolve pending supply-api files 2026-04-13 21:20:24 +08:00
Your Name
ecdead0a03 docs(plan): define gate archive admission roadmap 2026-04-13 21:15:32 +08:00
Your Name
24e85cab43 docs(gates): backfill archive csv snapshots 2026-04-13 21:07:26 +08:00
Your Name
9ad3980ae2 docs(gates): add root archive index 2026-04-13 21:03:44 +08:00
Your Name
10d79be2c3 docs(cleanup): add committable cleanup plan 2026-04-13 20:31:05 +08:00
Your Name
73eac84361 docs: 验证所有PRD对齐问题
验证结果:
- TASK-32: INV-SET-003 金额平衡  已实现
- TASK-33: Outbox 消费幂等  FOR UPDATE SKIP LOCKED
- TASK-34: 分区清理任务  后台goroutine每小时运行
- TASK-35: Idempotency-Key  middleware正确实现

结论: PRD对齐问题已全部验证通过
2026-04-09 22:44:57 +08:00
Your Name
da385ee744 fix: P0-02 修复提现竞态条件
使用 SELECT ... FOR UPDATE SKIP LOCKED 实现原子化提现创建

问题:
- HasPendingOrProcessingWithdraw 和 CreateInTx 分开调用导致竞态
- 两个并发请求可能同时通过检查并创建提现

解决方案:
- 新增 CreateWithdrawTx 方法,先锁定 pending 记录再检查插入
- 使用 FOR UPDATE SKIP LOCKED 防止并发插入

涉及文件:
- internal/repository/settlement.go: 新增 CreateWithdrawTx
- internal/adapter/adapter.go: 实现 CreateWithdrawTx
- internal/domain/settlement.go: 使用 CreateWithdrawTx
- internal/storage/store.go: 实现内存存储版本
- sql/postgresql/settlement_withdraw_constraint_v1.sql: 文档说明

测试: go test -short ./... 通过
2026-04-09 22:16:08 +08:00
Your Name
2012e23278 feat: 更新TDD任务清单并验证所有安全问题
- TASK-25: domain覆盖率已达72.0% (目标70%+)
- TASK-27: DSN密码设计安全验证完成
- 确认请求超时中间件已正确实现
- 所有go vet问题已修复

剩余未解决项:
- SEC-005: 开发模式鉴权禁用(设计决定)
- SEC-010: TokenCache多实例(需Redis)
2026-04-09 20:44:11 +08:00
Your Name
e9523ea7a3 fix: 修复验证报告SEC-001和SEC-003安全问题
SEC-001: 移除硬编码"123456"测试码
- 修改DefaultSMSVerifier.Verify返回错误,强制要求配置真实SMS服务
- 添加ErrSMSServiceNotConfigured错误定义
- 更新相关测试使用mock SMS verifier

SEC-003: 添加IP欺骗防护
- AuthConfig添加TrustedProxies配置项
- getClientIP添加可信代理验证参数
- 仅在请求来自可信代理时信任X-Forwarded-For头
- 添加isTrustedProxy和containsCIDR辅助函数

架构重构:
- 创建internal/adapter包,包含存储适配器
- 创建internal/outbox包,包含OutboxProcessorRunner
- 创建internal/compensation包,包含补偿执行器
- main.go从891行减少到349行

TDD方法:
- 为每个修复编写测试用例
- 测试通过后再提交代码
2026-04-09 20:28:23 +08:00
Your Name
2f0011b118 docs: 更新项目状态报告 - P1 TODO已完成
修正TODO清单:
- Settlement.GetByID 测试  已完成
- Settlement.List 测试  已完成
- Settlement.GetBillingSummary 测试  已完成

所有测试均已存在并通过race检测
2026-04-08 18:42:16 +08:00
Your Name
85dac3ad44 fix: 修复 TimeoutMiddleware 并发问题并更新测试文档
问题修复:
- 修复 TimeoutMiddleware 死锁问题(嵌套锁调用)
- 修复竞态条件(responseSent 标志确保只发送一次响应)
- 基准测试超时从 5ms 改为 100ms 避免 race 检测不稳定

文档更新:
- 添加中间件并发测试要点(testing_strategy_v1.md)
- 添加 TimeoutMiddleware 并发安全经验(project_experience_summary.md)
- 更新测试覆盖率报告
- 新建项目状态报告
2026-04-08 18:20:40 +08:00
Your Name
698759b665 docs: refine testing strategy based on code review
Changes:
- docs/testing_strategy_v1.md v1.1:
  - Clarify test pyramid with build tags (unit/integration/e2e)
  - Add Middleware to priority module list
  - Add coverage run discrepancy warning (individual vs ./...)
  - Update action items to reflect completed work
  - Add race detector usage guidelines
  - Add test cleanup patterns

- reports/test_coverage_report_2026-04-08.md:
  - Clarify coverage run discrepancy (individual vs ./...)
  - Add dual columns: individual run vs combined run
  - Update status to  all key modules passing
  - Add week-over-week trending
  - Remove incorrect "emergency" status
2026-04-08 10:15:45 +08:00
Your Name
e21021c88c docs: add testing strategy and coverage report
- docs/testing_strategy_v1.md: comprehensive testing strategy
  - Test pyramid definition (Unit/Integration/E2E)
  - File naming conventions
  - Mock interface guidelines
  - Coverage requirements
  - Test execution commands
  - Common issues solutions

- reports/test_coverage_report_2026-04-08.md: current coverage status
  - Module-by-module breakdown
  - Coverage达标情况
  - Mock implementations inventory
  - Next action items

- CLAUDE.md: update test specifications
  - Add audit store mock signature
  - Detailed coverage targets per module
  - Test naming conventions
2026-04-08 10:08:33 +08:00