Your Name
841d75191e
refactor: 使用结构化日志替代标准 log 包
...
将所有 log.Printf/Println 调用替换为 logging.Logger 结构化日志输出:
- internal/middleware/auth.go: AUTH_WARNING 和 AUTH_ERROR 日志
- internal/middleware/middleware.go: Recovery 中间件 panic 日志
- internal/domain/account.go: emitAudit 审计错误日志
- internal/domain/settlement.go: emitAudit 审计错误日志
- internal/domain/package.go: emitAudit 审计错误日志
- internal/domain/compensation.go: 补偿处理器所有日志
- internal/compensation/compensation.go: 补偿执行器所有日志
- internal/outbox/outbox.go: OutboxProcessor 所有日志
- internal/iam/middleware/scope_auth.go: WILDCARD_SCOPE_ACCESS 审计日志
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-13 09:49:58 +08:00
Your Name
116eabf427
refactor(httpapi): 统一错误码格式
...
1. 创建 error_codes.go 定义标准化错误码常量
2. 替换所有硬编码错误码为常量引用
3. 修复 goroutine 未传递 context 的问题
错误码格式:
- HTTP 层通用错误: SUP_HTTP_XXXX
- 业务错误码: SUP_XXX_NNNN
修复:
- db_token_backend.go: goroutine 使用 ctx 而非 context.Background()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-12 23:04:59 +08:00
Your Name
eefb68c5b3
test(supply-api): extend auth and iam guard coverage
...
Add nil and wildcard coverage for IAM claims helpers, ensure auth security tests run with authentication enabled, and make settlement mocks express pending-withdraw/error branches explicitly.
2026-04-11 09:34:13 +08:00
Your Name
4adeee2e06
fix: close p0 auth and release gate gaps
2026-04-11 09:25:31 +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
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
8ac23bf7d4
test: improve coverage and fix sanitizer bug
...
- Fix MaskMap to properly handle []string sensitive fields
- Add missing slice handling in sanitizer
- Add comprehensive tests for GetMetrics and CreateEventsBatch
- Improve audit/handler coverage from 49.8% to 68.8%
- Fix test expectations to match actual sanitizer behavior
- All tests pass
2026-04-08 07:44:58 +08:00
Your Name
d5b5a8ece0
fix: 系统性修复安全问题、性能问题和错误处理
...
安全问题修复:
- X-Forwarded-For越界检查(auth.go)
- checkTokenStatus Context参数传递(auth.go)
- Type Assertion安全检查(auth.go)
性能问题修复:
- TokenCache过期清理机制
- BruteForceProtection过期清理
- InMemoryIdempotencyStore过期清理
错误处理修复:
- AuditStore.Emit返回error
- domain层emitAudit辅助方法
- List方法返回空slice而非nil
- 金额/价格负数验证
架构一致性:
- 统一使用model.RoleHierarchyLevels
新增功能:
- Alert API完整实现(CRUD+Resolve)
- pkg/error错误码集中管理
2026-04-07 07:41:25 +08:00
Your Name
f34333dc09
fix: 修复代码审查中发现的P0/P1/P2问题
...
修复内容:
1. P0-01/P0-02: IAM Handler硬编码userID=1问题
- getUserIDFromContext现在从认证中间件的context获取真实userID
- 添加middleware.GetOperatorID公开函数
- CheckScope方法添加未认证检查
2. P1-01: 审计服务幂等竞态条件
- 重构锁保护范围,整个检查和插入过程在锁保护下
- 使用defer确保锁正确释放
3. P1-02: 幂等中间件响应码硬编码
- 添加statusCapturingResponseWriter包装器
- 捕获实际的状态码和响应体用于幂等记录
4. P2-01: 事件ID时间戳冲突
- generateEventID改用UUID替代时间戳
5. P2-02: ListScopes硬编码
- 使用model.PredefinedScopes替代硬编码列表
所有supply-api测试通过
2026-04-03 12:25:22 +08:00
Your Name
d44e9966e0
fix(security): 修复多个MED安全问题
...
MED-03: 数据库密码明文配置
- 在 gateway/internal/config/config.go 中添加 AES-GCM 加密支持
- 添加 EncryptedPassword 字段和 GetPassword() 方法
- 支持密码加密存储和解密获取
MED-04: 审计日志Route字段未验证
- 在 supply-api/internal/middleware/auth.go 中添加 sanitizeRoute() 函数
- 防止路径遍历攻击(.., ./, \ 等)
- 防止 null 字节和换行符注入
MED-05: 请求体大小无限制
- 在 gateway/internal/handler/handler.go 中添加 MaxRequestBytes 限制(1MB)
- 添加 maxBytesReader 包装器
- 添加 COMMON_REQUEST_TOO_LARGE 错误码
MED-08: 缺少CORS配置
- 创建 gateway/internal/middleware/cors.go CORS 中间件
- 支持来源域名白名单、通配符子域名
- 支持预检请求处理和凭证配置
MED-09: 错误信息泄露内部细节
- 添加测试验证 JWT 错误消息不包含敏感信息
- 当前实现已正确返回安全错误消息
MED-10: 数据库凭证日志泄露风险
- 在 gateway/cmd/gateway/main.go 中使用 GetPassword() 代替 Password
- 避免 DSN 中明文密码被记录
MED-11: 缺少Token刷新机制
- 当前 verifyToken() 已正确验证 token 过期时间
- Token 刷新需要额外的 refresh token 基础设施
MED-12: 缺少暴力破解保护
- 添加 BruteForceProtection 结构体
- 支持最大尝试次数和锁定时长配置
- 在 TokenVerifyMiddleware 中集成暴力破解保护
2026-04-03 09:51:39 +08:00
Your Name
50225f6822
fix: 修复4个安全漏洞 (HIGH-01, HIGH-02, MED-01, MED-02)
...
- HIGH-01: CheckScope空scope绕过权限检查
* 修复: 空scope现在返回false拒绝访问
- HIGH-02: JWT算法验证不严格
* 修复: 使用token.Method.Alg()严格验证只接受HS256
- MED-01: RequireAnyScope空scope列表逻辑错误
* 修复: 空列表现在返回403拒绝访问
- MED-02: Token状态缓存未命中时默认返回active
* 修复: 添加TokenStatusBackend接口,缓存未命中时必须查询后端
影响文件:
- supply-api/internal/iam/middleware/scope_auth.go
- supply-api/internal/middleware/auth.go
- supply-api/cmd/supply-api/main.go (适配新API)
测试覆盖:
- 添加4个新的安全测试用例
- 更新1个原有测试以反映正确的安全行为
2026-04-03 07:52:41 +08:00
Your Name
ed0961d486
fix(supply-api): 修复编译错误和测试问题
...
- 添加 ErrNotFound 和 ErrConcurrencyConflict 错误定义
- 修复 pgx.NullTime 替换为 *time.Time
- 修复 db.go 事务类型 (pgx.Tx vs pgxpool.Tx)
- 移除未使用的导入和变量
- 修复 NewSupplyAPI 调用参数
- 修复中间件链路 handler 类型问题
- 修复适配器类型引用 (storage.InMemoryAccountStore 等)
- 所有测试通过
Test: go test ./...
2026-04-01 13:03:44 +08:00
Your Name
0196ee5d47
feat(supply-api): 完成核心模块实现
...
新增/修改内容:
- config: 添加配置管理(config.example.yaml, config.go)
- cache: 添加Redis缓存层(redis.go)
- domain: 添加invariants不变量验证及测试
- middleware: 添加auth认证和idempotency幂等性中间件及测试
- repository: 添加完整数据访问层(account, package, settlement, idempotency, db)
- sql: 添加幂等性表DDL脚本
代码覆盖:
- auth middleware实现凭证边界验证
- idempotency middleware实现请求幂等性
- invariants实现业务不变量检查
- repository层实现完整的数据访问逻辑
关联issue: Round-1 R1-ISSUE-006 凭证边界硬门禁
2026-04-01 08:53:28 +08:00
Your Name
e9338dec28
feat: sync lijiaoqiao implementation and staging validation artifacts
2026-03-31 13:40:00 +08:00