feat(mejoras): 25 mejoras UX en todos los módulos + purga Monday

Backend: mi-dia siempre local, vocabulario canónico, AplicacionPago con usuario
Mi día: modal español real, cita desde modal, score falso eliminado
Cotizador: barra sticky, persistencia local con folio
Alta Clientes: redirect eliminado, foto conectada, asesor desde sesión, refs dinámicas
Cobranza: contrato Mora arreglado, link a Plan, abono próximo pago, WhatsApp
Landing: contactos locales, ModalContacto eliminado, ModoTrabajo eliminado
Dashboards: MiTablero unificado, funnel con descartados, drill-down, rango fechas
Chat FRASA: corpus 5 desarrollos, 6 herramientas, historial conversaciones

69 archivos, 7 apps construidas
This commit is contained in:
2026-09-11 06:52:37 +00:00
parent 075d47c304
commit 64b01246d6
69 changed files with 1600 additions and 1133 deletions

View File

@@ -0,0 +1,5 @@
-- AlterTable
ALTER TABLE "AplicacionPago" ADD COLUMN "capturadoPorId" TEXT;
-- CreateIndex
CREATE INDEX "AplicacionPago_capturadoPorId_idx" ON "AplicacionPago"("capturadoPorId");

View File

@@ -136,14 +136,18 @@ model Pago {
}
model AplicacionPago {
id String @id @default(uuid())
pagoId String
pago Pago @relation(fields: [pagoId], references: [id], onDelete: Cascade)
fechaPago DateTime
monto Float
referencia String
id String @id @default(uuid())
pagoId String
pago Pago @relation(fields: [pagoId], references: [id], onDelete: Cascade)
fechaPago DateTime
monto Float
referencia String
// Usuario que capturó el abono (sub del JWT); null en abonos históricos o
// hechos sin auth (AUTH_ENABLED=false)
capturadoPorId String?
@@index([pagoId])
@@index([capturadoPorId])
}
// Vinculación lead ↔ oportunidad del funnel: cada lead capturado entra al