Flatten investigation intelligence block

This commit is contained in:
rcourtman 2026-03-20 00:59:11 +00:00
parent 0e5a494d4f
commit 0a29f2384d
4 changed files with 28 additions and 15 deletions

View file

@ -248,6 +248,9 @@ That same overview now keeps AI intelligence and data-governance details
inside a collapsed `Investigation context` disclosure, so runtime status and
identity stay primary while secondary AI and policy signals remain available
without competing with the first-screen monitoring story.
Inside that disclosure, the AI intelligence summary now reads as compact
label/value rows instead of metric tiles, so the opened investigation surface
stays scan-first before the change summary and correlation reveal appear.
Inside that disclosure, learned dependency and correlation detail now sits
behind its own reveal instead of rendering at full depth immediately, so the
opened investigation surface stays label-first and leaves relationship pattern

View file

@ -1844,24 +1844,22 @@ const DrawerContent: Component<ResourceDetailDrawerProps> = (props) => {
<div class="text-[11px] font-medium uppercase tracking-wide text-base-content mb-2">
AI Intelligence
</div>
<div class="grid gap-2 sm:grid-cols-3">
<div class="rounded border border-border bg-surface-hover px-2 py-1.5">
<div class="text-[10px] text-muted">Health</div>
<div class="text-sm font-semibold text-base-content">
<div class="space-y-1.5 text-[11px]">
<div class="flex items-center justify-between gap-2">
<span class="text-muted">Health</span>
<span class="font-semibold text-base-content">
{intel().health.grade} · {Math.round(intel().health.score)}/100
</div>
</span>
</div>
<div class="rounded border border-border bg-surface-hover px-2 py-1.5">
<div class="text-[10px] text-muted">Trend</div>
<div class="text-sm font-semibold text-base-content capitalize">
<div class="flex items-center justify-between gap-2">
<span class="text-muted">Trend</span>
<span class="font-semibold capitalize text-base-content">
{intel().health.trend}
</div>
</span>
</div>
<div class="rounded border border-border bg-surface-hover px-2 py-1.5">
<div class="text-[10px] text-muted">Notes</div>
<div class="text-sm font-semibold text-base-content">
{intel().note_count}
</div>
<div class="flex items-center justify-between gap-2">
<span class="text-muted">Notes</span>
<span class="font-semibold text-base-content">{intel().note_count}</span>
</div>
</div>
<div class="mt-3 space-y-1.5 text-[11px]">

View file

@ -241,9 +241,16 @@ describe('ResourceDetailDrawer change history section', () => {
expect(screen.queryByText('VM Child')).toBeNull();
expect(screen.queryByText('Capabilities 1')).toBeNull();
expect(screen.queryByText('Relationships 1')).toBeNull();
expect(screen.queryByText('AI Intelligence')).toBeNull();
fireEvent.click(screen.getByRole('button', { name: 'Show context' }));
await screen.findByText('AI Intelligence');
expect(screen.getByText('Health')).toBeInTheDocument();
expect(screen.getByText('A · 92/100')).toBeInTheDocument();
expect(screen.getByText('Trend')).toBeInTheDocument();
expect(screen.getByText('stable')).toBeInTheDocument();
expect(screen.getByText('Notes')).toBeInTheDocument();
expect(screen.getByText('3')).toBeInTheDocument();
fireEvent.click(screen.getByRole('button', { name: 'Show correlations' }));
expect(
screen

View file

@ -464,7 +464,12 @@ describe('ResourceDetailDrawer runtime and identity cards', () => {
await waitFor(() => {
expect(getByText('AI Intelligence')).toBeInTheDocument();
});
expect(getByText('AI health A · 92/100 · 1 correlation')).toBeInTheDocument();
expect(getByText('Health')).toBeInTheDocument();
expect(getByText('A · 92/100')).toBeInTheDocument();
expect(getByText('Trend')).toBeInTheDocument();
expect(getByText('stable')).toBeInTheDocument();
expect(getByText('Notes')).toBeInTheDocument();
expect(getByText('3')).toBeInTheDocument();
expect(queryByText('Storage 1')).toBeNull();
fireEvent.click(getByRole('button', { name: 'Show correlations' }));
await waitFor(() => {