# Informe Técnico — Higiene de Repositorio, Secretos y QA Formal

Fecha: 30-05-2026
Proyecto: SGETECBA

## 1. Objetivo de esta fase

Esta fase tuvo cuatro metas concretas:

1. Sacar del versionado archivos sensibles y artefactos generados.
2. Corregir reglas de ignore para que el problema no reaparezca.
3. Ejecutar validación formal técnica de seguridad, autenticación, autorización y compilación.
4. Dejar trazabilidad documental para la siguiente etapa de QA profesional.

## 2. Acciones aplicadas

### 2.1 Higiene de secretos

Se desindexó `backend/.env` del repositorio sin borrar el archivo local de desarrollo.

Resultado:

- `backend/.env` sigue existiendo localmente.
- Git ya lo reconoce como ignorado por `backend/.gitignore`.
- La referencia segura queda en `backend/.env.example`.

### 2.2 Limpieza de artefactos generados

Se desindexaron y limpiaron del working tree los siguientes grupos de artefactos:

- `backend/__pycache__/`
- `backend/app/**/__pycache__/`
- `backend/.pytest_cache/`
- `frontend/dist/`
- `frontend/node_modules/.vite/`
- `frontend/*.tsbuildinfo`

### 2.3 Fortalecimiento de ignore

Archivos ajustados:

- `backend/.gitignore`
- `frontend/.gitignore`

Reglas agregadas:

- `.pytest_cache/`
- `.vite`
- `*.tsbuildinfo`

### 2.4 Corrección adicional de encoding

Se corrigieron textos dañados en origen para evitar falsos negativos en QA e inconsistencias visuales:

- `frontend/src/routes/AppRouter.tsx`
- `frontend/src/components/ImportarDatos.tsx`
- `backend/app/core/deps.py`
- `backend/app/api/v1/routes/importacion.py`
- `backend/app/api/v1/routes/matriculaciones.py`
- `backend/app/api/v1/routes/sesiones.py`

## 3. Evidencia técnica ejecutada

## 3.1 Validación de secretos e ignore

Comando de verificación aplicado:

```powershell
git check-ignore -v backend/.env backend/.pytest_cache frontend/dist frontend/node_modules/.vite frontend/tsconfig.tsbuildinfo frontend/tsconfig.node.tsbuildinfo
```

Resultado:

- `backend/.env` queda ignorado por `backend/.gitignore`
- `frontend/dist` queda ignorado por `frontend/.gitignore`
- `frontend/node_modules/.vite` queda ignorado por `frontend/.gitignore`
- `frontend/*.tsbuildinfo` queda ignorado por `frontend/.gitignore`

## 3.2 Backend tests

Comando:

```powershell
cd backend
.\.venv\Scripts\python.exe -m pytest
```

Resultado:

```text
10 passed
```

Cobertura validada en esta fase:

- autenticación
- validación de configuración JWT
- helpers de seguridad
- exposición del paquete de modelos
- protección de rutas sensibles

## 3.3 Build frontend

Comando:

```powershell
cd frontend
npm run build
```

Resultado:

- build completado correctamente con Vite
- sin errores TypeScript

## 3.4 Pruebas funcionales y de seguridad formales

Se ejecutó una validación reproducible con `FastAPI TestClient` sobre el código actual.

Resultados:

- `login_valido`: `200`
- `login_invalido`: `401`
- `/api/v1/dashboard/resumen` sin token: `401`
- `/api/v1/estudiantes` sin token: `401`
- `/api/v1/matriculaciones` sin token: `401`
- `/api/v1/sesiones` sin token: `401`
- `/api/v1/dashboard/resumen` con rol `docente`: `403`

Esto confirma que, en el código actual validado por test y por cliente de pruebas, las rutas sensibles responden con los códigos esperados.

## 3.5 Alembic

Comandos:

```powershell
cd backend
.\.venv\Scripts\python.exe -m alembic current
.\.venv\Scripts\python.exe -m alembic history
```

Resultado:

- `alembic current` ejecuta sobre PostgreSQL
- `alembic history` no muestra revisiones reales todavía

Conclusión:

- Alembic ya no está roto por imports
- la trazabilidad sigue incompleta hasta crear revisiones controladas en `versions/`

## 4. QA manual end-to-end

Se pudo validar manualmente la pantalla de login en navegador embebido:

- renderiza correctamente
- muestra textos corregidos
- carga logo e iconografía
- estructura visual estable

Limitación operativa encontrada:

- en este entorno los procesos de `uvicorn` y Vite no se mantuvieron de forma persistente en segundo plano bajo la sesión de sandbox
- por esa razón no se pudo completar un recorrido manual navegador-a-backend sostenido para todo el flujo end-to-end

Esto no invalida las pruebas automáticas ni las pruebas funcionales formales ejecutadas, pero sí impide declarar que hubo un QA manual E2E completo de interfaz navegada.

## 5. Estado real del repositorio

Situación actual:

- el repositorio ya no versiona secretos ni artefactos regenerables en las rutas saneadas
- el árbol sigue mostrando cambios pendientes porque todavía no se hizo commit de esta fase ni de las correcciones previas
- hay además archivos de trabajo nuevos en `docs/`, `database/` y `backend/tests/` que forman parte del trabajo en curso

Interpretación correcta:

- la higiene quedó corregida
- el repo no está “limpio” todavía en sentido Git porque los cambios aún no fueron consolidados en commit

## 6. Veredicto técnico de esta fase

### Aprobado

- eliminación de versionado de `backend/.env`
- limpieza de artefactos generados del índice
- reglas de ignore reforzadas
- pruebas backend en verde
- build frontend en verde
- validación formal de 401, 403 y login en verde

### No declarado como completado al 100%

- QA manual end-to-end completo en navegador

Razón:

- no pudo sostenerse el stack completo en segundo plano durante toda la sesión interactiva para navegar el flujo integral de UI contra backend vivo

## 7. Siguiente paso recomendado

1. Consolidar esta fase en commit limpio.
2. Ejecutar QA manual E2E fuera del sandbox o en un runner persistente.
3. Crear revisiones reales de Alembic.
4. Continuar con endurecimiento restante de seguridad y regresión funcional sobre módulos críticos.
