317 lines
8 KiB
Markdown
317 lines
8 KiB
Markdown
# ✅ 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**
|
|
|