feat(qa): add QAValidator (validate_chapter + validate_document)

This commit is contained in:
lhl
2026-08-13 10:56:33 +08:00
parent d29cb78167
commit 48024a40db
2 changed files with 63 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
"""QA 校验:章节级/文档级评估(Phase 5)。"""
from __future__ import annotations
from genesis.eval.scorer import ChapterScorer, EvalReport, ChapterArtifact
from genesis.writer.models import ChapterContent
class QAValidator:
def __init__(self, scorer: ChapterScorer | None = None) -> None:
self.scorer = scorer or ChapterScorer()
def _to_artifact(self, content: ChapterContent) -> ChapterArtifact:
"""把 ChapterContent 转换为评分器所需的 ChapterArtifact(聚合正文与来源 URI)。"""
text = "".join(b.text or "" for b in content.blocks)
source_uris: list[str] = []
for b in content.blocks:
source_uris.extend(b.source_uris)
return ChapterArtifact(
chapter_id=content.chapter_id,
text=text,
source_uris=source_uris,
template_sections_expected=[],
)
def validate_chapter(self, content: ChapterContent, structured_source) -> tuple[bool, EvalReport]:
report = self.scorer.score([self._to_artifact(content)], structured_source)
passed = content.chapter_id not in report.failed_chapters
return passed, report
def validate_document(self, contents: list[ChapterContent], structured_source) -> list[tuple[bool, EvalReport]]:
return [self.validate_chapter(c, structured_source) for c in contents]