be8a61e724
Archivos de issue para el trabajo de kanban de las ultimas iteraciones: - 0089: tiempo maximo por columna con borde rojo (incluye followup popover con seleccion de unidad min/h/d/sem/mes). - 0090: seleccion aleatoria por columna con animacion de ruleta. Ya con fix de no mostrar en columnas Done. - 0092: archivo automatico para cards en columnas Done con +30 dias. - 0093: reporte diario al pulsar el numero del dia en el calendario. Los issues 0088 y 0091 ya estaban registrados.
2.1 KiB
2.1 KiB
id, title, status, created_at, priority, app
| id | title | status | created_at | priority | app |
|---|---|---|---|---|---|
| 0090 | kanban: Seleccionar Aleatorio en columna con animacion de ruleta | open | 2026-05-14 | medium | kanban |
Problema
Cuando hay muchas cards en una columna, elegir cual abordar "al azar" es ruido cognitivo. Necesitamos boton "Seleccionar Aleatorio" que respete los filtros activos y excluya cards bloqueadas.
Solucion
Frontend (puro, sin backend)
KanbanColumnmenu contextual: nueva entrada "Seleccionar Aleatorio" (IconDice5),data-test="column-random-pick". Deshabilitada cuandocards.filter(c => !c.locked).length === 0.- Prop
onPickRandom(columnId)propagada desdeKanbanColumnaApp.tsx. App.tsxhandlerhandlePickRandom:- Lee cards del column id via
cardsByColumn(ya respeta los filtros). - Excluye
card.locked === true. - Si
length === 0: notificacion warning. - Si
length === 1: scroll + flash verde directo. - Si
length > 1: ruleta animada.
- Lee cards del column id via
- Ruleta:
- Seleccion criptografica con
crypto.getRandomValues. - Cycle: 2 vueltas completas + offset hasta la ganadora.
- Decay temporal cubic: 50ms inicial -> 220ms final (efecto desacelerar).
- CSS class
.kanban-roulette-activeaplicada a la card en curso,scrollIntoViewautomatico para seguirla. - Al final:
.kanban-roulette-winnercon pulso verde (~1.6s).
- Seleccion criptografica con
- CSS en
src/styles/roulette.css, importado desdemain.tsx.
Tests
- Verificacion manual: probar en columna con varias cards, con y sin filtros activos, con cards bloqueadas. Comportamiento esperado: solo unlocked-and-filtered participan.
- E2E Playwright queda fuera de scope automatizado por timing visual y por necesitar cards reales en una columna concreta.
Criterios de aceptacion
- Menu contextual "Seleccionar Aleatorio" en cada columna.
- Cards bloqueadas excluidas siempre.
- Si hay filtro activo, solo cards visibles participan.
- Animacion ruleta visible, no se queda colgada.
- Ganadora final con flash verde + scroll a su posicion.
Rama / commits
- Rama:
issue/0090-kanban-column-random-pick - Merge
--no-ffa master.