feat: mejoras SAT, auth, web y migración

SAT:
- Cron diario 6-10 AM con grupos de tenants (~20% por hora).
- Retries fijos de daily sync a 9 AM y 4 PM CDMX.
- Filtrado de contribuyentes con FIEL vigente en cron.
- Timeout de 5 min en cliente HTTP del SAT.
- Manejo defensivo de 404, EmptyResult (5004) y solicitudes agotadas.
- Fechas formateadas en zona horaria America/Mexico_City.
- Patch a @nodecfdi/sat-ws-descarga-masiva para evitar getResponse crash.
- Sweep de jobs stale con thresholds ajustados.

Auth/Web:
- Primer pago de suscripción define periodo activo en webhook.
- Rate limit de login: 25 intentos / 15 min.
- Recuperación de contraseña: 24h de validez.
- Soporte viewingTenantId en contribuyentes.
- Timeout y estado de carga al crear organización en Facturapi.
- Filtros por cliente y cartera en Mis Asignados.
- Orden alfabético en selector de contribuyente.

DB:
- Migración 057: unique index de declaraciones incluye impuestos.
This commit is contained in:
Horux Dev
2026-08-02 20:06:51 +00:00
parent dfc0183c12
commit 284c7620a9
14 changed files with 409 additions and 45 deletions

View File

@@ -0,0 +1,15 @@
-- Fix: la constraint unique de declaraciones normales solo consideraba
-- (año, mes, contribuyente_id). Esto impedía subir una declaración normal de
-- ISRTP si ya existía una normal de ISN para el mismo mes y contribuyente.
-- Ahora la unicidad se valida por (año, mes, contribuyente_id, impuestos),
-- permitiendo una declaración normal distinta por cada conjunto de impuestos.
DROP INDEX IF EXISTS uniq_declaracion_normal_mes_contrib;
CREATE UNIQUE INDEX IF NOT EXISTS uniq_declaracion_normal_mes_contrib_impuestos
ON declaraciones_provisionales(año, mes, contribuyente_id, impuestos)
WHERE tipo = 'normal';
INSERT INTO tenant_migrations (scope, version, name)
VALUES ('vertical-contable', 57, '057_declaraciones_unique_por_impuestos')
ON CONFLICT (scope, version) DO NOTHING;