workspace-v1/projects/gamilit/docs/03-fase-extensiones/EXT-002-admin-extendido/historias-usuario/US-AE-003-content-management.md
Adrian Flores Cortes 967ab360bb Initial commit: Workspace v1 with 3-layer architecture
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>
2025-12-23 00:35:19 -06:00

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)

  1. GET /api/admin/content/exercises/pending - Lista ejercicios pendientes de aprobación
  2. POST /api/admin/content/exercises/:id/approve - Aprueba ejercicio
  3. POST /api/admin/content/exercises/:id/reject - Rechaza ejercicio (requiere reason)
  4. GET /api/admin/content/media - Lista archivos multimedia del sistema
  5. DELETE /api/admin/content/media/:id - Elimina archivo multimedia
  6. POST /api/admin/content/version - Crea versión de contenido (rollback/versioning)

Middleware: authenticateJWTrequireSuperAdminadminRateLimitauditAdminAction 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