Añadido cache: 'no-store' a conAuth() en todas las apps. El navegador
cacheaba respuestas GET de la API, causando que los cambios (crear lead,
cambiar estado, etc.) no se reflejaran hasta borrar cookies.
6 apps reconstruidas.
Causa raiz: import.meta.env.VITE_API_URL ?? '/api' no activa el fallback
cuando VITE_API_URL es string vacio (?? solo cubre null/undefined).
Cambiado a || en auth.ts y sistema.ts de todas las apps.
Tambien reemplazada la IP hardcodeada en api.ts, mi-dia.ts, reportes.ts
y agente-ia.api.ts de todas las apps. Ahora funciona desde IP y dominio
sin depender de la red local.
Las apps (cotizador, mi-dia, alta-clientes, cobranza, dashboards) tenían
VITE_API_URL default a http://192.168.10.123:3000/api que no funciona
desde dominio externo (Cloudflare). Cambiado a '/api' relativo como
ya lo usaba landing. Ahora funciona desde IP y desde dominio.
- POST /api/auth/cambiar-password (bcrypt 12, política ≥8+1 número) +
modal en las 6 apps con auth
- PWA: manifest + íconos de marca en las 7 apps (sin service worker a
propósito, documentado); instalable en celular
- Dashboards: 'Mi tablero' para vendedor (sus KPIs y funnel) y sección
Equipo para coordinador/corporativo/admin
- mi-dia: equipo.porVendedor gana leadsNuevosSemana
- Tests: api 271, cotizador 88, alta 88, cobranza 81, agente-ia 19,
dashboards 15, mi-dia 11, landing 4
- Modelo Usuario + seed desde lista de vendedores (18 usuarios, bcrypt cost 12)
- POST /api/auth/login + /api/auth/me; middleware Bearer en todo /api
excepto health, login y webhook Monday; flag AUTH_ENABLED
- Username = nombre completo normalizado (case/acentos insensible),
password inicial Frasa2026, admin vía ADMIN_PASSWORD
- Apps: LoginScreen + AuthGate (StudioBlank), token en localStorage,
header Authorization en todas las llamadas, logout en 401
- Tests: api 136, cotizador 71, alta 65, cobranza 71, agente-ia 13, landing 4