codigo0/docs/CHECKLIST_VALIDACION_FASE_4.md

8 KiB

CHECKLIST DE VALIDACIÓN - FASE 4: BASE DE CONTENIDO

Versión: 1.0.0
Fecha: 2025-01-06
Estado: Validación Pendiente


🎯 OBJETIVO

Validar que la FASE 4 (Base de Contenido Canónica) está completa y lista para FASE 2 (Integración).


📋 CHECKLIST DE VALIDACIÓN

1. MODELO DE DATOS CANÓNICO

1.1 Interfaces TypeScript

  • ContentItem definida con todos los campos obligatorios
  • ProtocolContent definida con estructura completa
  • GuideContent definida con 8 secciones
  • ManualContent definida
  • DrugContent definida
  • ChecklistContent definida
  • MediaResource definida (image y video)
  • ContentResourceAssociation definida
  • ContentVersion definida
  • AuditLog definida
  • Todos los enums definidos (ContentType, UsageType, Priority, etc.)
  • Tipos exportados correctamente
  • Sin errores de TypeScript

Archivo: admin-panel/shared/types/content-canonical.ts

1.2 Validación de Modelo

  • Campos obligatorios marcados correctamente
  • Tipos de datos correctos (UUID, string, number, boolean, array, JSONB)
  • Constraints lógicos definidos (ej: version semver)
  • Relaciones entre entidades claras
  • Ejemplos reales incluidos (RCP, OVACE, ABCDE)

2. BASE DE DATOS (SUPABASE)

2.1 Schema SQL

  • Tabla content_items creada
  • Tabla media_resources creada
  • Tabla content_resource_associations creada
  • Tabla content_versions creada
  • Tabla audit_logs creada
  • Todos los ENUMs creados
  • Foreign keys definidas correctamente
  • Constraints aplicados (UNIQUE, CHECK, NOT NULL)
  • Índices creados (B-tree, GIN)
  • Triggers creados (updated_at, audit_log)
  • Vistas útiles creadas

Archivo: docs/SUPABASE_SCHEMA.sql

2.2 Validación de Schema

  • Schema ejecutable sin errores
  • Todas las relaciones funcionan
  • Índices optimizados para búsqueda
  • Triggers funcionan correctamente
  • Vistas devuelven datos correctos

2.3 Supabase Configuración

  • Proyecto Supabase creado
  • Base de datos configurada
  • Storage bucket creado (infografias, videos)
  • Políticas de Storage configuradas (público para lectura)
  • API REST habilitada
  • Row Level Security (RLS) configurado (si aplica)

3. CONTENT PACK

3.1 Especificación

  • Estructura del pack definida
  • Metadata completa
  • Sección content definida
  • Sección media definida
  • Sección links definida
  • Verificación de integridad (hash) definida
  • Ejemplo completo incluido (RCP Adulto SVB)

Archivo: docs/CONTENT_PACK_SPEC.md

3.2 Validación de Pack

  • Formato JSON válido
  • Estructura cumple especificación
  • Hash calculado correctamente
  • Solo contenido published incluido
  • Solo última versión incluida
  • Recursos asociados existen
  • Enlaces bidireccionales correctos

4. DOCUMENTACIÓN

4.1 Documentación Completa

  • CONTENT_MODEL.md creado y completo
  • SUPABASE_SCHEMA.sql creado y completo
  • CONTENT_PACK_SPEC.md creado y completo
  • CHECKLIST_VALIDACION_FASE_4.md creado (este documento)
  • Diagramas incluidos (textuales o visuales)
  • Ejemplos reales incluidos (RCP, OVACE, ABCDE)
  • Referencias cruzadas correctas

4.2 Calidad de Documentación

  • Lenguaje claro y técnico
  • Ejemplos comprensibles
  • Sin ambigüedades
  • Pensado para TES (no solo desarrolladores)
  • Pensado para durabilidad (10+ años)

5. DESACOPLAMIENTO

5.1 Sin Modificaciones a Código Existente

  • NO se modificó src/data/procedures.ts
  • NO se modificó src/data/drugs.ts
  • NO se modificaron rutas existentes
  • NO se modificó Service Worker
  • NO se modificaron componentes existentes
  • Modelo es completamente independiente

5.2 Compatibilidad

  • Modelo puede coexistir con código actual
  • No hay conflictos de tipos
  • No hay conflictos de nombres
  • Preparado para migración gradual

6. EJEMPLOS REALES

6.1 Protocolo RCP Adulto SVB

  • Ejemplo completo en Content Pack Spec
  • Todos los campos presentes
  • Pasos operativos completos
  • Checklist integrado
  • Recursos asociados (imágenes, vídeo)
  • Fuentes clínicas (ERC)

6.2 Guía ABCDE Formativa

  • Ejemplo en Content Model
  • 8 secciones definidas
  • Relación con protocolo operativo
  • Recursos por sección

6.3 Fármaco Adrenalina

  • Ejemplo en Content Model
  • Dosis adulto/pediátrica
  • Indicaciones y contraindicaciones
  • Puntos críticos TES

7. VALIDACIONES Y CONSTRAINTS

7.1 Validaciones Definidas

  • Validaciones de ContentItem documentadas
  • Validaciones de ProtocolContent documentadas
  • Validaciones de GuideContent documentadas
  • Validaciones de MediaResource documentadas
  • Validaciones de Association documentadas

7.2 Constraints SQL

  • Constraints UNIQUE aplicados
  • Constraints CHECK aplicados
  • Constraints NOT NULL aplicados
  • Foreign keys con CASCADE apropiado

8. PREPARACIÓN PARA FASE 2

8.1 Contratos Definidos

  • Interfaces TypeScript listas para usar
  • Schema SQL listo para migración
  • Content Pack spec listo para implementación
  • Documentación completa

8.2 Sin Dependencias Faltantes

  • Todas las entidades definidas
  • Todas las relaciones claras
  • Sin referencias circulares problemáticas
  • Extensible sin breaking changes

🧪 PRUEBAS RECOMENDADAS

Prueba 1: Schema SQL

-- Ejecutar schema completo
\i docs/SUPABASE_SCHEMA.sql

-- Verificar tablas creadas
SELECT table_name FROM information_schema.tables 
WHERE table_schema = 'public' 
ORDER BY table_name;

-- Verificar enums creados
SELECT typname FROM pg_type WHERE typtype = 'e' ORDER BY typname;

Prueba 2: Insertar Ejemplo RCP

-- Insertar protocolo RCP Adulto SVB
INSERT INTO content_items (
  id, type, slug, title, clinical_context, usage_type, priority, status, 
  source_guideline, version, latest_version, content, tags, created_by, created_at, updated_at
) VALUES (
  '550e8400-e29b-41d4-a716-446655440000',
  'protocol',
  'rcp-adulto-svb',
  'RCP Adulto - Soporte Vital Básico',
  'RCP',
  'operativo',
  'critica',
  'published',
  'ERC',
  '1.0.0',
  '1.0.0',
  '{"steps": [...]}'::jsonb,
  ARRAY['rcp', 'svb', 'adulto'],
  'system',
  NOW(),
  NOW()
);

-- Verificar inserción
SELECT * FROM content_items WHERE slug = 'rcp-adulto-svb';

Prueba 3: Content Pack JSON

// Validar estructura del pack
const pack: ContentPack = {
  metadata: { ... },
  content: { ... },
  media: { ... },
  links: { ... }
};

// Verificar hash
const hash = calculatePackHash(pack);
console.assert(hash === pack.metadata.hash, 'Hash incorrecto');

// Verificar JSON válido
JSON.parse(JSON.stringify(pack));

CRITERIOS DE APROBACIÓN

Mínimos Requeridos:

  • Todas las interfaces TypeScript definidas
  • Schema SQL completo y ejecutable
  • Content Pack spec completo con ejemplos
  • Documentación completa
  • Sin modificaciones a código existente
  • Ejemplos reales incluidos

Calidad Esperada:

  • Código sin errores de TypeScript
  • Schema sin errores SQL
  • Documentación clara y completa
  • Ejemplos comprensibles
  • Preparado para durabilidad (10+ años)

📝 NOTAS DE VALIDACIÓN

Validador: _________________
Fecha: _________________
Resultado: ☐ Aprobado ☐ Pendiente ☐ Rechazado

Comentarios:

[Espacio para comentarios del validador]

🚀 PRÓXIMOS PASOS (FASE 2)

Una vez validada FASE 4:

  1. Implementar ContentAdapter

    • LocalContentAdapter (fallback)
    • PackContentAdapter (desde Content Pack)
  2. Integrar en App

    • Hooks (useProtocol, useDrug)
    • Componentes de visualización
    • Enlaces bidireccionales
  3. Testing

    • Testing de adaptadores
    • Testing de fallback
    • Testing de integración

Fin del Checklist