# Reporte de Defectos - Pruebas Manuales QA

**Fecha:** 2026-01-07
**Tester:** QA Automation con Playwright
**Ambiente:** k3s (academia.ingeniumcodex.com)
**Estado:** Completado

---

## Resumen Ejecutivo

| Severidad | Cantidad | Corregidos |
|-----------|----------|------------|
| Critica   | 1        | 1          |
| Alta      | 1        | 1          |
| Media     | 1        | 1          |
| Baja      | 1        | 1          |

**Todos los defectos han sido corregidos y validados.**

---

## DEF-001: SQL Server OOMKilled - Memoria Insuficiente

### Clasificacion
- **ID:** DEF-001
- **Severidad:** CRITICA
- **Componente:** Infraestructura / SQL Server
- **Estado:** CORREGIDO

### Descripcion
SQL Server se reinicia continuamente debido a falta de memoria (OOMKilled). El pod entra en CrashLoopBackOff impidiendo el funcionamiento de la aplicacion.

### Pasos para Reproducir
1. Desplegar la aplicacion en k3s con los manifiestos originales
2. Esperar 2-3 minutos
3. Observar que SQL Server se reinicia repetidamente

### Resultado Esperado
SQL Server debe iniciar y permanecer estable sin reinicios.

### Resultado Actual
- Exit Code: 137 (SIGKILL - OOMKilled)
- SQL Server se reinicia cada ~2 minutos
- Errores en logs: 17300, 17312, 28709 (recursos insuficientes)

### Evidencia
![Error de conexion](screenshots/01-error-inicial-carga.png)

### Solucion Implementada
Se modifico `deploy/k3s/sqlserver.yaml`:
- Aumentar memoria limite a 1.5Gi
- Aumentar MSSQL_MEMORY_LIMIT_MB a 1024
- Aumentar initialDelaySeconds del liveness probe a 120
- Aumentar failureThreshold a 5

**Resultado post-correccion:** SQL Server estable con 691Mi de RAM y 0 reinicios.

---

## DEF-002: Mensajes de Restriccion en Ingles

### Clasificacion
- **ID:** DEF-002
- **Severidad:** ALTA
- **Componente:** Frontend / Localizacion
- **Estado:** CORREGIDO

### Descripcion
Los mensajes de restriccion en la pagina de inscripcion se muestran en ingles en lugar de espanol, rompiendo la consistencia del idioma de la aplicacion.

### Pasos para Reproducir
1. Navegar a la pagina de inscripcion de un estudiante
2. Inscribir al estudiante en una materia
3. Observar los mensajes de restriccion en las otras materias

### Resultado Esperado
Los mensajes deben mostrarse en espanol:
- "Ya inscrito"
- "Ya tienes una materia con este profesor"
- "Maximo 3 materias alcanzado"

### Resultado Actual
Los mensajes se muestran en ingles:
- "Already enrolled"
- "Already have a subject with this professor"
- "Maximum 3 subjects reached"

### Evidencia
![Mensajes en ingles](screenshots/07-mensajes-en-ingles-defecto.png)
![Maximo materias](screenshots/08-maximo-materias-ingles.png)

### Soluciones Propuestas

#### Solucion A: Traducir en el frontend (servicio)
- **Descripcion:** Crear un diccionario de traducciones en el EnrollmentService
- **Pros:** Cambio localizado, rapido de implementar
- **Contras:** Duplica logica de traduccion

#### Solucion B: Traducir en el backend (GraphQL)
- **Descripcion:** Retornar mensajes en espanol desde la API
- **Pros:** Fuente unica de verdad
- **Contras:** Requiere cambios en backend

#### Solucion C: Usar i18n en Angular
- **Descripcion:** Implementar sistema de internacionalizacion completo
- **Pros:** Escalable para multiples idiomas
- **Contras:** Mayor complejidad, over-engineering para este caso

### Solucion Unificada Recomendada
Implementar Solucion A: traducir los mensajes en el frontend ya que la API retorna codigos/mensajes en ingles y el frontend es responsable de la presentacion.

**Archivo a modificar:** `src/frontend/src/app/features/enrollment/pages/enrollment-page/enrollment-page.component.ts`

```typescript
private readonly translations: Record<string, string> = {
  'Already enrolled': 'Ya inscrito',
  'Already have a subject with this professor': 'Ya tienes una materia con este profesor',
  'Maximum 3 subjects reached': 'Maximo 3 materias alcanzado'
};

translateMessage(message: string): string {
  return this.translations[message] || message;
}
```

---

## DEF-003: Error Gramatical en Pluralizacion

### Clasificacion
- **ID:** DEF-003
- **Severidad:** MEDIA
- **Componente:** Frontend / Pagina Companeros
- **Estado:** CORREGIDO

### Descripcion
En la pagina de companeros de clase, cuando hay exactamente 1 companero, el texto muestra "1 companeros" (plural) en lugar de "1 companero" (singular).

### Pasos para Reproducir
1. Crear dos estudiantes
2. Inscribir ambos en la misma materia
3. Ver la pagina de companeros de cualquiera de los dos
4. Observar el contador junto al nombre de la materia

### Resultado Esperado
- 0 companeros
- 1 companero (singular)
- 2 companeros (plural)

### Resultado Actual
- 1 companeros (incorrecto)

### Evidencia
![Error gramatical](screenshots/09-error-gramatical-companeros.png)

### Soluciones Propuestas

#### Solucion A: Condicional simple en template
```html
{{ count }} {{ count === 1 ? 'companero' : 'companeros' }}
```

#### Solucion B: Pipe de pluralizacion
```typescript
@Pipe({ name: 'pluralize' })
export class PluralizePipe {
  transform(count: number, singular: string, plural: string): string {
    return count === 1 ? singular : plural;
  }
}
```

#### Solucion C: Usar Angular i18n con ICU
```html
{count, plural, =1 {companero} other {companeros}}
```

### Solucion Unificada Recomendada
Implementar Solucion A (condicional simple) por ser la mas directa y no requerir cambios estructurales.

**Archivo a modificar:** `src/frontend/src/app/features/classmates/pages/classmates-page/classmates-page.component.html`

---

## DEF-004: Favicon No Encontrado (404)

### Clasificacion
- **ID:** DEF-004
- **Severidad:** BAJA
- **Componente:** Frontend / Assets
- **Estado:** CORREGIDO

### Descripcion
El navegador intenta cargar `/favicon.ico` pero recibe un error 404. Esto genera errores en la consola del navegador.

### Pasos para Reproducir
1. Abrir la aplicacion en el navegador
2. Abrir las herramientas de desarrollador (F12)
3. Observar la pestana de red o consola

### Resultado Esperado
El favicon debe cargarse correctamente o no debe haber referencia al mismo.

### Resultado Actual
```
Failed to load resource: the server responded with a status of 404 ()
@ https://academia.ingeniumcodex.com/favicon.ico
```

### Evidencia
Error visible en consola del navegador durante las pruebas.

### Soluciones Propuestas

#### Solucion A: Agregar favicon
- **Descripcion:** Crear y agregar un favicon.ico al proyecto
- **Pros:** Mejora UX, profesionalismo
- **Contras:** Requiere crear el asset

#### Solucion B: Remover referencia
- **Descripcion:** Quitar la referencia al favicon en index.html
- **Pros:** Elimina el error
- **Contras:** Sin icono en pestanas del navegador

### Solucion Unificada Recomendada
Implementar Solucion A: crear un favicon simple basado en el logo "S" de la aplicacion.

**Archivos a modificar:**
- Crear `src/frontend/src/favicon.ico`
- Verificar referencia en `src/frontend/src/index.html`

---

## Capturas de Pantalla

| Archivo | Descripcion |
|---------|-------------|
| 01-error-inicial-carga.png | Error de conexion al servidor (DEF-001) |
| 02-listado-estudiantes.png | Listado de estudiantes funcionando |
| 03-formulario-nuevo-estudiante.png | Formulario de creacion |
| 04-validacion-email-invalido.png | Validacion de email funcionando |
| 05-estudiante-creado.png | Confirmacion de creacion exitosa |
| 06-pagina-inscripcion.png | Pagina de inscripcion |
| 07-mensajes-en-ingles-defecto.png | Mensajes en ingles (DEF-002) |
| 08-maximo-materias-ingles.png | Mensaje maximo materias en ingles |
| 09-error-gramatical-companeros.png | Error "1 companeros" (DEF-003) |
| 10-dialogo-confirmacion-eliminar.png | Dialogo de confirmacion correcto |
| 11-validacion-mensajes-espanol.png | Mensajes traducidos a espanol (DEF-002 VALIDADO) |
| 12-validacion-pluralizacion.png | Pluralizacion corregida (DEF-003 VALIDADO) |

---

## Historial de Cambios

| Fecha | Cambio |
|-------|--------|
| 2026-01-07 | Creacion del documento |
| 2026-01-07 | DEF-001 identificado y corregido (SQL Server OOM) |
| 2026-01-07 | DEF-002, DEF-003, DEF-004 identificados |
| 2026-01-07 | Soluciones propuestas para todos los defectos |
| 2026-01-08 | DEF-002 corregido (mensajes traducidos a espanol) |
| 2026-01-08 | DEF-003 corregido (pluralizacion "companero/companeros") |
| 2026-01-08 | DEF-004 corregido (favicon SVG agregado) |
| 2026-01-08 | Todas las correcciones validadas con Playwright |
