feat(writer): add build_contexts (template+rules -> GenerationContext list)
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
"""上下文装配:StructuredSource + 模板 + 规则 → 有序 GenerationContext 列表(Phase 5)。"""
|
||||
from __future__ import annotations
|
||||
|
||||
from genesis.data_models import StructuredSource
|
||||
from genesis.services.rag_service import CannedRagService
|
||||
from genesis.writer.models import ChapterSpec, GenerationContext
|
||||
from genesis.writer.template_mapper import map_template
|
||||
|
||||
|
||||
def build_contexts(structured_source: StructuredSource, samples_dir: str = "samples") -> list[GenerationContext]:
|
||||
specs: list[ChapterSpec] = map_template(structured_source.template)
|
||||
rag = CannedRagService(samples_dir=samples_dir)
|
||||
out: list[GenerationContext] = []
|
||||
for spec in specs:
|
||||
# RagService 方法为同步(P5-T3 裁定)
|
||||
write_rules = rag.retrieve_write_rules(spec.chapter_id)
|
||||
design_rules = rag.retrieve_design_rules(spec.chapter_id)
|
||||
used = (structured_source.template.styles or {}).get("used", [])
|
||||
out.append(
|
||||
GenerationContext(
|
||||
chapter_id=spec.chapter_id,
|
||||
title=spec.title,
|
||||
template_marker=spec,
|
||||
structured_source=structured_source,
|
||||
write_rules=write_rules,
|
||||
design_rules=design_rules,
|
||||
template_styles=set(used),
|
||||
prior_state=None,
|
||||
)
|
||||
)
|
||||
return out
|
||||
Reference in New Issue
Block a user