feat: merge conflict resolution, site management, UI fixes

This commit is contained in:
ShukeBta
2026-05-16 17:57:34 +08:00
parent 0be8c7952e
commit cbb4b806be
84 changed files with 13826 additions and 202 deletions
+58
View File
@@ -0,0 +1,58 @@
# 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)