Coverage for src\genesis\writer\context_builder.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-26 14:20 +0800

1"""上下文装配:StructuredSource + 模板 + 规则 → 有序 GenerationContext 列表(Phase 5)。""" 

2from __future__ import annotations 

3 

4from genesis.data_models import StructuredSource 

5from genesis.services.rag_service import CannedRagService 

6from genesis.writer.models import ChapterSpec, GenerationContext 

7from genesis.writer.template_mapper import map_template 

8 

9 

10def build_contexts( 

11 structured_source: StructuredSource, 

12 samples_dir: str = "sample", 

13 output_language: str = "auto", 

14) -> list[GenerationContext]: 

15 specs: list[ChapterSpec] = map_template(structured_source.template) 

16 rag = CannedRagService(samples_dir=samples_dir) 

17 out: list[GenerationContext] = [] 

18 for spec in specs: 

19 # RagService 方法为同步(P5-T3 裁定) 

20 write_rules = rag.retrieve_write_rules(spec.chapter_id) 

21 design_rules = rag.retrieve_design_rules(spec.chapter_id) 

22 used = (structured_source.template.styles or {}).get("used", []) 

23 out.append( 

24 GenerationContext( 

25 chapter_id=spec.chapter_id, 

26 title=spec.title, 

27 template_marker=spec, 

28 structured_source=structured_source, 

29 write_rules=write_rules, 

30 design_rules=design_rules, 

31 template_styles=set(used), 

32 prior_state=None, 

33 impact_report=getattr(structured_source, "impact_report", None), 

34 output_language=output_language, 

35 ) 

36 ) 

37 return out