fdbdc42470
El bug está en toRow() en process-repo.ts, no en el ImportPage: typescript// toRow() en process-repo.ts — líneas 4-24 // NUNCA incluye org_id en el payload del upsert const row = { id: process.id, name: process.name, // ... otros campos // ← org_id ausente completamente } La cadena completa del fallo:
Marcos Benítez2026-07-08 11:46:29 -03:00
d6e7226842
feat(process-repo): extender fromRow/toRow/getById con areaId y areaName
Marcos Benítez2026-07-07 18:18:14 -03:00
f9e886e12d
feat(area-repo): repositorio CRUD de áreas por organización
Marcos Benítez2026-07-07 18:18:07 -03:00
a3ff6ee545
feat(domain): interface Area + campos areaId/areaName en Process
Marcos Benítez2026-07-07 18:18:04 -03:00
d64078d96a
Etapa 0 aprobada condicionalmente. Queda pendiente tu validación visual: abrí /library en https://inq-roi.inqualityhq.com y confirmá que el footer muestra InQ ROI · Powered by InQuality · v0.8.0 · Hecho desde Paraguay 🇵🇾.
Marcos Benítez2026-07-07 17:55:19 -03:00
f3f55a6857
Resumen de los cambios del fix de navegación:
Marcos Benítez2026-07-07 14:24:26 -03:00
ee356e5de6
Etapa 7 ya estaba completamente ejecutada en esta sesión. Todo está en su lugar:
Marcos Benítez2026-07-07 14:12:10 -03:00
cad8fbca4f
Causa del 403: Supabase evalúa siempre la política INSERT cuando se usa .upsert(), incluso si la fila ya existe. client_editor no tiene INSERT en processes, entonces cualquier .upsert() sobre procesos existentes fallaba con 403.
Marcos Benítez2026-07-07 13:25:43 -03:00
9b89cb8669
La política simulations_update está activa en la DB de desarrollo. El fix B está completo.
Marcos Benítez2026-07-07 12:27:36 -03:00
ecfb72c3f1
docs(sprint-5): actualizar OBSERVATIONS/TECH_DEBT/BACKLOG — Etapa 4 documentada, items resueltos marcados, logo PDF corregido
Marcos Benítez2026-06-23 16:01:31 -03:00
db82be4e8c
fix(lint): ReportPage.tsx — useMemo dep simulation en lugar de simulation?.result + eslint-disable intencional en useEffect
Marcos Benítez2026-06-23 18:47:35 +00:00
c93d8e824f
fix(sprint-5/etapa-4h-2): observar prop open en vez de onOpenChange — fix anterior no se disparaba
Marcos Benítez2026-06-23 10:01:57 -03:00
1aa1486d88
fix(sprint-5/etapa-4h): safety net en Sheet — body queda con pointer-events:none stuck tras cerrar
Marcos Benítez2026-06-23 09:53:14 -03:00
aaf1f79519
fix(sprint-5/etapa-4g): defer updateUser 350ms — espera fin de animacion Radix antes de re-render AuthContext
Marcos Benítez2026-06-23 10:17:47 +00:00
985c655f6a
fix(sprint-5/etapa-4g): defer updateUser — evita overlay Radix stuck en DOM
Marcos Benítez2026-06-20 20:26:47 -03:00
69f744ae3f
fix(sprint-5): optimistic update en ProfileSheet — cierra Sheet antes del fetch, UI nunca bloqueada
Marcos Benítez2026-06-20 19:35:04 -03:00
27ce96ca1e
fix(sprint-5): AbortSignal.timeout(8s) en fetch de ProfileSheet — evita freeze por modal bloqueada
Marcos Benítez2026-06-20 22:19:20 +00:00
1c5329915a
fix(sprint-5/etapa-4f): || fallback en name vacío — botón Guardar habilitado cuando Google devuelve full_name: ""
Marcos Benítez2026-06-20 19:06:30 -03:00
496c227c88
fix(sprint-5/etapa-4d): mover queries DB fuera de onAuthStateChange — corta deadlock lockAcquired permanente
Marcos Benítez2026-06-20 01:28:26 -03:00
dd361b1b12
fix(sprint-5/etapa-4b): library useEffect usa user.id no user ref — corta contención processLock en guardar perfil
Marcos Benítez2026-06-20 00:57:16 -03:00
224b3bc5e7
debug(sprint-5/etapa-4b): logs temporales en ProfileSheet para diagnosticar loop
Marcos Benítez2026-06-20 00:52:21 -03:00
889929329e
Sprint 5 — Etapa 2: resumen Fix 0 (skeleton carry-over): el guard de Etapa 1 era isLoading && !currentProcess — fallaba al navegar directo entre dos workspaces distintos, porque el proceso anterior seguía en el store mientras el nuevo cargaba. Cambié a if (isLoading) return <WorkspaceSkeleton /> sin condición adicional, exactamente como pedía el brief.
Marcos Benítez2026-06-19 15:46:08 -03:00
84daf82e65
Sprint 4 — Etapa 8: reporte de entrega Tier 1 — Automatizado Build: ✅ limpio Lint: ✅ limpio en archivos nuevos de Sprint 4 (separé resource-types.ts de resource-display.tsx para sacar 2 warnings de Fast Refresh; quedan 0 errores/warnings nuevos). Quedó 1 error preexistente en ReportPage.tsx (no tocado desde Sprint 3, fuera de scope) y ~102 warnings no-explicit-any preexistentes en tests viejos. Tests unitarios: ✅ 521/521 verdes Tests E2E: ⚠️ 43-44/48 verdes (varía levemente entre corridas) — detalle abajo Auditoría inicial vs. estado final Antes: 39/39 specs (100%) fallaban — ROJO-AUTH puro, todos por #bpmn-file-input nunca apareciendo (esperaban el flujo pre-Sprint-4 directamente en /).
Marcos Benítez2026-06-19 11:22:50 -03:00
f77085c42d
TooltipProvider agregado en App.tsx envolviendo todo el contenido (dentro de AuthProvider, fuera de RouterProvider/Toaster), sin tocar nada más.
Marcos Benítez2026-06-19 08:12:55 -03:00
5141a5c06c
Este es el workaround documentado oficialmente para el bug conocido de navigator.locks colgándose en supabase-js v2
Marcos Benítez2026-06-18 22:06:53 -03:00