CreaRack-SL

Página /me y contador real de Wiki en home mobile

Página /me y contador real de Wiki en home mobile

Commit: dd6bf49 · 2026-04-28 · @Esquembri Build: 330 páginas (+1)

Resumen

Este commit introduce dos mejoras al workspace mobile de CreaRack Pro:

  1. Nueva página /me: resuelve el 404 que devolvía la entrada “Yo” de la BottomNav mobile. Muestra el perfil del usuario conectado con avatar, nombre, email y accesos rápidos.
  2. Contador wiki real en Quick Card home: la tarjeta “Wiki” del home mobile ahora muestra el número de páginas activas en Supercontexto (bib_wiki_pages WHERE status='active') en lugar del count de nodos con metadato legacy metadata.wiki=true.

1. Página /me

Archivos

ArchivoTipo
src/pages/me.astroPágina Astro (ruta /me)
src/components/me/MyProfile.tsxComponente React MyProfile

Funcionamiento

  • Layout: usa SecondaryLayout (cabecera con botón atrás, título “Yo”).
  • Hydration: client:load — se hidrata en cliente inmediatamente.
  • Avatar: círculo de 96 px con gradiente por usuario del equipo (Edu, Dani, Txell). Si el usuario no está en el mapa, usa el gradiente por defecto azul-violeta.
  • Datos de usuario: getCurrentUser() desde ../../lib/prefs + llamada a /api/me para resolver el email desde Cloudflare Access.
  • Listener reactivo: escucha el evento DOM prefs-user-change para actualizar el nombre si el usuario cambia en las preferencias sin recargar.

Acciones disponibles

AcciónDestino
Mis tareas/tasks?assignee=<user>
Mi actividad/activity?actor=<user>
Worklog/worklog
Cerrar sesión/cdn-cgi/access/logout (Cloudflare Access)

Gradientes de equipo

const TEAM_GRADIENT: Record<string, string> = {
  Edu:   'linear-gradient(135deg,#3B6EF8,#A855F7)',
  Dani:  'linear-gradient(135deg,#22C55E,#06B6D4)',
  Txell: 'linear-gradient(135deg,#F59E0B,#E63A52)',
};

2. Contador wiki real en Quick Card home

Problema anterior

V1HomeVivo.tsx apuntaba a /api/biblioteca/wiki, que devuelve el count de bib_nodes con metadata.wiki=true. Este valor refleja el índice de nodos del grafo de conocimiento que tienen un flag wiki, no el número de páginas Supercontexto activas en bib_wiki_pages. El resultado era un número incorrecto o desfasado en la tarjeta “Wiki”.

Solución

/api/biblioteca/stats se amplía con una query adicional al db.batch:

// functions/api/biblioteca/stats.ts  — query añadida
db.prepare("SELECT COUNT(*) as count FROM bib_wiki_pages WHERE status = 'active'")

El campo total_wiki_pages se añade a la respuesta JSON:

total_wiki_pages: (counts[10].results[0] as Record<string, unknown>)?.count ?? 0,

V1HomeVivo.tsx cambia el endpoint de /api/biblioteca/wiki a /api/biblioteca/stats y lee stats.total_wiki_pages en lugar de wiki.total.

Diagrama de flujo (simplificado)

V1HomeVivo                /api/biblioteca/stats              D1 (bib_wiki_pages)
    │                             │                                  │
    ├─ fetchJson(.../stats) ──────►                                  │
    │                             ├─ db.batch([...10 queries + ──────►
    │                             │   COUNT bib_wiki_pages])         │
    │                             ◄─────────────────── results ──────┤
    ◄── { total_wiki_pages: N } ──┤                                  │
    │                             │                                  │
    ├─ wikiCount = stats.total_wiki_pages
    └─ Render Quick Card "Wiki" con N

Consideraciones

  • Sin breaking change: /api/biblioteca/stats añade un campo nuevo; consumidores existentes no se rompen.
  • /api/biblioteca/wiki queda como endpoint legacy usado solo por el Help Widget (no se elimina en este commit).
  • El cambio en V1HomeVivo es solo para mobile; la vista desktop no se ve afectada.
  • El componente MyProfile usa inline styles (no CSS modules ni Tailwind) para mantener coherencia con el resto de componentes del workspace.

Véase también

  • [[Documentation/backend/BIBLIOTECA.md]]
  • [[Documentation/guides/BIBLIOTECA_GUIDE.md]]
  • [[Documentation/frontend/CENTRALIZED_SERVICES.md]]