Files
CloudFuse/PROJECT_TODO.md

6.3 KiB
Raw Permalink Blame History

CloudFuse 项目虚拟环境隔离重构任务

项目目标

在不改变现有功能和用户界面(UI)的前提下对CloudFuse项目进行全面的优化和重构实现每个app函数在独立的虚拟环境中运行有效隔离依赖项防止不同函数之间因包版本冲突而导致的问题。

核心要求

  1. 部署环境: 项目应仅在本地环境中运行暂时不考虑使用Docker进行容器化部署
  2. 虚拟环境管理: 对于apps目录下每个文件夹中的函数,确保它们都在独立的虚拟环境中运行(使用venvvirtualenv
  3. 功能保持: 不改变现有功能和用户界面
  4. 依赖隔离: 防止不同函数之间的包版本冲突

任务清单

高优先级任务

  • 创建虚拟环境管理器 - 创建一个VirtualEnvManager负责为每个app函数创建和管理独立的虚拟环境
  • 重构FunctionManager类 - 将依赖管理从全局改为每个函数独立的虚拟环境依赖管理(已完成)
  • 创建函数执行器 - 创建FunctionExecutor在对应的虚拟环境中执行函数调用
  • 更新主应用程序 - 更新main.py中的函数调用逻辑使用新的虚拟环境执行机制
  • 功能验证测试 - 测试所有现有函数在新的虚拟环境隔离架构下的功能正确性(已通过 calculate、hello_world、functions 列表接口)

中优先级任务

  • 迁移现有函数 - 为现有的apps目录下所有函数创建相应的虚拟环境并安装依赖
  • 更新管理界面 - 更新管理界面的依赖管理功能,支持每个函数独立的虚拟环境管理
  • 错误处理机制 - 为虚拟环境操作添加错误处理和回退机制,确保系统稳定性
  • 排除文件管理接口中的虚拟环境目录(.venv/.venvs

低优先级任务

  • 性能优化 - 优化虚拟环境的启动和加载速度,避免频繁的环境切换导致性能下降

技术架构

当前架构

  • 所有函数共享同一个Python环境
  • 依赖通过requirements.txt全局管理
  • 通过importlib动态加载函数模块

目标架构

  • 每个函数拥有独立的虚拟环境
  • 每个函数的依赖在其自己的虚拟环境中管理
  • 函数执行时切换到对应的虚拟环境
  • 保持现有的API接口和管理界面不变

实现注意事项

  1. 向后兼容: 确保重构后的系统与现有的函数完全兼容
  2. 性能考虑: 虚拟环境切换不应显著影响函数调用性能
  3. 错误恢复: 如果虚拟环境创建或激活失败,应有适当的错误处理和回退机制
  4. 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优化P1list_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 状态: 按计划推进中