feat: PSA ticket management — /tickets page, detail panel, AI ticket creation #141
@@ -5,7 +5,7 @@ import {
|
|||||||
LayoutGrid, Clock, AlertTriangle, GitBranch, Code2, Wand2,
|
LayoutGrid, Clock, AlertTriangle, GitBranch, Code2, Wand2,
|
||||||
ListChecks, Download, BarChart3,
|
ListChecks, Download, BarChart3,
|
||||||
Settings, Pin, PinOff,
|
Settings, Pin, PinOff,
|
||||||
History, FileText, Network,
|
History, FileText, Network, Ticket,
|
||||||
} from 'lucide-react'
|
} from 'lucide-react'
|
||||||
import { cn } from '@/lib/utils'
|
import { cn } from '@/lib/utils'
|
||||||
import { useUserPreferencesStore } from '@/store/userPreferencesStore'
|
import { useUserPreferencesStore } from '@/store/userPreferencesStore'
|
||||||
@@ -83,6 +83,10 @@ export function Sidebar() {
|
|||||||
{ href: '/escalations', label: 'Escalations', count: stats?.escalation_count || undefined },
|
{ href: '/escalations', label: 'Escalations', count: stats?.escalation_count || undefined },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
href: '/tickets', icon: Ticket, label: 'Tickets', shortLabel: 'Tickets',
|
||||||
|
matchPaths: ['/tickets'],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
href: '/trees', icon: GitBranch, label: 'Flows', shortLabel: 'Flows',
|
href: '/trees', icon: GitBranch, label: 'Flows', shortLabel: 'Flows',
|
||||||
badge: stats?.tree_counts.total || undefined,
|
badge: stats?.tree_counts.total || undefined,
|
||||||
@@ -120,6 +124,7 @@ export function Sidebar() {
|
|||||||
items: [
|
items: [
|
||||||
{ href: '/', icon: LayoutGrid, label: 'Dashboard', shortLabel: 'Dash' },
|
{ href: '/', icon: LayoutGrid, label: 'Dashboard', shortLabel: 'Dash' },
|
||||||
{ href: '/sessions', icon: Clock, label: 'Session History', shortLabel: 'History', badge: stats?.active_count || undefined, matchPaths: ['/sessions'] },
|
{ href: '/sessions', icon: Clock, label: 'Session History', shortLabel: 'History', badge: stats?.active_count || undefined, matchPaths: ['/sessions'] },
|
||||||
|
{ href: '/tickets', icon: Ticket, label: 'Tickets', shortLabel: 'Tickets', matchPaths: ['/tickets'] },
|
||||||
{ href: '/escalations', icon: AlertTriangle, label: 'Escalations', shortLabel: 'Escal', badge: stats?.escalation_count || undefined },
|
{ href: '/escalations', icon: AlertTriangle, label: 'Escalations', shortLabel: 'Escal', badge: stats?.escalation_count || undefined },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ const FlowPilotAnalyticsPage = lazyWithRetry(() => import('@/pages/FlowPilotAnal
|
|||||||
const ScriptBuilderPage = lazyWithRetry(() => import('@/pages/ScriptBuilderPage'))
|
const ScriptBuilderPage = lazyWithRetry(() => import('@/pages/ScriptBuilderPage'))
|
||||||
const KBAcceleratorPage = lazyWithRetry(() => import('@/pages/KBAcceleratorPage'))
|
const KBAcceleratorPage = lazyWithRetry(() => import('@/pages/KBAcceleratorPage'))
|
||||||
const SessionQueuePage = lazyWithRetry(() => import('@/pages/SessionQueuePage'))
|
const SessionQueuePage = lazyWithRetry(() => import('@/pages/SessionQueuePage'))
|
||||||
|
const TicketsPage = lazyWithRetry(() => import('@/pages/TicketsPage'))
|
||||||
const DevBranchingPage = lazyWithRetry(() => import('@/pages/DevBranchingPage'))
|
const DevBranchingPage = lazyWithRetry(() => import('@/pages/DevBranchingPage'))
|
||||||
const GuidesHubPage = lazyWithRetry(() => import('@/pages/GuidesHubPage'))
|
const GuidesHubPage = lazyWithRetry(() => import('@/pages/GuidesHubPage'))
|
||||||
const GuideDetailPage = lazyWithRetry(() => import('@/pages/GuideDetailPage'))
|
const GuideDetailPage = lazyWithRetry(() => import('@/pages/GuideDetailPage'))
|
||||||
@@ -190,6 +191,7 @@ export const router = sentryCreateBrowserRouter([
|
|||||||
{ path: 'trees/:id/navigate', element: page(TreeNavigationPage) },
|
{ path: 'trees/:id/navigate', element: page(TreeNavigationPage) },
|
||||||
{ path: 'sessions', element: page(SessionHistoryPage) },
|
{ path: 'sessions', element: page(SessionHistoryPage) },
|
||||||
{ path: 'sessions/:id', element: page(SessionDetailPage) },
|
{ path: 'sessions/:id', element: page(SessionDetailPage) },
|
||||||
|
{ path: 'tickets', element: page(TicketsPage) },
|
||||||
{ path: 'shares', element: page(MySharesPage) },
|
{ path: 'shares', element: page(MySharesPage) },
|
||||||
{ path: 'analytics', element: page(TeamAnalyticsPage) },
|
{ path: 'analytics', element: page(TeamAnalyticsPage) },
|
||||||
{ path: 'analytics/me', element: page(MyAnalyticsPage) },
|
{ path: 'analytics/me', element: page(MyAnalyticsPage) },
|
||||||
|
|||||||
Reference in New Issue
Block a user