# 实现方案 - 2026-04-29-21-51-19 ## 对应需求 - 需求分析文档: `需求分析-2026-04-29-21-51-19.md` ## 方案概述 在 RTX 4090 + Ubuntu 22.04 环境下,将纯前端 React 应用改造为全栈语义分割系统。本次为**骨架搭建 + 核心能力落地**,优先保证各模块可独立运行并互联互通。 ## 整体架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 前端层 (React 19) │ │ Zustand (状态) + Axios (HTTP) + WebSocket (实时进度) │ │ Konva (Canvas) + TailwindCSS (样式) │ └────────────────────────────┬────────────────────────────────────┘ │ HTTP / WebSocket ┌────────────────────────────▼────────────────────────────────────┐ │ 后端层 (FastAPI + Python) │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 项目/模板 API │ │ 媒体解析 API │ │ AI 推理 API │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ └─────────────────┼─────────────────┘ │ │ │ SQLAlchemy │ │ ┌────────────────────────▼────────────────────────┐ │ │ │ PostgreSQL (关系数据) │ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ │ ┌────────────────────────▼────────────────────────┐ │ │ │ MinIO (对象存储: 视频/帧/Mask) │ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ │ ┌────────────────────────▼────────────────────────┐ │ │ │ Redis (缓存 + 任务队列) │ │ │ └─────────────────────────────────────────────────┘ │ │ │ │ │ ┌────────────────────────▼────────────────────────┐ │ │ │ SAM 3 (GPU 推理节点) │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` ## 修改/新增文件清单 ### A. 基础设施层 #### A1. 系统服务安装 - **操作**: `sudo apt install postgresql postgresql-contrib redis-server ffmpeg` - **操作**: 下载并启动 MinIO 二进制 - **说明**: 配置 PostgreSQL 数据库/用户,Redis 默认端口,MinIO 端口 9000/9001 #### A2. Conda 环境 - **操作**: `conda create -n seg_server python=3.11` - **操作**: 安装 PyTorch 2.5+ CUDA 13.x、FastAPI、SQLAlchemy、psycopg2-binary、redis-py、minio、uvicorn、python-multipart、celery、opencv-python、pillow、scikit-image、pydicom、numpy ### B. 后端层 (新增 backend/ 目录) #### B1. `backend/main.py` - **类型**: 新增 - **内容**: FastAPI 入口,CORS 配置, lifespan 管理(启动/关闭数据库、Redis、MinIO 连接) #### B2. `backend/config.py` - **类型**: 新增 - **内容**: 环境变量配置(DB_URL、REDIS_URL、MINIO_ENDPOINT、SAM_MODEL_PATH 等) #### B3. `backend/database.py` - **类型**: 新增 - **内容**: SQLAlchemy engine + session + Base,PostgreSQL 连接 #### B4. `backend/models.py` - **类型**: 新增 - **内容**: 数据库 ORM 模型:Project、Frame、Annotation、Template、Mask #### B5. `backend/schemas.py` - **类型**: 新增 - **内容**: Pydantic 数据校验模型 #### B6. `backend/minio_client.py` - **类型**: 新增 - **内容**: MinIO 客户端封装(上传、下载、预签名 URL) #### B7. `backend/redis_client.py` - **类型**: 新增 - **内容**: Redis 客户端封装 #### B8. `backend/routers/projects.py` - **类型**: 新增 - **内容**: 项目 CRUD API #### B9. `backend/routers/templates.py` - **类型**: 新增 - **内容**: 本体模板 API #### B10. `backend/routers/media.py` - **类型**: 新增 - **内容**: 视频/图片/DCM 上传 API,FFmpeg 拆帧任务触发 #### B11. `backend/routers/ai.py` - **类型**: 新增 - **内容**: SAM 3 推理 API(point/box/semantic),Mask 生成与存储 #### B12. `backend/routers/export.py` - **类型**: 新增 - **内容**: 标注数据导出(COCO JSON、PNG Mask) #### B13. `backend/services/sam3_engine.py` - **类型**: 新增 - **内容**: SAM 3 模型加载、推理封装、GPU 内存管理 #### B14. `backend/services/frame_parser.py` - **类型**: 新增 - **内容**: FFmpeg 视频拆帧、DCM 影像逐帧提取、帧上传 MinIO #### B15. `backend/services/task_queue.py` - **类型**: 新增 - **内容**: Celery + Redis 异步任务队列封装 #### B16. `backend/requirements.txt` - **类型**: 新增 - **内容**: Python 依赖清单 ### C. 前端层 (修改现有 src/) #### C1. `src/store/index.ts` (新增) - **内容**: Zustand 全局 Store(project、workspace、annotations、ui 状态) #### C2. `src/lib/api.ts` (新增) - **内容**: Axios 实例封装,baseURL 指向 FastAPI #### C3. `src/lib/websocket.ts` (新增) - **内容**: WebSocket 客户端,接收解析进度 #### C4. `src/App.tsx` (修改) - **内容**: 移除 Login 硬编码,接入真实登录 API;Provider 包裹 #### C5. `src/components/ProjectLibrary.tsx` (修改) - **内容**: 从后端 API 加载项目列表,支持创建/删除 #### C6. `src/components/TemplateRegistry.tsx` (修改) - **内容**: 从后端 API 加载本体字典,支持动态增删 #### C7. `src/components/CanvasArea.tsx` (修改) - **内容**: 点击画布捕获坐标,发送至后端 AI 接口,接收并渲染 Mask Path #### C8. `src/components/AISegmentation.tsx` (修改) - **内容**: 对接后端 SAM 3 推理接口,显示推理状态 #### C9. `src/components/Dashboard.tsx` (修改) - **内容**: 显示真实解析队列进度(WebSocket) ### D. 部署与运维 #### D1. `start_services.sh` (新增) - **内容**: 一键启动 PostgreSQL、Redis、MinIO、FastAPI 的脚本 #### D2. `backend/download_sam3.py` (新增) - **内容**: SAM 3 模型权重自动下载脚本 ## 新增依赖 ### Python (conda 环境) ``` fastapi uvicorn[standard] python-multipart sqlalchemy psycopg2-binary alembic redis celery minio opencv-python pillow scikit-image pydicom numpy ``` ### 前端 (npm) ``` zustand axios ``` ## 兼容性分析 - Express `server.ts` 将被保留但不再作为默认启动方式,FastAPI 成为主后端 - 前端路由逻辑不变,仅数据获取方式从内存/mock 改为 HTTP API - 回滚策略: 回退到 `npm start` 仍可运行旧版 Express 前端 ## 预估工作量 - 基础设施: 20 分钟 - 后端骨架: 40 分钟 - 前端改造: 30 分钟 - SAM 3 部署: 20 分钟 - 联调验证: 20 分钟