1400 lines
24 KiB
Markdown
1400 lines
24 KiB
Markdown
# 前端页面编排文档
|
|
|
|
## 1. 文档目标
|
|
|
|
这份文档按当前代码基线整理前端页面结构,回答四个问题:
|
|
|
|
1. 现有哪些路由页面
|
|
2. 每个页面由哪些组件/区域组成
|
|
3. 每个页面有哪些按钮与主要交互
|
|
4. 管理界面当前有哪些可操作设置项,哪些页面仍是占位页
|
|
|
|
本文对齐当前 `front/src` 实现,不虚构未落地页面。
|
|
|
|
---
|
|
|
|
## 2. 路由总表
|
|
|
|
### 2.1 公共页面
|
|
|
|
| 路由 | 页面组件 | 说明 |
|
|
| --- | --- | --- |
|
|
| `/login` | `front/src/pages/Login.tsx` | 登录/注册入口 |
|
|
| `/share/:token` | `front/src/pages/FileShare.tsx` | 公开分享访问页 |
|
|
|
|
### 2.2 主应用页面
|
|
|
|
| 路由 | 页面组件 | 说明 |
|
|
| --- | --- | --- |
|
|
| `/overview` | `front/src/pages/Overview.tsx` | 用户概览页 |
|
|
| `/files` | `front/src/pages/files/FilesPage.tsx` | 网盘工作区 |
|
|
| `/tasks` | `front/src/pages/Tasks.tsx` | 异步任务页 |
|
|
| `/shares` | `front/src/pages/Shares.tsx` | 我的分享列表 |
|
|
| `/recycle-bin` | `front/src/pages/RecycleBin.tsx` | 回收站 |
|
|
| `/transfer` | `front/src/transfer/pages/TransferPage.tsx` | 快传 |
|
|
|
|
### 2.3 管理台页面
|
|
|
|
| 路由 | 页面组件 | 当前状态 |
|
|
| --- | --- | --- |
|
|
| `/admin/dashboard` | `front/src/admin/dashboard.tsx` | 已实现 |
|
|
| `/admin/settings` | `front/src/admin/settings.tsx` | 占位页 |
|
|
| `/admin/filesystem` | `front/src/admin/filesystem.tsx` | 占位页 |
|
|
| `/admin/storage-policies` | `front/src/admin/storage-policies-list.tsx` | 已实现 |
|
|
| `/admin/users` | `front/src/admin/users-list.tsx` | 已实现 |
|
|
| `/admin/files` | `front/src/admin/files-list.tsx` | 已实现 |
|
|
| `/admin/file-blobs` | `front/src/admin/fileblobs.tsx` | 占位页 |
|
|
| `/admin/shares` | `front/src/admin/shares.tsx` | 占位页 |
|
|
| `/admin/tasks` | `front/src/admin/tasks.tsx` | 占位页 |
|
|
| `/admin/oauth-apps` | `front/src/admin/oauthapps.tsx` | 占位页 |
|
|
|
|
补充说明:
|
|
|
|
- 以上管理台路由仅桌面端可进入
|
|
- 移动端访问 `/admin/*` 会被重定向到 `/overview`
|
|
- `front/src/mobile-components/MobileLayout.tsx` 也没有后台导航入口
|
|
|
|
---
|
|
|
|
## 3. 全局页面壳
|
|
|
|
### 3.1 桌面主壳 `Layout`
|
|
|
|
文件:`front/src/components/layout/Layout.tsx`
|
|
|
|
#### 区域
|
|
|
|
- 左侧主导航
|
|
- 顶部品牌区
|
|
- 当前账号信息区
|
|
- 主内容区 `<Outlet />`
|
|
- 全局上传浮层 `UploadCenter`
|
|
|
|
#### 左侧导航项
|
|
|
|
- `概览`
|
|
- `网盘`
|
|
- `任务`
|
|
- `分享`
|
|
- `回收站`
|
|
- `快传`
|
|
- `后台`:仅 `session.user.role === 'ADMIN'` 时显示
|
|
|
|
#### 全局按钮
|
|
|
|
- 主题切换按钮
|
|
- 退出登录按钮
|
|
|
|
#### 全局辅助组件
|
|
|
|
- `TaskSummaryPanel`
|
|
- `UploadCenter`
|
|
|
|
### 3.2 移动主壳 `MobileLayout`
|
|
|
|
文件:`front/src/mobile-components/MobileLayout.tsx`
|
|
|
|
#### 区域
|
|
|
|
- 顶部浮层
|
|
- 中间页面区 `<Outlet />`
|
|
- 底部导航
|
|
- 全局上传浮层 `UploadCenter`
|
|
|
|
#### 顶部按钮
|
|
|
|
- 主题切换
|
|
- 退出登录
|
|
|
|
#### 底部导航项
|
|
|
|
- `概览`
|
|
- `网盘`
|
|
- `任务`
|
|
- `分享`
|
|
- `回收站`
|
|
- `快传`
|
|
|
|
### 3.3 管理台壳 `AdminLayout`
|
|
|
|
文件:`front/src/admin/AdminLayout.tsx`
|
|
|
|
#### 左侧二级导航项
|
|
|
|
- `总览`
|
|
- `系统设置`
|
|
- `文件系统`
|
|
- `存储策略`
|
|
- `用户管理`
|
|
- `文件审计`
|
|
- `对象实体`
|
|
- `分享管理`
|
|
- `任务监控`
|
|
- `三方应用`
|
|
|
|
---
|
|
|
|
## 4. 全局共用浮层与摘要组件
|
|
|
|
### 4.1 `UploadCenter`
|
|
|
|
文件:`front/src/components/upload/UploadCenter.tsx`
|
|
|
|
#### 展示内容
|
|
|
|
- 上传任务总数
|
|
- 每个任务的文件名、大小、状态、进度、错误信息
|
|
|
|
补充说明:
|
|
|
|
- 组件内部虽然会计算上传中、成功、失败数量
|
|
- 但当前 UI 并没有把这三个数字单独渲染成统计块
|
|
|
|
#### 按钮
|
|
|
|
- 展开/收起面板
|
|
- 清理已完成任务
|
|
|
|
### 4.2 `TaskSummaryPanel`
|
|
|
|
文件:`front/src/components/tasks/TaskSummaryPanel.tsx`
|
|
|
|
#### 展示内容
|
|
|
|
- 当前活跃后台任务数
|
|
- 首个活跃任务类型
|
|
|
|
#### 按钮
|
|
|
|
- 无独立操作按钮
|
|
- 仅作为导航中的状态摘要组件
|
|
|
|
---
|
|
|
|
## 5. 公共页面编排
|
|
|
|
## 5.1 登录页 `/login`
|
|
|
|
文件:`front/src/pages/Login.tsx`
|
|
|
|
### 页面区域
|
|
|
|
- 右上角主题切换
|
|
- 标题区:`云盘门户`
|
|
- 登录/注册卡片
|
|
- 底部辅助操作区
|
|
|
|
### 表单模式
|
|
|
|
- 登录模式
|
|
- 注册模式
|
|
|
|
### 登录模式组件
|
|
|
|
- 用户名输入框
|
|
- 密码输入框
|
|
- 登录按钮
|
|
|
|
### 注册模式组件
|
|
|
|
- 用户名输入框
|
|
- 邮箱输入框
|
|
- 手机号输入框
|
|
- 邀请码输入框
|
|
- 密码输入框
|
|
- 确认密码输入框
|
|
- 注册按钮
|
|
|
|
### 页面按钮
|
|
|
|
- `登录`
|
|
- `注册账号`
|
|
- `还没有账号?去注册` / `已有账号?去登录`
|
|
- `直接进入快传`
|
|
- `开发账号`
|
|
- `管理员账号`
|
|
- 主题切换按钮
|
|
|
|
### 主要跳转
|
|
|
|
- 登录成功后:
|
|
- 普通用户到 `/overview`
|
|
- 管理员到 `/admin/dashboard`
|
|
- 可匿名进入 `/transfer`
|
|
|
|
## 5.2 分享访问页 `/share/:token`
|
|
|
|
文件:`front/src/pages/FileShare.tsx`
|
|
|
|
### 页面区域
|
|
|
|
- 分享标题区
|
|
- 分享者与文件基础信息区
|
|
- 错误提示区
|
|
- 密码验证区或分享操作区
|
|
- 底部版本戳
|
|
|
|
### 条件区域
|
|
|
|
- 若分享需要密码且未验证:
|
|
- 显示密码输入框
|
|
- 显示验证密码按钮
|
|
- 若已可访问:
|
|
- 显示创建时间
|
|
- 显示有效期
|
|
- 显示下载统计
|
|
- 显示下载与导入操作
|
|
|
|
### 页面按钮
|
|
|
|
- `验证密码`
|
|
- `下载文件`
|
|
- `导入网盘`
|
|
|
|
### 细节说明
|
|
|
|
- 未登录点击 `导入网盘` 会跳到 `/login`
|
|
- 下载走 `buildShareDownloadUrl`
|
|
- 导入时使用 `window.prompt` 让用户输入目标目录
|
|
|
|
---
|
|
|
|
## 6. 主应用页面编排
|
|
|
|
## 6.1 概览页 `/overview`
|
|
|
|
文件:`front/src/pages/Overview.tsx`
|
|
|
|
### 页面区域
|
|
|
|
- 页面标题区
|
|
- 三张状态卡
|
|
- 快捷入口卡片区
|
|
- 最近文件面板
|
|
- 最近任务面板
|
|
|
|
### 状态卡
|
|
|
|
- `账号权限`
|
|
- `存储配额`
|
|
- `上传上限`
|
|
|
|
### 快捷入口卡片
|
|
|
|
- `网盘`
|
|
- `任务`
|
|
- `分享`
|
|
- `快传`
|
|
|
|
### 最近文件面板内容
|
|
|
|
- 文件名
|
|
- 文件路径
|
|
- 文件大小
|
|
- 创建时间
|
|
|
|
### 最近任务面板内容
|
|
|
|
- 任务类型
|
|
- 任务状态
|
|
- 更新时间
|
|
|
|
### 页面按钮
|
|
|
|
- 快捷入口卡片本身可点击跳转
|
|
|
|
## 6.2 网盘页 `/files`
|
|
|
|
文件:`front/src/pages/files/FilesPage.tsx`
|
|
|
|
### 页面整体结构
|
|
|
|
- 左侧目录树栏
|
|
- 中间文件列表区
|
|
- 右侧文件详情栏
|
|
|
|
### 左侧目录树栏
|
|
|
|
#### 组件
|
|
|
|
- 根目录按钮
|
|
- 递归目录节点按钮
|
|
- 回收站入口按钮
|
|
- 目录树刷新状态点
|
|
|
|
#### 按钮
|
|
|
|
- `根目录`
|
|
- 每个目录节点按钮
|
|
- `回收站`
|
|
|
|
### 顶部工具区
|
|
|
|
#### 组件
|
|
|
|
- 面包屑路径导航
|
|
- 文件搜索框
|
|
- 工具按钮组
|
|
|
|
#### 按钮
|
|
|
|
- 面包屑各层级按钮
|
|
- `上传文件`
|
|
- `新建文件夹`
|
|
- `刷新`
|
|
|
|
### 文件列表表格
|
|
|
|
#### 列
|
|
|
|
- 名称
|
|
- 路径
|
|
- 大小
|
|
- 创建时间
|
|
|
|
#### 行交互
|
|
|
|
- 单击:选中文件
|
|
- 双击目录:进入目录
|
|
|
|
### 右侧文件详情栏
|
|
|
|
仅当存在 `selectedFile` 时显示。
|
|
|
|
#### 信息区
|
|
|
|
- 文件名
|
|
- 路径
|
|
- 类型
|
|
- 大小
|
|
|
|
#### 操作按钮
|
|
|
|
- `下载`
|
|
- `创建分享`
|
|
- `重命名`
|
|
- `移动`
|
|
- `删除`
|
|
|
|
#### 实际未暴露按钮
|
|
|
|
- 文件页虽然导入了 `copyFile`
|
|
- 当前 UI 没有“复制”按钮
|
|
|
|
### 用户输入方式
|
|
|
|
- 上传:隐藏 `input[type=file]`
|
|
- 新建文件夹:`window.prompt`
|
|
- 重命名:`window.prompt`
|
|
- 移动:`window.prompt`
|
|
- 删除:`window.confirm`
|
|
|
|
## 6.3 任务页 `/tasks`
|
|
|
|
文件:`front/src/pages/Tasks.tsx`
|
|
|
|
### 页面区域
|
|
|
|
- 标题区
|
|
- 顶部控制区
|
|
- 任务表格
|
|
|
|
### 顶部控制
|
|
|
|
- 自动刷新复选框
|
|
- 刷新按钮
|
|
|
|
### 任务表格列
|
|
|
|
- 类型
|
|
- 对象
|
|
- 状态
|
|
- 进度
|
|
- 更新时间
|
|
- 操作
|
|
|
|
### 操作按钮
|
|
|
|
- `刷新`
|
|
- `重试任务`:仅 `FAILED`
|
|
- `取消任务`:仅 `QUEUED` 或 `RUNNING`
|
|
- `自动刷新` 开关
|
|
|
|
### 状态展示内容
|
|
|
|
- 业务状态标签
|
|
- `phase`
|
|
- `errorMessage`
|
|
- 进度条
|
|
|
|
## 6.4 分享页 `/shares`
|
|
|
|
文件:`front/src/pages/Shares.tsx`
|
|
|
|
### 页面区域
|
|
|
|
- 标题区
|
|
- 分享表格
|
|
|
|
### 表格列
|
|
|
|
- 分享名称
|
|
- 权限
|
|
- 过期时间
|
|
- 统计
|
|
- 操作
|
|
|
|
### 权限标签
|
|
|
|
- `需密码`
|
|
- `可下载` / `仅查看`
|
|
- `可导入` / `受保护`
|
|
|
|
### 统计内容
|
|
|
|
- 下载次数 `DL`
|
|
- 查看次数 `VW`
|
|
|
|
### 操作按钮
|
|
|
|
- `打开链接`
|
|
- `删除分享`
|
|
|
|
## 6.5 回收站页 `/recycle-bin`
|
|
|
|
文件:`front/src/pages/RecycleBin.tsx`
|
|
|
|
### 页面区域
|
|
|
|
- 标题区
|
|
- 回收站表格
|
|
|
|
### 表格列
|
|
|
|
- 文件
|
|
- 原路径
|
|
- 大小
|
|
- 删除时间
|
|
- 过期时间
|
|
- 操作
|
|
|
|
### 操作按钮
|
|
|
|
- `恢复`
|
|
|
|
## 6.6 快传页 `/transfer`
|
|
|
|
文件:`front/src/transfer/pages/TransferPage.tsx`
|
|
|
|
### 页面顶部 Tab
|
|
|
|
- `发送`
|
|
- `接收`
|
|
- `记录`
|
|
|
|
### 路由级深链行为
|
|
|
|
- 当 URL 中带 `?code=XXXXXX` 时
|
|
- 页面会自动切到 `接收` Tab
|
|
- 并自动执行一次取件码查询
|
|
|
|
### A. 发送 Tab
|
|
|
|
#### 左侧:传输配置区
|
|
|
|
- 模式切换按钮
|
|
- `离线快传`
|
|
- `在线快传`
|
|
- 文件选择拖拽区
|
|
- 已选文件列表
|
|
- 错误提示
|
|
- 成功提示
|
|
- `创建会话` 按钮
|
|
|
|
#### 右侧:会话信息区
|
|
|
|
创建会话后显示:
|
|
|
|
- 取件码
|
|
- 模式
|
|
- 过期时间
|
|
- 上传进度
|
|
|
|
#### 右侧按钮
|
|
|
|
- `复制取件码`
|
|
- `复制链接`
|
|
|
|
### B. 接收 Tab
|
|
|
|
#### 左侧:接收会话区
|
|
|
|
- 取件码输入框
|
|
- `查询取件码`
|
|
- 会话查询结果卡
|
|
- `加入会话`
|
|
|
|
#### 右侧:文件列表区
|
|
|
|
离线快传加入成功后:
|
|
|
|
- 文件名
|
|
- 相对路径
|
|
- 文件大小
|
|
|
|
#### 文件级按钮
|
|
|
|
- `下载`
|
|
- `导入网盘`:仅登录用户显示
|
|
|
|
### C. 记录 Tab
|
|
|
|
#### 页面区域
|
|
|
|
- 标题
|
|
- 刷新按钮
|
|
- 历史记录卡片列表
|
|
|
|
#### 每条记录内容
|
|
|
|
- 取件码
|
|
- 过期时间
|
|
- 文件数
|
|
- 文件卡片网格
|
|
|
|
#### 会话级按钮
|
|
|
|
- `复制取件码`
|
|
- `复制链接`
|
|
|
|
#### 文件级按钮
|
|
|
|
- `下载`
|
|
- `导入网盘`
|
|
|
|
#### 特殊状态
|
|
|
|
- 未登录时仅显示“登录后可查看记录”
|
|
|
|
---
|
|
|
|
## 7. 管理台页面编排
|
|
|
|
本节分成两层:
|
|
|
|
- 当前前端已经落地的界面与按钮
|
|
- 依据现有后端 `/api/admin/**` 能力,管理台应补齐的完整设置项与筛选项
|
|
|
|
这样文档既能反映真实代码,也能指导后续把占位页补完整。
|
|
|
|
## 7.1 后台总览 `/admin/dashboard`
|
|
|
|
文件:`front/src/admin/dashboard.tsx`
|
|
|
|
### 页面区域
|
|
|
|
- 标题区
|
|
- 核心指标卡区
|
|
- 快捷入口区
|
|
- 运行概览区
|
|
|
|
### 核心指标卡
|
|
|
|
- `用户总数`
|
|
- `文件总数`
|
|
- `存储容量`
|
|
- `快传占用`
|
|
|
|
### 快捷入口
|
|
|
|
- `用户管理`
|
|
- `文件审计`
|
|
- `存储策略`
|
|
|
|
### 运行概览内容
|
|
|
|
- 服务健康状态
|
|
- 邀请码展示
|
|
- 下载流量
|
|
- 请求量
|
|
|
|
### 页面按钮
|
|
|
|
- `刷新状态`
|
|
- `复制邀请码`
|
|
- 三个快捷入口卡片按钮
|
|
|
|
### 当前可操作设置项
|
|
|
|
- 无真正表单设置项
|
|
- 只有“复制邀请码”和跳转入口
|
|
|
|
## 7.2 系统设置 `/admin/settings`
|
|
|
|
文件:`front/src/admin/settings.tsx`
|
|
|
|
### 当前状态
|
|
|
|
- 占位页
|
|
- 仅显示标题 `Admin Settings`
|
|
|
|
### 当前组件
|
|
|
|
- 页面容器
|
|
- 标题
|
|
|
|
### 当前按钮
|
|
|
|
- 无
|
|
|
|
### 后端已支持、前端未实现的设置分组
|
|
|
|
根据 `GET /api/admin/settings`,本页应至少拆成以下分组:
|
|
|
|
#### A. 站点能力分组 `site`
|
|
|
|
- `supported`
|
|
- `writeSupported`
|
|
|
|
说明:
|
|
|
|
- 当前后端返回只读快照
|
|
- 可作为“站点设置能力状态卡”,不一定需要编辑表单
|
|
|
|
#### B. 注册设置分组 `registration`
|
|
|
|
- `inviteCodeRequired`
|
|
- `currentInviteCode`
|
|
- `managementRoles`
|
|
- `writeSupported`
|
|
|
|
#### C. 用户会话分组 `userSession`
|
|
|
|
- `accessExpirationSeconds`
|
|
- `refreshExpirationSeconds`
|
|
- `tokenBlacklistEnabled`
|
|
- `tokenBlacklistTtlBufferSeconds`
|
|
- `writeSupported`
|
|
|
|
#### D. 快传设置分组 `transfer`
|
|
|
|
- `offlineTransferStorageLimitBytes`
|
|
- `writeSupported`
|
|
|
|
#### E. 媒体处理分组 `mediaProcessing`
|
|
|
|
- `metadataExtractionEnabled`
|
|
- `thumbnailGenerationEnabled`
|
|
- `videoPosterEnabled`
|
|
- `writeSupported`
|
|
|
|
#### F. 队列分组 `queue`
|
|
|
|
- `backend`
|
|
- `mediaMetadataFixedDelayMs`
|
|
- `mediaMetadataInitialDelayMs`
|
|
- `writeSupported`
|
|
|
|
#### G. 外观分组 `appearance`
|
|
|
|
- `supported`
|
|
- `writeSupported`
|
|
|
|
#### H. 服务器分组 `server`
|
|
|
|
- `storageProvider`
|
|
- `redisEnabled`
|
|
- `writeSupported`
|
|
|
|
### 后端已支持、前端未实现的可编辑设置项
|
|
|
|
根据当前后端可写接口,本页至少应提供:
|
|
|
|
- `当前邀请码` 编辑
|
|
- `邀请码轮换`
|
|
- `离线快传总容量上限` 编辑
|
|
|
|
### 未来应有按钮(当前前端未实现)
|
|
|
|
- `保存邀请码`
|
|
- `轮换邀请码`
|
|
- `保存离线快传容量上限`
|
|
- `刷新设置`
|
|
|
|
### 未来应有只读状态卡(当前前端未实现)
|
|
|
|
- Access Token 过期时间
|
|
- Refresh Token 过期时间
|
|
- Token 黑名单状态
|
|
- 媒体元数据提取开关状态
|
|
- 缩略图生成状态
|
|
- 视频封面状态
|
|
- 队列后端类型
|
|
- Redis 启用状态
|
|
- 当前存储提供者
|
|
|
|
## 7.3 文件系统 `/admin/filesystem`
|
|
|
|
文件:`front/src/admin/filesystem.tsx`
|
|
|
|
### 当前状态
|
|
|
|
- 占位页
|
|
|
|
### 当前按钮
|
|
|
|
- 无
|
|
|
|
### 后端已支持、前端未实现的页面分组
|
|
|
|
根据 `GET /api/admin/filesystem`,本页应至少包含:
|
|
|
|
#### A. 总览分组 `overview`
|
|
|
|
- `storageProvider`
|
|
- `totalFiles`
|
|
- `totalBlobs`
|
|
- `totalEntities`
|
|
|
|
#### B. 默认策略分组 `defaultPolicy`
|
|
|
|
- 默认策略名称
|
|
- 类型
|
|
- 桶名称
|
|
- 端点
|
|
- 地域
|
|
- 私有桶状态
|
|
- 前缀
|
|
- 凭证模式
|
|
- 最大对象大小
|
|
- 能力集合
|
|
- 启用状态
|
|
- 是否默认策略
|
|
|
|
#### C. 上传能力分组 `upload`
|
|
|
|
- `proxyUpload`
|
|
- `directSingleUpload`
|
|
- `directMultipartUpload`
|
|
- `effectiveMaxFileSizeBytes`
|
|
|
|
#### D. 媒体处理分组 `mediaProcessing`
|
|
|
|
- `metadataExtractionEnabled`
|
|
- `nativeThumbnailSupport`
|
|
|
|
#### E. 缓存分组 `cache`
|
|
|
|
- `backend`
|
|
- `filesListTtlSeconds`
|
|
- `directoryVersionTtlSeconds`
|
|
|
|
#### F. WebDAV 分组 `webdav`
|
|
|
|
- `enabled`
|
|
|
|
### 未来应有按钮(当前前端未实现)
|
|
|
|
- `刷新文件系统状态`
|
|
- `跳转默认存储策略`
|
|
- `查看对象实体`
|
|
|
|
### 建议交互(当前前端未实现)
|
|
|
|
- 文件总数 / Blob 总数 / 实体总数指标卡
|
|
- 当前上传模式矩阵卡
|
|
- 默认策略详情抽屉
|
|
- 缓存与 WebDAV 状态卡
|
|
|
|
## 7.4 存储策略 `/admin/storage-policies`
|
|
|
|
文件:`front/src/admin/storage-policies-list.tsx`
|
|
|
|
这是当前管理台里设置项最完整的页面之一。
|
|
|
|
### 页面区域
|
|
|
|
- 标题区
|
|
- 顶部操作区
|
|
- 策略表格
|
|
- 新建/编辑策略弹窗
|
|
|
|
### 顶部按钮
|
|
|
|
- `刷新`
|
|
- `新建策略`
|
|
|
|
### 策略表格列
|
|
|
|
- 名称
|
|
- 后端类型
|
|
- 访问端点
|
|
- 状态
|
|
- 对象上限
|
|
- 操作
|
|
|
|
### 每行操作按钮
|
|
|
|
- `编辑策略`
|
|
- `停用` / `启用`
|
|
- 默认策略不显示此按钮
|
|
- `发起迁移`
|
|
|
|
### 弹窗表单字段
|
|
|
|
#### 基础字段
|
|
|
|
- `策略名称`
|
|
- `驱动协议`
|
|
- `LOCAL`
|
|
- `S3_COMPATIBLE`
|
|
- `端点地址`
|
|
- `桶名称`
|
|
- `地域`
|
|
- `前缀`
|
|
- `凭证模式`
|
|
- `对象大小上限(字节)`
|
|
|
|
#### 布尔设置项
|
|
|
|
- `私有桶` `privateBucket`
|
|
- `启用` `enabled`
|
|
- `直传` `capabilities.directUpload`
|
|
- `分片上传` `capabilities.multipartUpload`
|
|
- `签名下载` `capabilities.signedDownloadUrl`
|
|
- `代理下载` `capabilities.serverProxyDownload`
|
|
- `原生缩略图` `capabilities.thumbnailNative`
|
|
- `友好下载名` `capabilities.friendlyDownloadName`
|
|
- `需要 CORS` `capabilities.requiresCors`
|
|
- `内网端点` `capabilities.supportsInternalEndpoint`
|
|
|
|
### 弹窗按钮
|
|
|
|
- `取消`
|
|
- `保存`
|
|
|
|
### 当前前端未完全暴露的问题
|
|
|
|
当前弹窗只暴露了基础字段和部分布尔能力,尚未把以下字段做成独立输入控件:
|
|
|
|
- `region`
|
|
- `prefix`
|
|
- `credentialMode`
|
|
- `capabilities.thumbnailNative`
|
|
- `capabilities.friendlyDownloadName`
|
|
|
|
因此本页需要补成“完整策略表单”,否则管理台与后端能力不一致。
|
|
|
|
## 7.5 用户管理 `/admin/users`
|
|
|
|
文件:`front/src/admin/users-list.tsx`
|
|
|
|
### 页面区域
|
|
|
|
- 标题区
|
|
- 刷新按钮
|
|
- 搜索框
|
|
- 用户表格
|
|
|
|
### 搜索能力
|
|
|
|
- 搜索用户名
|
|
- 搜索邮箱
|
|
- 搜索手机号
|
|
|
|
### 页面按钮
|
|
|
|
- `刷新列表`
|
|
|
|
### 表格列
|
|
|
|
- 用户信息
|
|
- 角色
|
|
- 状态
|
|
- 资源配额
|
|
- 注册时间
|
|
- 操作
|
|
|
|
### 每个用户的可调设置项
|
|
|
|
- `角色`
|
|
- 通过 prompt 输入 `USER` 或 `ADMIN`
|
|
- `存储配额`
|
|
- 通过 prompt 输入字节数
|
|
- `最大上传大小`
|
|
- 后端已支持,前端未暴露
|
|
- `密码`
|
|
- 通过 prompt 直接设置新密码
|
|
- `重置密码`
|
|
- 后端支持返回临时密码,前端未暴露
|
|
- `账号状态`
|
|
- 禁用 / 恢复
|
|
|
|
### 每行按钮
|
|
|
|
- `修改角色`
|
|
- `修改配额`
|
|
- `重置密码`
|
|
- 实际行为是“直接设置新密码”
|
|
- `禁用账号` / `恢复账号`
|
|
|
|
### 当前前端未暴露但 API 已存在的管理项
|
|
|
|
根据 `front/src/lib/admin-users.ts`,存在但本页没有按钮:
|
|
|
|
- `updateUserMaxUploadSize`
|
|
- `resetUserPassword`
|
|
|
|
也就是说,当前用户管理页尚未把“上传上限”和“自动生成临时密码”暴露出来。
|
|
|
|
### 本页应补齐的按钮
|
|
|
|
- `修改上传上限`
|
|
- `生成临时密码`
|
|
- `复制临时密码`
|
|
|
|
## 7.6 文件审计 `/admin/files`
|
|
|
|
文件:`front/src/admin/files-list.tsx`
|
|
|
|
### 页面区域
|
|
|
|
- 标题区
|
|
- 刷新按钮
|
|
- 两个搜索框
|
|
- 文件表格
|
|
|
|
### 搜索项
|
|
|
|
- 文件名 / 路径搜索
|
|
- 所属用户搜索
|
|
|
|
### 页面按钮
|
|
|
|
- `刷新索引`
|
|
|
|
### 表格列
|
|
|
|
- 文件
|
|
- 所属用户
|
|
- 大小
|
|
- 创建时间
|
|
- 操作
|
|
|
|
### 每行按钮
|
|
|
|
- `彻底删除`
|
|
|
|
### 注意
|
|
|
|
- 当前删除确认文案写的是“物理擦除 / 硬件级销毁”
|
|
- 但前端文案夸张,建议后续改成真实业务语义
|
|
|
|
## 7.7 对象实体 `/admin/file-blobs`
|
|
|
|
文件:`front/src/admin/fileblobs.tsx`
|
|
|
|
### 当前状态
|
|
|
|
- 占位页
|
|
|
|
### 当前按钮
|
|
|
|
- 无
|
|
|
|
### 后端已支持、前端未实现的筛选项
|
|
|
|
根据 `GET /api/admin/file-blobs`,本页应支持:
|
|
|
|
- `userQuery`
|
|
- `storagePolicyId`
|
|
- `objectKey`
|
|
- `entityType`
|
|
|
|
### `entityType` 选项
|
|
|
|
- `VERSION`
|
|
- `THUMBNAIL`
|
|
- `LIVE_PHOTO`
|
|
- `TRANSCODE`
|
|
- `AVATAR`
|
|
|
|
### 后端已支持、前端未实现的表格列
|
|
|
|
- 实体 ID `entityId`
|
|
- Blob ID `blobId`
|
|
- 对象键 `objectKey`
|
|
- 实体类型 `entityType`
|
|
- 存储策略 ID `storagePolicyId`
|
|
- 大小 `size`
|
|
- 内容类型 `contentType`
|
|
- 引用计数 `referenceCount`
|
|
- 关联逻辑文件数 `linkedStoredFileCount`
|
|
- 关联所有者数 `linkedOwnerCount`
|
|
- 示例所有者用户名 `sampleOwnerUsername`
|
|
- 示例所有者邮箱 `sampleOwnerEmail`
|
|
- 创建人 ID `createdByUserId`
|
|
- 创建人用户名 `createdByUsername`
|
|
- 实体创建时间 `createdAt`
|
|
- Blob 创建时间 `blobCreatedAt`
|
|
- `blobMissing`
|
|
- `orphanRisk`
|
|
- `referenceMismatch`
|
|
|
|
### 未来应有按钮(当前前端未实现)
|
|
|
|
- `刷新对象实体`
|
|
- `清空筛选`
|
|
- `按对象键复制`
|
|
- `跳转存储策略`
|
|
|
|
### 未来应有风险标签(当前前端未实现)
|
|
|
|
- `Blob 缺失`
|
|
- `孤儿风险`
|
|
- `引用不一致`
|
|
|
|
## 7.8 分享管理 `/admin/shares`
|
|
|
|
文件:`front/src/admin/shares.tsx`
|
|
|
|
### 当前状态
|
|
|
|
- 占位页
|
|
|
|
### 当前按钮
|
|
|
|
- 无
|
|
|
|
### 后端已支持、前端未实现的筛选项
|
|
|
|
根据 `GET /api/admin/shares`,本页应支持:
|
|
|
|
- `userQuery`
|
|
- `fileName`
|
|
- `token`
|
|
- `passwordProtected`
|
|
- `expired`
|
|
|
|
### 后端已支持、前端未实现的表格列
|
|
|
|
- 分享 ID
|
|
- Token
|
|
- 分享名称
|
|
- 是否密码保护
|
|
- 是否已过期
|
|
- 创建时间
|
|
- 过期时间
|
|
- 最大下载次数
|
|
- 已下载次数
|
|
- 已查看次数
|
|
- 是否允许导入
|
|
- 是否允许下载
|
|
- 所有者 ID
|
|
- 所有者用户名
|
|
- 所有者邮箱
|
|
- 文件 ID
|
|
- 文件名
|
|
- 文件路径
|
|
- 文件内容类型
|
|
- 文件大小
|
|
- 是否目录
|
|
|
|
### 未来应有按钮(当前前端未实现)
|
|
|
|
- `刷新分享列表`
|
|
- `删除分享`
|
|
- `复制分享 Token`
|
|
- `打开分享链接`
|
|
- `按所有者筛选`
|
|
- `按文件名筛选`
|
|
|
|
### 核心治理动作(当前前端未实现)
|
|
|
|
- 撤销分享
|
|
- 快速定位滥用链接
|
|
- 筛选密码保护分享
|
|
- 筛选过期分享
|
|
|
|
## 7.9 任务监控 `/admin/tasks`
|
|
|
|
文件:`front/src/admin/tasks.tsx`
|
|
|
|
### 当前状态
|
|
|
|
- 占位页
|
|
|
|
### 当前按钮
|
|
|
|
- 无
|
|
|
|
### 后端已支持、前端未实现的筛选项
|
|
|
|
根据 `GET /api/admin/tasks`,本页应支持:
|
|
|
|
- `userQuery`
|
|
- `type`
|
|
- `status`
|
|
- `failureCategory`
|
|
- `leaseState`
|
|
|
|
### 后端已支持、前端未实现的表格列
|
|
|
|
- 任务 ID
|
|
- 任务类型
|
|
- 任务状态
|
|
- 用户 ID
|
|
- 所有者用户名
|
|
- 所有者邮箱
|
|
- `publicStateJson`
|
|
- `correlationId`
|
|
- `errorMessage`
|
|
- `attemptCount`
|
|
- `maxAttempts`
|
|
- `nextRunAt`
|
|
- `leaseOwner`
|
|
- `leaseExpiresAt`
|
|
- `heartbeatAt`
|
|
- `createdAt`
|
|
- `updatedAt`
|
|
- `finishedAt`
|
|
- `failureCategory`
|
|
- `retryScheduled`
|
|
- `workerOwner`
|
|
- `leaseState`
|
|
|
|
### 未来应有按钮(当前前端未实现)
|
|
|
|
- `刷新任务监控`
|
|
- `查看详情`
|
|
- `复制 correlationId`
|
|
- `按失败类别筛选`
|
|
- `按租约状态筛选`
|
|
|
|
### 未来应有详情面板(当前前端未实现)
|
|
|
|
- 任务公共状态 JSON 展开区
|
|
- 执行元信息区
|
|
- 重试预算区
|
|
- 租约与心跳状态区
|
|
|
|
### 注意
|
|
|
|
- 管理台任务监控是“全站视角”
|
|
- 不等同于普通用户 `/tasks` 页面
|
|
|
|
## 7.10 三方应用 `/admin/oauth-apps`
|
|
|
|
文件:`front/src/admin/oauthapps.tsx`
|
|
|
|
### 当前状态
|
|
|
|
- 占位页
|
|
|
|
### 当前按钮
|
|
|
|
- 无
|
|
|
|
### 当前设置项
|
|
|
|
- 当前后端管理接口里未看到对应 `/api/admin/oauth-apps` 能力
|
|
- 因此前端现在不应凭空设计可写设置项
|
|
|
|
### 本页建议定位
|
|
|
|
- 先保留为规划页
|
|
- 等后端 OAuth 管理接口落地后再补充
|
|
|
|
## 7.11 审计日志(后端已支持,前端未挂路由)
|
|
|
|
当前 `App.tsx` 没有 `/admin/audits` 路由,但后端已经提供 `GET /api/admin/audits`。
|
|
|
|
### 后端已支持、前端未实现的筛选项
|
|
|
|
- `actorQuery`
|
|
- `actionType`
|
|
- `targetType`
|
|
- `targetId`
|
|
|
|
### 后端已支持、前端未实现的表格列
|
|
|
|
- 审计日志 ID
|
|
- 操作者用户 ID
|
|
- 操作者用户名
|
|
- 操作者权限快照
|
|
- 动作类型
|
|
- 目标类型
|
|
- 目标 ID
|
|
- 摘要
|
|
- `detailsJson`
|
|
- 创建时间
|
|
|
|
### 未来应有按钮(当前前端未实现)
|
|
|
|
- `刷新审计日志`
|
|
- `复制详情 JSON`
|
|
- `按动作类型筛选`
|
|
- `按目标类型筛选`
|
|
|
|
---
|
|
|
|
## 8. 管理台设置项总清单
|
|
|
|
为了便于单独查看,这里把“当前前端实际可操作的管理设置项”重新汇总一次。
|
|
|
|
### 已落地设置项
|
|
|
|
#### 后台总览
|
|
|
|
- 复制邀请码
|
|
|
|
#### 存储策略
|
|
|
|
- 新建策略
|
|
- 编辑策略
|
|
- 启用策略
|
|
- 停用策略
|
|
- 发起策略迁移
|
|
- 设置策略名称
|
|
- 设置驱动协议
|
|
- 设置端点地址
|
|
- 设置桶名称
|
|
- 设置对象大小上限
|
|
- 设置私有桶
|
|
- 设置启用状态
|
|
- 设置是否支持直传
|
|
- 设置是否支持分片上传
|
|
- 设置是否支持签名下载
|
|
- 设置是否支持代理下载
|
|
- 设置是否需要 CORS
|
|
- 设置是否支持内网端点
|
|
|
|
#### 用户管理
|
|
|
|
- 修改用户角色
|
|
- 修改用户存储配额
|
|
- 修改用户密码
|
|
- 禁用用户
|
|
- 恢复用户
|
|
|
|
#### 文件审计
|
|
|
|
- 按文件名/路径筛选
|
|
- 按所属用户筛选
|
|
- 彻底删除文件
|
|
|
|
### 应补齐但前端未落地的设置项
|
|
|
|
#### 系统设置
|
|
|
|
- 当前邀请码编辑
|
|
- 邀请码轮换
|
|
- 离线快传总容量上限编辑
|
|
- 会话时长与黑名单状态查看
|
|
- 媒体处理状态查看
|
|
- 队列后端与延迟参数查看
|
|
- Redis 与存储提供者状态查看
|
|
|
|
#### 文件系统
|
|
|
|
- 文件总量 / Blob 总量 / 实体总量查看
|
|
- 默认策略详情查看
|
|
- 上传能力矩阵查看
|
|
- 缓存 TTL 查看
|
|
- WebDAV 状态查看
|
|
|
|
#### 对象实体
|
|
|
|
- 按用户筛选
|
|
- 按存储策略筛选
|
|
- 按对象键筛选
|
|
- 按实体类型筛选
|
|
- 风险标签巡检
|
|
|
|
#### 分享管理
|
|
|
|
- 按所有者筛选
|
|
- 按文件名筛选
|
|
- 按 Token 筛选
|
|
- 按是否密码保护筛选
|
|
- 按是否过期筛选
|
|
- 撤销分享
|
|
|
|
#### 任务监控
|
|
|
|
- 按用户筛选
|
|
- 按任务类型筛选
|
|
- 按任务状态筛选
|
|
- 按失败类别筛选
|
|
- 按租约状态筛选
|
|
- 查看详情 JSON
|
|
|
|
#### 审计日志
|
|
|
|
- 按操作者筛选
|
|
- 按动作类型筛选
|
|
- 按目标类型筛选
|
|
- 按目标 ID 筛选
|
|
|
|
### 暂无后端能力支撑的规划页
|
|
|
|
- 三方应用
|
|
|
|
---
|
|
|
|
## 9. 当前页面编排上的主要缺口
|
|
|
|
### 9.1 管理台
|
|
|
|
- 只有一半左右页面真正实现
|
|
- `settings/filesystem/file-blobs/shares/tasks/oauth-apps` 仍是占位页
|
|
- 用户管理缺少“上传上限”与“自动生成临时密码”
|
|
- 存储策略页未暴露全部策略字段
|
|
|
|
### 9.2 用户工作台
|
|
|
|
- 网盘页缺少“复制”操作按钮
|
|
- 网盘页缺少图片/视频/音频预览页
|
|
- 快传页缺少二维码、发送进度分文件视图、在线直连流程可视化
|
|
|
|
### 9.3 移动端
|
|
|
|
- 当前移动端复用主页面路由
|
|
- 但管理台被直接重定向走开,没有单独移动后台方案
|
|
- 移动端底部导航也没有后台入口
|
|
|
|
---
|
|
|
|
## 10. 结论
|
|
|
|
当前前端已经具备完整的:
|
|
|
|
- 登录
|
|
- 概览
|
|
- 网盘
|
|
- 分享
|
|
- 回收站
|
|
- 快传
|
|
- 基础任务页
|
|
- 部分管理能力
|
|
|
|
但管理台目前仍是“半成品治理台”:
|
|
|
|
- `dashboard`
|
|
- `storage-policies`
|
|
- `users`
|
|
- `files`
|
|
|
|
这四页是当前真正可用的后台主线;
|
|
|
|
同时,后端管理能力已经明显超过当前前端管理台:
|
|
|
|
- `settings`
|
|
- `filesystem`
|
|
- `file-blobs`
|
|
- `shares`
|
|
- `tasks`
|
|
- `audits`
|
|
|
|
这些都已经有明确的查询或写入接口,因此后续管理台补齐时,不应该从零猜需求,而应直接以这里列出的字段、筛选项和按钮为基线实现。
|