Skip to main content

Deduction V2 — progress 2026-07-23

Delivery / Program Management — periodic status report. health: carries the delivery-health status; the doc-lifecycle status: stays in the linter enum (active).

Progress

progress_done_days: 15 · progress_pct: 46 · progress_total_days: 32.5

First Part-2 delivery. M2 (BIF-8884, DED-S07 backend) shipped — the new GET usage API reading the wa_reconciliation_batches rollup. BE 2 md now done (13 → 15); M2 QA (0.5 md) still open, so the denominator is unchanged at 32.5 and pct moves 40% → 46% on completed work.

  • M2 (BIF-8884) — Repositories::Billings::Gets::WaDeductionHistory + Interactors::Billings::UserGetsWaDeductionHistory in hub_core, mounted as GET /api/core/v1/reports/billing/deduction_history in hub_service, with colocated repo, interactor, and request specs. One row per (usage day × WhatsApp Business × category); message_count = meta_volume, deducted_balance = settled_charged_amount. The settlement states filter is queryable (subset of pending/settled, default both) so the FE can choose which days to show. Gated by wa_hold_settlement_enabled?.

Effort unchanged: BE 23 · FE 3 · QA 6.5 = 32.5 md. Supersedes the 2026-07-22 entry (13 / 32.5).

Evidence

  • M2 → BIF-8884 (Task, Epic BIF-8644, Sprint 21464).
  • As-built writeup: documentations/wa-deduction-history-usage-api.md; task-breakdown M2 section status flipped to Implemented with the as-built plan + checked ACs.
  • Scope note: M2's GET route uses oauth2 :admin, :owner, :supervisor, :agent, :member, :bot (the actual GET /mcc_logs scope), not the :modpanel-inclusive split the earlier plan text assumed — the client hub app (M4) is the consumer, not modpanel.

Lowlights & blockers

Unchanged from 2026-07-22: QA (6.5 md, now incl. M2's 0.5) not started; M0 edits shipped money-path code; M4 (chat FE) unverified (hub repo not checked out); governance gate (RFC in-reviewapproved, PRD refresh) still open, PM-owned, not blocking engineering.