import yaml from phase_z2_pipeline import ( _build_verbatim_three_persona_benefits, _candidate_coverage_state, ) def test_task26_coverage_state_mapping_contract(): assert _candidate_coverage_state("auto_renderable", label="use_as_is") == "covered_native" assert _candidate_coverage_state("ai_adaptation_required", label="reject") == "requires_adaptation" assert _candidate_coverage_state("blocked_runtime", label="use_as_is") == "unsupported" assert ( _candidate_coverage_state("auto_renderable", label="use_as_is", catalog_registered=False) == "unsupported" ) assert ( _candidate_coverage_state( "ai_adaptation_required", label="reject", selection_path="catalog_fallback", ) == "requires_adaptation" ) def test_task26_persona_role_labels_are_registry_driven(): registry = yaml.safe_load( open("templates/phase_z2/catalog/component_expansion_registry.yaml", encoding="utf-8") ) labels = registry["components"]["DxEffect"]["persona_role_labels"] assert labels == ["발주자", "시공자", "설계자"] class Unit: title = "registry role labels" raw_content = """### 2.2 DX 시행 주체별 기대효과 - **발주자** - 비용 절감 - **시공자** - 시공 리스크 감소 - **설계자** - 설계 품질 향상 """ payload = _build_verbatim_three_persona_benefits(Unit()) assert payload["intro_sections"][0]["label"] == "2.2 DX 시행 주체별 기대효과" assert [p["label"] for p in payload["personas"]] == labels assert payload["slot_mapping_trace"]["persona_role_source"] == ( "component_expansion_registry:DxEffect" )