From ebdd1a40e1eb9aa399dd9ad4005ec01b05cfc084 Mon Sep 17 00:00:00 2001 From: 732642856 <732642856@qq.com> Date: Tue, 21 Jul 2026 15:46:16 +0800 Subject: [PATCH] feat: add non-sensitive raw evidence receipt --- frontend/src/app/globals.css | 3 +++ frontend/src/components/evidence-audit-panel.tsx | 9 +++++++++ frontend/tests/evidence-audit-panel.test.ts | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/frontend/src/app/globals.css b/frontend/src/app/globals.css index 5ac010bd..b53f8a06 100644 --- a/frontend/src/app/globals.css +++ b/frontend/src/app/globals.css @@ -155,6 +155,9 @@ button:disabled { cursor: default; opacity: .45; } .evidence-audit-row { display: grid; grid-template-columns: minmax(120px, 1fr) auto minmax(160px, 1.2fr); gap: var(--space-3); align-items: center; padding: var(--space-2) 0; border-top: 1px solid color-mix(in srgb, var(--color-border) 64%, transparent); font-size: 12px; } .evidence-audit-row b { color: var(--color-action-hover); font-weight: 600; } .evidence-audit-row small { color: var(--color-ink-tertiary); line-height: 1.45; } +.raw-evidence-receipt { margin: 0 var(--space-3) var(--space-3); border-top: 1px solid color-mix(in srgb, var(--color-border) 64%, transparent); padding-top: var(--space-2); } +.raw-evidence-receipt summary { padding: var(--space-1) 0; color: var(--color-ink-tertiary); font-size: 12px; } +.raw-evidence-receipt pre { max-height: 180px; overflow: auto; margin: var(--space-2) 0 0; padding: var(--space-3); border-radius: var(--radius-md); background: var(--color-canvas); color: var(--color-ink-secondary); font-size: 11px; line-height: 1.5; } .message-markdown p { margin: 0 0 14px; } .message-markdown ul, .message-markdown ol { margin: 10px 0 16px; padding-left: 24px; } .message-markdown li { margin: 6px 0; } diff --git a/frontend/src/components/evidence-audit-panel.tsx b/frontend/src/components/evidence-audit-panel.tsx index 2d766a25..abb9e626 100644 --- a/frontend/src/components/evidence-audit-panel.tsx +++ b/frontend/src/components/evidence-audit-panel.tsx @@ -38,6 +38,11 @@ function workflowRows(receipt?: WorkflowReceipt): AuditRow[] { export function EvidenceAuditPanel({ claimStatus, workflowReceipt }: { readonly claimStatus?: string; readonly workflowReceipt?: WorkflowReceipt }) { const rows = workflowRows(workflowReceipt); + const rawReceipt = { + techniqueTruth: claimStatus || "unknown", + workflowReceipt: workflowReceipt ?? null, + privacyBoundary: "no_birth_data_or_private_case_raw", + }; return (
证据链摘要 · {claimStatus || "unknown"} @@ -50,6 +55,10 @@ export function EvidenceAuditPanel({ claimStatus, workflowReceipt }: { readonly ))} +
+ 查看非敏感 raw receipt +
{JSON.stringify(rawReceipt, null, 2)}
+
); } diff --git a/frontend/tests/evidence-audit-panel.test.ts b/frontend/tests/evidence-audit-panel.test.ts index 44ab6d6e..11ba762b 100644 --- a/frontend/tests/evidence-audit-panel.test.ts +++ b/frontend/tests/evidence-audit-panel.test.ts @@ -20,7 +20,11 @@ test("assistant messages include a collapsible Technique Audit Table shell", () assert.match(panelSource, /Functional Benefic\/Malefic/); assert.match(panelSource, /MEVG \/ Real Case Calibration/); assert.match(panelSource, /组件 parity 未全闭环/); + assert.match(panelSource, /rawReceipt/); + assert.match(panelSource, /no_birth_data_or_private_case_raw/); + assert.match(panelSource, /查看非敏感 raw receipt/); assert.match(globalStyles, /\.evidence-audit-panel/); + assert.match(globalStyles, /\.raw-evidence-receipt/); }); test("consult responses persist workflow receipt headers for evidence rendering", () => {