from app.config import AppConfig from app.deepseek import persist_high_confidence_mappings from app.models import MappingDecision import yaml def test_high_confidence_mapping_is_accepted(tmp_path): source = AppConfig.load() config_path = tmp_path / "mapping.yaml" config_path.write_text(source.path.read_text(encoding="utf-8"), encoding="utf-8") config = AppConfig.load(config_path) accepted = persist_high_confidence_mappings( config, [ MappingDecision( source_field="LINE-NO", target_field="line_no", confidence=0.96, reason="字段名和样例都表示管线号", ), MappingDecision( source_field="UNKNOWN-X", target_field="diameter", confidence=0.3, ), ], threshold=0.85, ) assert accepted == {"LINE-NO": "line_no"} reloaded = AppConfig.load(config_path) assert reloaded.dynamic_field_mappings["LINE-NO"] == "line_no" assert "UNKNOWN-X" not in reloaded.dynamic_field_mappings def test_deepseek_key_reads_from_config(tmp_path): source = AppConfig.load() config_path = tmp_path / "mapping.yaml" data = yaml.safe_load(source.path.read_text(encoding="utf-8")) data.setdefault("deepseek", {})["api_key"] = "test-key" config_path.write_text(yaml.safe_dump(data, allow_unicode=True, sort_keys=False), encoding="utf-8") config = AppConfig.load(config_path) from app.deepseek import DeepSeekMapper mapper = DeepSeekMapper(config) assert mapper.api_key == "test-key" assert mapper.enabled