feat: dispositivos e ajustes de csat e relatórios

This commit is contained in:
codex-bot 2025-11-03 19:29:50 -03:00
parent 25d2a9b062
commit e0ef66555d
86 changed files with 5811 additions and 992 deletions

View file

@ -273,9 +273,9 @@ function App() {
const text = await res.text()
const msg = text.toLowerCase()
const isInvalid =
msg.includes("token de máquina inválido") ||
msg.includes("token de máquina revogado") ||
msg.includes("token de máquina expirado")
msg.includes("token de dispositivo inválido") ||
msg.includes("token de dispositivo revogado") ||
msg.includes("token de dispositivo expirado")
if (isInvalid) {
try {
await store.delete("token"); await store.delete("config"); await store.save()
@ -293,7 +293,7 @@ function App() {
} catch {}
} else {
// Não limpa token em falhas genéricas (ex.: rede); apenas informa
setError("Falha ao validar sessão da máquina. Tente novamente.")
setError("Falha ao validar sessão da dispositivo. Tente novamente.")
tokenVerifiedRef.current = true
setTokenValidationTick((tick) => tick + 1)
}
@ -443,12 +443,12 @@ function App() {
return
}
if (!validatedCompany) {
setError("Valide o código de provisionamento antes de registrar a máquina.")
setError("Valide o código de provisionamento antes de registrar a dispositivo.")
return
}
const normalizedEmail = collabEmail.trim().toLowerCase()
if (!normalizedEmail) {
setError("Informe o e-mail do colaborador vinculado a esta máquina.")
setError("Informe o e-mail do colaborador vinculado a esta dispositivo.")
return
}
if (!emailRegex.current.test(normalizedEmail)) {
@ -575,7 +575,7 @@ function App() {
setError(null)
}
if (!currentActive) {
setError("Esta máquina está desativada. Entre em contato com o suporte da Rever para reativar o acesso.")
setError("Esta dispositivo está desativada. Entre em contato com o suporte da Rever para reativar o acesso.")
setIsLaunchingSystem(false)
return
}
@ -590,7 +590,7 @@ function App() {
: ""
setIsMachineActive(false)
setIsLaunchingSystem(false)
setError(message.length > 0 ? message : "Esta máquina está desativada. Entre em contato com o suporte da Rever.")
setError(message.length > 0 ? message : "Esta dispositivo está desativada. Entre em contato com o suporte da Rever.")
return
}
// Se sessão falhar, tenta identificar token inválido/expirado
@ -604,9 +604,9 @@ function App() {
const text = await hb.text()
const low = text.toLowerCase()
const invalid =
low.includes("token de máquina inválido") ||
low.includes("token de máquina revogado") ||
low.includes("token de máquina expirado")
low.includes("token de dispositivo inválido") ||
low.includes("token de dispositivo revogado") ||
low.includes("token de dispositivo expirado")
if (invalid) {
// Força onboarding
await store?.delete("token"); await store?.delete("config"); await store?.save()
@ -616,7 +616,7 @@ function App() {
setConfig(null)
setStatus(null)
setIsMachineActive(true)
setError("Sessão expirada. Reprovisione a máquina para continuar.")
setError("Sessão expirada. Reprovisione a dispositivo para continuar.")
setIsLaunchingSystem(false)
const p = await invoke<MachineProfile>("collect_machine_profile")
setProfile(p)
@ -787,7 +787,7 @@ function App() {
{error ? <p className="mt-3 rounded-md bg-rose-50 p-2 text-sm text-rose-700">{error}</p> : null}
{!token ? (
<div className="mt-4 space-y-3">
<p className="text-sm text-slate-600">Informe os dados para registrar esta máquina.</p>
<p className="text-sm text-slate-600">Informe os dados para registrar esta dispositivo.</p>
<div className="grid gap-2">
<label className="text-sm font-medium">Código de provisionamento</label>
<div className="relative">
@ -822,7 +822,7 @@ function App() {
</p>
) : (
<p className="text-xs text-slate-500">
Informe o código único fornecido pela equipe para vincular esta máquina a uma empresa.
Informe o código único fornecido pela equipe para vincular esta dispositivo a uma empresa.
</p>
)}
</div>
@ -832,7 +832,7 @@ function App() {
<div className="space-y-1">
<span className="block text-sm font-semibold text-emerald-800">{validatedCompany.name}</span>
<span className="text-xs text-emerald-700/80">
Código reconhecido. Esta máquina será vinculada automaticamente à empresa informada.
Código reconhecido. Esta dispositivo será vinculada automaticamente à empresa informada.
</span>
</div>
</div>
@ -884,7 +884,7 @@ function App() {
</div>
) : null}
<div className="mt-2 flex gap-2">
<button disabled={busy || !validatedCompany || !isEmailValid || !collabName.trim() || provisioningCode.trim().length < 32} onClick={register} className="rounded-lg border border-black bg-black px-3 py-2 text-sm font-semibold text-white hover:bg-black/90 disabled:opacity-60">Registrar máquina</button>
<button disabled={busy || !validatedCompany || !isEmailValid || !collabName.trim() || provisioningCode.trim().length < 32} onClick={register} className="rounded-lg border border-black bg-black px-3 py-2 text-sm font-semibold text-white hover:bg-black/90 disabled:opacity-60">Registrar dispositivo</button>
</div>
</div>
) : (