fix(btpanel): login-url 返回类型含 bool 导致全站 500
路由注解 dict[str,str] 与 bootstrapped 布尔字段冲突,FastAPI 响应校验失败。
This commit is contained in:
@@ -36,6 +36,8 @@
|
|||||||
- `frontend/src/pages/btpanel/BtPanelMonitorPage.vue`
|
- `frontend/src/pages/btpanel/BtPanelMonitorPage.vue`
|
||||||
- `tests/test_btpanel_login_url.py`
|
- `tests/test_btpanel_login_url.py`
|
||||||
- `tests/test_btpanel_client.py`
|
- `tests/test_btpanel_client.py`
|
||||||
|
- `tests/test_btpanel_login_url_route.py`
|
||||||
|
- `server/api/btpanel.py`
|
||||||
- `docs/changelog/2026-06-21-btpanel-login-auto-bootstrap.md`
|
- `docs/changelog/2026-06-21-btpanel-login-auto-bootstrap.md`
|
||||||
|
|
||||||
## DoD
|
## DoD
|
||||||
|
|||||||
@@ -31,3 +31,8 @@ cd frontend && npx vite build
|
|||||||
```
|
```
|
||||||
|
|
||||||
生产:对未配置宝塔 API 的子机点「一键登录」,应自动获取后打开面板;审计 `bt_panel_login_url` 的 detail 含 `bootstrapped: true`。
|
生产:对未配置宝塔 API 的子机点「一键登录」,应自动获取后打开面板;审计 `bt_panel_login_url` 的 detail 含 `bootstrapped: true`。
|
||||||
|
|
||||||
|
## 2026-06-21 热修
|
||||||
|
|
||||||
|
- **根因**:`login-url` 路由返回类型 `dict[str, str]`,响应含 `bootstrapped: bool` → FastAPI 校验 500
|
||||||
|
- **修复**:`server/api/btpanel.py` 改为 `dict[str, Any]`
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ async def create_bt_login_url(
|
|||||||
request: Request,
|
request: Request,
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
admin: Admin = Depends(get_current_admin),
|
admin: Admin = Depends(get_current_admin),
|
||||||
) -> dict[str, str]:
|
) -> dict[str, Any]:
|
||||||
try:
|
try:
|
||||||
return await _svc(db).create_login_url(
|
return await _svc(db).create_login_url(
|
||||||
server_id,
|
server_id,
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
"""Regression: login-url must not use dict[str, str] (bootstrapped is bool)."""
|
||||||
|
|
||||||
|
from typing import Any, get_type_hints
|
||||||
|
|
||||||
|
from server.api.btpanel import create_bt_login_url
|
||||||
|
|
||||||
|
|
||||||
|
def test_login_url_route_return_type_allows_bool_fields():
|
||||||
|
hints = get_type_hints(create_bt_login_url)
|
||||||
|
assert hints["return"] == dict[str, Any]
|
||||||
Reference in New Issue
Block a user