"""WriterState 测试(P5-T5)。""" from genesis.writer.writer_state import WriterState from genesis.writer.models import ChapterContent from genesis.eval.scorer import EvalReport def _content(cid, version=1): return ChapterContent(chapter_id=cid, version=version, title="x", blocks=[]) def _report(failed): return EvalReport( dimensions=[], total_score=0.0, passed=False, failed_chapters=failed, ) def test_initial_state_empty(): st = WriterState(["a", "b"]) assert st.needs_regeneration() == ["a", "b"] def test_record_success_clears_need(): st = WriterState(["a"]) st.record_success(_content("a")) assert st.needs_regeneration() == [] def test_failed_eval_marks_regeneration(): st = WriterState(["a"]) st.record_success(_content("a")) st.record_eval("a", _report(["a"])) assert st.needs_regeneration() == ["a"]