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