6.3 KiB
6.3 KiB
CloudFuse 项目虚拟环境隔离重构任务
项目目标
在不改变现有功能和用户界面(UI)的前提下,对CloudFuse项目进行全面的优化和重构,实现每个app函数在独立的虚拟环境中运行,有效隔离依赖项,防止不同函数之间因包版本冲突而导致的问题。
核心要求
- 部署环境: 项目应仅在本地环境中运行,暂时不考虑使用Docker进行容器化部署
- 虚拟环境管理: 对于
apps目录下每个文件夹中的函数,确保它们都在独立的虚拟环境中运行(使用venv或virtualenv) - 功能保持: 不改变现有功能和用户界面
- 依赖隔离: 防止不同函数之间的包版本冲突
任务清单
高优先级任务
- 创建虚拟环境管理器 - 创建一个VirtualEnvManager,负责为每个app函数创建和管理独立的虚拟环境
- 重构FunctionManager类 - 将依赖管理从全局改为每个函数独立的虚拟环境依赖管理(已完成)
- 创建函数执行器 - 创建FunctionExecutor,在对应的虚拟环境中执行函数调用
- 更新主应用程序 - 更新main.py中的函数调用逻辑,使用新的虚拟环境执行机制
- 功能验证测试 - 测试所有现有函数在新的虚拟环境隔离架构下的功能正确性(已通过 calculate、hello_world、functions 列表接口)
中优先级任务
- 迁移现有函数 - 为现有的apps目录下所有函数创建相应的虚拟环境并安装依赖
- 更新管理界面 - 更新管理界面的依赖管理功能,支持每个函数独立的虚拟环境管理
- 错误处理机制 - 为虚拟环境操作添加错误处理和回退机制,确保系统稳定性
- 排除文件管理接口中的虚拟环境目录(.venv/.venvs)
低优先级任务
- 性能优化 - 优化虚拟环境的启动和加载速度,避免频繁的环境切换导致性能下降
技术架构
当前架构
- 所有函数共享同一个Python环境
- 依赖通过
requirements.txt全局管理 - 通过
importlib动态加载函数模块
目标架构
- 每个函数拥有独立的虚拟环境
- 每个函数的依赖在其自己的虚拟环境中管理
- 函数执行时切换到对应的虚拟环境
- 保持现有的API接口和管理界面不变
实现注意事项
- 向后兼容: 确保重构后的系统与现有的函数完全兼容
- 性能考虑: 虚拟环境切换不应显著影响函数调用性能
- 错误恢复: 如果虚拟环境创建或激活失败,应有适当的错误处理和回退机制
- UI保持: 管理界面应保持现有的外观和功能,只在依赖管理部分进行必要的更新
进度跟踪
已完成
- 创建项目任务文件
- 创建虚拟环境管理器(VirtualEnvManager)
- 创建函数执行器(FunctionExecutor)
- 更新主应用程序(main.py)以接入 FunctionExecutor
- 修改文件管理接口,排除 .venv/.venvs 目录
- 重构 FunctionManager 类(依赖管理改造为每函数独立虚拟环境)
- 功能验证测试(在新架构下回归: calculate、hello_world、functions 列表接口)
待开始
- 性能优化 - 优化虚拟环境的启动和加载速度,避免频繁的环境切换导致性能下降
性能与稳定性优化任务(新增)
- /venv/status 接口添加缓存机制(TTL=30秒,提供 _invalidate_venv_cache 以变更后立即失效)
- 虚拟环境操作并发控制(全局信号量=3 + 函数级异步锁 + 统一包装器 _with_venv_operation_control)
- pip 预热(预下载/缓存 wheel 包以减少重复下载时间)
- 将耗时的虚拟环境操作改为后台任务(任务状态、进度、结果、API、前端兼容)
- 更新本任务文件记录当前优化进展
- 日志页面P0优化:前端自动重连、首屏tail、渲染限流、暂停/清屏、行数上限、级别高亮;后端WebSocket首帧回放
- 前端自动重连(指数退避,最多5次)
- 首屏回放最后1000行(后端WebSocket首帧发送)
- 渲染限流(100ms 节流)
- 暂停/清屏/自动滚动开关
- 行数上限可配置(100~5000,默认1000)
- 简单级别高亮(INFO/WARNING/ERROR/DEBUG/CRITICAL)
- 文件系统与I/O优化P1:list_dir/files_tree 使用 os.scandir;目录下载改为临时文件流式返回并后台清理
- 日志轮转优化:降低截断检查频率,减少高频I/O
- 修复管理端请求模型前向引用导致的 NameError,并清理重复类定义(admin/admin.py)
管理端文件编辑器修复(新增)
- 新增 /admin/get_file_content 接口(仅允许 apps 目录内文本文件,含路径越界与扩展名白名单校验)
- 新增 /admin/save_file 接口(仅允许 apps 目录内文本文件,含路径越界与扩展名白名单校验)
- 后端联调通过:使用 curl 读取 apps/functions/function.py 返回 200
- 前端联调:/admin/file 页面可正常读取与保存(无 4xx/5xx 与 JS 报错)
- 回归:/admin/list_dir、/admin/download_file、/admin/delete_file、/admin/rename_file、/admin/create_file_or_folder、/admin/upload_file
日志重复显示修复(新增)
- 根因:main.py 中自定义 Tee 重定向与 utils.logger 的 dictConfig 双重输出导致重复
- 处理:移除 main.py 中 stdout/stderr 重定向,完全使用 LOGGING 配置(控制台+文件)
- 验证:调用 /function/calculate 时每条日志只打印一次
项目优化分析(新增)
- 全面分析项目架构、性能、安全性、代码质量和用户体验
- 生成详细优化建议文档 OPTIMIZATION_SUGGESTIONS.md
- 按优先级分类:高优先级(安全性、错误处理)、中优先级(性能、UX)、低优先级(响应式、开发工具)
- 根据优化建议逐步实施改进(可选,按需进行)
UI 界面改进(新增)
- 为页面顶部栏(page-top-bar)添加黑色边框
- 在所有页面标题左侧添加全屏切换按钮(< 和 > 图标)
- 实现侧边栏隐藏/显示的全屏切换功能
- 更新所有页面模板:基础信息、文件管理、日志信息、接口调试
最后更新: 2025-08-20 状态: 按计划推进中