2026-04-29-21-51-19 - 全栈系统改造:FastAPI后端+SAM2+PostgreSQL+Redis+MinIO+前端Zustand重构

This commit is contained in:
2026-04-29 22:17:25 +08:00
parent c8f8686097
commit fd4b5e5b3d
39 changed files with 3816 additions and 211 deletions

View File

@@ -65,4 +65,38 @@ AI 助手运行的容器/环境与项目实际开发环境分离,后者才装
---
## 2026-04-29-21-51-19 — 全栈系统改造FastAPI + SAM2 + PostgreSQL + Redis + MinIO
### A. 具体问题
1. 将纯前端 React 应用改造为全栈系统时工程涉及后端框架替换、数据库设计、对象存储、AI 推理引擎、前端状态管理重构等多个复杂模块,单次执行工程量大。
2. 系统磁盘空间24G不足PyTorch CUDA 版本(>2GB和 sam2 pip 包编译(需下载 CUDA 工具链 + 编译 C++ 扩展)均因 `OSError: No space left on device` 失败。
3. MinIO 对象存储在磁盘紧张时报 `XMinioStorageFull`,导致文件上传失败。
4. 前端 Agent 执行时因目录扁平化后子目录不存在,产生多次 `File not found` 错误。
### B. 产生原因
1. 项目改造范围超出单次会议合理容量,涉及 15+ 后端文件、10+ 前端文件、4 个基础设施服务、1 个 AI 模型栈。
2. 系统盘仅有 24GBconda 环境2GB、node_modules222MB、模型权重1.5GB、MinIO 帧文件1.4GB)叠加后迅速耗尽空间。
3. sam2 的 pip 包依赖 torch>=2.5.1pip 会尝试重新下载完整 torch wheel530MB作为 build dependency即使 torch 已安装。
4. 前端 Agent 的 prompt 中未明确说明组件目录已扁平化Agent 仍尝试读取旧的子目录路径。
### C. 解决方案
1. **任务拆分 + 并行 Agent**: 将后端和前端代码编写拆分为两个独立 Agent 并行执行,基础设施安装与代码编写并行推进,显著缩短总耗时。
2. **磁盘管理策略**:
- 安装 PyTorch CPU 版本替代 CUDA 版本(占用更小)
- 只保留 sam2_hiera_tiny.pt149MB删除其他大模型
- 清理 conda pkgs 缓存(释放 600MB+
- 删除 MinIO 中解析生成的临时帧文件(释放 1.4GB
3. **sam2 安装降级**: 当前环境以 stub 模式运行,提供 `install_sam2.sh` 脚本供用户在扩展磁盘后执行真实安装。
4. **API 路径修复**: 后端添加 `/api/auth/login` 路由,修复前端 api.ts 中 `/api/predict``/api/ai/predict` 的路径不匹配。
5. **MinIO API 适配**: minio 7.2.x 中 `presigned_url()` 已改为 `get_presigned_url()`,需从 `datetime.timedelta` 传入 expires。
### D. 后续如何避免问题
1. **大型改造前先做磁盘评估**: 执行 `df -h` 确认可用空间 > 5GB 再开始安装大型依赖。
2. **AI 模型依赖延迟加载**: 所有 AI 推理引擎必须实现 graceful fallback模型缺失时不阻塞系统启动。
3. **Agent prompt 需同步最新目录结构**: 给 Agent 的上下文必须包含当前真实的文件路径,避免 `File not found`
4. **构建依赖隔离**: 使用 `--no-build-isolation``--no-deps` 安装源码包,避免 pip 重复下载已安装的依赖。
5. **MinIO 空间监控**: 定期清理解析产生的临时帧文件,或配置 MinIO 使用独立大容量数据盘。
---
> 新增经验请追加到文件末尾,保持时间倒序或正序均可,但需确保每条经验包含完整的 A/B/C/D 四段。