diff --git a/docs/OPERATIONS.md b/docs/OPERATIONS.md index 7a72fdc..144e76b 100644 --- a/docs/OPERATIONS.md +++ b/docs/OPERATIONS.md @@ -138,6 +138,11 @@ Depois disso, o job “Deploy Convex functions” funciona em modo não interati - Front envia `assigneeId` e o backend Convex deve aceitar esse parâmetro (função `tickets.list`). - Se necessário, forçar redeploy das funções (`convex/**`). +- Admin ▸ Máquinas travado em skeleton infinito + - Abra o DevTools (console) e filtre por `admin-machine-details`. Se o log mostrar `machineId: undefined`, o componente não recebeu o parâmetro da rota. + - Verifique se o `page.tsx` está passando `params.id` corretamente ou se o componente client-side usa `useParams()` / `machineId` opcional. + - Deploys antigos antes de `fix(machines): derive machine id from router params` precisam desse patch; sem ele o fallback nunca dispara e o skeleton permanece. + --- Última atualização: sincronizado após o deploy bem‑sucedido do Convex e do Front (20/10/2025). diff --git a/src/components/admin/machines/admin-machine-details.client.tsx b/src/components/admin/machines/admin-machine-details.client.tsx index e8a086e..5d72995 100644 --- a/src/components/admin/machines/admin-machine-details.client.tsx +++ b/src/components/admin/machines/admin-machine-details.client.tsx @@ -38,25 +38,15 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: { setIsHydrated(true) }, []) - useEffect(() => { - if (!shouldLoad) { - console.debug("[admin-machine-details] Skipping probe", { shouldLoad, machineId: effectiveMachineId, fallback, single }) - } else { - console.debug("[admin-machine-details] Starting probe", { machineId: effectiveMachineId, retryTick }) - } - }, [shouldLoad, effectiveMachineId, fallback, single, retryTick]) - useEffect(() => { if (!shouldLoad) return let cancelled = false const probe = async () => { - console.debug("[admin-machine-details] Probe invocation", { machineId: effectiveMachineId, retryTick }) try { const convexUrl = process.env.NEXT_PUBLIC_CONVEX_URL if (convexUrl) { try { - console.debug("[admin-machine-details] Convex probe begin", { machineId: effectiveMachineId, convexUrl }) const http = new ConvexHttpClient(convexUrl) const data = (await http.query(api.machines.getById, { id: effectiveMachineId as Id<"machines">, @@ -66,26 +56,22 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: { if (cancelled) return if (data) { - console.info("[admin-machine-details] Convex query succeeded", { machineId: effectiveMachineId }) setFallback(data) setLoadError(null) return } if (data === null) { - console.info("[admin-machine-details] Convex query returned null", { machineId: effectiveMachineId }) setFallback(null) setLoadError(null) return } } catch (err) { if (cancelled) return - console.warn("[admin-machine-details] Convex probe failed, falling back to API route", { machineId: effectiveMachineId, err }) } } try { - console.debug("[admin-machine-details] HTTP fallback begin", { machineId: effectiveMachineId }) const res = await fetch(`/api/admin/machines/${effectiveMachineId}/details`, { credentials: "include", cache: "no-store", @@ -101,7 +87,6 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: { } if (res.ok) { - console.info("[admin-machine-details] HTTP fallback succeeded", { machineId: effectiveMachineId }) setFallback(payload ?? null) setLoadError(null) return @@ -113,11 +98,9 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: { : `Falha ao carregar (HTTP ${res.status})` if (res.status === 404) { - console.info("[admin-machine-details] HTTP fallback returned 404", { machineId: effectiveMachineId }) setFallback(null) setLoadError(null) } else { - console.error("[admin-machine-details] HTTP fallback failed", { machineId: effectiveMachineId, status: res.status, message }) setLoadError(message) } } catch (err) { @@ -142,7 +125,6 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: { }) return () => { - console.debug("[admin-machine-details] Cancelling probe", { machineId: effectiveMachineId }) cancelled = true } }, [shouldLoad, effectiveMachineId, retryTick])