App web que ayuda a docentes de matemáticas a calificar tareas entregadas en Classroom como foto o PDF. La app no escribe nada en Classroom: lee las entregas, genera una calificación y un comentario sugeridos, y el docente los captura a mano.
En Windows basta con doble clic en instalar.bat (una vez), iniciar.bat (cada vez que la
uses) y actualizar.bat (cuando haya versión nueva).
| Etapa | Contenido | Estado |
|---|---|---|
| 1 | OAuth y listado de cursos, tareas y entregas | ✅ |
| 2 | Descarga y conversión a imágenes | ✅ |
| 3 | Módulo de marca de validación | ✅ modo local · falta probar con Claude |
| 4 | Clave de respuestas y calificación de una entrega | ✅ probado con Claude simulado · falta probar con Claude real |
| 5 | Procesamiento por lote y panel | ✅ probado con Claude simulado · falta probar con Claude real |
| 6 | Detección de copias | pendiente |
drive.readonly es un scope restringido; en modo prueba no requiere verificación.http://localhost:5173/api/auth/callbackbackend/.env (usa .env.example como plantilla).Si tu cuenta es de Google Workspace institucional, el administrador puede tener bloqueado el acceso de apps de terceros a Classroom o Drive. Si al iniciar sesión aparece “acceso bloqueado”, ese es el motivo.
| Scope | Uso |
|---|---|
openid, userinfo.email, userinfo.profile |
Identificar al docente |
classroom.courses.readonly |
Listar cursos |
classroom.coursework.students.readonly |
Tareas y entregas (estado, adjuntos, enlace) |
classroom.rosters.readonly |
Nombres de los alumnos |
drive.readonly |
Descargar los archivos entregados (solo v1, modo prueba) |
En Windows lo más simple es instalar.bat e iniciar.bat (ver INSTALACION.md).
A mano:
# Backend
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
python scripts/crear_env.py # crea .env y genera las claves; luego llena los de Google
alembic upgrade head
uvicorn app.main:app --reload --port 8000
# Frontend (otra terminal)
cd frontend
npm install
npm run dev # http://localhost:5173
# Backend
cd backend
python -m venv .venv
.\.venv\Scripts\Activate.ps1 # si falla: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
pip install -e ".[dev]"
python scripts\crear_env.py # crea .env y genera las claves; llena los de Google con: notepad .env
alembic upgrade head
uvicorn app.main:app --reload --port 8000
# Frontend (otra ventana de PowerShell)
cd frontend
npm install
npm run dev
Vite reenvía /api al backend, así que la cookie de sesión y el redirect de OAuth
usan el mismo origen (localhost:5173).
git pull
cd backend
.\.venv\Scripts\Activate.ps1
pip install -e ".[dev]" # por si hay librerías nuevas
alembic upgrade head # por si hay tablas nuevas
cd backend && pytest
cd frontend && npm run build && npm run lint
Cómo decide:
ANTHROPIC_API_KEY: Claude compara cada recorte con tus referencias y da una
confianza. ≥ 0.85 → “Con marca” (100); 0.60–0.85 → “¿Es tu marca?” (tú decides);
< 0.60 → sin marca. Si la API falla, la entrega queda en “Revisar a mano” con el recorte.RETENTION_DAYS días (configurable por docente).ANTHROPIC_API_KEY.TOKEN_ENCRYPTION_KEY).