# 自动刷新功能说明 ## 功能概述 在缠论分析系统中新增了自动刷新功能,允许用户设置定时自动刷新数据,实时监控市场变化。 ## 功能特性 ### 1. 自动刷新控制 - **启用/禁用开关**: 通过勾选框控制自动刷新的开启和关闭 - **智能状态管理**: 启用时激活相关控件,禁用时自动禁用下拉菜单 ### 2. 刷新间隔设置 支持以下刷新间隔选项: - 5秒 - 10秒 - 15秒 (默认) - 30秒 - 1分钟 - 5分钟 ### 3. 实时状态显示 - **刷新状态**: 显示当前自动刷新的启用状态和间隔设置 - **下次刷新时间**: 显示预计下次刷新的时间 - **更新时间**: 在统计信息中显示最后更新的时间 - **更新方式**: 区分手动刷新和自动刷新 ## 界面布局 新增的自动刷新控制面板位于原有控制面板下方,包含: ``` ┌─ 自动刷新控制行 ─────────────────────────────────────┐ │ [自动刷新:] [刷新间隔:] [刷新状态:] [下次刷新:] │ │ ☐ 启用自动刷新 [15秒 ▼] 未启用 -- │ └──────────────────────────────────────────────────────┘ ``` 启用自动刷新后: ``` ┌─ 自动刷新控制行 ─────────────────────────────────────┐ │ [自动刷新:] [刷新间隔:] [刷新状态:] [下次刷新:] │ │ ☑ 启用自动刷新 [15秒 ▼] 已启用-每15秒刷新 14:30:45 │ └──────────────────────────────────────────────────────┘ ``` ## 使用方法 ### 1. 启用自动刷新 1. 勾选"启用自动刷新"复选框 2. 刷新状态会显示为"已启用 - 每X秒刷新" 3. 刷新间隔下拉菜单变为可用状态 ### 2. 设置刷新间隔 1. 确保自动刷新已启用 2. 在"刷新间隔"下拉菜单中选择所需的时间间隔 3. 状态文字会立即更新显示新的间隔 ### 3. 开始自动刷新 1. 首次需要点击"获取数据并分析"按钮获取初始数据 2. 之后系统会根据设定的间隔自动刷新数据 3. 自动刷新时会保持所有其他设置参数不变 ### 4. 监控刷新状态 - 查看"下次刷新时间"了解预计刷新时间 - 在统计信息中查看"最后更新"时间 - "更新方式"会显示是"自动刷新"还是"手动刷新" ## 技术实现 ### 1. 组件结构 - `dcc.Checklist`: 自动刷新开关 - `dcc.Dropdown`: 刷新间隔选择 - `dcc.Interval`: 定时器组件 - `dcc.Store`: 存储自动刷新设置 - `html.Div`: 状态显示组件 ### 2. 回调函数 - `control_auto_refresh`: 控制自动刷新功能的启用/禁用 - `update_next_refresh_time`: 更新下次刷新时间显示 - `analyze_data_with_auto_refresh`: 处理自动刷新触发的数据分析 ### 3. 状态管理 - 自动刷新设置存储在 `auto-refresh-settings` Store中 - 定时器组件的enabled状态根据设置动态切换 - 刷新间隔实时更新定时器的interval属性 ## 测试验证 ### 手动测试步骤 1. 访问 http://localhost:8051 2. 查看自动刷新控制面板是否正常显示 3. 测试启用/禁用自动刷新功能 4. 测试不同刷新间隔的设置 5. 验证自动刷新是否按设定间隔工作 6. 检查状态显示是否准确更新 ### 预期行为 - 初始状态:未启用,下拉菜单禁用 - 启用后:状态更新,下拉菜单可用 - 更改间隔:状态文字立即更新 - 自动刷新:数据按间隔自动更新 - 保持设置:其他参数在自动刷新时不变 ## 注意事项 1. **首次使用**: 启用自动刷新后需要先手动获取一次数据 2. **网络连接**: 自动刷新依赖网络连接,连接异常时可能失败 3. **性能影响**: 短间隔刷新可能增加服务器负载 4. **浏览器要求**: 需要JavaScript支持,建议使用现代浏览器 5. **数据一致性**: 自动刷新会保持所有分析参数设置不变 ## 故障排除 ### 自动刷新不工作 - 检查是否已勾选"启用自动刷新" - 确认已先进行过一次手动数据获取 - 查看浏览器控制台是否有错误信息 ### 状态显示异常 - 刷新页面重新加载组件 - 检查网络连接是否正常 - 确认后端服务是否正常运行 ### 刷新间隔不准确 - 网络延迟可能影响实际刷新间隔 - 数据处理时间会额外增加总耗时 - 建议设置不小于5秒的刷新间隔