Skip to content

feat: wire scheduled reconciliation with dead-letter alarms - #900

Merged
thlpkee20-wq merged 2 commits into
RevoraOrg:masterfrom
aliyuHabibu:feat/scheduled-reconciliation-alarms
Aug 31, 2026
Merged

feat: wire scheduled reconciliation with dead-letter alarms#900
thlpkee20-wq merged 2 commits into
RevoraOrg:masterfrom
aliyuHabibu:feat/scheduled-reconciliation-alarms

Conversation

@aliyuHabibu

Copy link
Copy Markdown

Wire the scheduled RevenueReconciliationService cadence into the running app (index.ts) gated by a new 'reconciliation' worker-role capability, and expose reconciliation alarms/discrepancy metrics via a token-protected /metrics/reconciliation endpoint using the same globalMetrics collector.

  • Add PostgresReconciliationRunStore backed by reconciliation_run_summaries (parameterised INSERT ... ON CONFLICT DO NOTHING, keyed by (offering_id, period_id, started_at); getLastRun via latest started_at).
  • Add createReconciliationSchedulerRuntime interval wrapper with immediate first tick, overlap run-guard, and throw-isolation; interval configurable via RECONCILIATION_INTERVAL_MS (default 30m).
  • Export DEFAULT_RECONCILIATION_INTERVAL_MS / RECONCILIATION_INTERVAL_ENV and a pure resolveSchedulerInterval() helper.
  • Gate startup by roleConfig.reconciliation (batch/all); register scheduler stop on SIGTERM/SIGINT.
  • Document scheduled execution, env override, and run-summary persistence.

Tests: 41/41 scheduler unit + runtime tests pass; no new tsc errors in touched files.

Close #861

Wire the scheduled RevenueReconciliationService cadence into the running
app (index.ts) gated by a new 'reconciliation' worker-role capability, and
expose reconciliation alarms/discrepancy metrics via a token-protected
/metrics/reconciliation endpoint using the same globalMetrics collector.

- Add PostgresReconciliationRunStore backed by reconciliation_run_summaries
  (parameterised INSERT ... ON CONFLICT DO NOTHING, keyed by
  (offering_id, period_id, started_at); getLastRun via latest started_at).
- Add createReconciliationSchedulerRuntime interval wrapper with immediate
  first tick, overlap run-guard, and throw-isolation; interval configurable
  via RECONCILIATION_INTERVAL_MS (default 30m).
- Export DEFAULT_RECONCILIATION_INTERVAL_MS / RECONCILIATION_INTERVAL_ENV
  and a pure resolveSchedulerInterval() helper.
- Gate startup by roleConfig.reconciliation (batch/all); register scheduler
  stop on SIGTERM/SIGINT.
- Document scheduled execution, env override, and run-summary persistence.

Tests: 41/41 scheduler unit + runtime tests pass; no new tsc errors in
touched files.
@drips-wave

drips-wave Bot commented Aug 30, 2026

Copy link
Copy Markdown

@aliyuHabibu Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@thlpkee20-wq
thlpkee20-wq merged commit c0a2636 into RevoraOrg:master Aug 31, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Schedule periodic RevenueReconciliationService runs with dead-letter alarms

2 participants