chore: check in pending work — queue preferences, QBO AR diagnostics, mobile engagement fixes, ops scripts
Bundles several in-progress efforts that were sitting uncommitted: - User queue-preferences (migration 087, API route, popover component) - QBO invoice soft-delete (migration 088) and AR diagnostics route - Dashboard/mobile engagement route and page adjustments - Docker Compose log-rotation config - One-off ticket/RMM investigation scripts (scripts/) - Planning docs: phase verification/pattern notes, mobile shell design spec - .gitignore: exclude local scratch financial/inventory data and Claude Code worktree/local-settings runtime state (never meant for version control) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W6RuWdiUiXrPK6FLBHjtpY
This commit is contained in:
parent
b638189cb0
commit
672f17b7f9
35 changed files with 2801 additions and 92 deletions
|
|
@ -23,6 +23,7 @@ import { KpiCard } from '@/components/dashboard/kpi-card';
|
|||
import { VolumeTrend } from '@/components/dashboard/volume-trend';
|
||||
import { ResolutionTrend } from '@/components/dashboard/resolution-trend';
|
||||
import { QueueHeatmap } from '@/components/dashboard/queue-heatmap';
|
||||
import { QueuePreferencesPopover } from '@/components/dashboard/queue-preferences-popover';
|
||||
import { ActiveEngineers } from '@/components/dashboard/active-engineers';
|
||||
import {
|
||||
RefreshCw,
|
||||
|
|
@ -89,6 +90,32 @@ interface Trends {
|
|||
name: string;
|
||||
hours: number;
|
||||
ticketsTouched: number;
|
||||
tickets: Array<{
|
||||
id: string;
|
||||
ticketNumber: string | null;
|
||||
title: string | null;
|
||||
description: string | null;
|
||||
statusLabel: string | null;
|
||||
hours: number;
|
||||
}>;
|
||||
isPto: boolean;
|
||||
ptoNote: string | null;
|
||||
}>;
|
||||
ptoEngineers: Array<{
|
||||
resourceId: string;
|
||||
name: string;
|
||||
hours: number;
|
||||
ticketsTouched: number;
|
||||
tickets: Array<{
|
||||
id: string;
|
||||
ticketNumber: string | null;
|
||||
title: string | null;
|
||||
description: string | null;
|
||||
statusLabel: string | null;
|
||||
hours: number;
|
||||
}>;
|
||||
isPto: boolean;
|
||||
ptoNote: string | null;
|
||||
}>;
|
||||
}
|
||||
|
||||
|
|
@ -270,11 +297,12 @@ export default function DashboardPage() {
|
|||
{/* QUEUE POSTURE ------------------------------------------------ */}
|
||||
<div className="grid grid-cols-1 lg:grid-cols-12 gap-6">
|
||||
<Card className="lg:col-span-8">
|
||||
<CardHeader className="pb-3">
|
||||
<CardHeader className="pb-3 flex flex-row items-center justify-between space-y-0">
|
||||
<CardTitle className="text-base flex items-center gap-2">
|
||||
<Layers className="h-4 w-4" />
|
||||
Queue posture
|
||||
</CardTitle>
|
||||
<QueuePreferencesPopover onSaved={load} />
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
{!trends ? (
|
||||
|
|
@ -295,7 +323,10 @@ export default function DashboardPage() {
|
|||
{!trends ? (
|
||||
<SkeletonChart height={196} />
|
||||
) : (
|
||||
<ActiveEngineers data={trends.activeEngineers} />
|
||||
<ActiveEngineers
|
||||
working={trends.activeEngineers}
|
||||
pto={trends.ptoEngineers}
|
||||
/>
|
||||
)}
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue