From d117bea21956a03329b4b6b33490d6df6ac7c947 Mon Sep 17 00:00:00 2001 From: Kjell Tore Guttormsen Date: Fri, 8 May 2026 20:13:00 +0200 Subject: [PATCH] =?UTF-8?q?refactor(ms-ai-architect):=20playground=20v1.14?= =?UTF-8?q?.0=20sesjon=203=20=E2=80=94=20risk-rapporter=20til=20DS-konvens?= =?UTF-8?q?jon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - renderDpia: matrix wrappet i .card med h2 - renderSecurity: ros-layout (matrix+radar), small-multiples-section, top-risks som
    i .card - renderRos: speil renderSecurity (5x5) + summary-grid for top-risks+recommendation - renderFindingsBlock: fjern .report-meta-band-aid, bruk findings-section + findings__items--standalone - Legg til .ros-layout, .summary-grid, .findings-section, .small-multiples-section i lokal CSS - Fjern .top-risks fra defensive layout-block - test-playground-v3.sh: bytt .findings__list → .findings__items i DS-klasse-asserts - Style-blokk: 182 → 188 linjer (mål ≤195 nådd) Refs V1.14.0-AUDIT.local.md sub-batch B + helper-section. --- .../ms-ai-architect-playground.html | 162 +++++++++++------- .../tests/test-playground-v3.sh | 10 +- 2 files changed, 109 insertions(+), 63 deletions(-) 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 dcbe73a..304dfe3 100644 --- a/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html +++ b/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html @@ -185,6 +185,15 @@ ikke skubber innhold utenfor viewport. */ .recommendation-card__body { overflow-wrap: anywhere; word-break: break-word; } + /* v1.14.0 sesjon 3: layout-utilities for risk-rapporter (renderDpia, renderSecurity, renderRos). + Speiler Anthropic-ref ros-lier-scenario. Hoist til DS i v1.15.0 hvis andre plugins trenger samme. */ + .ros-layout { display: grid; grid-template-columns: 1fr 320px; gap: var(--space-6); align-items: start; margin-block: var(--space-5); } + .summary-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-5); align-items: start; margin-block: var(--space-5); } + @media (max-width: 980px) { .ros-layout, .summary-grid { grid-template-columns: 1fr; } } + .findings-section, .small-multiples-section { margin-block: var(--space-5); } + .findings-section > h3, .small-multiples-section > h3 { margin: 0 0 var(--space-3); font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); } + .findings__items--standalone { list-style: none; margin: 0; padding: 0; border: 1px solid var(--color-border-subtle); border-radius: var(--radius-lg); background: var(--color-surface); overflow: hidden; } + /* v1.13.1 fix (B7): .report-meta er ikke definert i vendored DS — vi bruker
    som outer-wrapper i flere rendrere. Browser- defaults for
      gir uforutsigbare indents (Forpliktelser-bullet- @@ -209,12 +218,11 @@ /* v1.13.1 fix (B12, B13, B15): defensive block-layout for sibling-rapport- seksjoner som kan ha overflow-issues mot foregående grid-elementer (.small-multiples, .kanban-board, .mat-ladder). Sikrer eksplisitt - block-flow + clear så de ikke leker grid-celler eller flyter. */ - .top-risks, + block-flow + clear så de ikke leker grid-celler eller flyter. + v1.14.0 sesjon 3: .top-risks fjernet (ligger nå i .card med riktig DS block-flow). */ .suppressed-panel, .phase-detail, .aiact-timeline, - .small-multiples + .top-risks, .kanban-board + .report-meta, .mat-ladder + .phase-detail, .phase-detail + .phase-detail { display: block; clear: both; width: 100%; } @@ -3327,9 +3335,11 @@ } function renderFindingsBlock(findings, label) { - // v1.13.0 fix (B1): DS' .findings er grid 360px+1fr (list+detail-panel). - // Vi har bare list-kolonnen; bruk
      som outer - // for å beholde findings__list-strukturen uten å bli klemt til 360px. + // v1.14.0 sesjon 3: refaktorert fra .report-meta-band-aid til standalone + // findings-section. DS' .findings er grid 360px+1fr (list+detail-panel) — + // siden vi ikke har detail-panel, bruker vi en standalone container med + // .findings__items--standalone-modifier som styles lokalt. + if (!findings || !findings.length) return ''; const items = findings.map(function (f) { return '
    • ' + '' + @@ -3338,14 +3348,9 @@ 'Lokasjon: ' + escapeHtml(f.location || '—') + ' · Severity: ' + escapeHtml(f.severity || '—') + '' + '
    • '; }).join(''); - return '
      ' + - '

      ' + escapeHtml(label) + '

      ' + - '
      ' + - '
      ' + - '
      ' + escapeHtml(label) + '' + findings.length + '
      ' + - '
        ' + items + '
      ' + - '
      ' + - '
      ' + + return '
      ' + + '

      ' + escapeHtml(label) + '

      ' + + '
        ' + items + '
      ' + '
      '; } @@ -3671,7 +3676,12 @@ } function renderDpia(data, slot) { - const matrixHtml = renderMatrixHtml(data, 5); + // v1.14.0 sesjon 3: matrix wrappet i .card med h2 for visuell separasjon + // fra residual-pair og threats-tabell (per Anthropic-ref ros-lier-pattern). + const matrixHtml = '
      ' + + '

      5×5 Risikomatrise

      ' + + renderMatrixHtml(data, 5) + + '
      '; const threatsHtml = renderThreatsTable(data.threats); const rp = data.residualPair; let residualHtml = ''; @@ -3735,34 +3745,51 @@ if (n >= 4) return 'medium'; return 'low'; }; - const matrixHtml = renderMatrixHtml(data, 6); - const radarHtml = renderRadarSvg(data.dimensions || []); - // C7 small-multiples per OWASP-kategori (driver: categoryGrades). + // v1.14.0 sesjon 3: matrix + radar i .ros-layout (1fr 320px) per Anthropic-ref + // ros-lier-scenario. Matrix står i .card, radar i