Project

General

Profile

CR #247 » E2E-campaign-chain_2026-10-17.txt

Redmine Admin, 10/18/2026 12:18 AM

 
# campaign → rewards 全鏈路真機端到端驗證(CR-046/CR-047/CR-049)
# 產生時間:2026-10-17 10:51:15 CST
# 腳本:ops/local/e2e/campaign_chain_e2e.sh
# 環境:Oracle 23ai(cc-oracle)/Kafka 4.3.1/campaign:8099、posting:8087、rewards:8091
# 判定原則:一律讀權威資料表,不讀日誌;退出碼 0=全通過


── P0 前置:服務健康 ──
✓ port 8099 /actuator/health(= 200)
✓ port 8087 /actuator/health(= 200)
✓ port 8091 /actuator/health(= 200)
RUN_ID = E510171050

── P1 退役今日生效之既有活動(避免疊加污染;本輪活動除外) ──
✓ 退役後「今日生效」活動數(= 0)

── P2 載體無關(AC 11):同戶、同額、兩個不同載體 → 回饋逐分一致 ──
✓ 建立 E2E-AC11-E510171050(= E2E-AC11-E510171050)
✓ 核准 E2E-AC11-E510171050(ACTIVE)(= ACTIVE)
✓ 入帳#1 已產生 postingId(= 36 ≥ 32)
✓ 入帳#2 已產生 postingId(= 36 ≥ 32)
✓ 兩筆指令皆已派發(SENT=2)
✓ 指令數(每載體各一筆)(= 2)
✓ 指令涵蓋之載體數(= 2)
✓ rewards 已入點 246(123+123)
✓ 載體#1 之回饋點數(= 123)
✓ 載體#2 之回饋點數(= 123)
✓ 兩載體逐分一致(= 123)

── P3 比率 + 上限(CR-047):比率 5%/PER_HOUSEHOLD 1,000 分 → 第二筆精確截斷 ──
✓ 建立 E2E-AC12-E510171050(= E2E-AC12-E510171050)
✓ 核准 E2E-AC12-E510171050(ACTIVE)(= ACTIVE)
✓ 比率檔已就緒(= 1)
✓ 入帳#1 已產生 postingId(= 36 ≥ 32)
✓ 比率路徑入點 6 點(617 分 ÷ 100)
✓ 上限用量已由 points.accrued 回填 600 分
✓ 入帳#2 已產生 postingId(= 36 ≥ 32)
✓ 上限截斷:指令仍僅 1 筆(600+617 > 1000)(= 1)
✓ 上限截斷:rewards 點數仍為 6(未重複入點)(= 6)

── P4 回沖(SCS-026 §7.14):CLAW_BACK → refund 指令 → rewards 反向扣回 ──
✓ 建立 E2E-AC13-E510171050(clawback=CLAW_BACK)(= E2E-AC13-E510171050)
✓ 核准 E2E-AC13-E510171050(ACTIVE)(= ACTIVE)
✓ 入帳已產生 postingId(= 36 ≥ 32)
✓ 沖正前入點 123
✓ 沖正交易已產生 postingId(= 36 ≥ 32)
✓ 已下發 refund 指令(refund=true)(= 1)
✓ rewards 反向扣回(ADJUST -123)(= -123)
✓ 沖正後淨點數歸零(= 0)

── 結果 ──
全部通過:32/32
活動:E2E-AC11-E510171050 / E2E-AC12-E510171050 / E2E-AC13-E510171050
(1-1/2)