feat(writer): add WriterState (cross-chapter regeneration tracking)
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
"""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"]
|
||||
Reference in New Issue
Block a user