# Qué falta – Resumen **Última actualización:** 2025-02-02 --- ## Hecho - **TICKET-001** Application Layer backend - **TICKET-002** Infrastructure Layer (Content, Drug) - **TICKET-003** Schemas Zod compartidos (backend + frontend alias, tests) - **TICKET-004** Refactor drugs.ts: re-export desde `drugs/` (split por categoría); `drugs.ts` re-exporta desde `drugs/index.ts` - **TICKET-005** Refactor procedures.ts - **TICKET-006** Eliminar duplicación: `http-responses.ts`, rutas refactorizadas (glossary, content, media, validation) - **TICKET-007** Schema BD glosario (`tes_content.glossary_terms`, migración 004, `npm run migrate:glossary`) - **TICKET-008** Entidad GlossaryTerm: domain exporta GlossaryTerm y GlossaryCategory desde `domain/entities/index.ts` - **TICKET-009** Repositorio glosario (GlossaryRepository + GlossaryTermMapper) - **TICKET-010** GlossaryService (Application Layer) - **TICKET-011** Rutas API glosario (`/api/glossary/*`) - **TICKET-012** Migrar glosarios frontend → backend (generador fixture + script migración) - **TICKET-013** Validación médica (workflow completo): ValidationService, IValidationRepository, ContentStatus; rutas delegan al servicio - **TICKET-014** Dashboard de validación (GET /api/validation/dashboard; correcciones audit_logs/history/reject/approve/publish) - **TICKET-015** Upload de medios mejorado: validación Zod del body (uploadMediaBodySchema), sanitización de extensión (safeExtension), fileFilter tipado, metadatos validados en INSERT - **TICKET-016** Interfaz gestión de medios (MediaManagerPage con loading/error y errores de validación inline) - **TICKET-017** Tests unitarios backend: GlossaryService, ContentService, ValidationService (repos mockeados) - **TICKET-018** Tests integración API: app exportada en `app.ts`, supertest, GET /, /health, /api/glossary, rutas con auth 401 - **TICKET-019** Cobertura frontend: tests useDebounce, utils/validation, utils/filter, validators/filters, validators/url-params, PageLoader, NotFound, featureFlags; Vitest solo `src/`; objetivo 80% documentado - **Despliegue local** Guía y `docker-compose.dev.yml` (PostgreSQL + Redis), `npm run dev:local` --- ## Pendiente (prioridad) ### Alta - Ninguno ### Media ### Baja --- ## Contenido y alineación - Categoría **Escena** en procedimientos (definir si se rellena o solo manual). - Sincronía **manual ↔ app**: contenido primero en manual, luego en app. **Protocolos/guías que faltan:** Ver **[docs/PROTOCOLOS_GUIAS_FALTANTES.md](PROTOCOLOS_GUIAS_FALTANTES.md)** (Escena vacía; ABCDE, Triage START, Seguridad escena solo en manual). **Contenido faltante (medios, guías, protocolos, glosario):** Ver **[docs/CONTENIDO_FALTANTE.md](CONTENIDO_FALTANTE.md)**. --- ## Próximos pasos opcionales (técnicos) - **Frontend glosario:** La app no consume aún `GET /api/glossary`; la terminología farmacológica usa `src/data/pharmaceutical-terminology.ts`. Opcional: añadir vista/página Glosario que consuma la API. - **Cobertura frontend:** Medir con `npm run test -- --run --coverage` (objetivo 80%). Ver `vite.config.ts` y tests en `src/`. Ver `SPEC.md`, `docs/BACKLOG_MICRO_TICKETS.md` y documentación en `docs/` para detalle.