diff --git a/src/app/tickets/visits/page.tsx b/src/app/tickets/visits/page.tsx
new file mode 100644
index 0000000..bcf61c9
--- /dev/null
+++ b/src/app/tickets/visits/page.tsx
@@ -0,0 +1,7 @@
+import { TicketsVisitsPageClient } from "./tickets-visits-page-client"
+import { requireAuthenticatedSession } from "@/lib/auth-server"
+
+export default async function TicketsVisitsPage() {
+ await requireAuthenticatedSession()
+ return
+}
diff --git a/src/app/tickets/visits/tickets-visits-page-client.tsx b/src/app/tickets/visits/tickets-visits-page-client.tsx
new file mode 100644
index 0000000..631a112
--- /dev/null
+++ b/src/app/tickets/visits/tickets-visits-page-client.tsx
@@ -0,0 +1,31 @@
+"use client"
+
+import dynamic from "next/dynamic"
+
+import { AppShell } from "@/components/app-shell"
+import { SiteHeader } from "@/components/site-header"
+
+const TicketsView = dynamic(
+ () =>
+ import("@/components/tickets/tickets-view").then((module) => ({
+ default: module.TicketsView,
+ })),
+ { ssr: false }
+)
+
+export function TicketsVisitsPageClient() {
+ return (
+
+ }
+ >
+
+
+
+
+ )
+}
diff --git a/src/components/app-sidebar.tsx b/src/components/app-sidebar.tsx
index d009332..10acc19 100644
--- a/src/components/app-sidebar.tsx
+++ b/src/components/app-sidebar.tsx
@@ -14,6 +14,7 @@ import {
Layers3,
LayoutTemplate,
LifeBuoy,
+ MapPin,
MonitorCog,
Package,
PlayCircle,
@@ -81,6 +82,7 @@ const navigation: NavigationGroup[] = [
requiredRole: "staff",
children: [
{ title: "Todos os tickets", url: "/tickets", icon: ClipboardList, requiredRole: "staff" },
+ { title: "Visitas", url: "/tickets/visits", icon: MapPin, requiredRole: "staff" },
{ title: "Resolvidos", url: "/tickets/resolved", icon: ShieldCheck, requiredRole: "staff" },
{ title: "Modo Play", url: "/play", icon: PlayCircle, requiredRole: "staff" },
],
diff --git a/tests/automations-engine.test.ts b/tests/automations-engine.test.ts
index c24ea9e..483b060 100644
--- a/tests/automations-engine.test.ts
+++ b/tests/automations-engine.test.ts
@@ -287,7 +287,18 @@ describe("automations.runTicketAutomationsForEvent", () => {
expect.objectContaining({
to: ["cliente@empresa.com"],
subject: "Atualização do chamado #123",
- html: expect.any(String),
+ emailProps: expect.objectContaining({
+ title: "Atualização do chamado #123",
+ message: "Olá Renan, recebemos seu chamado: Teste de automação",
+ ticket: expect.objectContaining({
+ reference: 123,
+ subject: "Teste de automação",
+ status: "PENDING",
+ priority: "MEDIUM",
+ requesterName: "Renan",
+ }),
+ ctaLabel: "Abrir chamado",
+ }),
})
)
})