Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.2 KiB
id, title, status, type, domain, scope, priority, depends, blocks, related, created, updated, tags
| id | title | status | type | domain | scope | priority | depends | blocks | related | created | updated | tags | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0093 | kanban: reporte diario al pulsar numero del dia en el calendario | pendiente | feature |
|
multi-app | media | 2026-05-17 | 2026-05-17 |
Problema
El calendario muestra conteos de creadas/hechas/deadlines por dia pero no permite profundizar. Falta un reporte tipo "retro diaria" con rankings, lista de tareas hechas con enlaces, y metricas operativas (lead time, reabiertas, estancadas).
Solucion
Backend
Endpoint GET /api/reports/daily?date=YYYY-MM-DD&tz=Europe/Madrid con agregaciones sobre cards, card_events, card_column_history, card_lock_history.
Estructura del reporte:
kpis: done, created, moves, blocked_ms, deadlines met/missed, reopened, archived_auto, archived_manual.top_assignees_done,top_assignees_created,top_requesters_added,top_requesters_done(top 5).done_cards: lista completa de hechas conid,seq_num, titulo, solicitante, asignado (id+nombre), tags, columna, completed_at, lead_time_ms.reopened_cards: cards que el dia X entraron a una columna no-done viniendo de una previa done. Incluye actor.stale_cards: 3 buckets (7-13d, 14-29d, 30+d) por columnas activas (no done, no archived).lead_time: avg/p50/p95/samples de las hechas del dia.hourly_moves: array de 24 con conteo de movimientos por hora local.deadlines: contadores + lista de vencidas conlate_ms.tags_done: top 10 tags trabajadas hoy.archived_today: total archivadas en el dia.
Funcion: db.DailyReportFor(date, tz) en backend/reports.go. Day range = [t, t+24h) en TZ del cliente, convertido a UTC para consultar columnas TEXT ISO.
Frontend
Componente DailyReportView (components/DailyReport.tsx) que recibe date y onJumpToCard. Layout:
- Header: titulo + fecha formateada en es-ES.
- 6 KPI cards (
SimpleGridcols 2/4/6). - 4 rankings con avatares (
SimpleGridcols 1/2/4). - Tabla de tareas hechas (scrollable, click en titulo ->
onJumpToCard-> cierra modal -> highlight + scroll al tablero). BarChart(Mantine Charts) con movimientos por hora.- Tags trabajadas en chips.
- Bloque reabiertas (solo si hay).
- Bloque deadlines (solo si hay actividad).
- 3 columnas de estancadas con click-to-jump.
Apertura: CalendarView recibe onOpenDailyReport(date) y envuelve el numero del dia en un UnstyledButton (data-test="calendar-day-YYYY-MM-DD"). App abre un modals.open con size="90%" y <DailyReportView /> dentro.
Tests
Playwright e2e/daily-report.spec.ts:
- Endpoint devuelve estructura esperada (kpis, done_cards, hourly_moves[24], stale_cards.d7/d14/d30).
- Click en numero del dia del calendario abre el modal con titulo "Reporte diario" y textos "Hechas"/"Movimientos" visibles.
Criterios de aceptacion
- GET
/api/reports/daily?date=...&tz=...responde JSON estructurado. - Click en numero del dia en el calendario abre modal full-width con KPIs.
- Tabla de hechas con click-to-jump funcional.
- Reabiertas detectadas correctamente (card que viene de columna
is_done=1previa). - Estancadas listadas por buckets 7/14/30d.
- Tests Playwright pasan.
Rama / commits
- Rama:
issue/0093-kanban-daily-report - Merge
--no-ffa master.