From f1a0b9dae50ad76b85cc6fa47ccddafa34a199e3 Mon Sep 17 00:00:00 2001 From: Esdras Renan Date: Thu, 16 Oct 2025 23:19:12 -0300 Subject: [PATCH] feat: enrich companies with phone input and machine overview --- apps/desktop/src-tauri/tauri.conf.json | 8 +- public/favicon.ico | Bin 0 -> 24059 bytes public/icon.png | Bin 0 -> 50823 bytes src/app/layout.tsx | 7 +- .../companies/admin-companies-manager.tsx | 163 ++++++++++++++++- src/components/ui/phone-input.tsx | 171 ++++++++++++++++++ 6 files changed, 339 insertions(+), 10 deletions(-) create mode 100644 public/favicon.ico create mode 100644 public/icon.png create mode 100644 src/components/ui/phone-input.tsx diff --git a/apps/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json index e22d75b..d108c40 100644 --- a/apps/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -44,6 +44,12 @@ "icons/icon.icns", "icons/icon.png", "icons/Raven.png" - ] + ], + "windows": { + "iconPath": "icons/icon.ico", + "setupIconPath": "icons/icon.ico", + "shortcutIconPath": "icons/icon.ico", + "languages": ["pt-BR"] + } } } diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b1471cfd21109fb3a9d45f0bedba65079c6826e4 GIT binary patch literal 24059 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 literal 0 HcmV?d00001 diff --git a/src/app/layout.tsx b/src/app/layout.tsx index e13e00f..da91f5c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -21,7 +21,12 @@ export const metadata: Metadata = { title: "Raven - Sistema de chamados", description: "Plataforma Raven da Rever", icons: { - icon: "/icon.png", + icon: [ + { url: "/favicon.ico", rel: "icon" }, + { url: "/icon.png", rel: "icon", type: "image/png" }, + ], + shortcut: "/favicon.ico", + apple: "/icon.png", }, } diff --git a/src/components/admin/companies/admin-companies-manager.tsx b/src/components/admin/companies/admin-companies-manager.tsx index 3bdacb0..051a6da 100644 --- a/src/components/admin/companies/admin-companies-manager.tsx +++ b/src/components/admin/companies/admin-companies-manager.tsx @@ -3,6 +3,7 @@ import { useCallback, useEffect, useMemo, useRef, useState, useTransition } from "react" import { formatDistanceToNow } from "date-fns" import { ptBR } from "date-fns/locale" +import { useQuery } from "convex/react" import { IconAlertTriangle, IconBuildingSkyscraper, @@ -25,6 +26,7 @@ import { Badge } from "@/components/ui/badge" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" +import { PhoneInput, formatPhoneDisplay } from "@/components/ui/phone-input" import { Label } from "@/components/ui/label" import { Checkbox } from "@/components/ui/checkbox" import { @@ -47,6 +49,7 @@ import { import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" import { Progress } from "@/components/ui/progress" import { useIsMobile } from "@/hooks/use-mobile" +import { api } from "@/convex/_generated/api" type Company = { id: string @@ -63,6 +66,15 @@ type Company = { address: string | null } +type MachineSummary = { + id: string + tenantId: string + companyId: string | null + hostname: string + status: string | null + lastHeartbeatAt: number | null +} + export function AdminCompaniesManager({ initialCompanies }: { initialCompanies: Company[] }) { const [companies, setCompanies] = useState(() => initialCompanies ?? []) const [isPending, startTransition] = useTransition() @@ -74,6 +86,23 @@ export function AdminCompaniesManager({ initialCompanies }: { initialCompanies: const [searchTerm, setSearchTerm] = useState("") const isMobile = useIsMobile() + const machinesQuery = useQuery(api.machines.listByTenant, { includeMetadata: false }) as MachineSummary[] | undefined + const machinesByCompanyId = useMemo(() => { + const map = new Map() + ;(machinesQuery ?? []).forEach((machine) => { + if (!machine.companyId) return + const list = map.get(machine.companyId) ?? [] + list.push(machine) + map.set(machine.companyId, list) + }) + return map + }, [machinesQuery]) + + const editingCompanyMachines = useMemo(() => { + if (!editingId) return [] + return machinesByCompanyId.get(editingId) ?? [] + }, [machinesByCompanyId, editingId]) + const resetForm = () => setForm({}) async function refresh() { @@ -260,7 +289,6 @@ export function AdminCompaniesManager({ initialCompanies }: { initialCompanies: ) : null} ) - return (
@@ -313,10 +341,9 @@ export function AdminCompaniesManager({ initialCompanies }: { initialCompanies:
- setForm((p) => ({ ...p, phone: e.target.value }))} - placeholder="(+55) 11 99999-9999" + onChange={(value) => setForm((p) => ({ ...p, phone: value || null }))} />
@@ -358,6 +385,51 @@ export function AdminCompaniesManager({ initialCompanies }: { initialCompanies: + {editingId ? ( + + +
+
+ Máquinas desta empresa + + Status e último sinal das máquinas vinculadas. + +
+ + {editingCompanyMachines.length} máquina{editingCompanyMachines.length === 1 ? "" : "s"} + +
+
+ + {editingCompanyMachines.length > 0 ? ( +
+ {editingCompanyMachines.map((machine) => { + const variant = getMachineStatusVariant(machine.status) + return ( +
+
+

{machine.hostname}

+ + {variant.label} + +
+

+ Último sinal: {formatRelativeTimestamp(machine.lastHeartbeatAt) ?? "nunca"} +

+
+ ) + })} +
+ ) : ( +

Nenhuma máquina vinculada a esta empresa.

+ )} +
+
+ ) : null} +
@@ -397,6 +469,8 @@ export function AdminCompaniesManager({ initialCompanies }: { initialCompanies:
{hasCompanies ? ( filteredCompanies.map((company) => { + const companyMachines = machinesByCompanyId.get(company.id) ?? [] + const formattedPhone = formatPhoneDisplay(company.phone) const alertInfo = lastAlerts[company.slug] ?? null const usagePct = alertInfo?.usagePct ?? 0 const threshold = alertInfo?.threshold ?? 0 @@ -455,9 +529,50 @@ export function AdminCompaniesManager({ initialCompanies }: { initialCompanies:
- {company.phone ? {company.phone} : null} + {formattedPhone ? {formattedPhone} : null} {company.address ? {company.address} : null}
+ {companyMachines.length > 0 ? ( +
+
+ + {companyMachines.length} máquina{companyMachines.length > 1 ? "s" : ""} + + {Object.entries(summarizeStatus(companyMachines)).map(([status, count]) => ( + + {getMachineStatusVariant(status).label}: {count} + + ))} +
+
+ {companyMachines.slice(0, 3).map((machine) => { + const variant = getMachineStatusVariant(machine.status) + return ( + + + + {machine.hostname} + + + +

{machine.hostname}

+

+ Último sinal: {formatRelativeTimestamp(machine.lastHeartbeatAt) ?? "nunca"} +

+
+
+ ) + })} + {companyMachines.length > 3 ? ( + + +{companyMachines.length - 3} {companyMachines.length - 3 === 1 ? "outra" : "outras"} + + ) : null} +
+
+ ) : ( +

Nenhuma máquina vinculada.

+ )}
@@ -538,6 +653,7 @@ export function AdminCompaniesManager({ initialCompanies }: { initialCompanies: const lastAlertDistance = alertInfo ? formatDistanceToNow(alertInfo.createdAt, { addSuffix: true, locale: ptBR }) : null + const formattedPhone = formatPhoneDisplay(company.phone) return (
- {company.phone ? {company.phone} : null} - {company.phone && company.address ? ( + {formattedPhone ? {formattedPhone} : null} + {formattedPhone && company.address ? ( ) : null} {company.address ? {company.address} : null} - {!company.phone && !company.address && company.description ? ( + {!formattedPhone && !company.address && company.description ? ( {company.description} ) : null}
@@ -741,6 +857,37 @@ export function AdminCompaniesManager({ initialCompanies }: { initialCompanies: ) } +const MACHINE_STATUS_VARIANTS: Record = { + online: { label: "Online", className: "border-emerald-200 bg-emerald-500/10 text-emerald-600" }, + offline: { label: "Offline", className: "border-rose-200 bg-rose-500/10 text-rose-600" }, + stale: { label: "Sem sinal", className: "border-slate-300 bg-slate-200/60 text-slate-700" }, + maintenance: { label: "Manutenção", className: "border-amber-200 bg-amber-500/10 text-amber-600" }, + blocked: { label: "Bloqueada", className: "border-orange-200 bg-orange-500/10 text-orange-600" }, + unknown: { label: "Desconhecida", className: "border-slate-200 bg-slate-100 text-slate-600" }, +} + +function getMachineStatusVariant(status?: string | null) { + const normalized = (status ?? "unknown").toLowerCase() + return MACHINE_STATUS_VARIANTS[normalized] ?? MACHINE_STATUS_VARIANTS.unknown +} + +function summarizeStatus(machines: MachineSummary[]): Record { + return machines.reduce>((acc, machine) => { + const normalized = (machine.status ?? "unknown").toLowerCase() + acc[normalized] = (acc[normalized] ?? 0) + 1 + return acc + }, {}) +} + +function formatRelativeTimestamp(timestamp?: number | null): string | null { + if (!timestamp || !Number.isFinite(timestamp)) return null + try { + return formatDistanceToNow(new Date(timestamp), { addSuffix: true, locale: ptBR }) + } catch { + return null + } +} + function getInitials(value: string) { const cleaned = value.trim() if (!cleaned) return "?" diff --git a/src/components/ui/phone-input.tsx b/src/components/ui/phone-input.tsx new file mode 100644 index 0000000..85cd8f8 --- /dev/null +++ b/src/components/ui/phone-input.tsx @@ -0,0 +1,171 @@ +"use client" + +import { ChangeEvent, useEffect, useMemo, useState } from "react" + +import { cn } from "@/lib/utils" +import { Input } from "@/components/ui/input" +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" + +export type CountryOption = { + code: string + label: string + dialCode: string + flag: string + maxDigits: number + formatLocal: (digits: string) => string +} + +const COUNTRY_OPTIONS: CountryOption[] = [ + { + code: "BR", + label: "Brasil", + dialCode: "+55", + flag: "🇧🇷", + maxDigits: 11, + formatLocal: formatBrazilPhone, + }, + { + code: "US", + label: "Estados Unidos", + dialCode: "+1", + flag: "🇺🇸", + maxDigits: 10, + formatLocal: formatUsPhone, + }, +] + +const DEFAULT_COUNTRY = COUNTRY_OPTIONS[0] + +function formatBrazilPhone(digits: string): string { + const cleaned = digits.slice(0, 11) + if (!cleaned) return "" + const area = cleaned.slice(0, 2) + const rest = cleaned.slice(2) + if (cleaned.length <= 2) return `(${cleaned}` + if (rest.length <= 4) return `(${area}) ${rest}` + if (rest.length <= 8) return `(${area}) ${rest.slice(0, 4)}-${rest.slice(4)}` + return `(${area}) ${rest.slice(0, 5)}-${rest.slice(5)}` +} + +function formatUsPhone(digits: string): string { + const cleaned = digits.slice(0, 10) + if (!cleaned) return "" + const area = cleaned.slice(0, 3) + const rest = cleaned.slice(3) + if (cleaned.length <= 3) return `(${cleaned}` + if (rest.length <= 3) return `(${area}) ${rest}` + return `(${area}) ${rest.slice(0, 3)}-${rest.slice(3)}` +} + +function extractDigits(value?: string | null): string { + return (value ?? "").replace(/\D+/g, "") +} + +function findCountryByValue(value?: string | null): CountryOption { + const digits = extractDigits(value) + return ( + COUNTRY_OPTIONS.find((option) => { + const dialDigits = extractDigits(option.dialCode) + return digits.startsWith(dialDigits) && digits.length > dialDigits.length + }) ?? DEFAULT_COUNTRY + ) +} + +function toLocalDigits(value: string | null | undefined, country: CountryOption): string { + const digits = extractDigits(value) + const dialDigits = extractDigits(country.dialCode) + return digits.startsWith(dialDigits) ? digits.slice(dialDigits.length) : digits +} + +function formatStoredValue(country: CountryOption, localDigits: string): string { + const trimmed = localDigits.trim() + if (!trimmed) return "" + const formattedLocal = country.formatLocal(trimmed) + if (!formattedLocal) return country.dialCode + return `${country.dialCode} ${formattedLocal}`.trim() +} + +function placeholderFor(country: CountryOption): string { + if (country.code === "BR") return "(11) 91234-5678" + if (country.code === "US") return "(555) 123-4567" + return "Número de telefone" +} + +export function PhoneInput({ value, onChange, className }: PhoneInputProps) { + const [selectedCountry, setSelectedCountry] = useState(DEFAULT_COUNTRY) + const [localDigits, setLocalDigits] = useState("") + + useEffect(() => { + const country = findCountryByValue(value) + setSelectedCountry(country) + setLocalDigits(toLocalDigits(value, country).slice(0, country.maxDigits)) + }, [value]) + + const displayValue = useMemo(() => selectedCountry.formatLocal(localDigits), [selectedCountry, localDigits]) + + const handleCountryChange = (code: string) => { + const country = COUNTRY_OPTIONS.find((option) => option.code === code) ?? DEFAULT_COUNTRY + setSelectedCountry(country) + const limitedDigits = localDigits.slice(0, country.maxDigits) + setLocalDigits(limitedDigits) + const stored = formatStoredValue(country, limitedDigits) + onChange?.(stored) + } + + const handleInputChange = (event: ChangeEvent) => { + const raw = event.target.value + const digits = extractDigits(raw).slice(0, selectedCountry.maxDigits) + setLocalDigits(digits) + const stored = formatStoredValue(selectedCountry, digits) + onChange?.(stored) + } + + return ( +
+ + +
+ ) +} + +export type PhoneInputProps = { + value?: string | null + onChange?: (value: string) => void + className?: string +} + +export function formatPhoneDisplay(rawValue?: string | null): string | null { + const trimmed = rawValue?.trim() + if (!trimmed) return null + const country = findCountryByValue(trimmed) + const localDigits = toLocalDigits(trimmed, country) + const formattedLocal = country.formatLocal(localDigits) + if (!formattedLocal) return `${country.dialCode}`.trim() + return `${country.dialCode} ${formattedLocal}`.trim() +}