fase 3.4: PWA instalable (manifest e iconos, service worker propio con app shell precacheado y cache versionada por build, API nunca cacheada, fallback offline, aviso de instalacion con guia iOS y banner sin conexion) + branding: perfiles de ticket por instancia (defaults neutros, sin filtrar datos de SKEEN) y Dashboard sin nombre hardcodeado

This commit is contained in:
2026-10-11 13:23:56 +00:00
parent 3c4f1b14d9
commit ab9d84cb67
19 changed files with 574 additions and 17 deletions

View File

@@ -83,11 +83,11 @@ export const construirIcs = (opts: {
return [
'BEGIN:VCALENDAR',
'VERSION:2.0',
'PRODID:-//SKEEN//Reservas en linea//ES',
'PRODID:-//Panel Clinico//Reservas en linea//ES',
'CALSCALE:GREGORIAN',
'METHOD:PUBLISH',
'BEGIN:VEVENT',
`UID:${esc(opts.folio)}@skeen`,
`UID:${esc(opts.folio)}@panel-clinico`,
`DTSTAMP:${fmt(new Date())}`,
`DTSTART:${fmt(inicio)}`,
`DTEND:${fmt(fin)}`,

View File

@@ -89,11 +89,14 @@ export const FALLBACK_CONFIG: TicketConfig = {
},
},
clinica: {
nombre: 'SKEEN Derma Experts',
direccion: 'Playas de Rosarito, Baja California',
telefono: '+52 (661) 100-2172',
email: 'hola@skeen.mx',
sitio: 'https://skeen.mx',
// Neutro a propósito: cada clínica configura su perfil en
// Configuración › Tickets. Si `nombre` queda vacío se usa el nombre del
// brand. Antes traía los datos de SKEEN y se filtraban a otras instancias.
nombre: '',
direccion: '',
telefono: '',
email: '',
sitio: '',
rfc: '',
sucursal: '',
tiene_logo: false,