diff --git a/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html b/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html index 7c0ef7d..7312635 100644 --- a/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html +++ b/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html @@ -176,6 +176,15 @@ .key-stat[data-modifier="high"] .key-stat__value { color: var(--color-severity-high); } .key-stat[data-modifier="medium"] .key-stat__value { color: var(--color-severity-medium); } .key-stat[data-modifier="low"] .key-stat__value { color: var(--color-severity-low); } + + /* Tier 3 A4 — Screen-tabs (segmented). Inline her per scope-regel + (plugin standalone). Kandidat for hoisting til shared/ i Sesjon 6. */ + .screen-tabs { display: flex; gap: var(--space-1); padding: 4px; background: var(--color-bg-soft); border-radius: var(--radius-md); width: fit-content; margin: 0 0 var(--space-4) 0; } + .screen-tab { padding: var(--space-2) var(--space-3); font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); background: transparent; border: none; border-radius: var(--radius-sm); cursor: pointer; color: var(--color-text-secondary); font-family: inherit; } + .screen-tab:hover { color: var(--color-text-primary); } + .screen-tab[aria-current="true"] { background: var(--color-surface); color: var(--color-text-primary); box-shadow: var(--shadow-sm); } + .screen { display: none; } + .screen[data-active="true"] { display: block; }
@@ -1565,6 +1574,45 @@ return count; } + // Aggregert verdict for project-surface page-shell. Henter parsed.verdict + // fra alle reports og kollapser til én pille: block > go-with-conditions + // > approved > n-a. Tom reports{} -> 'n-a' per Sesjon 2-risk-flagg. + function inferProjectVerdict(project) { + const reports = (project && project.reports) || {}; + const verdicts = []; + for (const k in reports) { + const v = reports[k] && reports[k].parsed && reports[k].parsed.verdict; + if (v) verdicts.push(String(v).toLowerCase()); + } + if (verdicts.length === 0) return 'n-a'; + for (let i = 0; i < verdicts.length; i++) { + if (verdicts[i] === 'block' || verdicts[i] === 'failed') return 'block'; + } + for (let i = 0; i < verdicts.length; i++) { + const v = verdicts[i]; + if (v === 'go-with-conditions' || v === 'warning') return 'go-with-conditions'; + } + let allGo = true; + for (let i = 0; i < verdicts.length; i++) { + const v = verdicts[i]; + if (v !== 'go' && v !== 'approved' && v !== 'allow') { allGo = false; break; } + } + return allGo ? 'approved' : 'n-a'; + } + + function inferProjectLastUpdated(project) { + const reports = (project && project.reports) || {}; + let latest = null; + for (const k in reports) { + const r = reports[k]; + if (r && r.updatedAt) { + if (!latest || r.updatedAt > latest) latest = r.updatedAt; + } + } + const ts = latest || (project && project.createdAt) || ''; + return ts ? String(ts).slice(0, 10) : '–'; + } + function projectMeterBand(filled, total) { if (total === 0) return '4'; // tom = "krever oppmerksomhet" const pct = filled / total; @@ -1647,17 +1695,20 @@ })(); const orgName = (store.state.shared.organization && store.state.shared.organization.name) || ''; - const heroHtml = ( - '' + (orgName - ? 'Velg hvor du vil starte. Felles state er aktiv og forhåndsutfyller skjemaer.' - : 'Single-file arkitektur-rådgivning for Microsoft AI-stakken. Start med onboarding for å aktivere felles state.' - ) + '
' + - '' + escapeHtml(project.description) + '
' : '') + - 'Opprettet ' + escapeHtml((project.createdAt || '').slice(0, 10)) + '. ' + reportFilled + ' av ' + reportTotal + ' rapporter generert.
' + + (scenarioChipsList ? 'Scenarioer:
Sesjon 3+: aggregerte verdict-pillen, recommended-next-actions og top-risks vises her.
' + + 'Fellesfeltene fra onboarding gjenbrukes automatisk i alle command-skjemaer. Bruk for å oppdatere.
' + + 'Sesjon 3+: snapshot av de 20 fellesfeltene og hva som er prefilled per command vises her.
' + + 'Bruk Eksporter i topbar for hele state. Per-prosjekt eksport (PDF/Markdown) kommer i Sesjon 6.
' + + '24 commands gruppert i 5 kategorier. Åpne skjema for å bygge en pipeline-streng som kopieres til terminalen og kjøres med Claude Code.
' + - 'Fyll inn 20 felles felter — de gjenbrukes på tvers av alle commands og forhåndsutfyller skjemaer per prosjekt.
' + - '