387 lines
10 KiB
Markdown
387 lines
10 KiB
Markdown
|
|
# AN-003: Historias de Usuario
|
||
|
|
|
||
|
|
**Proyecto:** Sistema de Registro de Estudiantes - Inter Rapidísimo
|
||
|
|
**Rol:** Product Owner
|
||
|
|
**Fecha:** 2026-01-07
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. Épica Principal
|
||
|
|
|
||
|
|
**EP-001: Sistema de Inscripción de Estudiantes**
|
||
|
|
|
||
|
|
Como institución educativa, necesito un sistema web que permita a los estudiantes registrarse e inscribirse en materias siguiendo las reglas del programa de créditos, para gestionar eficientemente el proceso de matrícula.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. Historias de Usuario
|
||
|
|
|
||
|
|
### US-001: Registro de Estudiante
|
||
|
|
|
||
|
|
| Campo | Valor |
|
||
|
|
|-------|-------|
|
||
|
|
| **ID** | US-001 |
|
||
|
|
| **Épica** | EP-001 |
|
||
|
|
| **Prioridad** | Alta |
|
||
|
|
| **Story Points** | 5 |
|
||
|
|
| **Sprint** | 1 |
|
||
|
|
|
||
|
|
**Historia:**
|
||
|
|
> Como **estudiante nuevo**,
|
||
|
|
> quiero **registrarme en el sistema con mi nombre y correo electrónico**,
|
||
|
|
> para **poder acceder al programa de inscripción de materias**.
|
||
|
|
|
||
|
|
**Criterios de Aceptación:**
|
||
|
|
|
||
|
|
```gherkin
|
||
|
|
Scenario: Registro exitoso de estudiante
|
||
|
|
Given estoy en la página de registro
|
||
|
|
When ingreso un nombre válido "Juan Pérez"
|
||
|
|
And ingreso un email válido "juan@email.com"
|
||
|
|
And presiono el botón "Registrar"
|
||
|
|
Then el sistema crea mi cuenta
|
||
|
|
And veo un mensaje de confirmación
|
||
|
|
And soy redirigido a la página de inscripción
|
||
|
|
|
||
|
|
Scenario: Registro con email duplicado
|
||
|
|
Given existe un estudiante con email "juan@email.com"
|
||
|
|
When intento registrarme con el mismo email
|
||
|
|
Then veo el mensaje "Ya existe un estudiante con este email"
|
||
|
|
And el formulario no se envía
|
||
|
|
|
||
|
|
Scenario: Registro con email inválido
|
||
|
|
Given estoy en la página de registro
|
||
|
|
When ingreso un email inválido "juanemail.com"
|
||
|
|
Then veo el mensaje "Formato de email no válido"
|
||
|
|
And el botón de registro está deshabilitado
|
||
|
|
```
|
||
|
|
|
||
|
|
**Notas Técnicas:**
|
||
|
|
- Validación de email en frontend y backend
|
||
|
|
- Email almacenado en minúsculas (normalización)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### US-002: Consulta de Materias Disponibles
|
||
|
|
|
||
|
|
| Campo | Valor |
|
||
|
|
|-------|-------|
|
||
|
|
| **ID** | US-002 |
|
||
|
|
| **Épica** | EP-001 |
|
||
|
|
| **Prioridad** | Alta |
|
||
|
|
| **Story Points** | 3 |
|
||
|
|
| **Sprint** | 1 |
|
||
|
|
|
||
|
|
**Historia:**
|
||
|
|
> Como **estudiante registrado**,
|
||
|
|
> quiero **ver el catálogo de las 10 materias disponibles**,
|
||
|
|
> para **conocer mis opciones de inscripción**.
|
||
|
|
|
||
|
|
**Criterios de Aceptación:**
|
||
|
|
|
||
|
|
```gherkin
|
||
|
|
Scenario: Ver catálogo completo
|
||
|
|
Given estoy autenticado como estudiante
|
||
|
|
When accedo a la sección de materias
|
||
|
|
Then veo una lista de 10 materias
|
||
|
|
And cada materia muestra nombre, créditos (3) y profesor
|
||
|
|
|
||
|
|
Scenario: Ver detalle de materia
|
||
|
|
Given estoy viendo el catálogo de materias
|
||
|
|
When selecciono "Matemáticas I"
|
||
|
|
Then veo el nombre del profesor asignado
|
||
|
|
And veo que equivale a 3 créditos
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### US-003: Inscripción en Materia
|
||
|
|
|
||
|
|
| Campo | Valor |
|
||
|
|
|-------|-------|
|
||
|
|
| **ID** | US-003 |
|
||
|
|
| **Épica** | EP-001 |
|
||
|
|
| **Prioridad** | Alta |
|
||
|
|
| **Story Points** | 8 |
|
||
|
|
| **Sprint** | 1 |
|
||
|
|
|
||
|
|
**Historia:**
|
||
|
|
> Como **estudiante registrado**,
|
||
|
|
> quiero **inscribirme en una materia disponible**,
|
||
|
|
> para **acumular créditos en mi programa académico**.
|
||
|
|
|
||
|
|
**Criterios de Aceptación:**
|
||
|
|
|
||
|
|
```gherkin
|
||
|
|
Scenario: Inscripción exitosa
|
||
|
|
Given tengo menos de 3 materias inscritas
|
||
|
|
And la materia "Física I" está disponible para mí
|
||
|
|
When presiono "Inscribir" en "Física I"
|
||
|
|
Then la materia se agrega a mis inscripciones
|
||
|
|
And mis créditos aumentan en 3
|
||
|
|
And veo mensaje de confirmación
|
||
|
|
|
||
|
|
Scenario: Intento inscripción con máximo alcanzado
|
||
|
|
Given ya tengo 3 materias inscritas
|
||
|
|
When intento inscribir otra materia
|
||
|
|
Then veo el mensaje "Ya tienes el máximo de 3 materias"
|
||
|
|
And el botón de inscripción está deshabilitado
|
||
|
|
|
||
|
|
Scenario: Intento inscripción con mismo profesor
|
||
|
|
Given estoy inscrito en "Matemáticas I" (Profesor A)
|
||
|
|
When intento inscribir "Matemáticas II" (Profesor A)
|
||
|
|
Then veo el mensaje "Ya tienes una materia con este profesor"
|
||
|
|
And la inscripción no se procesa
|
||
|
|
```
|
||
|
|
|
||
|
|
**Notas Técnicas:**
|
||
|
|
- Validaciones RN-003 y RN-005 en capa de dominio
|
||
|
|
- Transacción atómica para inscripción
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### US-004: Cancelación de Inscripción
|
||
|
|
|
||
|
|
| Campo | Valor |
|
||
|
|
|-------|-------|
|
||
|
|
| **ID** | US-004 |
|
||
|
|
| **Épica** | EP-001 |
|
||
|
|
| **Prioridad** | Media |
|
||
|
|
| **Story Points** | 3 |
|
||
|
|
| **Sprint** | 1 |
|
||
|
|
|
||
|
|
**Historia:**
|
||
|
|
> Como **estudiante inscrito**,
|
||
|
|
> quiero **cancelar la inscripción de una materia**,
|
||
|
|
> para **liberar espacio y poder inscribir otra**.
|
||
|
|
|
||
|
|
**Criterios de Aceptación:**
|
||
|
|
|
||
|
|
```gherkin
|
||
|
|
Scenario: Cancelación exitosa
|
||
|
|
Given estoy inscrito en "Física I"
|
||
|
|
When presiono "Cancelar inscripción" en esa materia
|
||
|
|
And confirmo la acción
|
||
|
|
Then la materia se elimina de mis inscripciones
|
||
|
|
And mis créditos disminuyen en 3
|
||
|
|
And la materia vuelve a estar disponible
|
||
|
|
|
||
|
|
Scenario: Cancelar con confirmación
|
||
|
|
Given estoy inscrito en "Física I"
|
||
|
|
When presiono "Cancelar inscripción"
|
||
|
|
Then veo un diálogo de confirmación
|
||
|
|
And puedo cancelar o confirmar la acción
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### US-005: Visualización de Materias No Disponibles
|
||
|
|
|
||
|
|
| Campo | Valor |
|
||
|
|
|-------|-------|
|
||
|
|
| **ID** | US-005 |
|
||
|
|
| **Épica** | EP-001 |
|
||
|
|
| **Prioridad** | Media |
|
||
|
|
| **Story Points** | 3 |
|
||
|
|
| **Sprint** | 2 |
|
||
|
|
|
||
|
|
**Historia:**
|
||
|
|
> Como **estudiante registrado**,
|
||
|
|
> quiero **ver claramente qué materias no puedo inscribir y por qué**,
|
||
|
|
> para **tomar decisiones informadas sobre mi inscripción**.
|
||
|
|
|
||
|
|
**Criterios de Aceptación:**
|
||
|
|
|
||
|
|
```gherkin
|
||
|
|
Scenario: Ver materias bloqueadas por profesor
|
||
|
|
Given estoy inscrito en "Matemáticas I" (Profesor A)
|
||
|
|
When veo el catálogo de materias
|
||
|
|
Then "Matemáticas II" aparece deshabilitada
|
||
|
|
And veo el tooltip "Ya tienes materia con Profesor A"
|
||
|
|
|
||
|
|
Scenario: Ver contador de materias restantes
|
||
|
|
Given tengo 2 materias inscritas
|
||
|
|
When veo mi panel de inscripción
|
||
|
|
Then veo "2/3 materias inscritas"
|
||
|
|
And veo "Puedes inscribir 1 materia más"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### US-006: Consulta de Otros Estudiantes
|
||
|
|
|
||
|
|
| Campo | Valor |
|
||
|
|
|-------|-------|
|
||
|
|
| **ID** | US-006 |
|
||
|
|
| **Épica** | EP-001 |
|
||
|
|
| **Prioridad** | Baja |
|
||
|
|
| **Story Points** | 2 |
|
||
|
|
| **Sprint** | 2 |
|
||
|
|
|
||
|
|
**Historia:**
|
||
|
|
> Como **estudiante registrado**,
|
||
|
|
> quiero **ver la lista de otros estudiantes en el sistema**,
|
||
|
|
> para **conocer quiénes están en el programa**.
|
||
|
|
|
||
|
|
**Criterios de Aceptación:**
|
||
|
|
|
||
|
|
```gherkin
|
||
|
|
Scenario: Ver lista de estudiantes
|
||
|
|
Given estoy autenticado como estudiante
|
||
|
|
When accedo a la sección de estudiantes
|
||
|
|
Then veo una lista de todos los estudiantes registrados
|
||
|
|
And cada estudiante muestra solo su nombre
|
||
|
|
```
|
||
|
|
|
||
|
|
**Notas:**
|
||
|
|
- Por privacidad, no se muestra email ni materias de otros estudiantes
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### US-007: Ver Compañeros de Clase
|
||
|
|
|
||
|
|
| Campo | Valor |
|
||
|
|
|-------|-------|
|
||
|
|
| **ID** | US-007 |
|
||
|
|
| **Épica** | EP-001 |
|
||
|
|
| **Prioridad** | Media |
|
||
|
|
| **Story Points** | 5 |
|
||
|
|
| **Sprint** | 2 |
|
||
|
|
|
||
|
|
**Historia:**
|
||
|
|
> Como **estudiante inscrito en materias**,
|
||
|
|
> quiero **ver los nombres de mis compañeros en cada clase**,
|
||
|
|
> para **conocer con quiénes compartiré el curso**.
|
||
|
|
|
||
|
|
**Criterios de Aceptación:**
|
||
|
|
|
||
|
|
```gherkin
|
||
|
|
Scenario: Ver compañeros por materia
|
||
|
|
Given estoy inscrito en "Física I"
|
||
|
|
And otros estudiantes también están inscritos en "Física I"
|
||
|
|
When accedo a "Mis compañeros de clase"
|
||
|
|
Then veo "Física I" como sección
|
||
|
|
And bajo ella veo la lista de nombres de compañeros
|
||
|
|
|
||
|
|
Scenario: Sin compañeros en materia
|
||
|
|
Given estoy inscrito en "Redes I"
|
||
|
|
And ningún otro estudiante está inscrito en "Redes I"
|
||
|
|
When accedo a "Mis compañeros de clase"
|
||
|
|
Then veo "Redes I" con mensaje "Sin compañeros aún"
|
||
|
|
|
||
|
|
Scenario: Privacidad de datos
|
||
|
|
Given estoy viendo mis compañeros de clase
|
||
|
|
Then solo veo los nombres
|
||
|
|
And NO veo emails ni otras materias de mis compañeros
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### US-008: Actualización de Datos Personales
|
||
|
|
|
||
|
|
| Campo | Valor |
|
||
|
|
|-------|-------|
|
||
|
|
| **ID** | US-008 |
|
||
|
|
| **Épica** | EP-001 |
|
||
|
|
| **Prioridad** | Baja |
|
||
|
|
| **Story Points** | 2 |
|
||
|
|
| **Sprint** | 2 |
|
||
|
|
|
||
|
|
**Historia:**
|
||
|
|
> Como **estudiante registrado**,
|
||
|
|
> quiero **actualizar mi nombre o correo electrónico**,
|
||
|
|
> para **mantener mis datos actualizados**.
|
||
|
|
|
||
|
|
**Criterios de Aceptación:**
|
||
|
|
|
||
|
|
```gherkin
|
||
|
|
Scenario: Actualización exitosa de nombre
|
||
|
|
Given estoy en mi perfil
|
||
|
|
When cambio mi nombre a "Juan Carlos Pérez"
|
||
|
|
And presiono "Guardar"
|
||
|
|
Then mis datos se actualizan
|
||
|
|
And veo mensaje de confirmación
|
||
|
|
|
||
|
|
Scenario: Cambio de email a uno existente
|
||
|
|
Given existe otro estudiante con email "otro@email.com"
|
||
|
|
When intento cambiar mi email a "otro@email.com"
|
||
|
|
Then veo el mensaje "Este email ya está registrado"
|
||
|
|
And el cambio no se procesa
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### US-009: Eliminación de Cuenta
|
||
|
|
|
||
|
|
| Campo | Valor |
|
||
|
|
|-------|-------|
|
||
|
|
| **ID** | US-009 |
|
||
|
|
| **Épica** | EP-001 |
|
||
|
|
| **Prioridad** | Baja |
|
||
|
|
| **Story Points** | 2 |
|
||
|
|
| **Sprint** | 2 |
|
||
|
|
|
||
|
|
**Historia:**
|
||
|
|
> Como **estudiante registrado**,
|
||
|
|
> quiero **eliminar mi cuenta del sistema**,
|
||
|
|
> para **remover mis datos si ya no deseo participar**.
|
||
|
|
|
||
|
|
**Criterios de Aceptación:**
|
||
|
|
|
||
|
|
```gherkin
|
||
|
|
Scenario: Eliminación con confirmación
|
||
|
|
Given estoy en mi perfil
|
||
|
|
When presiono "Eliminar cuenta"
|
||
|
|
Then veo un diálogo de confirmación
|
||
|
|
When confirmo la eliminación
|
||
|
|
Then mi cuenta y todas mis inscripciones se eliminan
|
||
|
|
And soy redirigido a la página de inicio
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. Backlog Priorizado
|
||
|
|
|
||
|
|
| Prioridad | Historia | Story Points | Sprint |
|
||
|
|
|-----------|----------|--------------|--------|
|
||
|
|
| 1 | US-001: Registro de Estudiante | 5 | 1 |
|
||
|
|
| 2 | US-002: Consulta de Materias | 3 | 1 |
|
||
|
|
| 3 | US-003: Inscripción en Materia | 8 | 1 |
|
||
|
|
| 4 | US-004: Cancelación de Inscripción | 3 | 1 |
|
||
|
|
| 5 | US-005: Materias No Disponibles | 3 | 2 |
|
||
|
|
| 6 | US-007: Ver Compañeros | 5 | 2 |
|
||
|
|
| 7 | US-006: Consulta de Estudiantes | 2 | 2 |
|
||
|
|
| 8 | US-008: Actualizar Datos | 2 | 2 |
|
||
|
|
| 9 | US-009: Eliminar Cuenta | 2 | 2 |
|
||
|
|
|
||
|
|
**Total Story Points:** 33
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. Definición de Listo (DoR)
|
||
|
|
|
||
|
|
- [ ] Historia tiene criterios de aceptación claros
|
||
|
|
- [ ] Dependencias identificadas
|
||
|
|
- [ ] Estimación en story points
|
||
|
|
- [ ] Diseño de UI aprobado (si aplica)
|
||
|
|
- [ ] APIs definidas
|
||
|
|
|
||
|
|
## 5. Definición de Terminado (DoD)
|
||
|
|
|
||
|
|
- [ ] Código implementado y revisado
|
||
|
|
- [ ] Tests unitarios (>80% coverage)
|
||
|
|
- [ ] Tests de integración pasando
|
||
|
|
- [ ] Documentación actualizada
|
||
|
|
- [ ] Validaciones de negocio probadas
|
||
|
|
- [ ] Sin deuda técnica crítica
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. Aprobación
|
||
|
|
|
||
|
|
| Rol | Nombre | Fecha | Firma |
|
||
|
|
|-----|--------|-------|-------|
|
||
|
|
| Product Owner | Sistema | 2026-01-07 | ✓ |
|
||
|
|
| Scrum Master | Pendiente | - | - |
|
||
|
|
| Tech Lead | Pendiente | - | - |
|