Plataforma web para la gestión y tramitación de solicitudes de reconocimiento de créditos ECTS por actividades universitarias (culturales, deportivas, de representación, solidarias y formación transversal), desde la subida del expediente del estudiante hasta la firma electrónica del informe oficial, con inteligencia artificial que asiste pero no decide (human-in-the-loop).
Desarrollada como Proyecto de Innovación Docente para la Facultad de Ciencias de la Universidad de Salamanca (COTRARET — Comisión de Transferencia y Reconocimiento de Créditos). Su arquitectura multi-facultad permite adaptarla a otros centros sin escribir código.
⚠️ Datos de ejemplo. Este repositorio contiene únicamente datos ficticios (coordinadores, correos@example.edu, NIF12345678A, etc.). No incluye datos personales reales, secretos ni expedientes.
- El PTGAS (gestión) sube el expediente del alumno/a (ZIP o PDFs sueltos).
- Se aplica OCR a los documentos escaneados y se extraen los datos del solicitante y se clasifican los certificados por tipo de actividad, proponiendo los ECTS.
- El coordinador del grado revisa, comenta, valida y genera el informe oficial.
- El expediente vuelve al PTGAS, que lo envía a firma.
- Doble firma electrónica (PAdES, con AutoFirma): primero el Presidente de la COTRARET y después el Decano/a.
Cada transición queda registrada en una auditoría atribuible a una persona.
- admin — administración global (super-admins configurables por entorno).
- ptgas — gestión, acotado a su facultad.
- coordinator — coordinador/a de grado, acotado a sus grados.
- firmante — Presidente/a de la COTRARET (1.ª firma).
- decano — Decano/a (2.ª firma).
- Web: Next.js 16 (App Router) · React 19 · TypeScript · Tailwind CSS 4 · Zustand · TanStack Table · Auth.js v5 (JWT; Google e IdUSAL/SAML) · Prisma 6 · PostgreSQL.
- IA (
ai-service/, Python): FastAPI · Tesseract (OCR) · modelos de lenguaje en español (NER/QA) · clasificador por recuperación (embeddings + reglas de prioridad), diseñado para operar con pocos datos y de forma explicable. - Informe: PDF server-side con
pdf-lib, reproduciendo la plantilla oficial. - Firma: AutoFirma (cliente @firma), formato PAdES.
Arquitectura, modelo de datos, subsistemas, API y seguridad en
docs/DOCUMENTACION_TECNICA.md.
Requisitos: Node.js 22+, PostgreSQL 14+, (opcional) Python 3.11+ para el servicio de IA, Tesseract y poppler.
# 1. Dependencias
npm install
# 2. Configuración
cp .env.example .env.local # edita los valores (DB, secretos, correos…)
# 3. Base de datos
npx prisma migrate deploy # aplica el esquema
npx prisma db seed # datos de ejemplo (ficticios)
# 4. Desarrollo
npm run dev # http://localhost:3001Servicio de IA (opcional; sin él la app usa un fallback determinista por reglas):
cd ai-service
pip install -r requirements.txt
uvicorn main:app --host 127.0.0.1 --port 8000Con Docker para la base de datos: docker compose up -d.
npm test # tests unitarios (Vitest)
npm run lint # ESLint
npx tsc --noEmit # type-checkLa plataforma trata datos personales y produce documentos oficiales. Incorpora control de
acceso por rol y por facultad, cifrado de credenciales (AES-256-GCM), rate limiting,
cabeceras de seguridad (CSP/HSTS…), anti-replay en SAML y auditoría. Antes de desplegar, lee
SECURITY.md y define tus propios secretos por entorno. Comunica
vulnerabilidades mediante los GitHub Security Advisories del repositorio.
Proyecto de Innovación Docente ID2025/251 (convocatoria 2025/2026, Universidad de Salamanca), Facultad de Ciencias:
- Pablo Chamoso Santos (coordinador)
- Juan Manuel Rodríguez Díaz
- Agustina Fernández Fernández
- Fernando De La Prieta Pintado
- Sara Rodríguez González
- Lorena Sánchez Pravos
Los coordinadores, PTGAS y demás datos de personas que aparecen en los seeds y ejemplos son ficticios; los únicos nombres reales del repositorio son los del equipo del proyecto, como autoría.