feat: automações de tickets e testes de regressão

This commit is contained in:
esdrasrenan 2025-12-13 10:30:29 -03:00
parent 9f1a6a7401
commit 8ab510bfe9
18 changed files with 2221 additions and 20 deletions

View file

@ -52,7 +52,7 @@ import { cn } from "@/lib/utils"
import type { LucideIcon } from "lucide-react"
type NavRoleRequirement = "staff" | "admin"
type NavRoleRequirement = "staff" | "admin" | "agent"
type NavigationItem = {
title: string
@ -85,6 +85,7 @@ const navigation: NavigationGroup[] = [
{ title: "Resolvidos", url: "/tickets/resolved", icon: ShieldCheck, requiredRole: "staff" },
],
},
{ title: "Automações", url: "/automations", icon: Waypoints, requiredRole: "agent" },
{ title: "Modo Play", url: "/play", icon: PlayCircle, requiredRole: "staff" },
{ title: "Agenda", url: "/agenda", icon: CalendarDays, requiredRole: "staff" },
{ title: "Dispositivos", url: "/admin/devices", icon: MonitorCog, requiredRole: "admin" },
@ -150,16 +151,17 @@ const navigation: NavigationGroup[] = [
export function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {
const pathname = usePathname()
const { session, isLoading, isAdmin, isStaff } = useAuth()
const { session, isLoading, isAdmin, isStaff, role } = useAuth()
const [isHydrated, setIsHydrated] = React.useState(false)
const canAccess = React.useCallback(
(requiredRole?: NavRoleRequirement) => {
if (!requiredRole) return true
if (requiredRole === "admin") return isAdmin
if (requiredRole === "agent") return isAdmin || role === "agent"
if (requiredRole === "staff") return isStaff
return false
},
[isAdmin, isStaff]
[isAdmin, isStaff, role]
)
const initialExpanded = React.useMemo(() => {
const open = new Set<string>()
@ -377,4 +379,3 @@ export function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {
</Sidebar>
)
}