Changes include: - Updated architecture documentation - Enhanced module definitions (OQI-001 to OQI-008) - ML integration documentation updates - Trading strategies documentation - Orchestration and inventory updates - Docker configuration updates 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
14 KiB
| id | title | type | status | priority | epic | story_points | created_date | updated_date |
|---|---|---|---|---|---|---|---|---|
| US-EDU-002 | Ver Detalle de Curso | User Story | Done | Alta | OQI-002 | 3 | 2025-12-05 | 2026-01-04 |
US-EDU-002: Ver Detalle de Curso
Metadata
| Campo | Valor |
|---|---|
| ID | US-EDU-002 |
| Épica | OQI-002 - Módulo Educativo |
| Módulo | education |
| Prioridad | P0 |
| Story Points | 3 |
| Sprint | Sprint 3 |
| Estado | Pendiente |
| Asignado a | Por asignar |
Historia de Usuario
Como usuario interesado en un curso, quiero ver información detallada del curso antes de inscribirme, para evaluar si el contenido se ajusta a mis objetivos de aprendizaje.
Descripción Detallada
El usuario debe poder acceder a una página de detalle que muestre información completa del curso: descripción extendida, temario desglosado por módulos y lecciones, instructor, requisitos previos, objetivos de aprendizaje, reseñas de otros estudiantes, y botón de inscripción. Si el usuario ya está inscrito, debe mostrar su progreso y botón para continuar.
Mockups/Wireframes
┌─────────────────────────────────────────────────────────────────┐
│ ← Volver al catálogo 👤 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────┐ FIBONACCI RETRACEMENT BÁSICO │
│ │ │ ⭐ 4.8 (89 reseñas) | 1,234 estudiantes│
│ │ [VIDEO INTRO] │ Por: Carlos Mendoza | 2h 30m | 5 módul│
│ │ ▶ Preview │ │
│ │ │ [📥 Inscribirse gratis] │
│ └────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ PESTAÑAS: [Descripción] [Temario] [Instructor] [Reseñas] │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ QUÉ APRENDERÁS │
│ ✓ Identificar niveles de Fibonacci en gráficos │
│ ✓ Aplicar retrocesos en tendencias alcistas y bajistas │
│ ✓ Combinar Fibonacci con otros indicadores │
│ ✓ Realizar entradas y salidas precisas │
│ │
│ REQUISITOS │
│ • Conocimientos básicos de trading │
│ • Familiaridad con gráficos de velas │
│ │
│ DESCRIPCIÓN │
│ Fibonacci es una herramienta fundamental del análisis técnico...│
│ [Texto completo de descripción del curso] │
│ │
│ PARA QUIÉN ES ESTE CURSO │
│ • Traders principiantes que quieren dominar Fibonacci │
│ • Analistas técnicos que buscan mejorar su precisión │
│ │
└─────────────────────────────────────────────────────────────────┘
[PESTAÑA TEMARIO]
┌─────────────────────────────────────────────────────────────────┐
│ 📚 TEMARIO DEL CURSO 5 módulos | 23 lecciones │
│ │
│ ▼ Módulo 1: Introducción a Fibonacci (30 min) │
│ 1. ¿Qué es Fibonacci? (5:30) [🎬 Video] [Gratis] │
│ 2. Historia y fundamentos (8:45) [🎬 Video] [Gratis] │
│ 3. La secuencia de Fibonacci (10:20) [📄 Artículo] │
│ 4. Quiz: Fundamentos (15 preguntas) [📝 Quiz] │
│ │
│ ▼ Módulo 2: Niveles de Retroceso (45 min) │
│ 1. Niveles principales: 38.2%, 50%, 61.8% (12:15) │
│ 2. Cómo dibujar Fibonacci en gráfico (18:30) │
│ 3. Práctica: Identificar retrocesos (20:00) │
│ 4. Quiz: Niveles de retroceso │
│ │
│ ▶ Módulo 3: Fibonacci en Tendencias (35 min) [🔒 Bloqueado] │
│ ▶ Módulo 4: Estrategias Avanzadas (25 min) [🔒 Bloqueado] │
│ ▶ Módulo 5: Fibonacci + Otros Indicadores (15 min) [🔒] │
│ │
└─────────────────────────────────────────────────────────────────┘
Criterios de Aceptación
Escenario 1: Ver detalle de curso no inscrito
DADO que el usuario está autenticado
Y NO está inscrito en el curso
CUANDO accede a /education/courses/fibonacci-retracement-basico
ENTONCES se muestra la página de detalle del curso
Y se muestra: título, rating, estudiantes, instructor, duración
Y se muestra botón "Inscribirse" o "Inscribirse gratis"
Y se muestra video preview del curso (si existe)
Y se muestra descripción completa
Y se muestra temario desglosado por módulos
Escenario 2: Ver detalle de curso inscrito
DADO que el usuario está inscrito en el curso
Y tiene 60% de progreso
CUANDO accede al detalle del curso
ENTONCES se muestra barra de progreso "60% completado"
Y el botón principal dice "Continuar curso"
Y se destaca la última lección accedida
Y se muestra resumen de progreso: "14 de 23 lecciones completadas"
Escenario 3: Ver temario completo
DADO que el usuario está en la pestaña "Temario"
ENTONCES se muestran todos los módulos del curso
Y cada módulo muestra: título, duración total, número de lecciones
Y cada lección muestra: título, duración, tipo (video/artículo/quiz)
Y se puede expandir/colapsar cada módulo
Y lecciones gratuitas están marcadas como "Gratis"
Y lecciones bloqueadas muestran candado 🔒
Escenario 4: Preview de lección gratuita
DADO que el usuario NO está inscrito
Y el curso tiene lecciones marcadas como "Gratis"
CUANDO hace click en una lección gratuita
ENTONCES puede ver el contenido sin inscribirse
Y se muestra CTA "Inscríbete para acceder a todo el contenido"
Escenario 5: Ver información del instructor
DADO que el usuario está en la pestaña "Instructor"
ENTONCES se muestra: foto, nombre, título, biografía
Y se muestra lista de otros cursos del instructor
Y se muestran estadísticas: total estudiantes, cursos, rating promedio
Y se muestra botón "Ver perfil completo" (opcional)
Escenario 6: Ver reseñas de estudiantes
DADO que el usuario está en la pestaña "Reseñas"
ENTONCES se muestra rating promedio (ej: 4.8/5)
Y se muestra distribución de ratings (5★: 60%, 4★: 30%, etc.)
Y se muestran las últimas 10 reseñas
Y cada reseña muestra: nombre del usuario, fecha, rating, comentario
Y se puede filtrar por: Todas, 5★, 4★, 3★, 2★, 1★
Escenario 7: Inscribirse en curso
DADO que el usuario NO está inscrito
Y el curso es gratuito
CUANDO hace click en "Inscribirse gratis"
ENTONCES se registra la inscripción en backend
Y se muestra toast "¡Te has inscrito en el curso!"
Y el botón cambia a "Comenzar curso"
Y se navega a la primera lección al hacer click
Escenario 8: Curso premium sin suscripción
DADO que el curso es premium
Y el usuario NO tiene suscripción activa
CUANDO intenta inscribirse
ENTONCES se muestra modal "Este curso requiere suscripción Premium"
Y se muestra botón "Ver planes" que lleva a /pricing
Y NO se permite inscripción
Criterios Adicionales
- Video preview auto-play al cargar página (muted)
- Compartir curso en redes sociales
- Agregar curso a "Guardados" (wishlist)
- Mostrar badge "Bestseller" si es top 10 más vendido
- Mostrar "Última actualización: DD/MM/YYYY"
- SEO optimizado con meta tags dinámicos
- Structured data (schema.org) para Google
Tareas Técnicas
Database:
- DB-EDU-004: Verificar relación courses -> modules -> lessons
- DB-EDU-005: Tabla course_reviews para reseñas
- DB-EDU-006: Tabla course_enrollments para inscripciones
Backend:
- BE-EDU-008: Endpoint GET /education/courses/:slug
- BE-EDU-009: Endpoint POST /education/courses/:id/enroll
- BE-EDU-010: Endpoint GET /education/courses/:id/reviews
- BE-EDU-011: Implementar CourseService.getBySlug()
- BE-EDU-012: Implementar EnrollmentService.enroll()
- BE-EDU-013: Verificar acceso Premium para cursos pagos
Frontend:
- FE-EDU-009: Crear página CourseDetailPage.tsx
- FE-EDU-010: Crear componente CourseHeader.tsx
- FE-EDU-011: Crear componente CourseSyllabus.tsx (temario)
- FE-EDU-012: Crear componente InstructorCard.tsx
- FE-EDU-013: Crear componente CourseReviews.tsx
- FE-EDU-014: Crear componente EnrollButton.tsx
- FE-EDU-015: Implementar tabs de navegación
- FE-EDU-016: Modal de confirmación de inscripción
Tests:
- TEST-EDU-004: Test inscripción en curso gratuito
- TEST-EDU-005: Test bloqueo de curso premium
- TEST-EDU-006: Test E2E ver detalle e inscribirse
Dependencias
Depende de:
- US-EDU-001: Ver catálogo - Estado: Pendiente
- US-AUTH-001: Autenticación - Estado: ✅ Completado
Bloquea:
- US-EDU-003: Iniciar lección
- US-EDU-007: Ver progreso
Notas Técnicas
Endpoints involucrados:
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /education/courses/:slug | Detalle completo del curso |
| POST | /education/courses/:id/enroll | Inscribirse en curso |
| GET | /education/courses/:id/reviews | Reseñas del curso |
Response GET /courses/:slug:
{
course: {
id: "uuid-1",
title: "Fibonacci Retracement Básico",
slug: "fibonacci-retracement-basico",
description: "Descripción completa del curso...",
learningObjectives: [
"Identificar niveles de Fibonacci",
"Aplicar retrocesos en tendencias"
],
requirements: [
"Conocimientos básicos de trading",
"Familiaridad con gráficos"
],
targetAudience: [
"Traders principiantes",
"Analistas técnicos"
],
category: {...},
level: "beginner",
duration: 150,
moduleCount: 5,
lessonCount: 23,
studentCount: 1234,
rating: 4.8,
reviewCount: 89,
instructor: {
id: "inst-1",
name: "Carlos Mendoza",
avatar: "...",
title: "Senior Trader",
bio: "15 años de experiencia...",
coursesCount: 8,
studentsCount: 12500,
rating: 4.9
},
isPremium: false,
previewVideoUrl: "https://vimeo.com/...",
updatedAt: "2025-11-20T10:00:00Z",
publishedAt: "2025-11-15T10:00:00Z",
modules: [
{
id: "mod-1",
title: "Introducción a Fibonacci",
order: 1,
duration: 30,
lessonCount: 4,
lessons: [
{
id: "les-1",
title: "¿Qué es Fibonacci?",
type: "video",
duration: 5.5,
isFree: true,
isCompleted: false,
order: 1
}
// ... más lecciones
]
}
// ... más módulos
],
userEnrollment: {
enrolledAt: "2025-12-01T14:30:00Z",
progressPercent: 60,
lessonsCompleted: 14,
lastAccessedLesson: {
id: "les-14",
title: "Fibonacci en tendencias bajistas"
},
lastAccessedAt: "2025-12-04T18:20:00Z"
}
}
}
Entidades/Tablas:
education.courseseducation.moduleseducation.lessonseducation.course_enrollmentseducation.course_reviewseducation.instructors
Definition of Ready (DoR)
- Historia claramente escrita
- Criterios de aceptación definidos
- Story points estimados
- Dependencias identificadas
- Sin bloqueadores
- Diseño/mockup disponible
- API spec disponible
Definition of Done (DoD)
- Código implementado según criterios
- Tests unitarios escritos y pasando
- Tests de integración pasando
- Code review aprobado
- Documentación actualizada
- QA aprobado
- Desplegado en ambiente de pruebas
Historial de Cambios
| Fecha | Cambio | Autor |
|---|---|---|
| 2025-12-05 | Creación | Requirements-Analyst |
Creada por: Requirements-Analyst Fecha: 2025-12-05 Última actualización: 2025-12-05