# 2026-05-16 工作日志 ## 站点管理前端页面迁移 ### 新增文件 1. **web/src/api/sites.ts** — 站点管理 API 客户端(list/get/create/update/remove/test/types/authTypes),对接后端 8 个端点 2. **web/src/pages/SitesPage.tsx** — 完整站点管理页面(~400 行) - 站点卡片网格布局(响应式 1/2/3 列) - 添加/编辑弹窗(类型选择、认证方式、Cookie/API Key/Auth Header) - 馒头 M-Team 专用配置提示 - 启用/停用开关、默认站点开关 - 高级选项折叠面板(Extra JSON) - 测试连接(异步+loading 状态) - 删除确认 - 空状态提示 - 暗色主题风格 ### 修改文件 3. **web/src/types/index.ts** — 新增 Site、SiteTypeInfo、AuthTypeInfo 接口 4. **web/src/App.tsx** — 新增 /sites 路由(RequireAdmin)和 lazy import 5. **web/src/components/Layout.tsx** — 侧边栏管理区新增「站点管理」链接(Globe 图标) 6. **web/src/pages/AdminPage.tsx** — 新增「站点管理」Tab,默认激活,嵌入 SitesPage 组件 ### API 验证(8/8 通过) - GET /api/sites ✅ - POST /api/sites ✅(创建成功) - GET /api/sites/:id ✅ - PUT /api/sites/:id ✅(更新成功) - DELETE /api/sites/:id ✅(删除成功) - POST /api/sites/:id/test ✅ - GET /api/sites/types ✅(6 种类型) - GET /api/sites/auth-types ✅(3 种认证方式) ### 构建状态 - npm run build ✅(SitesPage-hRHsM4G0.js 14.21 kB) - go build ./cmd/server ✅ - 服务器运行中(localhost:8080) --- ## UI 修复与优化(第二阶段) ### 搜索页 & 收藏页空白问题修复 - **收藏页根因**:后端 `GET /api/favourites` 无数据时返回 `{"items": null}`(非空数组),前端 `playbackAPI.listFavourites()` 提取 null 后 `items.length` 抛出 TypeError → React 白屏 - **修复**:`FavouritesPage.tsx` 增加 `data ?? []` 空值保护、`.catch()` 错误处理、重试按钮、空状态面板 - **搜索页修复**:`SearchPage.tsx` 增加错误处理、空查询不发请求、idle/empty/error 三态 UI ### AdminPage 去重 & API 配置合并 - AdminPage 新增「外部API」Tab,嵌入新组件 `APIConfigsPanel` - 原「设置」Tab 重命名「系统设置」,功能独立(key-value 存储) - 侧边栏移除「API 配置」独立链接 - `/api-configs` 路由改为重定向到 `/admin` - `APIConfigsPanel.tsx`:紧凑表格布局(Provider | 密钥掩码 | 状态徽章 | 操作),点击编辑行内展开 ### 修改文件 - 新增:`web/src/components/APIConfigsPanel.tsx` - 修改:`FavouritesPage.tsx`、`SearchPage.tsx`、`AdminPage.tsx`、`Layout.tsx`、`App.tsx` - npm run build ✅(AdminPage 25.38 kB 含 APIConfigsPanel)