591cae5ebc
Reworks the advisor toward a Compliance Case Workspace (review feedback): - Rename user-facing "Quellen" -> "Evidence". - Evidence grouped by document/regulation family (count + expandable) — no more unsorted DSK/DSK/DPF/... jumble. - Human-readable regulation names via a display registry (DSK Sdm B51 -> "DSK Standard-Datenschutzmodell (SDM)" / Kapitel B51); generic, bridges G2. - Evidence summary "Antwort basiert auf" with meaningful counts; Regelwerke = distinct FAMILIES (fixes the inflated count). NO fabricated trust score (needs a defined basis). - Expanded mode = 3-column workspace (question+summary | answer | evidence, independent scroll) + history switcher; narrow mode stays stacked. - Prompt: push aggressive markdown structure (## per aspect, numbered phases). Deferred/coordinated on board: C8 diagrams (RAG contract), answer<->evidence coupling [1] (needs LLM citation anchors — phase 2), G1 retrieval relevance + G2 metadata (RAG). tsc clean, 17 vitest, check-loc 0. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
32 lines
1.5 KiB
TypeScript
32 lines
1.5 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { resolveRegulation } from '../advisor/regulation-display'
|
|
|
|
describe('resolveRegulation', () => {
|
|
it('groups DSK SDM building blocks under one family + extracts the chapter', () => {
|
|
const b51 = resolveRegulation({ code: 'dsk_sdm_b51', short: 'DSK Sdm B51' })
|
|
const b41 = resolveRegulation({ code: 'dsk_sdm_b41', short: 'DSK Sdm B41' })
|
|
const v31 = resolveRegulation({ code: 'dsk_sdm_v31', short: 'DSK Sdm V31' })
|
|
expect(b51.familyKey).toBe('dsk_sdm')
|
|
expect(b41.familyKey).toBe('dsk_sdm')
|
|
expect(v31.familyKey).toBe('dsk_sdm')
|
|
expect(b51.familyLabel).toContain('Standard-Datenschutzmodell')
|
|
expect(b51.chapter).toBe('B51')
|
|
expect(v31.chapter).toBe('V31')
|
|
})
|
|
|
|
it('maps known regulations to friendly family keys', () => {
|
|
expect(resolveRegulation({ code: 'cra', short: 'CRA' }).familyKey).toBe('cra')
|
|
expect(resolveRegulation({ code: 'nis2', short: 'NIS2' }).familyKey).toBe('nis2')
|
|
expect(resolveRegulation({ code: 'dpf', short: 'DPF' }).familyKey).toBe('dpf')
|
|
expect(resolveRegulation({ code: 'dsgvo', short: 'DS-GVO' }).familyKey).toBe('dsgvo')
|
|
expect(resolveRegulation({ code: 'bdsg', short: 'BDSG' }).familyKey).toBe('bdsg')
|
|
})
|
|
|
|
it('falls back to code as family + short as label for unknown regulations', () => {
|
|
const r = resolveRegulation({ code: 'xyz_reg', short: 'XYZ' })
|
|
expect(r.familyKey).toBe('xyz_reg')
|
|
expect(r.familyLabel).toBe('XYZ')
|
|
expect(r.chapter).toBeUndefined()
|
|
})
|
|
})
|