import { render, screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import { Ui文学报告, Ui诊断报告 } from "../../src/功能/审校修订/问题清单"; import type { 文学结果, 诊断结果 } from "../../src/功能/审校修订/数据"; describe("审校报告的覆盖、过期与修留问", () => { // @muse-case {"case_id":"NC-review-report-partial","environment":"离线组件","given":"NC-review-report-partial:未审与零问题分开显示","when":"作者页面操作","then":["NC-review-report-partial:未审与零问题分开显示"],"contract":"docs/系统架构/新版设计/模块设计/B06-审校修订.md"} it("NC-review-report-partial:未审与零问题分开显示", () => { const result: 文学结果 = { task_id: "t", task_state: "failed", report_id: null, current_status: "SOURCE_STALE", stale_reasons: ["正文已更新"], report: { findings: [], dimension_status: { continuity: "partial", craft: "insufficient_evidence", voice: "uncalibrated", }, unreviewed_shards: ["tail"], counts: {}, coverage: { 范围完整: false, 未审区间: [[10, 20]] }, model_verified: false, }, }; render(); expect(screen.getByText(/尚有 1 片未审/)).toBeTruthy(); expect(screen.getByText(/声音:未标定/)).toBeTruthy(); expect(screen.getByText(/创作质量:依据不足/)).toBeTruthy(); expect(screen.getByRole("alert").textContent).toContain("正文已更新"); expect(screen.queryByText("完整文学报告")).toBeNull(); }); // @muse-case {"case_id":"NC-review-diagnosis-retain","environment":"离线组件","given":"NC-review-diagnosis-retain:候选预览及有意表达不显示强改","when":"作者页面操作","then":["NC-review-diagnosis-retain:候选预览及有意表达不显示强改"],"contract":"docs/系统架构/新版设计/模块设计/B06-审校修订.md"} it("NC-review-diagnosis-retain:候选预览及有意表达不显示强改", () => { const result: 诊断结果 = { diagnosis_id: "d", report: { mode: "candidate_preview", findings: [ { start: 20, end: 25, quote: "值得注意的是", decision_proposal: "retain", }, ], executed_rules: ["l002"], unreviewed_rules: [{ rule_id: "sem001", reason: "未审" }], text_hash: "a", calibration: "uncalibrated", target: { work_id: "w", chapter_id: "c", revision: 2, document_hash: "a", branch_id: "main", }, }, }; render(); expect(screen.getByText(/候选规则预览 · 未标定/)).toBeTruthy(); expect(screen.getByText("保留")).toBeTruthy(); expect(screen.queryByText("建议修改")).toBeNull(); expect(screen.getByText(/语义规则未审 1 条/)).toBeTruthy(); }); });