Ajustes
Ruta: /teacher/settings · Atajo: g j · Sidebar: Ajustes
Configuracion del profesor organizada en tabs: General, Integraciones, Notificaciones, Privacidad, Disponibilidad, Politicas de cancelacion, Documentos legales y Contratos.
Que hay
Section titled “Que hay”Navegacion
Section titled “Navegacion”- Desktop: Sidebar izquierdo sticky (w-40) con tabs verticales + indicador de borde derecho
- Movil: Dropdown select para cambiar entre tabs
Tab 1 — General
Section titled “Tab 1 — General”Configuracion basica de la cuenta:
Moneda predeterminada:
- Selector dropdown con 19 monedas comunes (EUR, USD, GBP, BRL, MXN, COP, ARS, CLP, PEN, etc.)
- Default: EUR
- Se guarda en
teachers.defaultCurrencyviaPATCH /teacher/settings/scheduling - Usado por el dashboard para formatear ingresos y precios
KPIs del dashboard:
- Grid de 8 botones toggle (2 columnas) con icono + label para cada metrica disponible
- El profesor selecciona exactamente 4. Los no seleccionados se deshabilitan cuando hay 4 activos
- Metricas disponibles:
month_revenue,month_lessons,active_students,attendance_rate,pending_revenue,teaching_streak,new_students,completed_sessions - Default: las primeras 4 (ingresos, clases, alumnos activos, asistencia)
- Boton “Guardar” aparece solo cuando la seleccion difiere de la guardada y hay exactamente 4
- Se guarda en
teachers.dashboardConfig(JSONB) viaPATCH /teacher/settings/dashboard - Invalida queries
['teacher', 'settings']y['teacher-dashboard-summary']
Tab 2 — Integraciones
Section titled “Tab 2 — Integraciones”Grid de 3 tarjetas de integracion:
Google Calendar:
- Emoji calendario + punto de estado (verde si conectado)
- Estado de conexion + conteo de calendarios sincronizados
- Boton “Conectar” → redirect OAuth Google
Stripe:
- Emoji tarjeta + punto de estado
- Estado de conexion
- Boton “Conectar” → redirect Stripe Connect OAuth
- Boton “Refrescar” estado
Google Drive:
- Emoji carpeta + punto de estado
- Estado de conexion
- Si habilitado: estado de carpeta, stats de copias (copiados/pendientes), link directo a Drive
- Botones habilitar/deshabilitar auto-copy
Coming Soon: Zoom, WhatsApp (tarjetas deshabilitadas con borde discontinuo)
Selector de calendarios Google:
- Componente
GoogleCalendarSelectordentro de la tarjeta de Google Calendar - Lista de calendarios de lectura con checkboxes (cuales se sincronizan para disponibilidad)
- Selector de calendario de escritura con radio buttons (donde se crean los eventos)
- Boton “Guardar” llama a
PATCH /teacher/settings/google/calendars - Solo visible cuando Google Calendar esta conectado
Tab 3 — Notificaciones
Section titled “Tab 3 — Notificaciones”7 toggles de notificacion con persistencia real:
| Toggle | Default |
|---|---|
| Nueva reserva | true |
| Reserva confirmada | true |
| Reserva cancelada | true |
| Recordatorio antes de sesion | true |
| Pago recibido | true |
| Creditos por expirar | true |
| Reporte semanal | false |
- Estado inicial cargado via
GET /teacher/settings(camponotificationPreferencesJSONB) - Deteccion de cambios (
hasChanges) — el boton “Guardar” solo aparece cuando hay cambios pendientes - Boton “Guardar” llama a
PATCH /teacher/settings/notifications - Preferencias almacenadas en
teachers.notificationPreferences(JSONB, migration 0057)
Tab 4 — Privacidad
Section titled “Tab 4 — Privacidad”Exportar datos:
- Boton “Descargar datos” → genera JSON con todos los datos del profesor
- Archivo:
pinteach-data-export-YYYY-MM-DD.json
Eliminar cuenta:
- Seccion con borde rojo y fondo destructive
- Flujo de 2 pasos: click → confirmacion
DELETE /api/teacher/privacy/delete-account- Redirect a
/logindespues de eliminar
Tab 5 — Disponibilidad
Section titled “Tab 5 — Disponibilidad”UI completa para gestionar schedules de disponibilidad directamente desde Ajustes:
- Lista de schedules con toggle activar/desactivar
- Crear, renombrar, duplicar y eliminar schedules
- Editor de reglas por dia de la semana (hora inicio/fin, multiple reglas por dia)
- Activaciones por rango de fechas con calendar picker
- Equivalente funcional al selector de schedules en el Calendario
Tab 6 — Politicas de cancelacion
Section titled “Tab 6 — Politicas de cancelacion”Editor visual de politicas de cancelacion por servicio:
- Lista de politicas existentes con el servicio asociado
- Badge “Default” para la politica de cancelacion predeterminada del profesor
- Formulario CRUD de reglas (JSONB
rules): condicion + accion + descripcion - 4 plantillas predefinidas:
individual_relaxed,group_strict,course_no_refund,subscription_flexible - Boton “Crear desde plantilla” carga la configuracion del preset seleccionado
- Toggle “Establecer como default” (unica default por profesor)
Tab 7 — Documentos legales
Section titled “Tab 7 — Documentos legales”Gestion de documentos legales (contratos, politicas, terminos) enviables a alumnos:
- Lista de documentos con tipo (contract/policy/terms/privacy), version y estado
- Crear y editar documentos con editor Markdown
- Reordenar documentos via drag-and-drop
- Vista previa del documento antes de publicar
- Historial de versiones por documento
Tab 8 — Contratos
Section titled “Tab 8 — Contratos”Gestion de contratos para alumnos:
- Lista de contratos activos por alumno
- Estado de aceptacion (firmado/pendiente/expirado)
- Reasignar contrato a alumno
- Historial de aceptaciones con timestamp
Que falta
Section titled “Que falta”| Feature | Descripcion | Estado | Implementado |
|---|---|---|---|
| Configuracion de pagos avanzada | No hay gestion de metodos de pago ni facturas. La moneda predeterminada ya se puede configurar en la tab General. El resto se maneja via Stripe Dashboard externo | Aplazado | |
| Integracion Zoom/WhatsApp | Marcadas como “Coming Soon” pero sin fecha ni prioridad definida | Aplazado |
Que falla
Section titled “Que falla”| Bug | Descripcion | Estado | Corregido |
|---|---|---|---|
| Slug check no bloquea guardado | La verificacion de disponibilidad del slug era advisory (hint visual) pero no bloqueaba el submit. Ahora bloquea el submit si retorna available: false | ✅ | Batch 3 |
Que cambiaria
Section titled “Que cambiaria”| Mejora | Descripcion | Dificultad | Estado | Implementado |
|---|---|---|---|---|
| Stripe Customer Portal | Link directo al Stripe Customer Portal para gestion avanzada de pagos, facturas y metodos de pago | Medio | Implementado ✅ | |
| Unificar sub-rutas de settings | Las tabs de Disponibilidad, Politicas de cancelacion, Documentos legales y Contratos ya son accesibles desde Ajustes | Medio | ✅ | Batch 3 |
| UI de politicas de cancelacion | Editor visual con plantillas predefinidas | Medio | ✅ | Batch 3 |
Referencia tecnica
Section titled “Referencia tecnica”Archivos clave
Section titled “Archivos clave”| Archivo | Proposito |
|---|---|
apps/web/src/routes/teacher/settings.lazy.tsx | Pagina completa (464 lineas) |
apps/api/src/services/teacher/settings-service.ts | Servicio de settings |
apps/api/src/routes/teacher/settings.ts | Rutas HTTP principales |
| Endpoint | Metodo | Proposito |
|---|---|---|
/teacher/settings | GET | Settings completos |
/teacher/settings/profile | PATCH | Actualizar perfil (slug, name, bio, tz) |
/teacher/settings/scheduling | PATCH | Actualizar scheduling + general (defaultCurrency, buffer, etc.) |
/teacher/settings/dashboard | PATCH | Actualizar dashboard KPIs config. Body: { kpis: string[4] } |
/teacher/settings/notifications | PATCH | Actualizar preferencias de notificacion. Body: JSONB de toggles |
/teacher/settings/slug-check | GET | Verificar disponibilidad de slug |
/teacher/settings/stripe/connect | POST | URL de OAuth Stripe |
/teacher/settings/stripe/status | GET | Estado de conexion Stripe |
/teacher/settings/drive/enable | POST | Habilitar auto-copy Drive |
/teacher/settings/drive/disable | POST | Deshabilitar auto-copy |
/teacher/settings/drive/status | GET | Estado Drive + stats |
/teacher/privacy/export-data | POST | Exportar datos profesor |
/teacher/privacy/delete-account | DELETE | Eliminar cuenta |
Sub-rutas de settings
Section titled “Sub-rutas de settings”| Prefijo | Proposito |
|---|---|
/teacher/settings/google/calendars | Calendarios Google (GET + PATCH, UI en tab Integraciones) |
/teacher/settings/drive | Configuracion Drive |
/teacher/settings/availability | Disponibilidad |
/teacher/settings/stripe | Stripe Connect |
/teacher/settings/policies | Politicas de cancelacion |
/teacher/settings/contracts | Contratos |
/teacher/settings/legal-documents | Documentos legales |