Deduction V2 — progress 2026-07-23
Delivery / Program Management — periodic status report.
health:carries the delivery-health status; the doc-lifecyclestatus: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::UserGetsWaDeductionHistoryin hub_core, mounted asGET /api/core/v1/reports/billing/deduction_historyin 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 settlementstatesfilter is queryable (subset ofpending/settled, default both) so the FE can choose which days to show. Gated bywa_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 actualGET /mcc_logsscope), not the:modpanel-inclusive split the earlier plan text assumed — the clienthubapp (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-review → approved, PRD refresh) still open, PM-owned, not blocking engineering.