- skeen_citas: campo sala en skeen.lista.espera (consultoria/cabina, indexado)
- frontend.py: sala en _lista_espera_to_dict, create y update (toggle desde
la etiqueta; valor invalido vuelve a sin sala; cambio queda en historial)
- ListaEspera.tsx: toggle Todas/Consultoria/Cabina con conteo, etiqueta
clicable en cada tarjeta que alterna de sala, selector en el modal de alta
- Agenda.tsx: cambiarSala() conectado al panel
- WacrmMessages.tsx: el auto-refresco ya no empuja el scroll abajo si el
usuario esta leyendo mensajes anteriores (solo baja al cambiar de
conversacion, por deep-link o al enviar respuesta propia)
Verificacion API: 7/7 tests OK (alta con sala, toggle, valor invalido, GET)
- Badge y bloques de la cuadricula: cada estado con su color propio y
fuerte (pendiente=ambar, confirmada=esmeralda, llego/en cabina=cielo,
en curso=violeta, completada=gris, cancelo/no show=rosa). Antes varios
compartian tonos pastel casi iguales. La leyenda del grid usa los
mismos colores.
- badgeForAppointmentState: llego e en_curso tenian variant de pendiente
(se veian igual); ahora arrived y progress, y no_show/waitlist tienen
las suyas.
- Boton 'Marcar en curso' (accion start del backend) en las acciones
rapidas de la vista de lista y tarjetas moviles, entre Llegada y
Completar.
- Mini-checklist del flujo en el tooltip de la cuadricula (solo lectura;
click abre el detalle con el checklist completo interactivo).
- BloqueosModal: alta multi-médico, rango repetible por día de la semana,
motivos predefinidos, edición/borrado y cierre rápido desde la cabecera
de cada columna (todo el día / resto del día / rango).
- skeen.lista.espera + panel y modal en la agenda: prioridad, franja, rango
de fechas, agendar precargado, avisar por WhatsApp y aviso cuando se
libera un hueco compatible.
- duration en skeen.cita (0 = la del servicio): la cita ocupa sus bloques de
15 min reales en las 4 vistas, con celdas de continuación.
- Checklist de estados (Agendada → Confirmada → En cabina → En consulta →
Completada) con avance/retroceso, cancelación y no-show con confirmación,
y bitácora de quién/cuándo en skeen.cita.state.log.
- Etiquetas del sistema legacy alineadas (Canceló / Lista de espera / En
cabina) en badges de agenda y dashboard.
- Auto refresco silencioso cada 30 s (pausable, se pospone con modales,
escritura o drag) en citas + bloqueos + lista de espera en un solo request.
- Módulo Visitas completo (auto desde agenda, insumos con descargo de
inventario, fotos antes/después y documentos, receta imprimible)
- Punto de Venta (catálogo + ticket sticky, cobro con cambio, pago con
puntos monedero, ticket imprimible)
- WACRM: leads automáticos desde WhatsApp, asignación de conversaciones
y leads a agentes, conversión lead→paciente, ficha del paciente en chat
- Pacientes: completitud de expediente, alertas clínicas, historial
unificado con detalle, foto, WhatsApp, estado de cuenta, filtros
rápidos (VIP/recientes/médico), documentos (expediente escaneado + galería)
- Agenda: vistas por médico y por hora, filtros rápidos (libres, primera
vez, check-in, no-show), modal de acciones, bloqueos por médico,
drag&drop para mover citas
- Reportes: 18 pestañas (diario, cortes, ingresos, inventario, adeudos,
comisiones, pagos, devoluciones, top clientes, horas, paquetes,
vendedores, concentrado, recomendaciones, KPIs) con exportación Excel
- Temas: nuevo tema Clásico (look legacy AdminLTE) con submenús tipo
treeview, selector de tema; accesos rápidos personalizables con 3
presentaciones; búsqueda global; notificaciones reales
- Configuración: secciones (clínica, usuarios con permisos por sección,
recetas, catálogos de diagnósticos y procedimientos)
- Inventario: alertas de caducidad y sugerencia de compra, cron diario
que descuenta artículos caducados, compras/bajas
- Consultas Médicas, página Expedientes, importadores delta
(citas/visitas legacy idempotentes), depuración de duplicados
- Infra: tema Tailwind conectado (@config), gzip en nginx, secuencias
Odoo corregidas (noupdate, company_id), rollback en validaciones