Files
SuperBizAgent-java/openspec/changes/archive/2026-07-05-doc-management-ui/proposal.md
T

180 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 文档管理页面开发提案
## 1. 目标
为 SuperBizAgent 开发一个独立的文档管理页面,用于管理 API 文档的上传、查询、删除和状态监控。
## 2. 背景
- 后端已完成文档管理功能(DocumentController),包含上传、查询、删除 API
- 数据库表设计已完成(api_document 表)
- 项目已有 index.html 聊天界面,使用统一的 styles.css 设计风格
- 需要一个独立的文档管理界面来操作文档元数据
## 3. 核心功能
### 3.1 文档列表展示
- 显示文档元数据:文件名、类别、状态、版本、分块数、上传时间
- 状态筛选:PENDING / PROCESSING / INDEXED / FAILED
- 故障源筛选:支持按 fault_source 筛选
- 分页支持:每页 20 条
- 默认排序:按上传时间倒序(最新在前)
### 3.2 文档上传
- 文件选择器(支持拖拽上传)
- 元信息表单:
- fault_category(文档类别):下拉选择(EXTERNAL_API / INTERNAL_ERROR 等)
- fault_source(故障源):文本输入(如"广东"、"order-service")
- api_name(接口名称):文本输入
- version(版本):文本输入(默认 v1.0)
- 分块配置(可选,有默认值):
- chunkSize:默认 500
- chunkOverlap:默认 50
- 上传后行为:刷新列表并高亮新文档
### 3.3 文档详情查看
- 点击文档行展开详情面板(右侧滑出或弹窗)
- 显示完整元数据(包括 docId、fileSize、fileHash、indexedAt 等)
- 显示索引状态和分块信息
- 失败文档显示错误信息(error_message)
### 3.4 文档删除
- 删除按钮(每行一个)
- 确认对话框:警告硬删除(MySQL + Milvus 数据都会删除)
- 删除成功后刷新列表
### 3.5 状态监控
- 顶部统计卡片:显示各状态文档数量
- PENDING:待处理
- PROCESSING:处理中
- INDEXED:已索引
- FAILED:失败
- 点击统计卡片快速筛选对应状态的文档
## 4. 技术方案
### 4.1 前端技术栈
- 纯静态页面(HTML + CSS + JavaScript)
- 复用现有 styles.css 的设计风格
- 使用原生 Fetch API 调用后端接口
- 无需引入额外框架
### 4.2 页面结构
```
documents.html
├── 顶部导航栏(返回主页按钮)
├── 状态统计卡片区域
├── 操作区域(上传按钮 + 筛选器)
├── 文档列表表格
└── 详情面板(右侧滑出)
```
### 4.3 样式设计
- 保持与 index.html 一致的现代简洁风格
- 使用卡片式布局
- 状态标签使用颜色区分:
- PENDING:灰色
- PROCESSING:蓝色
- INDEXED:绿色
- FAILED:红色
### 4.4 API 集成
```javascript
// 后端 API
const API_BASE = '/api/documents';
// 上传文档
POST /api/documents/upload (FormData)
// 查询文档详情
GET /api/documents/{docId}
// 按状态查询
GET /api/documents/status/{status}?page=0&size=20
// 按故障源查询
GET /api/documents/faultSource/{faultSource}
// 删除文档
DELETE /api/documents/{docId}
```
### 4.5 状态更新策略
- 不实现自动轮询(避免复杂性)
- 提供手动刷新按钮
- 用户可随时点击刷新查看最新状态
## 5. 用户体验
### 5.1 上传流程
1. 用户点击"上传文档"按钮
2. 弹出上传表单对话框
3. 选择文件 + 填写元信息
4. 点击确认上传
5. 显示上传中状态(禁用按钮,显示加载图标)
6. 上传成功:关闭对话框,刷新列表,高亮新文档
7. 上传失败:显示错误信息,保持对话框打开
### 5.2 筛选流程
1. 点击状态统计卡片 → 快速筛选该状态文档
2. 使用下拉筛选器 → 按状态或故障源筛选
3. 清除筛选 → 显示全部文档
### 5.3 删除流程
1. 点击删除按钮
2. 弹出确认对话框:"确定删除文档 {fileName}?此操作将删除 MySQL 和 Milvus 中的所有数据,不可恢复。"
3. 确认 → 调用删除 API → 刷新列表
4. 取消 → 关闭对话框
## 6. 实现优先级
### P0(必须实现)
- 文档列表展示(带状态和故障源筛选)
- 文档上传(基本表单 + 文件选择)
- 文档删除(带确认)
- 状态统计卡片
### P1(重要但可后续优化)
- 文档详情查看(右侧面板)
- 拖拽上传
- 列表分页
### P2(可选增强)
- 批量删除
- 导出文档列表
- 上传历史记录
## 7. 文件清单
需要创建的文件:
- `src/main/resources/static/documents.html` - 文档管理页面主 HTML
- `src/main/resources/static/documents.js` - 文档管理页面逻辑(可选,也可内联到 HTML)
- `src/main/resources/static/documents.css` - 文档管理页面专属样式(可选,优先复用 styles.css)
需要修改的文件:
- `src/main/resources/static/index.html` - 添加"文档管理"入口链接(侧边栏)
## 8. 约束和风险
### 约束
- 保持与现有页面风格一致
- 不引入新的前端框架或库
- 文件上传大小受限于后端配置(Spring Boot multipart.max-file-size)
### 风险
- 大文件上传可能超时(需要后端支持超时配置)
- 文件 hash 计算在前端(需要 File API 支持)→ 暂时由后端处理
- 状态监控无实时更新,用户需手动刷新
## 9. 验收标准
- [ ] 可以通过页面上传文档,填写完整元信息
- [ ] 可以查看文档列表,显示正确的元数据
- [ ] 可以按状态筛选文档(PENDING / PROCESSING / INDEXED / FAILED)
- [ ] 可以按故障源筛选文档
- [ ] 可以删除文档,删除后列表自动刷新
- [ ] 状态统计卡片显示正确数量
- [ ] 页面样式与 index.html 保持一致
- [ ] 失败文档显示错误信息
- [ ] 上传失败时显示明确的错误提示