Files
biblioteca_conocimiento_lab…/docs/tareas-hijas-google-drive.md
2026-10-04 17:28:20 +02:00

110 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Sistema de tareas de las hijas (Inés y Carolina) — Google Drive + IA
Documentación para **reproducir** el sistema en cualquier equipo. Última revisión: 04-oct-2026 (portátil).
---
## 1. Qué es
Ecosistema para gestionar las tareas escolares de las hijas:
- Los **correos de Classroom de Inés** se vigilan y avisan por Telegram.
- Las **tareas entregadas** (fotos/escaneos) se suben a **Google Drive** por asignatura.
- El asistente (opencode/IA) **lee** los documentos, **corrige** y **genera hojas nuevas** de repaso.
## 2. Cuentas y credenciales
| Elemento | Valor |
|----------|-------|
| Google Drive (personal) | `juan.minguez.sanz@gmail.com` |
| Proyecto Google Cloud | `tareasnenas` |
| Client secret | `biblioteca_negocio_prolongo/google/client_secret_personal.json` |
| Token OAuth | `biblioteca_negocio_prolongo/google/token_personal.json` |
| Scopes | `drive`, `gmail.readonly`, `documents` |
| Correo escolar de Inés | `ines.minguezlarhziale@alumnos.fundacionvictoria.edu.es` |
> El `token_personal.json` **se refresca solo** al usarlo (guardar el fichero tras refrescar). Acceso válido desde portátil y sobremesa sin depender del otro equipo.
## 3. Estructura en Google Drive
```
TAREAS/
├── CAROLINA/
│ ├── LENGUA/
│ │ ├── Por hacer/ ← hojas en blanco (SIN soluciones) para que las haga
│ │ └── Respondido/ ← lo ya entregado (escaneos/PDF) y el modelo hecho
│ └── MATEMATICAS/
└── INES/
├── FISICA Y QUÍMICA/<Tema>/ → Doc "FEEDBACK ..." + fotos
├── HISTORIA Y GEOGRAFÍA/ → Doc "Tareas - HISTORIA Y GEOGRAFÍA"
├── LENGUA/ → Doc "Tareas - LENGUA"
├── MATEMÁTICAS/ · INGLÉS/ · E.F/ · MÚSICA/ · PLÁSTICA/ · RELIGIÓN/ · TECNOLOGÍA/ · VALORES/
```
### Convención de organización (IMPORTANTE)
- Cada asignatura tiene subcarpetas **`Por hacer`** (pendiente) y **`Respondido`** (hecho).
- Cuando algo se responde, se mueve de `Por hacer` a `Respondido` (no se deja mezclado).
- Las hojas para las niñas van **sin soluciones**; el asistente guarda las respuestas correctas para corregir.
### Formato de los docs "Tareas - <asignatura>"
```
TAREAS INES - <ASIGNATURA>
Profesor/a: <nombre>
Actualizado: DD/MM/AAAA
TAREAS Y ACTIVIDADES
========================================
[Pendiente|Pasada|Revisar] <titulo>
Tipo: Anuncio|Tarea|Material | Fecha: DD mes AAAA
```
## 4. Bot del VPS (Inés) — `classroom-watcher`
Servicio systemd en el VPS Contabo que vigila el correo de Inés.
| Dato | Valor |
|------|-------|
| Ruta | `/opt/classroom_watcher/` |
| Script | `classroom_watcher.py` |
| Servicio | `classroom-watcher.service` (activo, enabled) |
| Ficheros | `token_personal.json`, `client_secret_personal.json`, `.env` (`TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`), `seen_messages.json`, `pending_alerts.json`, `watcher.log` |
| Filtro Gmail | `from:ines.minguezlarhziale classroom (tarea OR "Nueva tarea" OR "fecha de entrega" OR "Nuevo anuncio")` |
| Horario avisos | 15:00–22:00 |
| Revisión Gmail | cada 5 min |
| Reaviso | cada 30 min hasta que el usuario responde **S** |
| Asignatura | `detectar_asignatura()` mapea profesor→asignatura y si no, por asunto |
**Diseño intencionado:** el bot **solo avisa por Telegram**. NO vuelca los correos a Google Drive (decisión del usuario, 04-oct-2026). El Drive de tareas se gestiona aparte (entrada manual / por IA).
### Gestión del servicio (en el VPS)
```bash
systemctl status classroom-watcher
systemctl restart classroom-watcher
journalctl -u classroom-watcher -n 50 --no-pager
tail -n 50 /opt/classroom_watcher/watcher.log
```
### Otros servicios relacionados en el VPS
- `/opt/email-watcher/` (`email-watcher.service`, **disabled**) — incidencia EmailService FaccsaMissa de `jminguez@prolongo.es` → grupo IDD Telegram (ámbito empresa, NO hijas).
## 5. Spec 004 (diseño completo, en pausa)
`biblioteca_negocio_prolongo/specs/004-monitor-correo-ines/` (spec + plan + tasks):
- Flujo A: resumen IA de correos escolares → Discord DM de Inés + aviso Telegram al padre.
- Flujo B: entrega de foto en Drive → evaluación IA → mueve a "hechas" o avisa corrección.
- Prerequisitos manuales listados en `plan.md` (Azure AD Graph, Service Account, bot Discord...).
## 6. Cómo reproducirlo en otro equipo
1. Clonar `biblioteca_conocimiento_laboratorio` y `biblioteca_negocio_prolongo`.
2. Asegurar `google/client_secret_personal.json` y `google/token_personal.json` (o regenerar con `python google/google_auth.py`).
3. Instalar deps: `pip install google-api-python-client google-auth-oauthlib pymupdf`.
4. Usar `scripts/tareas_hijas/drive.py` (helpers) para listar/leer/crear/mover en Drive.
5. Para el bot: desplegar `/opt/classroom_watcher` en el VPS + `classroom-watcher.service` (ver §4).
6. Para corregir: descargar los PDF/imágenes, convertirlos a PNG (`pymupdf`) y analizarlos con el MCP **image-vision**; corregir contra la hoja.
## 7. Notas / gotchas
- La consola Windows falla con acentos (`charmap`): usar `python -X utf8` o exportar a fichero.
- Para crear Google Docs desde HTML: `files().create(mimeType='application/vnd.google-apps.document', media=text/html)`.
- Quitar soluciones de un Doc existente: `documents().batchUpdate` con `deleteContentRange` desde la cabecera "SOLUCIONES".
- Mover ficheros: `files().update(fileId, addParents, removeParents)`.