codigo0/docs/CHECKLIST_VALIDACION_FASE_4.md

317 lines
8 KiB
Markdown
Raw Normal View History

2026-01-19 08:10:16 +00:00
# ✅ 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
```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
```sql
-- 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
```typescript
// 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**