feat: RMM Overshell, IT Glue audit/write-back, LogLift, link-aware bundles, dashboard overhaul
- RMM Overshell (migration 077): admin page, dispatch UI, executor/worker, target resolver, script registry (AD/DHCP/DNS/event-log/services/software/network/loglift) - LogLift evidence pipeline (migration 078): upload webhook, B2 storage client, receiver/matcher, EventLogCollector PowerShell script - IT Glue audit + write-back (migrations 075, 076): asset-audit runner, ticket xrefs, applications/configurations browse pages + apply/revert/audit endpoints - Link-aware analyzer bundles (migration 073) + provider toggle (migration 074): link-discovery service, OpenRouter LLM provider, related-tickets/itglue-suggestion panels, analyze-bundle endpoint - Endpoint data model + device-link reconciliation (migrations 079, 080): conflicts admin page, reconciler service, resolve endpoints - Dashboard overhaul: integration-health service + alerts, overview/health endpoints - Permissions: add itglue + rmm scopes; middleware: public /api/rmm/loglift route Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
378e68ad8a
commit
1112a06afe
132 changed files with 21352 additions and 743 deletions
|
|
@ -76,6 +76,7 @@ import { DattoRMMDevice } from '@/lib/types/datto-rmm';
|
|||
import { AuvikDevice } from '@/lib/types/auvik';
|
||||
import { AddigyDevice } from '@/lib/types/addigy';
|
||||
import { useApi } from '@/lib/hooks/use-api';
|
||||
import { RmmDispatchDialog } from '@/components/rmm/rmm-dispatch-dialog';
|
||||
|
||||
interface DeviceComparison {
|
||||
autotaskDevice?: ConfigurationItem;
|
||||
|
|
@ -864,6 +865,7 @@ function ConfigurationItemsContent() {
|
|||
<TableHead>RMM</TableHead>
|
||||
<TableHead>NMS</TableHead>
|
||||
<TableHead>ARMM</TableHead>
|
||||
<TableHead className="w-32">Actions</TableHead>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
|
|
@ -889,7 +891,7 @@ function ConfigurationItemsContent() {
|
|||
setExpandedContacts(newExpanded);
|
||||
}}
|
||||
>
|
||||
<TableCell colSpan={11}>
|
||||
<TableCell colSpan={12}>
|
||||
<div className="flex items-center gap-2">
|
||||
<ChevronRight className={`h-4 w-4 transition-transform ${isExpanded ? 'rotate-90' : ''}`} />
|
||||
<Users className="h-4 w-4" />
|
||||
|
|
@ -1024,6 +1026,17 @@ function ConfigurationItemsContent() {
|
|||
<XCircle className="w-4 h-4 text-gray-400" />
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell className="w-32" onClick={(e) => e.stopPropagation()}>
|
||||
{item.rmmDevice?.uid ? (
|
||||
<RmmDispatchDialog
|
||||
deviceUid={item.rmmDevice.uid}
|
||||
hostname={item.rmmDevice.hostname ?? null}
|
||||
companyId={selectedCompany ?? null}
|
||||
/>
|
||||
) : (
|
||||
<span className="text-xs text-muted-foreground">—</span>
|
||||
)}
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
))}
|
||||
</>
|
||||
|
|
@ -1150,6 +1163,17 @@ function ConfigurationItemsContent() {
|
|||
<XCircle className="w-4 h-4 text-gray-400" />
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell className="w-32" onClick={(e) => e.stopPropagation()}>
|
||||
{item.rmmDevice?.uid ? (
|
||||
<RmmDispatchDialog
|
||||
deviceUid={item.rmmDevice.uid}
|
||||
hostname={item.rmmDevice.hostname ?? null}
|
||||
companyId={selectedCompany ?? null}
|
||||
/>
|
||||
) : (
|
||||
<span className="text-xs text-muted-foreground">—</span>
|
||||
)}
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
))
|
||||
)}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue