mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-11 14:00:29 +00:00
Soften AI intelligence coverage copy
This commit is contained in:
@@ -77,6 +77,7 @@ Own canonical runtime payload shapes between backend and frontend.
|
||||
5. Route unified-resource action, lifecycle, and export audit reads through `internal/api/activity_audit_handlers.go`, `internal/api/router_routes_licensing.go`, and `internal/api/contract_test.go` together so the control-plane execution trail stays on a governed API contract instead of a store-only shape
|
||||
6. Route dedicated unified-resource timeline and facet-bundle reads through `frontend-modern/src/api/resources.ts`, `internal/api/resources.go`, and `internal/api/contract_test.go` together so the backend facet contract and the frontend client stay aligned on one timeline-first surface, while capability and relationship detail stays backend-owned for AI correlation and change detection
|
||||
7. Route canonical AI intelligence summary and resource-intelligence reads through `frontend-modern/src/api/ai.ts`, `frontend-modern/src/stores/aiIntelligence.ts`, `frontend-modern/src/pages/AIIntelligence.tsx`, `internal/api/ai_handlers.go`, and `internal/api/contract_test.go` together so the summary card, store state, and backend payload stay aligned on one governed surface, including the canonical recent-changes slice
|
||||
and the derived signal coverage block beneath it, so the summary page keeps the timeline and learned-correlation story primary rather than presenting the supporting counts as a separate product metric
|
||||
and the shared `frontend-modern/src/components/Infrastructure/ResourceChangeSummary.tsx` card, so canonical recent-change timelines stay rendered through one governed frontend card instead of separate page-local list loops
|
||||
and the shared `frontend-modern/src/utils/resourceChangePresentation.ts` formatter used by the summary page and resource drawer, so canonical change wording does not drift across surfaces
|
||||
and the `/api/ai/intelligence/changes` route plus `internal/api/contract_test.go`, so the canonical recent-changes endpoint stays on the same intelligence facade and contract snapshot instead of bypassing the shared timeline source
|
||||
|
||||
@@ -115,6 +115,9 @@ surface instead of being rebuilt in each caller.
|
||||
The Patrol page also now renders the canonical intelligence summary card
|
||||
through the governed AI client and store, so the visible page summary and the
|
||||
resource/timeline sections stay aligned on the same shared backend slice.
|
||||
That same summary card now keeps the learning block framed as derived signal
|
||||
coverage beneath the timeline and learned-correlation sections, so the page
|
||||
does not present the supporting counts as the main intelligence story.
|
||||
That Patrol summary card now also includes the canonical data-governance
|
||||
posture snapshot from the shared AI summary payload, so the visible page can
|
||||
show the same sensitivity, routing, and redaction distribution that the
|
||||
|
||||
@@ -1281,11 +1281,17 @@ export function AIIntelligence() {
|
||||
<div class="space-y-4">
|
||||
<div class="rounded-md border border-border-subtle bg-base p-4">
|
||||
<div class="flex items-center justify-between gap-2">
|
||||
<h3 class="text-sm font-semibold text-base-content">Learning signals</h3>
|
||||
<h3 class="text-sm font-semibold text-base-content">
|
||||
Derived signal coverage
|
||||
</h3>
|
||||
<span class="text-xs text-muted">
|
||||
{summary().learning.resources_with_baselines} baselined
|
||||
</span>
|
||||
</div>
|
||||
<p class="mt-1 text-xs text-muted">
|
||||
Coverage from baselines, knowledge, patterns, learned correlations,
|
||||
incidents, and predictions.
|
||||
</p>
|
||||
|
||||
<dl class="mt-3 grid grid-cols-2 gap-2 text-sm">
|
||||
<div class="rounded-md bg-surface px-3 py-2">
|
||||
|
||||
@@ -596,7 +596,12 @@ describe('AIIntelligence entitlement gating', () => {
|
||||
expect(
|
||||
screen.getByRole('link', { name: 'Open related resource agent-1 in Infrastructure' }),
|
||||
).toHaveAttribute('href', '/infrastructure?resource=agent-1');
|
||||
expect(screen.getByText('Learning signals')).toBeInTheDocument();
|
||||
expect(screen.getByText('Derived signal coverage')).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(
|
||||
/Coverage from baselines, knowledge, patterns, learned correlations, incidents, and predictions\./,
|
||||
),
|
||||
).toBeInTheDocument();
|
||||
expect(screen.getByText('Data Governance')).toBeInTheDocument();
|
||||
expect(screen.getByText('4 governed resources')).toBeInTheDocument();
|
||||
expect(screen.getByText('Public')).toBeInTheDocument();
|
||||
|
||||
Reference in New Issue
Block a user