You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
LFPIORPI post-reform requires monthly notices to SAT/UIF (day 17), including "zero reports" when nothing is reportable, plus a 24-hour alert window for unusual operations. None of this exists yet. Issue #314 ("[4a] Tiered KYC Gate Engine") gives us the raw material (the kyc_gate.decision audit trail, tiered operation records) but nothing aggregates or reports on it.
What this issue proposes
Build the periodic aggregation and reporting layer on top of #314's audit trail, decoupled from how a user got their tier (Etherfuse, Didit, or any future provider — see the Didit integration issue, #315).
Monthly aggregation & SAT filing
Scheduled job (day 17 monthly) aggregates operations ≥ 210 UMA per user from the audit trail / trade records
Generates the SAT-required output format for reportable operations
Generates a "zero report" automatically when nothing is reportable that period (actual submission stays manual — see Out of scope)
Provides a compliance_alerts table and a query/admin endpoint that exposes each entry's 24-hour SLA deadline (an admin UI is out of scope — this issue is backend-only)
Context
LFPIORPI post-reform requires monthly notices to SAT/UIF (day 17), including "zero reports" when nothing is reportable, plus a 24-hour alert window for unusual operations. None of this exists yet. Issue #314 ("[4a] Tiered KYC Gate Engine") gives us the raw material (the
kyc_gate.decisionaudit trail, tiered operation records) but nothing aggregates or reports on it.What this issue proposes
Build the periodic aggregation and reporting layer on top of #314's audit trail, decoupled from how a user got their tier (Etherfuse, Didit, or any future provider — see the Didit integration issue, #315).
Monthly aggregation & SAT filing
Unusual-operation alerting
compliance_alertstable and a query/admin endpoint that exposes each entry's 24-hour SLA deadline (an admin UI is out of scope — this issue is backend-only)block/downgradedecisions) can insert into this table — this issue owns the alert pipeline, not the detection rules themselvesAudit retention
Acceptance criteria
compliance_alertstable exists with a documented insert contract; each entry's 24h SLA deadline is exposed by the query endpointtsc --noEmit/ backend build passesOut of scope
Related
kyc-gate.service.ts'sgetKycAuditTrailfor the query pattern already in placecompliance_alerts)docs/KYC_COMPLIANCE_PLAN_2026-07.md, Fase 3 / Option C items 3 and 5