38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { createLlmAuditSummary, hashContent } from "../audit";
|
|
|
|
describe("LLM audit summary", () => {
|
|
it("hashes content deterministically", async () => {
|
|
await expect(hashContent("abc")).resolves.toBe(
|
|
"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",
|
|
);
|
|
});
|
|
|
|
it("does not retain raw prompt or response", async () => {
|
|
const summary = await createLlmAuditSummary({
|
|
provider: "deepseek",
|
|
model: "deepseek-v4-pro",
|
|
task: "renwei_copy_optimizer",
|
|
duration_ms: 12,
|
|
schema_valid: true,
|
|
prompt: "完整 prompt 不应长期保存",
|
|
output: "完整 response 不应长期保存",
|
|
error_summary: null,
|
|
});
|
|
|
|
expect(summary).toMatchObject({
|
|
provider: "deepseek",
|
|
model: "deepseek-v4-pro",
|
|
task: "renwei_copy_optimizer",
|
|
duration_ms: 12,
|
|
schema_valid: true,
|
|
error_summary: null,
|
|
});
|
|
expect(JSON.stringify(summary)).not.toContain("完整 prompt");
|
|
expect(JSON.stringify(summary)).not.toContain("完整 response");
|
|
expect(summary.input_hash).toHaveLength(64);
|
|
expect(summary.output_hash).toHaveLength(64);
|
|
});
|
|
});
|