Commit Graph

5 Commits

Author SHA1 Message Date
LakG bcecdbb184 Fix: self-heal del profile en middleware + backfill de users existentes
El trigger prestamos_on_auth_user_created coexiste con otro trigger del
proyecto vecino en auth.users y no siempre dispara. Consecuencia:
usuarios que hacían login vía OAuth entraban con user pero sin profile,
y la app los trataba como "no logueado".

- Middleware: si hay user y no hay profile (email @uabc.edu.mx), upsert
  del profile con datos del OAuth (nombre desde user_metadata.full_name).
- Migración 0005: policy RLS profiles_insert_self con check
  (id=auth.uid() and rol='alumno') — impide escalación a admin desde el
  self-heal.
- Backfill manual ejecutado en prod para los 8 users @uabc.edu.mx que
  ya existían en auth.users pero no tenían profile.
2026-08-24 09:36:16 -07:00
LakG ef40241ade Migración 0004: maestros, perfil (tutor_id, foto_path), bucket avatares, fallback tutor en crear_solicitud 2026-08-24 08:46:39 -07:00
LakG 43959056f8 Migración 0003: imagen_path, unidades individuales, publication realtime, bucket materiales-fotos
- prestamos.materiales.imagen_path (path dentro del bucket)
- prestamos.materiales.trackeado_por_unidad + tabla prestamos.material_unidades
  con trigger que mantiene cantidad_total/cantidad_disponible sincronizados
- prestamos.solicitud_items.material_unidad_id (renglón ligado a unidad concreta)
- crear_solicitud reescrita: asigna primera unidad disponible cuando trackeado
- RPC reasignar_unidad (admin-only) con audit_log
- sync_stock cubre transición pendiente->rechazado para liberar unidades
- publication supabase_realtime += prestamos.solicitudes (badge admin)
- bucket público 'materiales-fotos' con RLS admin-only para escritura
2026-08-22 18:02:10 -07:00
LakG 81a5ea016e Rediseño: vale de préstamo multi-ítem, fiel al formulario de papel
El vale físico del LSC permite pedir varios materiales en un solo
trámite; el sistema modelaba 1 solicitud = 1 material. Migra
prestamos.prestamos -> solicitudes (cabecera) + solicitud_items
(renglones), vía RENAME + backfill (preserva ids/historial real).

- RPC prestamos.crear_solicitud: transaccional, lockea materiales
  por fila, arregla la race condition del insert directo anterior.
  El alumno ya no inserta directo (RLS lo bloquea).
- sync_stock/log_estado reescritos para iterar renglones por vale.
- maestro_responsable (por vale) y profiles.semestre (perfil,
  nullable, sin UI todavía — onboarding queda para después).
- Alumno: carrito (SolicitudCart/AgregarMaterial) reemplaza el
  modal de solicitud único por material.
- Admin: 3 vistas de solicitudes, reportes y CSV export listan
  renglones por vale; api/admin/prestamos -> api/admin/solicitudes.
  De paso corrige un bug preexistente en detalles.ts (audit_log
  nunca se ordenaba por la columna correcta).

Verificado: build limpio, ciclo RPC+triggers probado en una
transacción revertida en prod (sin residuo), 9 vistas SSR
smoke-testeadas contra el schema real.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 08:37:44 -07:00
LakG 1121ab7199 Sistema de préstamos LabRe UABC — implementación inicial
Sistema web para gestión de préstamos de material del Laboratorio de
Sistemas Computacionales de la UABC.

- Backend: Supabase self-hosted, schema aislado `prestamos` con RLS,
  triggers de stock y audit log (supabase/migrations/0001_init.sql).
- Auth: Google OAuth restringido a @uabc.edu.mx, verificado en
  middleware y como segunda línea en trigger de DB.
- Frontend: Astro 7 (SSR con adapter Node) + React islands + Tailwind
  v4 con paleta UABC (primary #00723F, secondary #DD971A) bajo regla
  60/30/10.
- Interfaz alumno mobile-first: catálogo con filtro por categorías,
  solicitud de préstamos, historial personal.
- Interfaz admin desktop-first: panel con KPIs, bandeja de solicitudes
  (aprobar/rechazar/devolver), CRUD de inventario y categorías,
  reportes filtrables con export CSV nativo.
- Modales con `<dialog>` nativo, cero librerías de UI adicionales.
- Deploy: Dockerfile multi-stage node:22-alpine + docker-compose para
  publicar bajo prestamos.buglabs.dev vía Cloudflare Tunnel.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-14 19:37:49 -07:00