# 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 | - | - |