feat(billing): 完成异步结算与请求执行闭环
统一任务成功、Attempt 与结算 Outbox 的事务边界,增加多实例安全结算、人工复核、请求幂等与执行租约。钱包决策使用九位精确金额,并通过审计保护约束保留流水事实;同时补充管理接口、指标与 PostgreSQL 集成测试。
This commit is contained in:
@@ -182,6 +182,20 @@ func TestExecuteWithMockClientRejectsConcurrentTasksBeyondWalletBalance(t *testi
|
||||
if got := mockClient.calls.Load(); got != 1 {
|
||||
t.Fatalf("mock client calls = %d, want 1", got)
|
||||
}
|
||||
settlements, err := db.ClaimBillingSettlements(ctx, "wallet-execute-test", store.BillingSettlementBatchSize, store.BillingSettlementLockTimeout)
|
||||
if err != nil {
|
||||
t.Fatalf("claim billing settlements: %v", err)
|
||||
}
|
||||
processed := 0
|
||||
for _, settlement := range settlements {
|
||||
if err := db.ProcessBillingSettlement(ctx, settlement); err != nil {
|
||||
t.Fatalf("process billing settlement %s: %v", settlement.ID, err)
|
||||
}
|
||||
processed++
|
||||
}
|
||||
if processed != 1 {
|
||||
t.Fatalf("processed billing settlements = %d, want 1", processed)
|
||||
}
|
||||
|
||||
summary, err := db.GetWalletSummary(ctx, user, "resource")
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user