# 13-01 采集日志页面

_
本文档按照20项模板撰写，用于前端实现“采集日志页面”的设计与交互规范。页面在管理后台中放置于 /collect-log 路由下，包含三个标签页：分析记录、采集周期、原始数据。_

## 1. 页面基本信息
- 模块：管理后台 -> 采集日志
- 页面名称：采集日志页面
- 路由：/collect-log
- 版本：v1.0
- 作者：设计/前端团队
- 依赖：Element Plus、Vue 3、TypeScript

## 2. 布局结构
- 顶部区域：查询条件区域（时间范围、地址、机床、分析类型、程序名等）
- 中部区域：Tabs 切换，包含三个 Tab：分析记录、采集周期、原始数据
- 各 Tab 之下为各自的表格 + 分页控件
- 底部/弹窗区域：查看详情弹窗、关联跳转入口

## 3. 数据表格列定义
- 分析记录（Tab1）列：时间、地址、机床、分析类型、前程序、当前程序、产量变化、摘要、操作
- 采集周期（Tab2）列：时间、地址、总机床、成功、失败、异常、分布、摘要
- 原始数据（Tab3）列：原始日志ID、时间、内容摘要、来源地址

## 4. 查询条件字段
- 时间范围：日期时间范围选择器，格式 yyyy-MM-dd HH:mm:ss
- 采集地址：下拉或文本输入，支持模糊匹配
- 机床：下拉选择
- 分析类型：多选过滤标签
- 程序名：文本输入
- 提交触发：查询按钮，重置按钮
- 每页显示条数：分页组件控制

## 5. API端点定义
- GET /api/admin/collect-log/analysis
- GET /api/admin/collect-log/analysis/{id}
- GET /api/admin/collect-log/analysis/by-raw/{rawLogId}
- GET /api/admin/collect-log/cycle
- GET /api/admin/collect-log/raw

## 6. Mock数据结构
- 分析记录列表 Mock：数组对象包含 time、address、machine、type、previousProgram、currentProgram、yieldDelta、summary
- 分析详情 Mock：含 detail 字段、difference 和对比数据
- 周期数据 Mock：time、address、totalMachines、success、failure、anomaly、distribution、summary
- 原始数据 Mock：rawId、logTime、contentPreview、sourceAddress

## 7. 交互行为
- 标签页切换：切换时重新加载对应表格数据
- 分页：点击页码、切换每页条数时加载对应页数据
- 查看详情弹窗：选中行后弹出，展示分析详情或对比信息
- 关联跳转：点击相关行的跳转按钮，跳转至对应的关联页面
- 原始数据查看：点击原始数据行，弹出 JSON 原始数据预览

## 8. 组件树
- 组件树示例：CollectLogPage -> (QueryForm, ElTabs -> (AnalysisTab, CycleTab, RawTab) -> (ElTable, ElPagination)) -> DetailDialog
- 表单控件（QueryForm）：el-form、el-form-item、el-date-picker、el-input、el-select、el-tag
- 表格与分页：el-table、el-table-column、el-pagination
- 弹窗：el-dialog
- 细化的子组件：AnalysisTable、CycleTable、RawTable、DetailDialog（可复用）

## 9. 路由配置
- 路由路径：/collect-log
- 路由组件：CollectLogPage
- 路由守卫：同其他管理后台页面的权限控制
- 嵌套路由（若有需要）：/collect-log/analysis、/collect-log/cycle、/collect-log/raw

## 10. 数据校验与错误处理
- 搜索条件必填项的格式校验：时间范围格式、文本字段长度等
- API 请求失败时，展示友好错误信息并保留上一次有效数据展示
- 弹窗中的对比信息若数据为空，显示空态提示

## 11. 性能与优化点
- 分页按需加载，避免一次性加载所有数据
- 表格列尽量避免使用复杂自定义渲染，必要时使用虚拟滚动
- 原始数据区域对大文本使用内容摘要展示，点击展开查看全文

## 12. 国际化与无障碍
- 暂定中文显示，未来支持多语言资源
- 组件具备基础无障碍特性，表格可读性良好

## 13. 数据引用与结构（接口关联）
- 参考后端 API 端点，数据结构需与后端返回字段严格对齐
- 需在页面中以常量形式存放端点引用及字段映射，便于维护

## 14. 组件样式与风格
- 遵循全局主题，表格列宽可自适应，必要时固定宽度以确保对齐
- 按钮、标签、弹窗风格与全局规范保持一致

## 15. 版本与变更记录
- 每次变更需记录版本号和变更摘要，便于回溯
- 与模块索引、总览文档保持同步

## 16. 技术实现概要
- 主要使用 Vue 3 + TypeScript + Element Plus，按项目的前端全局规范实现
- 数据获取走统一的 API 调用封装，错误统一处理
- UI 组件具有可复用性，便于其他模块复用

## 17. 数据流与状态管理
- 页面局部状态通过 Vue 的响应式系统管理
- 表格数据、筛选条件和分页状态保持在组件状态中，必要时通过 Store/Pinia 共享

## 18. 测试用例设计
- 基本渲染测试：页面渲染、表格列正确显示
- 筛选与分页功能测试
- 弹窗查看详情测试
- 跳转与联动测试

## 19. 部署与运行
- 本地调试：确保 /collect-log 路由可访问，接口 Mock/测试环境数据正常
- 与后端联调时保持端点一致，返回字段映射不变

## 20. 变更记录
- 记录本页面文档的变更时间、版本和修改内容，便于团队追踪

---

备注：本文档遵循文档结构规范，确保与其他模块文档风格一致，如需对齐请参考 `docs/02-功能清单/02-文件夹创建规范.md` 与 `docs/02-界面变更执行规范.md`。
