"""步骤 1:语言参数贯通测试(config → GenerationContext → to_vars → context_builder → run_trial)。""" from __future__ import annotations from genesis.data_models import ( CellValue, ExcelTable, ParsedTemplate, Provenance, SheetType, StructuredSource, ) from genesis.writer.context_builder import build_contexts from genesis.writer.models import ChapterSpec, GenerationContext def _src() -> StructuredSource: return StructuredSource( tables=[], template=ParsedTemplate("t.docx", [__import__("genesis.data_models", fromlist=["ChapterMarker"]).ChapterMarker("heading", "1. はじめに", 1)], {}, {"used": []}), rule_docs=[], image_analyses=[], existing_system=None, comments=[], ) def test_generation_context_default_output_language_is_auto(): ctx = GenerationContext( chapter_id="db_design", title="DB 設計", template_marker=ChapterSpec(chapter_id="db_design", title="DB 設計"), structured_source=None, write_rules=[], design_rules=[], template_styles=set(), ) assert ctx.output_language == "auto" def test_to_vars_language_instruction_explicit_zh(): ctx = GenerationContext( chapter_id="db_design", title="DB 设計", template_marker=ChapterSpec(chapter_id="db_design", title="DB 设計"), structured_source=None, write_rules=[], design_rules=[], template_styles=set(), output_language="zh", ) v = ctx.to_vars() assert "language_instruction" in v assert "简体中文" in v["language_instruction"] def test_to_vars_language_instruction_explicit_ja(): ctx = GenerationContext( chapter_id="db_design", title="DB 設計", template_marker=ChapterSpec(chapter_id="db_design", title="DB 設計"), structured_source=None, write_rules=[], design_rules=[], template_styles=set(), output_language="ja", ) v = ctx.to_vars() assert "日本語" in v["language_instruction"] def test_to_vars_language_instruction_auto_follows_title(): ctx = GenerationContext( chapter_id="db_design", title="DB 設計", template_marker=ChapterSpec(chapter_id="db_design", title="DB 設計"), structured_source=None, write_rules=[], design_rules=[], template_styles=set(), output_language="auto", ) v = ctx.to_vars() assert "标题" in v["language_instruction"] and "一致" in v["language_instruction"] def test_context_builder_passes_output_language(): src = _src() ctxs = build_contexts(src, output_language="zh") assert all(c.output_language == "zh" for c in ctxs) # 回归:默认仍为 auto ctxs2 = build_contexts(src) assert all(c.output_language == "auto" for c in ctxs2) def test_format_impact_zh_labels_localized(): """步骤 B:output_language=zh 时影响调查标签本地化为中文,且不影响 ja 默认。""" from genesis.data_models import ( ChangeAnalysis, ChangeElement, ChangeType, ImpactReport, ImpactWarning, ) from genesis.writer.models import _format_impact ca = ChangeAnalysis( project_type="enhancement", new_elements=[ChangeElement("F001", "機能", "止损风控", ChangeType.NEW)], modified_elements=[ChangeElement("F002", "機能", "下单流程", ChangeType.MODIFIED)], deleted_elements=[ChangeElement("F030", "機能", "旧功能", ChangeType.DELETED)], unchanged_elements=[], warnings=[ImpactWarning("F030", "缺少既存対応")], ) report = ImpactReport(metadata={}, change_analysis=ca, summary={}) zh = _format_impact(report, None, "zh") assert "[新建]" in zh and "[变更]" in zh and "[删除]" in zh and "[警告]" in zh assert "受影响" in zh # ja / auto 回落仍用日文标签 ja = _format_impact(report, None, "ja") assert "[新規]" in ja and "[削除]" in ja