diff --git a/docs/2025-11-01-plan-refactor-tecnico.md b/docs/2025-11-01-plan-refactor-tecnico.md index 747c317..2a9311d 100644 --- a/docs/2025-11-01-plan-refactor-tecnico.md +++ b/docs/2025-11-01-plan-refactor-tecnico.md @@ -306,12 +306,66 @@ Cada lote incluye objetivo, cambios, métricas y comprobaciones. Mantener tests - Objetivo: - Simplificar inyección de DB en runtime y tests. + - Cambios: - - Crear un “dbLocator” (getDb/setDb) central y migrar servicios a usarlo progresivamente, manteniendo compatibilidad con propiedades estáticas mientras dura la transición. - - Unificar `resolveDbAbsolutePath` entre core y web (una sola fuente). + - Crear un “dbLocator” (getDb/setDb/withDb) central y migrar servicios a usarlo progresivamente, manteniendo compatibilidad con propiedades estáticas mientras dura la transición. + - Unificar `resolveDbAbsolutePath` entre core y web (una sola fuente, con reexport en web para no romper imports). + - Métricas: - Sin cambios de comportamiento; tests de servicios verdes. +- PRs propuestos y archivos a tocar: + + PR 6.0 — Locator mínimo (infraestructura, sin usos en servicios) + - Nuevos archivos: + - src/db/locator.ts — export { setDb, getDb, withDb }. + - tests/unit/db/locator.test.ts — pruebas básicas del locator. + - Cambios en docs: + - Este documento (apartado de Lote 6). + + PR 6.1 — Conexión en bootstrap (setDb al arrancar) + - Archivos a modificar: + - src/http/bootstrap.ts — importar setDb desde src/db/locator y llamarlo en el arranque (cuando se abra la DB). + - src/server.ts — si es quien abre la DB, llamar setDb(db) justo después de crearla (o delegar en bootstrap). + - Servicios: sin cambios (compatibilidad total con dbInstance estático). + + PR 6.2 — Ruta única de DB (centralizar resolveDbAbsolutePath) + - Nuevos archivos: + - src/env/db-path.ts — export function resolveDbAbsolutePath(filename = 'tasks.db'): string. + - Archivos a modificar: + - apps/web/src/lib/server/env.ts — reexportar desde src/env/db-path.ts para mantener compatibilidad (sin cambios de API pública). + - src/server.ts o src/http/bootstrap.ts — actualizar imports a src/env/db-path. + - Comprobaciones esperadas: + - bunx tsc -p tsconfig.core.json --noEmit + - bun test --coverage + + PR 6.3 — Adopción piloto con fallback (2 servicios) + - Archivos a modificar: + - src/services/response-queue.ts — usar (ResponseQueue as any).dbInstance ?? getDb(). + - src/tasks/service.ts — usar (TaskService as any).dbInstance ?? getDb(). + - Tests a ajustar (si aplica): + - tests/unit/services/response-queue.test.ts — asegurar setDb(memdb) en beforeAll cuando no se inyecte dbInstance. + - tests/unit/tasks/*.test.ts — idem. + - Comprobaciones esperadas: + - bunx tsc -p tsconfig.core.json --noEmit + - bun test --coverage + + PR 6.4 — Adopción progresiva (resto de servicios principales) + - Archivos a modificar (por tandas pequeñas): + - src/services/group-sync/*.ts (api.ts, repo.ts, cache.ts, reconcile.ts) — fallback a getDb(). + - src/services/command.ts, src/services/reminders.ts, src/services/maintenance.ts, src/services/admin.ts, src/services/contacts.ts, src/services/webhook-manager.ts — fallback a getDb(). + - Tests a ajustar según servicio: + - tests/unit/services/**/*.test.ts — añadir setDb(memdb) donde no se use dbInstance explícita. + - Comprobaciones esperadas: + - bunx tsc -p tsconfig.core.json --noEmit + - bun test --coverage + + PR 6.5 — Limpieza opcional (cuando no queden usos de .dbInstance) + - Archivos a modificar: + - Eliminar propiedades estáticas dbInstance de servicios ya migrados. + - Actualizar tests que aún dependan de ellas. + - Nota: no es obligatorio para completar el lote; puede posponerse a una fase de limpieza. + ### Lote 7 — Cobertura en módulos flojos - Objetivo: