from pathlib import Path ROOT = Path(__file__).resolve().parents[2] def test_data_research_center_pages_routes_and_apis_cover_full_workflow(): routes = (ROOT / "frontend/src/router/routes.js").read_text(encoding="utf-8") api = (ROOT / "frontend/src/api/dataDevelopment.js").read_text(encoding="utf-8") pages = { name: (ROOT / f"frontend/src/views/dataGovernance/development/{name}.vue").read_text(encoding="utf-8") for name in ("index", "ingestion", "tasks", "review") } combined = api + routes + "".join(pages.values()) for route_name in ( "dataResearchCenter", "dataResearchIngestion", "dataResearchTasks", "dataResearchReview", ): assert route_name in routes for api_name in ( "uploadSourceFile", "getEvidence", "decideCandidates", "createDataElement", "transitionDataElement", "generateOntologySuggestions", ): assert api_name in api for label in ("SQL", "XLS", "XLSX", "CSV", "DOCX", "PDF", "PNG", "JPG"): assert label in pages["ingestion"] for status in ("排队中", "解析中", "待评审", "已发布", "失败", "已取消"): assert status in pages["tasks"] assert "证据预览" in pages["review"] assert "批量决策" in pages["review"] assert "viewer" in routes and "readOnly" in combined for secret in ("MINIO_PASSWORD", "NEO4J_PASSWORD", "DEEPSEEK_API_KEY", "databasePassword"): assert secret not in combined def test_metadata_page_links_to_new_data_research_center(): metadata = (ROOT / "frontend/src/views/dataGovernance/metadata/index.vue").read_text(encoding="utf-8") assert "/data-governance/development" in metadata assert "数据研发中心" in metadata