Structure: - control-plane/: Registries, SIMCO directives, CI/CD templates - projects/: Gamilit, ERP-Suite, Trading-Platform, Betting-Analytics - shared/: Libs catalog, knowledge-base Key features: - Centralized port, domain, database, and service registries - 23 SIMCO directives + 6 fundamental principles - NEXUS agent profiles with delegation rules - Validation scripts for workspace integrity - Dockerfiles for all services - Path aliases for quick reference 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.5 KiB
3.5 KiB
HU-EP010-03: Gestión de Contenido
Información General
| Campo | Valor |
|---|---|
| ID | US-AE-003 |
| Épica | EXT-002 - Admin Extendido |
| Título | Gestión y Moderación de Contenido |
| Prioridad | Media (P2) |
| Story Points | 16 SP |
| Estado | ✅ COMPLETED (95%) |
| Sprint | Sprint 3 |
| Duración Estimada | 4 días |
| Duración Real | 0.25h (FE-059 Day 6) |
| Fecha Implementación | 2025-11-15 |
Historia de Usuario
Como super admin o content moderator Quiero revisar, aprobar y rechazar contenido creado por profesores/comunidad Para mantener calidad y seguridad del contenido de la plataforma
Endpoints API (6 endpoints)
- GET /api/admin/content/exercises/pending - Lista ejercicios pendientes de aprobación
- POST /api/admin/content/exercises/:id/approve - Aprueba ejercicio
- POST /api/admin/content/exercises/:id/reject - Rechaza ejercicio (requiere reason)
- GET /api/admin/content/media - Lista archivos multimedia del sistema
- DELETE /api/admin/content/media/:id - Elimina archivo multimedia
- POST /api/admin/content/version - Crea versión de contenido (rollback/versioning)
Middleware: authenticateJWT → requireSuperAdmin → adminRateLimit → auditAdminAction
Rate Limit: 30 req/min
Criterios de Aceptación (Resumidos)
Funcionales
- ✓ Listar pending: Ejercicios/lessons creados por teachers esperando aprobación
- ✓ Ver preview: Renderizar ejercicio completo antes de aprobar
- ✓ Approve: Cambiar status a 'approved', publicar en catálogo
- ✓ Reject: Cambiar status a 'rejected', requiere rejection_reason, notificar creator
- ✓ Media list: Ver archivos (images, videos) con size, uploader, date
- ✓ Delete media: Remover archivos inapropiados/duplicados
- ✓ Versioning: Crear snapshots de contenido para rollback
- ✓ Audit logging: Todas las acciones se loguean
No Funcionales
- ✓ Response time p95 <400ms (preview puede ser pesado)
- ✓ Solo role='super_admin' o 'content_moderator'
- ✓ Rate limiting: 30 req/min
- ✓ Test coverage >85%
Definición de Hecho (DoD)
- ✅ 5/6 endpoints implementados (versioning básico)
- ✅ Frontend: ContentModerationQueue, ExercisePreview, Approve/Reject modals, MediaGallery
- ⚠️ Tests unitarios >85% (pendiente - deuda técnica)
- ⚠️ Tests E2E para flujos de moderación (pendiente - deuda técnica)
- ✅ Audit logging funcionando
- ✅ Documentación API completa
Referencias de Implementación
Archivos Clave
- Hook:
apps/admin/hooks/useContentManagement.ts(400+ líneas) - Página:
apps/admin/pages/AdminContentPage.tsx(450+ líneas) - API Client:
apps/admin/services/adminAPI.ts(content category) - Types:
apps/admin/types/content.types.ts - Components:
apps/admin/components/content/(ContentTable, ExercisePreview, ApprovalModal, etc.)
Documentación
- Implementación: FE-059 Day 6 (2025-11-15)
- Resumen:
/orchestration/frontend/FE-059/06-RESUMEN-DIA-6.md - Mapeo US:
/orchestration/frontend/FE-059/20-MAPEO-US-IMPLEMENTACION.md
Notas de Implementación
- Versioning de contenido está implementado de forma básica
- Puede requerir ampliación en sprint futuro para snapshot completo
- Por ahora soporta versionado simple de metadatos
Referencia API: /docs/02-especificaciones-tecnicas/apis/API-REFERENCE.md (líneas 2161-2167)
Última actualización: 2025-11-19 (Estado actualizado a COMPLETED 95%)
Creación original: 2025-10-28