# 文档管理页面开发 - 任务清单
## 任务分解
### Task 1: 创建基础 HTML 结构
**优先级**: P0
**预计时间**: 30 分钟
**依赖**: 无
**描述**:
创建 documents.html 文件,包含完整的页面结构:
- 页面布局(app-layout)
- 顶部导航栏(page-header)
- 状态统计卡片区域(stats-cards)
- 操作工具栏(toolbar)
- 文档列表表格(documents-table)
- 详情面板(detail-panel)
- 上传对话框(uploadModal)
- 删除确认对话框(deleteModal)
**验收标准**:
- [ ] HTML 结构完整,包含所有必要的容器元素
- [ ] 引入 styles.css
- [ ] 表单元素 ID 正确
- [ ] 对话框结构完整
**文件**:
- 创建: `src/main/resources/static/documents.html`
---
### Task 2: 实现样式定制
**优先级**: P0
**预计时间**: 45 分钟
**依赖**: Task 1
**描述**:
创建 documents.css 文件,实现文档管理页面的特定样式:
- 状态统计卡片样式
- 文档表格样式
- 状态徽章样式(4 种颜色)
- 详情面板滑出动画
- 对话框样式
- 响应式布局
**验收标准**:
- [ ] 样式与 index.html 风格一致
- [ ] 状态徽章颜色正确(PENDING 灰色、PROCESSING 蓝色、INDEXED 绿色、FAILED 红色)
- [ ] 表格可读性好,hover 效果流畅
- [ ] 详情面板滑出动画流畅
- [ ] 对话框居中显示,背景遮罩半透明
**文件**:
- 创建: `src/main/resources/static/documents.css`
---
### Task 3: 实现 API 调用层
**优先级**: P0
**预计时间**: 30 分钟
**依赖**: Task 1
**描述**:
在 documents.html 的 script 标签中实现 DocumentAPI 类:
- uploadDocument(formData)
- getDocument(docId)
- getDocumentsByStatus(status, page, size)
- getDocumentsByFaultSource(faultSource)
- deleteDocument(docId)
- handleResponse(response) - 统一处理 Result 格式
**验收标准**:
- [ ] 所有 API 方法实现完整
- [ ] 正确处理 Result 响应格式(code、message、data)
- [ ] 错误处理完善,抛出清晰的错误信息
- [ ] URL 编码正确(faultSource 参数)
**文件**:
- 修改: `src/main/resources/static/documents.html` (script 部分)
---
### Task 4: 实现状态管理器
**优先级**: P0
**预计时间**: 45 分钟
**依赖**: Task 3
**描述**:
实现 DocumentManager 类,管理文档数据和 UI 状态:
- loadDocuments() - 加载文档列表
- updateStats() - 更新状态统计
- renderDocuments() - 渲染文档列表
- renderDetailPanel(docId) - 渲染详情面板
- applyFilter(filter) - 应用筛选条件
- refreshList() - 刷新列表
**验收标准**:
- [ ] 状态管理逻辑清晰
- [ ] 筛选条件正确应用
- [ ] 列表渲染正确
- [ ] 详情面板显示正确
- [ ] 统计数据准确
**文件**:
- 修改: `src/main/resources/static/documents.html` (script 部分)
---
### Task 5: 实现 UI 渲染函数
**优先级**: P0
**预计时间**: 45 分钟
**依赖**: Task 4
**描述**:
实现 UI 渲染相关的辅助函数:
- getStatusBadge(status) - 生成状态徽章 HTML
- renderDocumentRow(doc) - 生成文档表格行
- renderDetailPanel(doc) - 生成详情面板内容
- formatDateTime(dateTime) - 格式化日期时间
- formatFileSize(bytes) - 格式化文件大小
**验收标准**:
- [ ] 状态徽章颜色正确
- [ ] 表格行包含所有必要字段
- [ ] 详情面板信息完整
- [ ] 日期时间格式友好(YYYY-MM-DD HH:mm:ss)
- [ ] 文件大小单位正确(B、KB、MB)
**文件**:
- 修改: `src/main/resources/static/documents.html` (script 部分)
---
### Task 6: 实现文档上传功能
**优先级**: P0
**预计时间**: 60 分钟
**依赖**: Task 3, Task 4
**描述**:
实现文档上传的完整流程:
- 显示/隐藏上传对话框
- 表单验证(文件必填)
- 构建 FormData(包含文件和元信息)
- 调用上传 API
- 显示上传进度(加载状态)
- 处理上传结果(成功刷新列表,失败显示错误)
- 表单重置
**验收标准**:
- [ ] 点击"上传文档"按钮打开对话框
- [ ] 文件必选,其他字段使用默认值
- [ ] FormData 包含所有参数(file、faultCategory、faultSource、apiName、version、chunkSize、chunkOverlap)
- [ ] 上传中按钮禁用,显示加载状态
- [ ] 上传成功:关闭对话框,刷新列表,高亮新文档(可选)
- [ ] 上传失败:显示错误信息,对话框保持打开
- [ ] 取消按钮关闭对话框
**文件**:
- 修改: `src/main/resources/static/documents.html` (script 部分)
---
### Task 7: 实现文档删除功能
**优先级**: P0
**预计时间**: 30 分钟
**依赖**: Task 3, Task 4
**描述**:
实现文档删除的完整流程:
- 显示删除确认对话框
- 显示待删除文档的文件名
- 调用删除 API
- 处理删除结果(成功刷新列表,失败显示错误)
**验收标准**:
- [ ] 点击"删除"按钮打开确认对话框
- [ ] 对话框显示文件名和警告信息
- [ ] 点击"确认删除"调用 API
- [ ] 删除成功:关闭对话框,刷新列表
- [ ] 删除失败:显示错误信息
- [ ] 点击"取消"关闭对话框
**文件**:
- 修改: `src/main/resources/static/documents.html` (script 部分)
---
### Task 8: 实现筛选功能
**优先级**: P0
**预计时间**: 30 分钟
**依赖**: Task 4
**描述**:
实现文档筛选功能:
- 状态下拉框筛选
- 故障源输入框筛选(带防抖)
- 点击状态卡片快速筛选
- 清除筛选
- 筛选时重置分页
**验收标准**:
- [ ] 状态下拉框改变时触发筛选
- [ ] 故障源输入框使用防抖(300ms)
- [ ] 点击状态卡片筛选对应状态的文档
- [ ] 筛选后 currentPage 重置为 0
- [ ] 筛选结果正确显示
**文件**:
- 修改: `src/main/resources/static/documents.html` (script 部分)
---
### Task 9: 实现详情面板
**优先级**: P1
**预计时间**: 30 分钟
**依赖**: Task 4, Task 5
**描述**:
实现文档详情面板功能:
- 点击"查看"按钮打开详情面板
- 加载文档详细信息
- 显示详情面板(滑出动画)
- 关闭详情面板
**验收标准**:
- [ ] 点击"查看"按钮打开详情面板
- [ ] 调用 API 获取文档详情
- [ ] 详情面板从右侧滑出
- [ ] 显示完整的文档信息(基本信息、分类信息、索引信息、时间信息)
- [ ] 失败文档显示错误信息(红色标注)
- [ ] 点击关闭按钮或遮罩关闭面板
**文件**:
- 修改: `src/main/resources/static/documents.html` (script 部分)
---
### Task 10: 实现状态统计
**优先级**: P0
**预计时间**: 20 分钟
**依赖**: Task 3, Task 4
**描述**:
实现状态统计功能:
- 页面加载时查询各状态文档数量
- 更新统计卡片数字
- 点击卡片筛选对应状态
**验收标准**:
- [ ] 页面加载时自动查询统计数据
- [ ] 4 个状态卡片显示正确数量
- [ ] 点击卡片筛选对应状态的文档
- [ ] 刷新列表后自动更新统计
**文件**:
- 修改: `src/main/resources/static/documents.html` (script 部分)
---
### Task 11: 实现刷新功能
**优先级**: P0
**预计时间**: 15 分钟
**依赖**: Task 4
**描述**:
实现手动刷新功能:
- 点击刷新按钮重新加载列表
- 保持当前筛选条件
- 更新状态统计
**验收标准**:
- [ ] 点击"刷新"按钮重新加载数据
- [ ] 保持当前筛选条件不变
- [ ] 同时更新统计数据
- [ ] 显示加载状态
**文件**:
- 修改: `src/main/resources/static/documents.html` (script 部分)
---
### Task 12: 添加页面入口
**优先级**: P1
**预计时间**: 15 分钟
**依赖**: Task 1
**描述**:
在 index.html 的侧边栏添加文档管理页面入口:
- 在"新建对话"按钮下方添加导航按钮
- 按钮文字:文档管理
- 链接到 documents.html
**验收标准**:
- [ ] 侧边栏显示"文档管理"按钮
- [ ] 点击按钮跳转到 documents.html
- [ ] 按钮样式与"新建对话"按钮一致
- [ ] 使用合适的图标(文档图标)
**文件**:
- 修改: `src/main/resources/static/index.html`
---
### Task 13: 错误处理和用户提示
**优先级**: P0
**预计时间**: 30 分钟
**依赖**: 所有功能任务
**描述**:
实现统一的错误处理和用户提示:
- showError(message) - 显示错误通知
- showSuccess(message) - 显示成功通知
- showLoading() / hideLoading() - 显示/隐藏全局加载状态
- 网络错误处理
- API 错误处理
**验收标准**:
- [ ] 通知条在页面顶部显示
- [ ] 错误通知红色背景,成功通知绿色背景
- [ ] 通知 3 秒后自动消失
- [ ] 全局加载状态覆盖整个页面
- [ ] 所有 API 调用都有错误处理
- [ ] 错误信息清晰友好
**文件**:
- 修改: `src/main/resources/static/documents.html` (script 部分)
- 修改: `src/main/resources/static/documents.css`
---
### Task 14: 测试和优化
**优先级**: P1
**预计时间**: 60 分钟
**依赖**: 所有功能任务
**描述**:
进行全面测试和优化:
- 功能测试(所有操作流程)
- 边界测试(空列表、网络错误等)
- 浏览器兼容性测试
- 性能优化(防抖、缓存)
- 代码优化(重构重复代码)
**验收标准**:
- [ ] 所有功能正常工作
- [ ] 边界情况处理正确
- [ ] Chrome、Firefox、Safari 正常运行
- [ ] 无明显性能问题
- [ ] 代码结构清晰,无重复代码
**文件**:
- 修改: `src/main/resources/static/documents.html`
- 修改: `src/main/resources/static/documents.css`
---
## 任务执行顺序
**阶段 1:基础搭建**
1. Task 1: 创建基础 HTML 结构
2. Task 2: 实现样式定制
**阶段 2:核心逻辑**
3. Task 3: 实现 API 调用层
4. Task 4: 实现状态管理器
5. Task 5: 实现 UI 渲染函数
**阶段 3:功能实现**
6. Task 6: 实现文档上传功能
7. Task 7: 实现文档删除功能
8. Task 8: 实现筛选功能
9. Task 10: 实现状态统计
10. Task 11: 实现刷新功能
11. Task 13: 错误处理和用户提示
**阶段 4:增强功能**
12. Task 9: 实现详情面板
13. Task 12: 添加页面入口
**阶段 5:测试和优化**
14. Task 14: 测试和优化
---
## 预计总时间
- P0 任务:约 6 小时
- P1 任务:约 2 小时
- 总计:约 8 小时
---
## 风险和依赖
**技术风险**:
- 文件上传可能受后端配置限制(需确认 max-file-size)
- 大文件上传可能超时
**外部依赖**:
- 后端服务必须运行(localhost:9900)
- 数据库和 Milvus 服务正常
**缓解措施**:
- 在上传前添加文件大小检查(前端限制 10MB)
- 添加详细的错误提示
- 提供重试机制