mirror of
https://github.com/Pandipipas/scoreko-dev.git
synced 2026-06-06 03:32:06 +00:00
chore: remove outdated refactor and cleanup audit document
This commit is contained in:
@@ -1,142 +0,0 @@
|
||||
# Refactor / Cleanup / Rework Audit
|
||||
|
||||
Este documento lista mejoras propuestas para `scoreko-dev`, priorizadas por impacto y esfuerzo.
|
||||
|
||||
## 1) Arquitectura y organización
|
||||
|
||||
### Alta prioridad
|
||||
1. **Definir capas explícitas (`domain`, `application`, `infra`, `ui`)** para separar reglas de negocio (scoreboard, players, commentary) de NodeCG/Pinia/Vue y reducir acoplamiento.
|
||||
2. **Extraer lógica de negocio fuera de componentes Vue** (sobre todo de `ScoreboardPanel.vue`) a composables/servicios dedicados.
|
||||
3. **Unificar contratos compartidos en un módulo `src/domain`** para evitar que cada store redeclare defaults/normalizadores manuales.
|
||||
4. **Introducir un patrón de “casos de uso”** (`swapPlayers`, `resetScores`, `savePlayer`, etc.) para dejar de mezclar orquestación y estado reactivo.
|
||||
5. **Crear un sistema de módulos por feature** (`features/scoreboard`, `features/players`, `features/commentary`) para facilitar testeo y mantenimiento.
|
||||
|
||||
### Media prioridad
|
||||
6. Consolidar helpers transversales (`filterOptions`, normalizadores, parseo de storage) en utilidades versionadas.
|
||||
7. Estandarizar convención de nombres (`left/right`, `player/commentator`, `override`) y documentarla.
|
||||
8. Introducir “barrels” (`index.ts`) por feature para reducir imports relativos largos.
|
||||
9. Separar claramente código “runtime NodeCG” (extension) de código “browser/dashboard”.
|
||||
|
||||
## 2) Stores y sincronización con Replicants
|
||||
|
||||
### Alta prioridad
|
||||
10. **Eliminar duplicación de normalización** en `scoreboard.ts`, `players.ts` y `commentary.ts` usando un validador común (zod/valibot o validadores propios centralizados).
|
||||
11. **Modelar una política única de snapshots en localStorage**: actualmente algunos stores persisten y otros no; unificar criterio por feature.
|
||||
12. **Tipar mejor `ReplicantLike<T>`** para contemplar estados de carga, errores y ausencia de datos, no solo `data | undefined`.
|
||||
13. **Agregar control anti-loop más robusto en `syncStateWithReplicant`** (versionado/cambios por hash) para evitar escrituras redundantes.
|
||||
14. **Introducir acciones atómicas** para operaciones compuestas (ej. swap + persistencia) y facilitar test unitario.
|
||||
|
||||
### Media prioridad
|
||||
15. Añadir métricas de latencia/frecuencia de `save()` para detectar exceso de persistencia.
|
||||
16. Exponer `dirty state`/`isSynced` por store para feedback de UI y depuración.
|
||||
17. Implementar estrategia de migración de snapshots al cambiar schema/version.
|
||||
18. Crear utilidades de actualización parcial (`patchScoreboard`) en vez de reasignar objetos completos repetidamente.
|
||||
|
||||
## 3) Componentes Vue y UI (dashboard)
|
||||
|
||||
### Alta prioridad
|
||||
19. **Partir `ScoreboardPanel.vue` en subcomponentes** (jugador izquierdo/derecho, juego/personajes, score controls, overrides).
|
||||
20. **Mover filtros y autocompletado a composables** (`usePlayerSearch`, `useCountrySearch`, `useCharacterSearch`).
|
||||
21. **Reducir watchers y `watchEffect` ad-hoc** sustituyéndolos por derivaciones computadas puras y acciones explícitas.
|
||||
22. **Crear componentes reutilizables** para pares simétricos izquierda/derecha y eliminar lógica duplicada.
|
||||
23. **Formalizar estados vacíos/errores/carga** en paneles (players, bracket, commentary) para UX consistente.
|
||||
|
||||
### Media prioridad
|
||||
24. Consolidar strings hardcodeados de juegos en una fuente única + i18n.
|
||||
25. Definir diseño de formularios con reglas de validación declarativas (Quasar rules reutilizables).
|
||||
26. Introducir navegación por teclado consistente en selects/inputs críticos para operación en vivo.
|
||||
27. Añadir micro-feedback visual de acciones críticas (swap/reset/save).
|
||||
28. Desacoplar assets de personajes de la lógica de presentación para soportar themes/skins.
|
||||
|
||||
## 4) Extensión NodeCG e integraciones externas
|
||||
|
||||
### Alta prioridad
|
||||
29. **Refactorizar `src/extension/index.ts` a registro de módulos** con manejo explícito de inicialización y fallos por integración.
|
||||
30. **Encapsular `startgg` y `challonge` detrás de puertos/adaptadores** para que el dominio no dependa de APIs concretas.
|
||||
31. **Agregar retry/backoff/timeouts centralizados** para llamadas externas.
|
||||
32. **Registrar logs estructurados** (nivel, contexto, correlación) en vez de logs dispersos.
|
||||
33. **Definir feature flags/config para habilitar/deshabilitar integraciones** sin tocar código.
|
||||
|
||||
### Media prioridad
|
||||
34. Crear una capa de cache para respuestas repetidas de torneos.
|
||||
35. Tipar estrictamente respuestas externas y validar payloads de entrada/salida.
|
||||
36. Establecer límites de tasa por proveedor para evitar bloqueos.
|
||||
37. Agregar pruebas de contrato para integraciones.
|
||||
|
||||
## 5) Esquemas, tipos y contratos
|
||||
|
||||
### Alta prioridad
|
||||
38. **Alinear defaults de código con schemas JSON** y evitar drift entre `schemas/*` y stores.
|
||||
39. **Automatizar comprobación en CI** de que `schema-types` está actualizado.
|
||||
40. **Versionar schemas y definir estrategia de migración** para datos persistidos.
|
||||
41. **Introducir invariantes de dominio explícitas** (scores >= 0, ids válidos, países válidos, etc.).
|
||||
|
||||
### Media prioridad
|
||||
42. Centralizar tipos derivados repetidos en `src/types` para eliminar alias locales redundantes.
|
||||
43. Definir `branded types` para IDs sensibles (`PlayerId`, `GameId`).
|
||||
44. Crear tests de regresión de normalizadores contra casos borde.
|
||||
|
||||
## 6) Tooling, calidad y automatización
|
||||
|
||||
### Alta prioridad
|
||||
45. **Agregar pipeline CI completo** (lint, typecheck, build, tests, schema drift check).
|
||||
46. **Separar `lint` de `typecheck`** con scripts dedicados y fail-fast claro.
|
||||
47. **Incluir tests unitarios** para stores, normalizadores y utilidades compartidas.
|
||||
48. **Añadir tests de integración de replicants** simulando cambios bidireccionales dashboard/extension.
|
||||
49. **Incorporar pruebas E2E críticas** para flujos de operación (swap players, update scores, reset).
|
||||
|
||||
### Media prioridad
|
||||
50. Incorporar coverage mínimo y umbrales por carpeta.
|
||||
51. Añadir pre-commit hooks (lint-staged + prettier/eslint).
|
||||
52. Documentar comandos de release y versionado semántico.
|
||||
53. Introducir changelog automático.
|
||||
|
||||
## 7) Rendimiento y robustez
|
||||
|
||||
### Alta prioridad
|
||||
54. **Evitar recomputaciones costosas en cada render** cacheando opciones derivadas grandes (jugadores, países, personajes).
|
||||
55. **Reducir escrituras frecuentes a localStorage/replicant** con debounce/throttle configurable.
|
||||
56. **Optimizar payloads de replicants** para enviar solo campos cambiados cuando sea viable.
|
||||
|
||||
### Media prioridad
|
||||
57. Medir tiempos de montaje de paneles y establecer presupuesto de rendimiento.
|
||||
58. Revisar tamaño de bundle y lazy-load de vistas no críticas.
|
||||
59. Añadir fallback robusto para assets de personajes faltantes.
|
||||
|
||||
## 8) Seguridad operativa y resiliencia
|
||||
|
||||
### Alta prioridad
|
||||
60. **Sanitizar y validar inputs de usuario** antes de persistir/renderizar (nombres, handles, textos libres).
|
||||
61. **Definir límites de longitud por campo** y truncado seguro para evitar overflows visuales.
|
||||
62. **Manejar degradación controlada** cuando APIs externas fallen durante directo.
|
||||
|
||||
### Media prioridad
|
||||
63. Auditar dependencia y política de actualizaciones de seguridad.
|
||||
64. Añadir guía de incidentes operativos (qué hacer si falla startgg/challonge).
|
||||
|
||||
## 9) Limpieza y eliminación técnica
|
||||
|
||||
### Alta prioridad
|
||||
65. **Eliminar código muerto y utilidades no usadas** tras dividir componentes/composables.
|
||||
66. **Reducir duplicados izquierda/derecha** mediante abstracciones reutilizables.
|
||||
67. **Homogeneizar manejo de errores silenciosos** (`catch {}`) con reporte opcional de diagnóstico.
|
||||
|
||||
### Media prioridad
|
||||
68. Revisar assets/imágenes huérfanas y limpiar peso innecesario del repo.
|
||||
69. Estandarizar comentarios y retirar comentarios obvios/desactualizados.
|
||||
70. Reorganizar carpetas de `graphics` para facilitar escalado a nuevas overlays.
|
||||
|
||||
## 10) Plan sugerido por fases
|
||||
|
||||
- **Fase 1 (rápida, alto impacto):** 10, 19, 29, 38, 45, 47, 54, 55, 60, 65.
|
||||
- **Fase 2 (estabilización):** 11, 13, 20, 30, 31, 39, 46, 48, 56, 67.
|
||||
- **Fase 3 (escala y DX):** 1, 4, 5, 24, 33, 40, 49, 50, 58, 70.
|
||||
|
||||
## 11) Quick wins (1–2 días)
|
||||
|
||||
1. Añadir scripts `typecheck` y `test` en `package.json` + pipeline CI base.
|
||||
2. Extraer filtros de `ScoreboardPanel` a composables (`useFilterOptions`, `useCountryFilter`).
|
||||
3. Unificar normalizadores en `src/shared/normalize`.
|
||||
4. Añadir tests unitarios de `syncStateWithReplicant` y normalizadores.
|
||||
5. Convertir strings de juegos a una constante única internacionalizable.
|
||||
6. Agregar debounce a persistencia de storage/replicant.
|
||||
Reference in New Issue
Block a user