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:
- 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. - 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 legacymetadata.wiki=true.
1. Página /me
Archivos
| Archivo | Tipo |
|---|---|
src/pages/me.astro | Página Astro (ruta /me) |
src/components/me/MyProfile.tsx | Componente 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/mepara resolver el email desde Cloudflare Access. - Listener reactivo: escucha el evento DOM
prefs-user-changepara actualizar el nombre si el usuario cambia en las preferencias sin recargar.
Acciones disponibles
| Acción | Destino |
|---|---|
| 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/statsañade un campo nuevo; consumidores existentes no se rompen. /api/biblioteca/wikiqueda como endpoint legacy usado solo por el Help Widget (no se elimina en este commit).- El cambio en
V1HomeVivoes solo para mobile; la vista desktop no se ve afectada. - El componente
MyProfileusa 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]]