Volver a la wiki

V1HomeVivo — Pantalla HOME mobile (variante V1)

Descripción

V1HomeVivo es el componente React que implementa la pantalla de inicio (home) para la vista mobile de CreaRack Pro. Es la variante V1 del HOME mobile y constituye el equivalente mobile de DesktopA. Tras el sprint s60, alcanza paridad funcional con DesktopA en las secciones principales.

Ruta: src/components/variants/mobile/V1HomeVivo.tsx


Arquitectura del componente

Hook principal: useMobileData

Centraliza todos los fetches de datos con Promise.all. Tras s60 consume 7 endpoints en paralelo:

EndpointTipo devueltoUso
/api/tasks?assignee=...&status=pending&limit=10ApiTask[]Mis tareas pendientes
/api/alerts?active=1&limit=5ApiAlert[]Alertas activas
/api/team/presenceApiMember[]Presencia del equipo
/api/biblioteca/stats{ total_wiki_pages: number }Contador wiki
/api/servers{ servers: { status: string }[] }Conteo servidores
/api/news?limit=3ApiNews[]Nuevo en s60 — últimas 3 noticias
/api/healthApiHealthRow[]Nuevo en s60 — sensores del sistema

Dashboard-message dinámico

Un useEffect independiente llama a /api/dashboard-message solo en pantallas ≤ 768 px de ancho. Si la API devuelve { title }, el saludo estático (greeting(), <br/> {user}) se reemplaza por el headline recibido. Esto iguala el comportamiento de DesktopA.


Secciones del HOME (orden de renderizado)

  1. Header sticky con blur — avatar, nombre de usuario, contador de alertas
  2. Saludo / headline — dinámico vía /api/dashboard-message o fallback greeting()
  3. Mis tareas — lista de tareas pendientes del usuario actual
  4. El equipo ahora — chips de presencia con PersonChip
  5. Noticias (nuevo en s60) — hasta 3 cards horizontales de /api/news
  6. Accesos rápidos — grid 2 columnas con QUICK links estáticos
  7. Salud del sistema (nuevo en s60) — card de estado global + máx. 4 sensores
  8. FAB — botón flotante con rotación 45°, abre submenú de acciones rápidas

Sección Noticias (s60)

Helper newsRelativeDate(iso: string): string

Convierte un timestamp ISO/SQL a texto relativo en español:

RangoSalida
< 1 hhace N min
< 24 hhace N h
< 48 hayer
< 7 díashace N días
≥ 7 díasfecha corta (dd mmm)

Sección Salud del sistema (s60)

Helper healthOverall(health: ApiHealthRow[])

// Prioridad: rojo > ámbar > verde
if (hasRed)   → { status: 'fail',  color: c.danger, label: 'Atención' }
if (hasAmber) → { status: 'warn',  color: c.warn,   label: 'Avisos'   }
else          → { status: 'ok',    color: c.ok,     label: 'Todo OK'  }

Detecta #ef4444 como rojo y #f59e0b como ámbar (comparación lowercase).


FAB — acciones rápidas

Tras s60 el FAB tiene 4 opciones (antes 3):

IconoLabelRuta
✓Nueva tarea/tasks?new=1
✎Nota rápida/notes?new=1
📓Nota Cuaderno/tools/notebook?new=1 (nuevo s60)
⚠Publicar alerta/alerts?new=1

Historial de cambios relevantes

SprintCambio
≤ s49HOME mobile básico (tareas, equipo, accesos)
s50–s56Refresh visual workspace en desktop — sin propagación al HOME mobile
s60Paridad con DesktopA: dashboard-message dinámico, sección Noticias, sección Salud del sistema, FAB con Cuaderno

Tipos de datos principales

interface ApiNews {
  id: number;
  title: string;
  category: string | null;
  author: string | null;
  created_at: string;
  pinned: number;      // 1 = pinned
}

interface ApiHealthRow {
  label: string;
  value: string;
  detail: string;
  color: string;       // hex, ej: '#ef4444'
  insight: string;
}

Véase también

Subir