docs: add admin machines skeleton troubleshooting
This commit is contained in:
parent
2a359b7a65
commit
20a5c902bc
2 changed files with 5 additions and 18 deletions
|
|
@ -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`).
|
- 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/**`).
|
- 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).
|
Última atualização: sincronizado após o deploy bem‑sucedido do Convex e do Front (20/10/2025).
|
||||||
|
|
|
||||||
|
|
@ -38,25 +38,15 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: {
|
||||||
setIsHydrated(true)
|
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(() => {
|
useEffect(() => {
|
||||||
if (!shouldLoad) return
|
if (!shouldLoad) return
|
||||||
let cancelled = false
|
let cancelled = false
|
||||||
|
|
||||||
const probe = async () => {
|
const probe = async () => {
|
||||||
console.debug("[admin-machine-details] Probe invocation", { machineId: effectiveMachineId, retryTick })
|
|
||||||
try {
|
try {
|
||||||
const convexUrl = process.env.NEXT_PUBLIC_CONVEX_URL
|
const convexUrl = process.env.NEXT_PUBLIC_CONVEX_URL
|
||||||
if (convexUrl) {
|
if (convexUrl) {
|
||||||
try {
|
try {
|
||||||
console.debug("[admin-machine-details] Convex probe begin", { machineId: effectiveMachineId, convexUrl })
|
|
||||||
const http = new ConvexHttpClient(convexUrl)
|
const http = new ConvexHttpClient(convexUrl)
|
||||||
const data = (await http.query(api.machines.getById, {
|
const data = (await http.query(api.machines.getById, {
|
||||||
id: effectiveMachineId as Id<"machines">,
|
id: effectiveMachineId as Id<"machines">,
|
||||||
|
|
@ -66,26 +56,22 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: {
|
||||||
if (cancelled) return
|
if (cancelled) return
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
console.info("[admin-machine-details] Convex query succeeded", { machineId: effectiveMachineId })
|
|
||||||
setFallback(data)
|
setFallback(data)
|
||||||
setLoadError(null)
|
setLoadError(null)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data === null) {
|
if (data === null) {
|
||||||
console.info("[admin-machine-details] Convex query returned null", { machineId: effectiveMachineId })
|
|
||||||
setFallback(null)
|
setFallback(null)
|
||||||
setLoadError(null)
|
setLoadError(null)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (cancelled) return
|
if (cancelled) return
|
||||||
console.warn("[admin-machine-details] Convex probe failed, falling back to API route", { machineId: effectiveMachineId, err })
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
console.debug("[admin-machine-details] HTTP fallback begin", { machineId: effectiveMachineId })
|
|
||||||
const res = await fetch(`/api/admin/machines/${effectiveMachineId}/details`, {
|
const res = await fetch(`/api/admin/machines/${effectiveMachineId}/details`, {
|
||||||
credentials: "include",
|
credentials: "include",
|
||||||
cache: "no-store",
|
cache: "no-store",
|
||||||
|
|
@ -101,7 +87,6 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res.ok) {
|
if (res.ok) {
|
||||||
console.info("[admin-machine-details] HTTP fallback succeeded", { machineId: effectiveMachineId })
|
|
||||||
setFallback(payload ?? null)
|
setFallback(payload ?? null)
|
||||||
setLoadError(null)
|
setLoadError(null)
|
||||||
return
|
return
|
||||||
|
|
@ -113,11 +98,9 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: {
|
||||||
: `Falha ao carregar (HTTP ${res.status})`
|
: `Falha ao carregar (HTTP ${res.status})`
|
||||||
|
|
||||||
if (res.status === 404) {
|
if (res.status === 404) {
|
||||||
console.info("[admin-machine-details] HTTP fallback returned 404", { machineId: effectiveMachineId })
|
|
||||||
setFallback(null)
|
setFallback(null)
|
||||||
setLoadError(null)
|
setLoadError(null)
|
||||||
} else {
|
} else {
|
||||||
console.error("[admin-machine-details] HTTP fallback failed", { machineId: effectiveMachineId, status: res.status, message })
|
|
||||||
setLoadError(message)
|
setLoadError(message)
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|
@ -142,7 +125,6 @@ export function AdminMachineDetailsClient({ tenantId: _tenantId, machineId }: {
|
||||||
})
|
})
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
console.debug("[admin-machine-details] Cancelling probe", { machineId: effectiveMachineId })
|
|
||||||
cancelled = true
|
cancelled = true
|
||||||
}
|
}
|
||||||
}, [shouldLoad, effectiveMachineId, retryTick])
|
}, [shouldLoad, effectiveMachineId, retryTick])
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue