Cambio en el .env y docker compose

This commit is contained in:
Mireya Cueto Garrido
2026-05-13 13:48:42 +02:00
parent ebc3631cfd
commit abc620838c
4 changed files with 112 additions and 3 deletions
+111 -2
View File
@@ -1,2 +1,111 @@
# moodle-exam-generator # GenExamenes IA
Generador avanzado de exámenes con IA, capaz de crear cuestionarios personalizados, configurar tipos de preguntas y exportar automáticamente el resultado en formato Moodle XML listo para importar. Integración completa con prompts para generar contenido educativo de forma dinámica.
Backend para generar exámenes con IA, procesar la salida de un LLM y exportar preguntas a Moodle XML.
El proyecto está centrado en backend. La carpeta `frontend` se mantiene vacía a nivel de aplicación, aunque existe un servicio en Docker Compose para reservar el despliegue futuro.
## Stack
- FastAPI
- PostgreSQL
- SQLAlchemy
- Cliente LLM compatible con OpenAI Chat Completions
- Docker Compose con servicios `backend`, `frontend` y `db`
## Puesta en Marcha
Copia el ejemplo de variables dentro de la carpeta del backend:
```bash
cp backend/.env.example backend/.env
```
Después levanta los servicios:
```bash
docker compose up --build
```
La API queda disponible en:
```text
http://localhost:8000
```
## Configuración
El archivo de entorno debe estar en `backend/.env`.
Variables principales:
- `API_KEY`: clave obligatoria para consumir las rutas protegidas.
- `DATABASE_URL`: conexión PostgreSQL usada por el backend.
- `LLM_API_KEY`: clave del proveedor LLM.
- `LLM_BASE_URL`: endpoint compatible con OpenAI.
- `LLM_MODEL`: modelo usado para generar preguntas.
- `ALLOWED_ORIGINS`: orígenes permitidos por CORS.
Todas las rutas bajo `/exam` requieren la cabecera:
```http
X-API-Key: change-me-in-production
```
## Flujo de Usuario
1. Crear una plantilla de examen.
2. Generar un prompt guiado para el LLM.
3. Generar preguntas automáticamente con el LLM o parsear una salida externa en JSON/TXT.
4. Guardar las preguntas validadas en PostgreSQL.
5. Exportar el examen a Moodle XML, TXT o JSON.
## Endpoints
`GET /health`
Comprueba que la API está levantada.
`POST /exam/templates`
Crea una plantilla con materia, nivel educativo, tipos de pregunta, puntuación, penalización y dificultad.
`GET /exam/templates`
Lista las plantillas creadas.
`GET /exam/templates/{template_id}`
Obtiene una plantilla concreta.
`POST /exam/prompts/{template_id}`
Genera un prompt estructurado para IA.
`POST /exam/generate`
Llama al LLM configurado, parsea la respuesta y guarda las preguntas.
`POST /exam/parse`
Procesa una salida externa de IA en formato `json` o `txt`.
`GET /exam/export/xml/{template_id}`
Exporta las preguntas en Moodle XML.
`GET /exam/export/txt/{template_id}`
Exporta las preguntas en texto plano.
`GET /exam/export/json/{template_id}`
Exporta las preguntas en JSON.
## Seguridad
- Autenticación por API key.
- Rate limiting por cliente.
- Límite de tamaño de petición.
- Validación de entrada con Pydantic.
- Manejo uniforme de errores HTTP.
- Sanitización básica de prompts y respuestas antes de persistir/exportar.
View File
+1 -1
View File
@@ -3,7 +3,7 @@ services:
build: build:
context: ./backend context: ./backend
env_file: env_file:
- .env - ./backend/.env
environment: environment:
DATABASE_URL: postgresql+psycopg://genexamenes:genexamenes@db:5432/genexamenes DATABASE_URL: postgresql+psycopg://genexamenes:genexamenes@db:5432/genexamenes
ports: ports: