from pathlib import Path ROOT=Path(__file__).resolve().parents[1] def test_version(): assert (ROOT/'VERSION').read_text(encoding='utf-8').strip()=='4.6.20' def test_system_health_is_settings_embedded_and_modular(): app=(ROOT/"static/js/app.js").read_text(encoding="utf-8") html=(ROOT/"app.html").read_text(encoding="utf-8") route=(ROOT/"routes/system_health.py").read_text(encoding="utf-8") assert "系统健康" in app assert "systemHealthPanel" in app assert "/static/js/system-health.js" in html assert "/api/settings/system-health" in route def test_unified_errors(): js=(ROOT/"static/js/app.js").read_text(encoding="utf-8") assert "friendlyHttpError" in js assert "appErrorPanelHtml" in js assert "网络连接异常" in js def test_task_cleanup(): routes=(ROOT/"routes/manual_tasks.py").read_text(encoding="utf-8") service=(ROOT/"services/manual_tasks.py").read_text(encoding="utf-8") js=(ROOT/"static/js/app.js").read_text(encoding="utf-8") assert "clear-completed" in routes assert "delete_completed" in service assert "清理已完成" in js def test_history_pin_batch_and_sort(): js=(ROOT/"static/js/app.js").read_text(encoding="utf-8") html=(ROOT/"app.html").read_text(encoding="utf-8") state=(ROOT/"services/user_state.py").read_text(encoding="utf-8") assert "取消置顶" in js assert "HISTORY_SELECTED" in js assert 'id="historySort"' in html assert '"pinned":bool(x.get("pinned"))' in state def test_project_history_reuse_actions(): js=(ROOT/"static/js/project-package.js").read_text(encoding="utf-8") assert "重新下载" in js assert "重新生成" in js assert "恢复编辑" in js