Files
lijiaoqiao/reports/code_cleanup_manifest_2026-04-03.md
Your Name aecba5ff27 docs(review): add remediation plans and readiness artifacts
Add design, review, and production-readiness documents for the April remediation cycle.\nInclude supporting SQL and supply-api operational design notes so review conclusions and implementation guidance stay versioned together.
2026-04-13 18:54:45 +08:00

5.3 KiB
Raw Blame History

审计系统代码清理清单

日期2026-04-03 目标:基于审核报告 P0/P1 问题,制定代码修复计划 依据:audit_system_production_readiness_review_2026-04-03.md


一、需要修改的代码文件

1.1 P0 阻塞问题(必须修复后才能上线)

编号 文件 问题 修复操作
P0-01 internal/audit/repository/audit_repository.go SQL列名不一致before_data/after_data vs before_state/after_state 修改INSERT和SELECT SQLbefore_data 改为 before_stateafter_data 改为 after_state
P0-02 internal/audit/service/ 批量写入未实现10000 TPS目标无法达到 已实现 BatchBuffer50条/批5ms刷新测试通过
P0-03 internal/audit/repository/ 分区表未实现 实现按月分区的 audit_events 表(设计文档已更新为暂不分区的简化方案)
P0-04 reports/gates/ CI/CD Gate脚本缺陷bc依赖、缺少重试和超时 已在设计文档9.1节更新为 awk 方案,需同步更新脚本

P0-01 详细修复audit_repository.go

-- 第96行 INSERT SQL
-- 修改前:
before_data, after_data,
-- 修改后:
before_state, after_state,

-- 第226行 SELECT SQL
-- 修改前:
before_data, after_data,
-- 修改后:
before_state, after_state,

1.2 P1 高优先级问题

编号 文件 问题 修复操作
P1-01 internal/audit/service/metrics_service.go M-014过滤条件 已修复,使用 event_category + event_sub_category
P1-02 internal/audit/service/metrics_service.go M-015判断逻辑 已修复,使用 target_direct = TRUE
P1-03 internal/audit/service/metrics_service.go M-016分子分母定义 已确认按设计文档实现
P1-04 internal/audit/service/metrics_service.go M-013~M-016内存过滤 ⚠️ 待优化当前在内存中过滤SQL WHERE过滤需要更大改动
P1-05 internal/httpapi/supply_api.go 分页total不准确 已修复,使用 QueryWithTotal 返回的真实total
P1-06 internal/httpapi/supply_api.go JSONB表达式索引 ⚠️ 待实现需配合数据库schema更新

二、需要实现的新代码

2.1 BatchBuffer 批量写入Phase 2

文件internal/audit/service/batch_buffer.go(新建)

功能

  • 缓冲50条记录或5ms刷新间隔以先到者为准
  • 支持半同步和全异步模式
  • 线程安全使用channel

接口设计

type BatchBuffer struct {
    events    chan *AuditEvent
    flushTick *time.Ticker
    batchSize int
    timeout   time.Duration
}

func (b *BatchBuffer) Start(ctx context.Context) error
func (b *BatchBuffer) Add(event *AuditEvent) error
func (b *BatchBuffer) Flush() error
func (b *BatchBuffer) Close() error

2.2 异步写入队列Phase 3

文件internal/audit/service/async_writer.go(新建)

功能

  • 使用Go Channel作为内存队列
  • 后台goroutine消费并批量写入
  • 无Kafka依赖

接口设计

type AsyncWriter struct {
    eventCh  chan *AuditEvent
    buffer   *BatchBuffer
    workerCh chan struct{}
}

func (w *AsyncWriter) Start(ctx context.Context)
func (w *AsyncWriter) Emit(event *AuditEvent)
func (w *AsyncWriter) Stop()

三、需要清理/移除的代码

3.1 废弃的内存存储替换为DB-backed

文件 操作 原因
internal/audit/service/audit_service_memory.go 保留但标记废弃 生产环境使用DatabaseAuditService
internal/audit/memory_audit_store.go 保留但标记废弃 仅用于开发模式fallback

四、接口统一计划

4.1 审计接口统一方案A渐进式适配

目标:统一 audit.AuditStore(旧) 和 AuditStoreInterface(新)

步骤

  1. AuditStore 接口添加 BatchEmit 方法
  2. 创建 AuditStoreAdapter 适配旧实现
  3. 逐步将调用方迁移到新接口

涉及文件

  • internal/audit/audit.go定义AuditStore接口
  • internal/audit/service/audit_service_db.go实现AuditStoreInterface
  • cmd/supply-api/main.go(使用适配器连接)

五、修复优先级矩阵

P0 (阻断上线 - 修复后方可发布)
├── P0-01: SQL列名一致性
├── P0-02: BatchBuffer实现
└── P0-04: CI/CD Gate脚本

P1 (本周完成 - 影响性能和正确性)
├── P1-01: M-014过滤条件修复
├── P1-02: M-015判断逻辑修复
├── P1-03: M-016分母定义修复
├── P1-05: 分页total修复
└── P1-06: JSONB索引优化

P2 (按需 - 改进建议)
├── 实现异步写入队列Phase 3
└── 实现分区表数据量超1000万时

六、验证检查清单

修复完成后验证:

  • SQL列名一致性before_state / after_state
  • 批量写入50条/批5ms刷新
  • M-014过滤event_category='CRED' AND event_sub_category='INGRESS'
  • M-015过滤target_direct = TRUE
  • M-016分母严格区分 AUTH-QUERY-KEY
  • 分页total使用Query返回的total
  • CI/CD脚本使用awk无bc依赖

清理执行状态P0-01已完成2026-04-03 预计工作量P02天+ P13天+ P2按需