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:
lorentz 2026-07-18 06:34:57 -04:00
parent b638189cb0
commit 672f17b7f9
35 changed files with 2801 additions and 92 deletions

View file

@ -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>