6183047fd6
前端修复: - P0: App.vue http 未导入导致全局搜索崩溃 - P1: TOTP 登录流程断裂 (TotpRequiredError 非 ApiError 子类) - P1: ServersPage 编辑服务器 domain 被端口字符串污染 - P1: PushPage Set[0] 无效 → values().next().value - P1: SettingsPage API 返回字符串未转数字 - P2: api/index.ts getList 重复定义移除 - P2: LoginPage 锁定倒计时 now ref + watch 更新 - P2: TerminalPage 路径验证正则放松 (允许空格/中文) - P2: useWebSocket CONNECTING/CLOSING 状态关闭旧连接 后端修复: - P1: websocket.py redis.keys() → scan_iter() 避免阻塞 - P1: auth_service.py TTL 仅在 key 无 TTL 时设置 - P1: servers.py 批量操作加 asyncio.Lock 避免并发 session commit - P2: settings.py asyncio.get_event_loop() → get_running_loop() - P2: settings.py datetime.utcfromtimestamp() → datetime.fromtimestamp(tz=utc) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>