Skip to content

feat(ai): Tec21 calendar awareness + Canvas-aware materias#18

Merged
danieldiazde merged 1 commit into
devfrom
feat/tec21-calendar-context
May 9, 2026
Merged

feat(ai): Tec21 calendar awareness + Canvas-aware materias#18
danieldiazde merged 1 commit into
devfrom
feat/tec21-calendar-context

Conversation

@danieldiazde
Copy link
Copy Markdown
Owner

Por qué

  1. El modelo usaba semana ISO en lugar del calendario académico Tec21 (5+1+5+1+5).
  2. Solo veía materias de materias_inscritas; ignoraba materias que aparecen en eventos sincronizados de Canvas.

Qué cambia

Tec21 calendar

  • lib/tec21/calendar.ts calcula bloque actual, semana en bloque, y Semana Tec dado un semestre_inicio.
  • profiles.semestre_inicio (date) — guardado por usuario porque depende del periodo de inscripción.
  • Onboarding step 2 agrega un date input para fecha de inicio de semestre.
  • Prompt incluye reglas: "NO bloques normales en Semana Tec", "sube urgencia en semanas 4-5 del bloque".

Canvas-aware

  • Eventos pasados a Gemini ahora incluyen fuente.
  • Prompt distingue Canvas (entregas/exámenes, peso alto) de Google (calendario personal, solo bloqueo).
  • Si un clave (ej. TC2025) aparece en títulos de Canvas pero NO está en materias_inscritas, se agrega como inferida: true y el modelo lo señala.

Migration requerida

ALTER TABLE profiles ADD COLUMN IF NOT EXISTS semestre_inicio date;

Test plan

  • CI verde
  • Onboarding muestra date picker en paso 2
  • Setear fecha → guardada en profiles.semestre_inicio
  • POST /api/insights/generate incluye calendario_tec21 en context
  • Mensaje de Gemini menciona bloque/Semana Tec
  • Si hay eventos de Canvas con claves no inscritas, aparecen como inferida en prioridades

🤖 Generated with Claude Code

The model was using ISO calendar weeks instead of the Tec21 academic calendar,
and only saw materias from materias_inscritas. Two fixes:

1. Tec21 calendar awareness
   - New lib/tec21/calendar.ts: given a semester start date, computes current
     block (1/2/3), week within block (1-5), and whether it's Semana Tec.
   - Stored per-user in profiles.semestre_inicio (depends on enrollment period).
   - Onboarding step 2 adds a date input for the semester start date.
   - Prompt updated with the 5+1+5+1+5 block pattern and rules about Semana Tec
     (no regular study blocks; project focus) and end-of-block urgency.

2. Canvas-aware context
   - Eventos passed to Gemini now include `fuente` (canvas/google/...).
   - Prompt rules: canvas events are deadlines and weigh heavily; google events
     are calendar blocks to avoid.
   - Materias inferred from Canvas event titles via clave regex
     (e.g. "TC2025 - Tarea 3"). If a clave appears in canvas events but not in
     materias_inscritas, it's added to context with `inferida: true` and the
     model is instructed to flag the discrepancy.

DB migration:
  ALTER TABLE profiles ADD COLUMN IF NOT EXISTS semestre_inicio date;

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@supabase
Copy link
Copy Markdown

supabase Bot commented May 9, 2026

This pull request has been ignored for the connected project jwqffychkaczvknfgzbd because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@danieldiazde danieldiazde merged commit ab81b8a into dev May 9, 2026
2 checks passed
@danieldiazde danieldiazde deleted the feat/tec21-calendar-context branch May 9, 2026 20:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant