from types import SimpleNamespace from phase_z2_pipeline import _build_verbatim_three_persona_benefits def test_task25_three_persona_keeps_context_out_of_persona_cards(): unit = SimpleNamespace( title="2. DX 기반 Process 혁신에 따른 주체별 기대효과", raw_content="""### 2.1 업무 수행 과정(Process)의 변화 - **생산 방식** - 수작업 의존에서 SW 기반 방식으로 전환 ### 2.2 DX 시행 주체별 기대효과 - **발주자** - 비용 절감 - **시공자** - 시공 리스크 감소 - **설계자** - 설계 품질 향상 """, ) payload = _build_verbatim_three_persona_benefits(unit) assert [p["label"] for p in payload["personas"]] == ["발주자", "시공자", "설계자"] assert [p["color_class"] for p in payload["personas"]] == [ "client", "constructor", "designer", ] assert payload["personas"][0]["body"] == [{"text": "비용 절감", "indent": 0}] assert payload["intro_sections"][0]["label"] == "2.1 업무 수행 과정(Process)의 변화" assert payload["intro_sections"][1]["label"] == "2.2 DX 시행 주체별 기대효과" assert payload["slot_mapping_trace"]["task25"] == "persona_columns_and_internal_context" assert payload["slot_mapping_trace"]["context_group_count"] == 2 assert payload["slot_mapping_trace"]["persona_group_count"] == 3 def test_task25_three_persona_still_handles_plain_three_groups(): unit = SimpleNamespace( title="plain personas", raw_content="""- **A** - A body - **B** - B body - **C** - C body """, ) payload = _build_verbatim_three_persona_benefits(unit) assert [p["label"] for p in payload["personas"]] == ["A", "B", "C"] assert payload["intro_sections"] == [] assert payload["slot_mapping_trace"]["source_group_count"] == 3