import assert from 'node:assert/strict' import test from 'node:test' import { answerPresentation, canManageKnowledge, deviceObjectLabel, parseBusinessDomainScope, resultEvidence, scopePresentation } from '../src/views/knowledgeBaseProduct/deviceKnowledgeModel.js' test('presents device knowledge objects and explicit answer states', () => { assert.equal(deviceObjectLabel('DeviceAsset'), '设备资产') assert.equal(deviceObjectLabel('DataFlow'), 'DataFlow') assert.deepEqual(answerPresentation('model_unavailable'), { color: 'warning', title: '回答模型暂不可用', detail: '未生成推测性答案;以下仅展示你有权访问的检索证据。' }) assert.deepEqual(answerPresentation('no_answer'), { color: 'info', title: '当前证据不足', detail: '知识库未生成推测性答案;可检查下方授权证据并调整问题。' }) }) test('uses selected citations only for grounded answers and evidence otherwise', () => { const citations = [{ chunk_id: 'citation-1', content: '责任人:张工' }] const evidence = [{ chunk_id: 'evidence-1', content: '设备名称:循环泵' }] assert.deepEqual( resultEvidence({ answer_status: 'grounded', citations, evidence }), citations ) assert.deepEqual( resultEvidence({ answer_status: 'model_unavailable', citations: [], evidence }), evidence ) }) test('normalizes source scope and makes empty scope admin-only', () => { const domainA = '11111111-1111-4111-8111-111111111111' const domainB = '22222222-2222-4222-8222-222222222222' assert.deepEqual( parseBusinessDomainScope(`${domainB}\n${domainA}\n${domainA}`), [domainA, domainB] ) assert.throws( () => parseBusinessDomainScope('not-a-uuid'), /UUID/ ) assert.deepEqual(scopePresentation([]), { color: 'warning', label: '仅管理员可见' }) assert.deepEqual(scopePresentation([domainA]), { color: 'success', label: '1 个业务域' }) }) test('shows scope and audit controls only with knowledge manage permission', () => { assert.equal(canManageKnowledge(['governance:read']), false) assert.equal( canManageKnowledge(['governance:read', 'knowledge:manage']), true ) })