Files
biblioteca_conocimiento_lab…/docs/tareas-hijas-google-drive.md

131 lines
6.5 KiB
Markdown
Raw Permalink 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)`.
## 8. Conocimiento del Medio (Carolina) — flujo con temario
Carpeta: `TAREAS/CAROLINA/CONOCIMIENTO DEL MEDIO/`
Ciclo de vida de las tareas: **Por hacer → Respondido → Revisado**.
```
CONOCIMIENTO DEL MEDIO/
├── Por hacer/ pendiente para la niña
├── Respondido/ entregado (escaneos/fotos)
├── Revisado/ ya corregido por el asistente (+ Doc FEEDBACK)
└── Temario/ resumen del tema para estudiar + Capturas/ (páginas del libro)
```
Proceso:
1. El temario (páginas del libro) se aporta como capturas; si son del PC suelen estar en `C:\Users\<user>\Pictures\Screenshots`. Se suben a `Temario/Capturas/`.
2. Se crea un Doc `Resumen Tema N — <título>` en `Temario/`.
3. Las tareas entregadas (escaneos en `Respondido/`) se corrigen contra el resumen; al corregir se genera `FEEDBACK Tema N — <título>` y se mueven junto a él a `Revisado/`.
Ejemplo **Tema 1** (04-oct-2026): *La alimentación y la dieta saludable* — funciones de los alimentos (energéticos / constructores / reguladores), tipos por procesamiento (naturales / procesados / ultraprocesados) y dieta saludable (agua **1,5–2 L/día**). Corrección de Carolina: todo bien salvo la cantidad de agua (escribió "12 a 15 L").