# 文档管理页面开发 - 任务清单 ## 任务分解 ### 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) - 添加详细的错误提示 - 提供重试机制