features avanzados (planteamiento)
Updated 6 min read
Este post es la continuación de Canvas + Notion: guía de sincronización. Ahí dejamos tres ideas explícitamente fuera de alcance de la v1. Aquí las planteamos con más detalle — qué harían, qué requerirían y qué preguntas hay que resolver antes de construirlas.
Cada idea trae un prompt de arranque por si quieres construirla tú. Funcionan en Claude Code, Codex o Cursor, con el agente ya conectado a Notion como explica el Paso 0 de la parte 1. Todos le piden al agente un plan antes de tocar código.
1. Relación con una base de datos de Cursos (GPA / progreso agregado)
Por qué te importa: ver, sin salir de Notion, cuánta carga tienes por curso y cómo va tu semestre completo — el panorama, no tarea por tarea.
Qué haría: una base Cursos en Notion (Nombre, Créditos, Profesor, Nota actual), relacionada con Canvas Sync para que cada tarea apunte a su curso. Con eso, rollups nativos de Notion podrían mostrar cosas como "tareas pendientes por curso" o "progreso agregado del semestre" sin salir de Notion.
Qué requeriría:
- Un paso adicional en el script que lea
/api/v1/courses(o/api/v1/users/self/enrollments) y haga upsert de cursos, con la misma lógica anti-duplicados que ya usamos para tareas. - Una propiedad Relation en Canvas Sync apuntando a Cursos.
- Decidir el orden de ejecución: los cursos tienen que existir antes de poder relacionarlos con las tareas.
Preguntas abiertas:
- ¿El "GPA" es la nota que reporta Canvas tal cual, o un cálculo ponderado por créditos que nosotros armamos?
- ¿Qué endpoint da la nota final por curso de forma confiable (
enrollments?include=gradesvs. promediar assignments manualmente)?
Esfuerzo estimado: medio — no es técnicamente difícil, pero sí hay que diseñar bien el modelo de datos (Cursos como base separada) antes de tocar código.
Prompt para tu agente (Claude Code, Codex o Cursor)
2. Sync opcional de calificaciones
Por qué te importa: cada nota al lado de su tarea, sin entrar a Canvas a revisar una por una. El costo: son datos sensibles y tú decides si los quieres ahí.
Qué haría: agregar una propiedad Grade que se llene con la calificación de cada tarea entregada, jalando esos datos de la misma Planner API o de /api/v1/courses/:id/assignments con submissions.
Por qué "opcional" y con warning explícito de privacidad: las calificaciones son información sensible. A diferencia de fechas de entrega, esto no debería activarse por default — el estudiante tiene que decidirlo explícitamente, y hay que advertir que si su workspace de Notion no es 100% privado (lo comparte, lo tiene en una página pública, etc.), estaría exponiendo sus notas.
Qué requeriría:
- Un flag tipo
SYNC_GRADES=true/falsecomo secret adicional, apagado por default. - Una propiedad nueva en la base (
GradeoScore). - Texto claro en el README/guía advirtiendo el trade-off de privacidad antes de activarlo.
Preguntas abiertas:
- ¿Mostramos porcentaje, score bruto, o ambos?
- ¿Qué se muestra cuando una tarea aún no tiene calificación (
null)? ¿Campo vacío o "Pendiente"?
Esfuerzo estimado: bajo-medio — técnicamente simple (es un campo más del mismo JSON), pero el diseño del opt-in y la advertencia de privacidad hay que pensarlos con cuidado.
Prompt para tu agente (Claude Code, Codex o Cursor)
3. Auto-archivar ítems vencidos y completados ✅ Implementado
Por qué te importa: tu tablero solo muestra lo que sigue vivo; lo viejo y ya resuelto se archiva solo y deja de estorbar.
Qué haría: un paso de limpieza, después del sync normal, que archive en Notion (no borre) las tareas cuya Due Date ya pasó y cuyo Status sea Done — para que la vista principal de la base no se llene de tareas viejas ya resueltas.
Qué requeriría:
- Una query adicional en el script filtrando por fecha vencida + status Done.
- Usar
pages.updatecon"archived": true(o mover a una vista/segunda base de "Historial").
Preguntas abiertas:
- ¿Qué hacemos con tareas vencidas que no se completaron? ¿Se quedan visibles como recordatorio de que no se entregaron, o también se archivan después de cierto tiempo?
- ¿Archivar en Notion (se puede recuperar desde la papelera) o mover a una base separada de "Historial" para no perder el registro?
Esfuerzo estimado: bajo — es la idea más simple de las tres, reutiliza toda la infraestructura que ya existe.
Prompt para tu agente (Claude Code, Codex o Cursor)
Orden sugerido (a discutir)
De las tres, auto-archivar es la de menor esfuerzo y menos preguntas abiertas — la más fácil de construir primero. Sync de calificaciones depende de resolver antes el diseño de privacidad. Relación con Cursos es la de mayor alcance; probablemente valga la pena solo cuando ya uses la v1 a diario y sepas qué te falta.
Si usas la v1 y te falta una de estas, dímelo — eso decide cuál construyo primero.