academia/docs/entregables/01-analisis/requisitos/AN-001-requisitos-funcional...

274 lines
9.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AN-001: Análisis de Requisitos Funcionales
**Proyecto:** Sistema de Registro de Estudiantes - Inter Rapidísimo
**Rol:** Analista de Sistemas
**Fecha:** 2026-01-07
---
## 1. Resumen Ejecutivo
Sistema web para gestión de inscripciones estudiantiles con programa de créditos académicos. Permite CRUD de estudiantes, inscripción en materias con restricciones de negocio, y visualización de compañeros de clase.
---
## 2. Requisitos Funcionales Identificados
### RF-001: Registro de Estudiantes (CRUD)
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-001 |
| **Nombre** | Gestión CRUD de Estudiantes |
| **Descripción** | El sistema debe permitir crear, leer, actualizar y eliminar registros de estudiantes |
| **Prioridad** | Alta |
| **Fuente** | Enunciado punto 1 |
**Criterios de Aceptación:**
- [ ] CA-001.1: Usuario puede crear estudiante con nombre y email válido
- [ ] CA-001.2: Usuario puede consultar lista de estudiantes registrados
- [ ] CA-001.3: Usuario puede actualizar datos de un estudiante existente
- [ ] CA-001.4: Usuario puede eliminar un estudiante (cascade con inscripciones)
- [ ] CA-001.5: Email debe ser único en el sistema
---
### RF-002: Programa de Créditos
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-002 |
| **Nombre** | Adhesión a Programa de Créditos |
| **Descripción** | Los estudiantes se inscriben en un programa basado en créditos académicos |
| **Prioridad** | Alta |
| **Fuente** | Enunciado punto 2 |
**Criterios de Aceptación:**
- [ ] CA-002.1: Sistema muestra créditos totales del estudiante
- [ ] CA-002.2: Créditos se calculan automáticamente según materias inscritas
- [ ] CA-002.3: Máximo 9 créditos por estudiante (3 materias × 3 créditos)
---
### RF-003: Catálogo de Materias
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-003 |
| **Nombre** | Gestión de 10 Materias |
| **Descripción** | El sistema debe gestionar un catálogo fijo de 10 materias académicas |
| **Prioridad** | Alta |
| **Fuente** | Enunciado punto 3 |
**Criterios de Aceptación:**
- [ ] CA-003.1: Sistema contiene exactamente 10 materias predefinidas
- [ ] CA-003.2: Usuario puede consultar catálogo completo de materias
- [ ] CA-003.3: Cada materia muestra nombre, créditos y profesor asignado
---
### RF-004: Valor de Créditos por Materia
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-004 |
| **Nombre** | Asignación de 3 Créditos por Materia |
| **Descripción** | Cada materia del catálogo equivale a exactamente 3 créditos |
| **Prioridad** | Alta |
| **Fuente** | Enunciado punto 4 |
**Criterios de Aceptación:**
- [ ] CA-004.1: Todas las materias tienen valor fijo de 3 créditos
- [ ] CA-004.2: Sistema muestra créditos en detalle de cada materia
---
### RF-005: Límite de Materias por Estudiante
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-005 |
| **Nombre** | Máximo 3 Materias por Estudiante |
| **Descripción** | Un estudiante solo puede inscribirse en máximo 3 materias |
| **Prioridad** | Alta |
| **Fuente** | Enunciado punto 5 |
**Criterios de Aceptación:**
- [ ] CA-005.1: Sistema impide inscripción si estudiante ya tiene 3 materias
- [ ] CA-005.2: Sistema muestra contador de materias inscritas
- [ ] CA-005.3: Mensaje de error claro al intentar exceder límite
---
### RF-006: Asignación Profesores-Materias
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-006 |
| **Nombre** | 5 Profesores con 2 Materias c/u |
| **Descripción** | El sistema tiene 5 profesores, cada uno dicta exactamente 2 materias |
| **Prioridad** | Alta |
| **Fuente** | Enunciado punto 6 |
**Criterios de Aceptación:**
- [ ] CA-006.1: Sistema contiene exactamente 5 profesores predefinidos
- [ ] CA-006.2: Cada profesor tiene asignadas exactamente 2 materias
- [ ] CA-006.3: Usuario puede ver qué profesor dicta cada materia
---
### RF-007: Restricción de Profesor Único
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-007 |
| **Nombre** | Prohibición de Mismo Profesor |
| **Descripción** | Un estudiante no puede inscribirse en dos materias del mismo profesor |
| **Prioridad** | Crítica |
| **Fuente** | Enunciado punto 7 |
**Criterios de Aceptación:**
- [ ] CA-007.1: Sistema valida profesor al momento de inscripción
- [ ] CA-007.2: Materias no disponibles se muestran deshabilitadas con razón
- [ ] CA-007.3: Mensaje de error específico: "Ya tienes una materia con este profesor"
---
### RF-008: Visualización de Registros
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-008 |
| **Nombre** | Consulta de Otros Estudiantes |
| **Descripción** | Cada estudiante puede ver en línea los registros de otros estudiantes |
| **Prioridad** | Media |
| **Fuente** | Enunciado punto 8 |
**Criterios de Aceptación:**
- [ ] CA-008.1: Usuario puede ver lista de todos los estudiantes registrados
- [ ] CA-008.2: Información visible: nombre (según restricciones de privacidad)
---
### RF-009: Compañeros de Clase
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-009 |
| **Nombre** | Ver Nombres de Compañeros por Materia |
| **Descripción** | El estudiante puede ver solo el nombre de alumnos con quienes compartirá clase |
| **Prioridad** | Media |
| **Fuente** | Enunciado punto 9 |
**Criterios de Aceptación:**
- [ ] CA-009.1: Sistema muestra compañeros agrupados por materia
- [ ] CA-009.2: Solo se muestra el nombre (no email ni otros datos)
- [ ] CA-009.3: Solo muestra compañeros de materias donde está inscrito
---
### RF-010: Autenticación y Roles
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-010 |
| **Nombre** | Sistema de Autenticación con Roles |
| **Descripción** | El sistema debe soportar autenticación JWT con roles Admin y Student |
| **Prioridad** | Alta |
| **Fuente** | Requisito de seguridad implícito |
**Criterios de Aceptación:**
- [ ] CA-010.1: Usuario puede iniciar sesión con credenciales válidas
- [ ] CA-010.2: Sistema genera token JWT con claims de rol
- [ ] CA-010.3: Rutas protegidas requieren autenticación
- [ ] CA-010.4: Admin puede acceder a gestión de estudiantes
- [ ] CA-010.5: Student solo puede acceder a su dashboard personal
---
### RF-011: Flujo de Activación de Estudiantes
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-011 |
| **Nombre** | Activación de Cuenta de Estudiante |
| **Descripción** | Admin crea estudiantes con código de activación. Estudiantes activan su cuenta para crear credenciales |
| **Prioridad** | Alta |
| **Fuente** | Requisito de seguridad y UX |
**Criterios de Aceptación:**
- [ ] CA-011.1: Admin puede crear estudiante y obtener código de activación
- [ ] CA-011.2: Código de activación es de 12 caracteres alfanuméricos
- [ ] CA-011.3: Código de activación expira en 48 horas
- [ ] CA-011.4: Estudiante puede validar código y crear credenciales
- [ ] CA-011.5: Sistema genera código de recuperación al activar
- [ ] CA-011.6: Código de recuperación se muestra solo una vez
- [ ] CA-011.7: Admin puede regenerar código si expira
---
### RF-012: Control de Acceso por Rol
| Atributo | Descripción |
|----------|-------------|
| **ID** | RF-012 |
| **Nombre** | Restricción de Acceso por Rol |
| **Descripción** | El sistema debe restringir funcionalidades según el rol del usuario |
| **Prioridad** | Alta |
| **Fuente** | Requisito de seguridad |
**Criterios de Aceptación:**
- [ ] CA-012.1: Admin puede ver y gestionar todos los estudiantes
- [ ] CA-012.2: Student no puede acceder a rutas de administración
- [ ] CA-012.3: Student solo ve su información y materias
- [ ] CA-012.4: Intentos de acceso no autorizado redirigen al dashboard
---
## 3. Matriz de Trazabilidad
| Requisito | Historia | Componente Backend | Componente Frontend |
|-----------|----------|-------------------|---------------------|
| RF-001 | US-001 | StudentController, StudentService | StudentFormComponent |
| RF-002 | US-002 | EnrollmentService | DashboardComponent |
| RF-003 | US-003 | SubjectController | SubjectListComponent |
| RF-004 | US-003 | Subject Entity | SubjectCardComponent |
| RF-005 | US-004 | EnrollmentValidator | EnrollmentComponent |
| RF-006 | US-003 | Professor Entity | ProfessorListComponent |
| RF-007 | US-005 | EnrollmentDomainService | EnrollmentComponent |
| RF-008 | US-006 | StudentQuery | StudentListComponent |
| RF-009 | US-007 | ClassmatesQuery | ClassmatesComponent |
| RF-010 | US-010 | LoginCommand, JwtService | LoginComponent |
| RF-011 | US-011 | ActivateAccountCommand | ActivateComponent |
| RF-012 | US-012 | AuthorizationMiddleware | auth.guard.ts |
---
## 4. Dependencias entre Requisitos
```
RF-010 (Autenticación)
RF-011 (Activación) ──► RF-012 (Control Acceso)
↓ ↓
RF-001 (Estudiantes) │
↓ ▼
RF-002 (Programa Créditos) ← RF-004 (3 créditos/materia)
RF-005 (Max 3 materias) ← RF-003 (10 materias)
↓ ↓
RF-007 (Restricción profesor) ← RF-006 (5 profesores)
RF-008/RF-009 (Visualización)
```
---
## 5. Aprobación
| Rol | Nombre | Fecha | Firma |
|-----|--------|-------|-------|
| Analista | Sistema | 2026-01-07 | ✓ |
| Product Owner | Pendiente | - | - |
| Líder Técnico | Pendiente | - | - |