新增普通文案优化数据校验

This commit is contained in:
czj
2026-07-02 14:32:20 +08:00
parent 31d53d3165
commit c2010fa8f4
3 changed files with 150 additions and 0 deletions
@@ -4,6 +4,8 @@ import {
articleInputSchema,
confirmedFactCardSchema,
candidateFactCardSchema,
copyOptimizationRequestSchema,
copyOptimizationResultSchema,
optimizationFactCardSchema,
optimizedArticleSchema,
qaReportSchema,
@@ -51,6 +53,59 @@ describe("domain validation", () => {
).toThrow();
});
it("accepts a trimmed copy optimization request", () => {
const parsed = copyOptimizationRequestSchema.parse({
source_text: " 我写了一段有点卡的文案 ",
goal: "",
intensity: "light",
user_instructions: " 保留口语感 ",
});
expect(parsed).toEqual({
source_text: "我写了一段有点卡的文案",
goal: "保留原意,减少 AI 味",
intensity: "light",
user_instructions: "保留口语感",
});
});
it("rejects empty copy optimization source text", () => {
expect(() =>
copyOptimizationRequestSchema.parse({
source_text: " ",
intensity: "light",
}),
).toThrow();
});
it("accepts structured copy optimization results", () => {
const parsed = copyOptimizationResultSchema.parse({
optimized_text: "我把句子顺了一下。",
change_notes: [
{
original: "我把句子顺顺。",
revised: "我把句子顺了一下。",
reason: "修正口语里不顺的重复。",
confidence: "confident",
revertible: false,
},
],
ai_taste_checks: [
{
rule_id: "promotion_tone",
status: "pass",
evidence: "没有新增宣传词。",
suggestion: "",
},
],
warnings: [],
});
expect(parsed.optimized_text).toBe("我把句子顺了一下。");
expect(parsed.change_notes[0]?.confidence).toBe("confident");
expect(parsed.ai_taste_checks[0]?.rule_id).toBe("promotion_tone");
});
it("accepts an unconfirmed optimization fact card with unresolved items", () => {
const parsed = optimizationFactCardSchema.parse({
company_full_name: "",