diff --git a/src/easy_tdx/web/routers/server.py b/src/easy_tdx/web/routers/server.py index aadda1f..e58d834 100644 --- a/src/easy_tdx/web/routers/server.py +++ b/src/easy_tdx/web/routers/server.py @@ -61,11 +61,32 @@ class SwitchResponse(BaseModel): message: str +class MetaResponse(BaseModel): + """GET /meta 的响应。""" + + version: str + + # --------------------------------------------------------------------------- # # Routes # --------------------------------------------------------------------------- # +@router.get("/meta", response_model=MetaResponse) +async def get_meta() -> MetaResponse: + """应用元信息:版本号(WebUI 左上角展示)。 + + 源码运行未装包元数据(importlib.metadata 不可用)时留空,前端不显示。 + """ + try: + from importlib.metadata import version + + v: str = version("easy-tdx") + except Exception: # noqa: BLE001 — 元数据缺失属正常场景,留空即可 + v = "" + return MetaResponse(version=v) + + @router.get("/server/hosts", response_model=HostListResponse) async def list_hosts(request: Request) -> HostListResponse: """列出所有候选 host + 当前正在使用的 host。 diff --git a/tests/unit/test_web_api.py b/tests/unit/test_web_api.py index 4a58d5b..7516fe0 100644 --- a/tests/unit/test_web_api.py +++ b/tests/unit/test_web_api.py @@ -197,6 +197,28 @@ def test_realtime_router_endpoints(): assert any("realtime" in p for p in paths) +# --------------------------------------------------------------------------- +# Meta endpoint(WebUI 品牌区版本号展示) +# --------------------------------------------------------------------------- + + +def test_meta_endpoint_returns_version(): + """GET /api/v1/meta 应返回 version 字段(已安装时为语义化版本)。""" + pytest.importorskip("fastapi") + from fastapi.testclient import TestClient + + from easy_tdx.web import create_app + + client = TestClient(create_app()) + resp = client.get("/api/v1/meta") + assert resp.status_code == 200 + body = resp.json() + assert set(body.keys()) == {"version"} + assert isinstance(body["version"], str) + # 本测试环境下包已安装(pip install -e .),应能取到版本号 + assert body["version"] != "" + + # --------------------------------------------------------------------------- # Task 10: CLI serve command # --------------------------------------------------------------------------- diff --git a/web-ui/src/App.vue b/web-ui/src/App.vue index 5a87b62..6fbd360 100644 --- a/web-ui/src/App.vue +++ b/web-ui/src/App.vue @@ -1,12 +1,19 @@