diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a11999e --- /dev/null +++ b/.gitignore @@ -0,0 +1,57 @@ +# Python 编译缓存 +__pycache__/ + +# 图片文件 +*.png +*.jpg +*.jpeg + +# 数据文件 +*.csv + +# 环境配置文件(包含敏感信息) +*.env + +# 日志及进程文件 +logs/ +*.log +*.pid + +# 上传文件临时目录 +uploads/ + +# 微调生成文件 +*.json +*.bin +*.pkl +*.safetensors +*.pt +*.txt + +# vscode 配置 +.vscode/ + +# github 工作流配置 +.github/ + +# pycharm 配置 +.idea/ + +# pytest配置 +*.ini + +# 测试相关 +.pytest_cache/ +.coverage +.coverage.* +htmlcov/ +.tox/ +.nox/ +coverage.xml +*.cover +*.py,cover +.hypothesis/ +pytest_cache/ +test-results/ +test-reports/ +run_tests.py \ No newline at end of file diff --git a/README.md b/README.md index e097c33..7677831 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,752 @@ -# MuseGuard - +# MuseGuard + +

+ 基于对抗性扰动的多风格图像生成防护系统 +

+ +

+ Adversarial Perturbation-based Multi-style Image Generation Protection System +

+ +--- + +## 项目简介 + +### 背景与动机 + +近年来,以 Stable Diffusion、DreamBooth、LoRA 为代表的 AI 图像生成技术取得了突破性进展。这些技术仅需少量样本图片,即可在短时间内学习并复制特定人物的面部特征或艺术家的独特风格,生成高度逼真的仿冒图像。这一能力在带来创作便利的同时,也引发了严重的版权侵权和隐私安全问题: + +- **艺术家权益受损**:原创作品风格被轻易模仿,创作者的独特性和商业价值遭到侵蚀 +- **人脸隐私泄露**:个人照片可能被用于生成虚假内容,造成名誉损害或诈骗风险 +- **版权保护困境**:传统水印技术在 AI 时代已难以有效防护,亟需新的技术手段 + +### 解决方案 + +**MuseGuard** 是一个面向图像版权保护的 Web 平台,采用前沿的对抗性扰动(Adversarial Perturbation)技术,在图像中嵌入人眼不可见的微小噪声。这些精心设计的扰动能够有效干扰 AI 模型的学习过程,使其无法准确提取和复制图像中的关键特征,从而实现对原始作品的主动防护。 + +与传统的被动式版权保护(如水印、版权声明)不同,MuseGuard 采用"主动防御"策略——在图像被滥用之前就进行预防性保护,从源头上阻止 AI 模型的恶意学习行为。 + +### 核心优势 + +- **不可见性**:添加的对抗性扰动对人眼几乎不可见,不影响图像的正常观赏和使用 +- **有效性**:经过严格的学术验证,能够显著降低 AI 模型的学习效果 +- **多样性**:集成 ASPL、SimAC、CAAT、Glaze 等多种主流防护算法,适应不同场景需求 +- **易用性**:提供友好的 Web 界面,无需专业知识即可完成图像防护 +- **可验证**:内置效果验证模块,通过 FID、LPIPS 等指标量化评估防护效果 + +### 核心功能 + +- **通用防护**:支持 ASPL、SimAC、CAAT、CAAT Pro、PID、Glaze 等多种防护算法 +- **专题防护**:针对人脸定制生成、人脸编辑、风格迁移等特定攻击场景的定制化防护 +- **效果验证**:通过微调测试、质量评估(FID/LPIPS/SSIM/PSNR)、热力图分析验证防护效果 +- **异步任务处理**:基于 Redis + RQ 的任务队列,支持大规模图片批量处理 +- **深色/浅色主题**:支持 Kinetic Typography 设计风格的双主题切换 + +--- + +## 技术栈 + +### 后端 + +| 类别 | 技术 | 版本 | +| -------- | ------------------ | ------ | +| Web 框架 | Flask | 3.0.0 | +| ORM | Flask-SQLAlchemy | 3.1.1 | +| 数据库 | MySQL + PyMySQL | 1.1.1 | +| 缓存 | Redis | 5.0.1 | +| 任务队列 | RQ (Redis Queue) | 1.16.2 | +| 认证 | Flask-JWT-Extended | 4.6.0 | +| 跨域 | Flask-CORS | 5.0.0 | +| 图像处理 | Pillow | 10.4.0 | +| 数值计算 | NumPy | 1.26.4 | + +### 前端 + +| 类别 | 技术 | 版本 | +| --------- | ----------------------- | ------- | +| 框架 | Vue 3 (Composition API) | 3.5.24 | +| 构建工具 | Vite | 7.2.4 | +| 路由 | Vue Router | 4.6.3 | +| 状态管理 | Pinia | 2.1.0 | +| HTTP 请求 | Axios | 1.13.2 | +| 3D 可视化 | Three.js | 0.182.0 | + +--- + +## 快速开始 + +访问线上部署地址 **http://1.95.170.34** 即可体验系统功能,无需本地配置环境。 + +> 如需本地开发部署,请参考后文的 [部署与开发指南](#部署与开发指南)。 + +### 操作流程 + +**注册与登录** + +1. 点击"注册",填写邮箱并获取验证码 +2. 完成注册后使用邮箱和密码登录 + +**图像防护(核心功能)** + +1. 进入"通用防护"或"快速防护"页面 +2. 上传需要保护的图片(支持 JPG/PNG,建议 512x512) +3. 选择防护算法(ASPL、SimAC、CAAT 等) +4. 调整扰动强度(epsilon 值) +5. 点击"开始处理",等待任务完成后下载结果 + +**专题防护** + +- 防定制生成:防止人脸被用于 AI 定制化生成 +- 防人脸编辑:保护人脸图像免受 AI 编辑修改 +- 风格迁移防护:保护艺术作品免受风格模仿 + +**效果验证** + +1. 选择已完成的加噪任务,创建微调任务模拟 AI 训练 +2. 创建评估任务查看 FID/LPIPS/SSIM/PSNR 指标 +3. 生成热力图可视化防护效果 + +**任务管理** + +侧边栏实时显示任务状态,支持查看详情、下载结果、取消任务。 + +## 系统架构 + +### 目录结构 + +``` +MuseGuard/ +├── doc/ # 项目文档 +│ ├── process/weekly/ # 周报与周计划 +│ └── project/ # 项目文档 +│ ├── 01-需求文档/ # 需求规格说明书、用例文档 +│ ├── 02-设计文档/ # 系统设计文档 +│ └── 03-计划文档/ # 项目计划 +├── src/ +│ ├── backend/ # 后端服务 +│ │ ├── app/ # Flask 应用主目录 +│ │ │ ├── algorithms/ # 防护算法实现 +│ │ │ │ ├── evaluate/ # 评估算法 +│ │ │ │ ├── finetune/ # 微调算法 +│ │ │ │ ├── perturbation/ # 加噪算法 +│ │ │ │ └── processor/ # 处理器 +│ │ │ ├── controllers/ # 控制器(路由处理) +│ │ │ │ ├── admin_controller.py +│ │ │ │ ├── auth_controller.py +│ │ │ │ ├── image_controller.py +│ │ │ │ ├── task_controller.py +│ │ │ │ └── user_controller.py +│ │ │ ├── database/ # 数据库模型定义 +│ │ │ ├── repositories/ # 数据访问层 +│ │ │ │ ├── base_repository.py +│ │ │ │ ├── config_repository.py +│ │ │ │ ├── image_repository.py +│ │ │ │ ├── task_repository.py +│ │ │ │ └── user_repository.py +│ │ │ ├── services/ # 业务逻辑层 +│ │ │ │ ├── cache/ # 缓存服务 +│ │ │ │ ├── email/ # 邮件服务 +│ │ │ │ ├── image/ # 图片处理服务 +│ │ │ │ ├── storage/ # 存储服务 +│ │ │ │ ├── task/ # 任务服务 +│ │ │ │ ├── image_service.py +│ │ │ │ ├── task_service.py +│ │ │ │ ├── user_service.py +│ │ │ │ └── vip_service.py +│ │ │ ├── workers/ # RQ 任务队列处理 +│ │ │ │ ├── evaluate_worker.py +│ │ │ │ ├── finetune_worker.py +│ │ │ │ ├── heatmap_worker.py +│ │ │ │ └── perturbation_worker.py +│ │ │ ├── scripts/ # 算法执行脚本 +│ │ │ │ ├── attack_*.sh # 各类加噪攻击脚本 +│ │ │ │ ├── finetune_*.sh # 微调脚本 +│ │ │ │ └── eva_*.sh # 评估脚本 +│ │ │ └── utils/ # 工具类 +│ │ │ ├── file_utils.py +│ │ │ └── jwt_utils.py +│ │ ├── config/ # 配置文件 +│ │ │ ├── algorithm_config.py # 算法配置 +│ │ │ └── settings.py # 应用配置 +│ │ ├── app.py # Flask 应用入口 +│ │ ├── run.py # 启动脚本 +│ │ ├── worker.py # RQ Worker 启动 +│ │ ├── init_db.py # 数据库初始化 +│ │ ├── start.sh / stop.sh / status.sh # 服务管理脚本 +│ │ └── requirements.txt # Python 依赖 +│ └── frontend/ # 前端应用 +│ ├── public/ # 静态资源 +│ └── src/ # Vue 源码 +│ ├── api/ # API 接口 +│ ├── components/ # UI 组件库 +│ ├── router/ # 路由配置 +│ ├── stores/ # 状态管理 +│ ├── utils/ # 工具函数 +│ └── views/ # 页面视图 +└── README.md # 项目说明 +``` + +### 架构图 + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ 用户浏览器 │ +│ (Vue 3 SPA 应用) │ +└─────────────────────────────┬───────────────────────────────────┘ + │ HTTP/HTTPS + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ Vite 开发服务器 │ +│ (开发环境代理 /api) │ +│ localhost:5173 │ +└─────────────────────────────┬───────────────────────────────────┘ + │ 代理转发 + ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ Flask 后端服务 │ +│ localhost:6006 │ +│ ┌──────────────────────────────────────────────────────────┐ │ +│ │ Controllers (路由层) │ │ +│ │ ├── auth_controller 认证接口 │ │ +│ │ ├── user_controller 用户配置 │ │ +│ │ ├── task_controller 任务管理 │ │ +│ │ ├── image_controller 图片处理 │ │ +│ │ └── admin_controller 管理后台 │ │ +│ └──────────────────────────────────────────────────────────┘ │ +│ ┌──────────────────────────────────────────────────────────┐ │ +│ │ Services (业务层) + Repositories (数据层) │ │ +│ └──────────────────────────────────────────────────────────┘ │ +└───────────┬─────────────────────────────────┬───────────────────┘ + │ │ + ▼ ▼ +┌───────────────────────┐ ┌───────────────────────────────┐ +│ MySQL 数据库 │ │ Redis 缓存 │ +│ 用户/任务/图片数据 │ │ 会话/验证码/任务队列 │ +└───────────────────────┘ └───────────────┬───────────────┘ + │ + ▼ + ┌───────────────────────────────┐ + │ RQ Worker │ + │ 异步任务处理(加噪/微调) │ + └───────────────────────────────┘ +``` + +### 前后端连接方式 + +#### 开发环境 + +前端通过 Vite 代理转发 API 请求到后端: + +```javascript +// vite.config.js +server: { + port: 5173, + proxy: { + '/api': { + target: 'http://127.0.0.1:6006', // 后端服务地址 + changeOrigin: true + } + } +} +``` + +#### 生产环境(混合云架构) + +本项目的生产部署采用 **华为云 Flexus 实例(前端 & 网关)** 与 **AutoDL 算力容器(后端)** 的混合架构。由于算力容器通常位于内网且端口动态变化,通过 **SSH 隧道** 技术打通全链路通信。 + +**通信链路**: + +``` +用户 → 域名 → Nginx (:80) → 华为云 SSH 隧道 (8080) → AutoDL 容器 (6006) +``` + +**Nginx 反向代理配置**: + +```nginx +server { + listen 80; + server_name your-domain.com; + + # 前端静态文件 + location / { + root /path/to/frontend/dist; + try_files $uri $uri/ /index.html; + } + + # API 代理到后端(通过 SSH 隧道) + location /api/ { + proxy_pass http://127.0.0.1:8080; # 指向华为云本地隧道入口 + proxy_method $request_method; # 透传请求方法 + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # 文件上传大小限制 + client_max_body_size 50M; + } +} +``` + +**SSH 隧道建立**: + +```bash +# 在华为云服务器上执行,建立到 AutoDL 的 SSH 隧道 +sudo sshpass -p [密码] ssh -fN -L 8080:127.0.0.1:6006 -p [AutoDL端口] root@connect.cqa1.seetacloud.com +``` + +#### 技术要点 + +| 要点 | 说明 | +| ------------------------- | -------------------------------------------------------------------------------------------- | +| **跨域处理 (CORS)** | 利用 Nginx/Vite 反向代理将请求同源化,前端 Axios 统一使用相对路径 `/api` | +| **方法透传** | 通过 `proxy_method $request_method` 确保 POST/PUT/DELETE 等请求方法不丢失(避免 405 错误) | +| **路径截断控制** | `proxy_pass` 结尾不带斜杠,确保 `/api` 路径完整传递至后端(避免 404 错误) | + +#### 维护与连接更新 + +由于 AutoDL 实例重启后 SSH 端口会发生变化,更新连接时需执行以下步骤: + +1. 获取新的 AutoDL 连接指令(如 `-p 42750`) +2. 在华为云终端中 `kill` 掉旧的 SSH 隧道进程 +3. 执行新的隧道指令: + ```bash + sudo sshpass -p [密码] ssh -fN -L 8080:127.0.0.1:6006 -p [新端口] root@connect.cqa1.seetacloud.com + ``` + +### 数据流程 + +#### 图像防护流程 + +``` +用户上传图片 → 前端预处理(裁剪/缩放) → 后端接收存储 → 创建加噪任务 + ↓ +用户下载结果 ← 前端展示结果 ← 后端返回图片 ← RQ Worker 执行算法 +``` + +#### 效果验证流程 + +``` +选择加噪任务 → 创建微调任务 → RQ Worker 模拟训练 → 生成对比图 + ↓ + 创建评估任务 + ↓ + 计算 FID/LPIPS/SSIM/PSNR + ↓ + 生成评估报告 +``` + +### 认证机制 + +系统采用 JWT (JSON Web Token) 进行身份认证: + +1. 用户登录成功后,后端签发 `access_token` +2. 前端将 Token 存储在 `localStorage` +3. 后续请求在 Header 中携带 `Authorization: Bearer ` +4. 后端通过 `@jwt_required` 装饰器验证身份 + +```javascript +// 前端请求拦截器 (request.js) +config.headers['Authorization'] = `Bearer ${token}` +``` + +### 任务队列机制 + +耗时任务(加噪、微调、评估)通过 Redis + RQ 异步处理: + +1. 用户提交任务 → 后端创建任务记录(状态:`waiting`) +2. 任务入队 → RQ Worker 从队列取出执行 +3. 执行中更新状态为 `processing` +4. 完成后更新状态为 `completed` 或 `failed` +5. 前端每 5 秒轮询任务状态 + +--- + +## 功能模块 + +### 用户系统 + +- 用户注册(邮箱验证码验证) +- 用户登录/登出(JWT Token 认证) +- 密码修改、邮箱修改、用户名修改 +- 用户配置偏好保存 +- 管理员后台(用户管理、系统统计) + +### 图像防护 + +- **通用防护**:支持 ASPL、SimAC、CAAT、PID 等多种算法 +- **快速防护**:简化流程,使用默认配置快速处理 +- **专题防护**: + - 防定制生成:防止人脸被用于 AI 定制化生成 + - 防人脸编辑:防止人脸图像被 AI 编辑修改 + - 风格迁移防护:保护艺术作品免受风格模仿 +- **扰动强度自定义**:可调节 epsilon 值控制扰动程度 +- **批量处理**:支持多图片同时上传处理 + +### 效果验证 + +- **微调测试**:模拟 DreamBooth/LoRA 微调过程,验证防护效果 +- **质量评估**:FID、LPIPS、SSIM、PSNR 等指标计算 +- **热力图分析**:可视化原始图与加噪图的差异区域 +- **3D 训练轨迹**:可视化微调过程中的参数变化 + +### 任务管理 + +- 任务创建与配置 +- 实时状态监控 +- 任务配额管理 +- 结果下载(支持批量打包) +- 历史记录查询 + +--- + +## 防护算法 + +### 通用防护算法 + +| 算法 | 说明 | 适用场景 | +| -------- | ------------------------------------ | -------------------- | +| ASPL | Advanced Semantic Protection Layer | 通用语义保护 | +| SimAC | Simple Anti-Customization Method | 人脸隐私保护 | +| CAAT | Cross-Attention Adversarial Training | 注意力机制干扰 | +| CAAT Pro | CAAT with Prior Preservation | 增强版,保留类别数据 | +| PID | Prompt-Independent Data Protection | 提示词无关保护 | +| Glaze | Style Mimicry Protection | 风格迁移防护 | + +### 专题防护算法 + +| 算法 | 说明 | 数据类型 | +| ------------ | ----------------------------- | -------------- | +| 防定制生成 | Anti-Customization Generation | 人脸数据集 | +| 防人脸编辑 | Anti-Face-Editing | 人脸数据集 | +| 风格迁移防护 | Style Transfer Protection | 艺术作品数据集 | + +### 风格迁移预设 + +- 梵高印象派 (van_gogh) +- 康定斯基抽象派 (kandinsky) +- 毕加索立体派 (picasso) +- 巴洛克风格 (baroque) + +--- + +## API 概览 + +### 接口规范 + +- **基础路径**:所有 API 以 `/api` 为前缀 +- **认证方式**:JWT Token,请求头携带 `Authorization: Bearer ` +- **响应格式**:统一 JSON 格式 +- **状态码**:`200` 成功 / `201` 创建成功 / `400` 参数错误 / `401` 未认证 / `403` 无权限 / `404` 不存在 / `500` 服务器错误 + +### 核心接口 + +| 模块 | 接口 | 方法 | 说明 | +| ----- | ----------------------------------------- | ---- | ------------------ | +| Auth | `/api/auth/login` | POST | 用户登录 | +| Auth | `/api/auth/register` | POST | 用户注册 | +| Auth | `/api/auth/code` | POST | 发送邮箱验证码 | +| Auth | `/api/auth/profile` | GET | 获取用户信息 | +| Task | `/api/task` | GET | 获取任务列表 | +| Task | `/api/task/quota` | GET | 获取任务配额 | +| Task | `/api/task/perturbation` | POST | 创建加噪任务 | +| Task | `/api/task/finetune/from-perturbation` | POST | 创建微调任务 | +| Task | `/api/task/evaluate` | POST | 创建评估任务 | +| Task | `/api/task/heatmap` | POST | 创建热力图任务 | +| Image | `/api/image/perturbation/` | GET | 获取加噪结果图片 | +| Image | `/api/image/perturbation//download` | GET | 下载加噪结果 | +| Admin | `/api/admin/users` | GET | 用户管理(管理员) | +| Admin | `/api/admin/stats` | GET | 系统统计(管理员) | + +### 详细文档 + +- 完整 API 文档:[doc/project/02-设计文档/backend-api.md](doc/project/02-设计文档/backend-api.md) +- 后端开发文档:[src/backend/README.md](src/backend/README.md) +- 前端开发文档:[src/frontend/README.md](src/frontend/README.md) + +--- + +## 部署与开发指南 + +### 环境要求 + +- Python >= 3.8 +- Node.js >= 16.x +- MySQL >= 5.7 +- Redis >= 6.0 + +### 环境准备(Linux) + +```bash +# 安装系统依赖 +sudo apt update +sudo apt install -y build-essential python3 python3-venv python3-pip git + +# 安装 MySQL +sudo apt install -y mysql-server +sudo systemctl enable mysql +sudo systemctl start mysql + +# 创建数据库 +mysql -u root -p +CREATE DATABASE museguard DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +EXIT; + +# 安装 Redis +sudo apt install -y redis-server +sudo systemctl enable redis-server +sudo systemctl start redis-server +``` + +### 后端部署 + +```bash +cd src/backend + +# 创建虚拟环境 +python -m venv venv +source venv/bin/activate + +# 安装依赖 +pip install -r requirements.txt +``` + +**配置环境变量** + +在 `src/backend/config/` 目录下创建 `settings.env` 文件: + +```env +# 数据库配置 +DB_USER=root +DB_PASSWORD=your_password +DB_HOST=localhost +DB_NAME=museguard + +# JWT 密钥 +SECRET_KEY=your-secret-key +JWT_SECRET_KEY=your-jwt-secret + +# Redis 配置 +REDIS_URL=redis://localhost:6379/0 + +# 邮件服务配置 +MAIL_SERVER=smtp.qq.com +MAIL_PORT=465 +MAIL_USE_SSL=true +MAIL_USERNAME=your_email@qq.com +MAIL_PASSWORD=your_email_auth_code +``` + +**启动服务** + +```bash +# 初始化数据库 +python init_db.py + +# 启动 Flask 应用 (端口 6006) +python run.py + +# 启动 RQ Worker (另开终端) +python worker.py + +# 或使用脚本管理 +./start.sh # 启动服务 +./status.sh # 查看状态 +./stop.sh # 停止服务 +``` + +### 前端部署 + +```bash +cd src/frontend + +# 安装依赖 +npm install + +# 开发模式 +npm run dev # Vite 开发服务器 (端口 5173) + +# 生产构建 +npm run build # 产物在 dist/ 目录 +``` + +### Nginx 配置(生产环境) + +```nginx +server { + listen 80; + server_name your-domain.com; + + # 前端静态文件 + location / { + root /path/to/MuseGuard/src/frontend/dist; + index index.html; + try_files $uri $uri/ /index.html; + } + + # API 反向代理 + location /api { + proxy_pass http://127.0.0.1:6006; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # 文件上传大小限制 + client_max_body_size 50M; + } +} +``` + +### 代码规范 + +- 后端遵循 PEP 8 规范 +- 前端遵循 Vue 3 官方风格指南 +- 提交信息遵循 Conventional Commits + +### 分支管理 + +- `main`:主分支,稳定版本 +- `develop`:开发分支 +- 个人分支:各成员独立开发分支 + +--- + +## 项目文档 + +| 文档类型 | 位置 | 说明 | +| -------- | ------------------------------------------------- | ---------------------------------------- | +| 需求文档 | [doc/project/01-需求文档/](doc/project/01-需求文档/) | 需求规格说明书、用例文档、前景与范围文档 | +| 设计文档 | [doc/project/02-设计文档/](doc/project/02-设计文档/) | 数据库设计文档、API 设计文档 | +| 计划文档 | [doc/project/03-计划文档/](doc/project/03-计划文档/) | 迭代开发计划 | +| 过程文档 | [doc/process/weekly/](doc/process/weekly/) | 周报与周计划 | + +--- + +## 贡献者 + +**团队名称**:软件2302班-深度思考 + +| 成员 | 贡献 | +| ------ | ------------------------------------ | +| 胡帆 | 项目负责人(PM)、算法研究、模型微调 | +| 金郅博 | 前端开发、文档撰写 | +| 梁浩 | 后端开发、算法实现 | +| 杨博文 | 文档撰写、后端开发 | +| 杨逸轩 | 前端开发、文档撰写 | + +--- + +## 鸣谢与引用 (Acknowledgements & Citations) + +本项目在开发过程中集成了多项前沿学术成果与社区资源。我们对以下贡献者表示由衷的感谢。 + +### 学术研究引用 + +如果您在研究中使用了本项目集成的防御算法,请根据对应模块引用下列论文: + +#### Anti-DreamBooth (ICCV 2023) + +*针对个性化训练过程的对抗性干扰方案。* + +```bibtex +@inproceedings{le2023anti, + title={Anti-DreamBooth: Protecting Users from Personalized Text-to-Image Synthesis}, + author={Le, Thanh Van and Phung, Hao and Nguyen, Thuan Hoang and Dao, Quan and Tran, Ngoc N and Tran, Anh}, + booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)}, + pages={2116--2127}, + year={2023} +} +``` + +#### Glaze (USENIX Security 2023) + +*通过风格遮蔽保护艺术作品免受风格仿冒。* + +```bibtex +@inproceedings{shan2023glaze, + title={Glaze: Protecting Artists from Style Mimicry by Text-to-Image Models}, + author={Shan, Shawn and Cryan, Jenna and Wenger, Emily and Zheng, Haitao and Hanocka, Rana and Zhao, Ben Y}, + booktitle={32nd USENIX Security Symposium (USENIX Security 23)}, + pages={2187--2204}, + year={2023} +} +``` + +#### SimAC (CVPR 2024) + +*针对扩散模型人脸隐私保护的高效反定制化方法。* + +```bibtex +@inproceedings{wang2024simac, + title={SimAC: A Simple Anti-Customization Method for Protecting Face Privacy against Text-to-Image Synthesis of Diffusion Models}, + author={Wang, Feifei and Tan, Zhentao and Wei, Tianyi and Wu, Yue and Huang, Qidong}, + booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision (CVPR)}, + pages={12656--12666}, + year={2024} +} +``` + +#### PID (ICML 2024) + +*提示词无关的潜空间防御技术。* + +```bibtex +@inproceedings{li2024pid, + title={PID: Prompt-Independent Data Protection Against Latent Diffusion Models}, + author={Li, Ang and Mo, Yichuan and Li, Mingjie and Wang, Yisen}, + booktitle={International Conference on Machine Learning (ICML)}, + year={2024} +} +``` + +#### CAAT (CVPR 2024) + +*关于对抗性扰动在 Stable Diffusion 场景下的有效性研究。* + +```bibtex +@inproceedings{zhao2024can, + title={Can Protective Perturbation Safeguard Personal Data from Being Exploited by Stable Diffusion?}, + author={Zhao, Zhengyue and Duan, Jinhao and Xu, Kaidi and Wang, Chenan and Zhang, Rui and Du, Zidong and Guo, Qi and Hu, Xing}, + booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision (CVPR)}, + pages={12571--12581}, + year={2024} +} +``` + +### 资源与素材来源 + +* **艺术插画**:本项目登录/注册页面背景的插画作品由日本艺术家 **ohuton** 创作(X/Twitter ID: [@nyr50ml](https://twitter.com/nyr50ml)),版权归原作者所有。 +* **样例数据**:部分用于演示和测试的防御样本图像来源于上述各论文的公开或自制图片组。 +* **交互动效**:部分前端动画效果灵感源自 [Vuebits UI](https://vue-bits.dev/),并在此基础上进行了深度定制。 +* **代码辅助**:代码构建与逻辑优化过程中使用了 **Claude**、**Gemini** 及 **GPT** 系列大语言模型的辅助支持。 + +--- + +## 许可证 (License) + +本项目采用 **MIT License** 开源许可协议。 + +``` +MIT License + +Copyright (c) 2025 深度思考队 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` + +**注意**:本项目集成的各防护算法版权归原作者所有,使用时请遵循相应论文的引用要求。本项目仅用于学习和研究目的。 diff --git a/doc/process/weekly/week-04/group/meeting-minutes-03.md b/doc/process/weekly/week-04/group/meeting-minutes-03.md new file mode 100644 index 0000000..c884834 --- /dev/null +++ b/doc/process/weekly/week-04/group/meeting-minutes-03.md @@ -0,0 +1,145 @@ +# 小组会议纪要-第3周(需求获取与技术任务安排) + +会议记录概要 +------ + +团队名称: 2班-深度思考 + +指导老师: 刘琴 + +主 持 人: 杨博文 + +记录人员: 杨逸轩 + +会议主题: 对抗性防护系统需求确认与技术任务分解 + +会议地点: 软件大楼105 + +会议时间: 2025-10-09 16:30-17:15 + +纪录时间: 2025-10-09 22:00 + +参与人员: 胡帆、杨逸轩、杨博文、金郅博、梁浩 + +* * * + +会议内容 +---- + +### 1. 需求获取与系统目标确认 + +与项目指导人员邹益鹏博士面对面沟通确定项目核心需求:开发一个基于对抗性扰动的多风格图像生成防护系统,Web 应用。 + +(1)系统目标: 通过生成人类视觉不可感知的对抗性扰动,破坏 DreamBooth、LoRA 等个性化生成模型的训练过程,防止原始图像风格被未授权模仿与复制。 + +(2)核心功能: 防护处理、效果可视化、跨模态生成质量对比分析功能。 + +(3)技术要求: 系统需支持至少三种以上保护性扰动添加方法,并支持扰动预算自定义。 + +(4)模型与数据要求 : + +* 加噪算法: 需复现并实现3种以上加噪算法。 + +* 数据集: 针对人脸、艺术品等多类图像,争取实现3 种以上数据集的加噪与评估(至少实现人脸数据集的处理)。 + +* 强保护(选做): 需实现强保护机制,即使用净化方法后仍能保持保护作用。 + +(5)评估指标: 需评估加噪后图片用于个性化生成的质量(越差越好),并使用 FID、FDSR 等至少四个指标衡量加噪后图像质量。 + +(6)前端页面: 需实现防护处理界面(包含扰动参数自定义)、效果可视化界面、以及生成质量对比分析界面等主要前端页面。 + +(7)加噪量化分析(选做): 需实现加噪后图片的量化分析,主要是图像的能量特点、频域分布、方差分布等。 + +### 2. 项目分工与具体任务安排 + +根据项目需求和技术栈(前端 Vue,后端 Flask,模型),细化任务并分配角色: + +(1)项目主要分工方面: + +* 项目开发(架构、代码编写) + +* 项目测试(BUG 统计、修改) + +* 项目管理(进度控制、文档管理等) + +(2)角色分配: + +* 项目经理:胡帆 + +* 开发主管:胡帆 | 开发人员:全体成员 + +* 测试主管:金郅博 | 测试人员:全体成员 + +* 前端开发人员(Vue): 金郅博、杨逸轩 + +* 后端开发人员(Flask): 梁浩、胡帆、杨博文 + +* 模型/算法开发人员(对抗性扰动/训练/评估): 梁浩、胡帆 + +(3)下周(第4周)具体任务初步安排: + +* 技术调研: 各自负责领域(Vue/Flask/对抗性扰动核心论文)基础知识学习与资料收集。 + +* 需求文档: 根据本次会议结果,撰写《需求规格说明书》初稿。 + +* 开发环境: 确定前后端开发工具(VScode/PyCharm 等)和版本控制工具(Git)并完成环境配置。 + +* 接口初拟: 前端、后端和模型接口人员初步沟通核心功能所需的数据格式和 API 规范。 + +### 3. 讨论确定开发工具与框架 + + **开发工具**: + +* 前端框架:Vue 3 + +* 后端框架:Flask + +* 前端开发工具:VScode + +* 后端开发工具:PyCharm + +### 4. 讨论过程 + +需求获取与核心功能确认环节充分讨论了加噪算法选择、评估指标(FID/FDSR)以及强保护的实现路径。组员初步明确了各自在前端、后端、模型方面的学习重点。 + +* * * + +问题总结 +---- + +### 已解决问题: + +1. 明确了项目核心需求(对抗性扰动防护)及技术栈(Vue/Flask)。 + +2. 确定了项目分工及例会时间(星期一下午 4:10)。 + +3. 确定了主要开发工具。 + +### 待解决问题: + +1. **原型界面设计:** 需要根据核心功能(防护、可视化、对比)**设计至少三个以上**原型界面。 + +2. **技术深度学习:** 全体成员需尽快完成各自领域(Vue/Flask/对抗性扰动)基础知识的深入学习,并开始阅读核心论文。 + +3. **模型与算法:** 确定并分配 **3 种以上**加噪算法的具体复现任务,并细化评估指标的实现细节。 + +* * * + +小组协作情况总结 +-------- + +1. **协作情况:** 小组成员之间相互沟通,讨论热情高,对项目前景积极。 + +一周纪律情况总结 +-------- + +1. **纪律情况:** 小组纪律良好,考勤时全员到齐。 + +* * * + +备注 +-- + +1. 项目目前的重点在于**核心算法论文的理论学习**和**前后端框架的快速上手**。 + +2. 记录自己做项目的过程,遇到的问题互相讨论,找到好的学习资源互相分享。 diff --git a/doc/process/weekly/week-04/group/meeting-minutes-04.md b/doc/process/weekly/week-04/group/meeting-minutes-04.md new file mode 100644 index 0000000..cfe3bcd --- /dev/null +++ b/doc/process/weekly/week-04/group/meeting-minutes-04.md @@ -0,0 +1,113 @@ +# 小组会议纪要 - 第4周 + +## 会议记录概要 + +- **团队名称**:2班-深度思考 +- **指导老师**:刘琴 +- **主持人**:胡帆 +- **记录人员**:杨博文、杨逸轩 +- **会议主题**:项目总览、第四周任务安排 +- **会议地点**:复临舍401教室 +- **会议时间**:2025-10-13 16:00–16:30 +- **记录时间**:2025-10-13 20:00 +- **参与人员**:胡帆、杨逸轩、杨博文、金郅博、梁浩 + +## 会议内容 + +### 1. 项目总览 + +PM 胡帆介绍了项目的整体规划,内容如下: + +#### (1)时间安排(共12个有效工作周) +- **第一个月(第4–7周)**:完成细分领域扫盲与入门。前两周掌握基础概念,后两周精读论文并初步跑通代码、算法和基础模型。重点完成一级链路。 +- **第二个月(第8–11周)**:完成全链路应用程序原型与基础模型训练,实现所有必需功能(抓大放小)。重点完成二级链路。 +- **第三个月(第12–16周)**:开展系统测试、Bug排查,并推进进阶与拓展功能。争取完成三级链路。 + +> 注:团队无AI相关经验,建议直接针对工程需求学习,不从通用机器学习基础起步。 + +#### (2)需求链路说明 +- **一级链路(9种)**:基础功能,需在第1–2月完成训练,并在前端**实时推理展示**(预置9个“受毒模型”)。 +- **二级链路(27种 = 3×9)**:第2月完成,前端仅需**静态样例展示**。 +- **三级链路(更多)**:第3月尽量完成,同样仅需**静态展示**。 + +#### (3)功能层级示例(依据周计划) + +| 层级 | 数据集 | 噪声强度 | 加噪算法 | 防净化 | 微调方式 | +|------|--------|----------|----------|--------|----------| +| 基础功能 | 人脸 | 中等 | 三种 | 无 | LoRA、DreamBooth、文本反转 | +| 进阶功能 | 艺术作品、油画 | 无 | 无 | 无 | 无 | +| 拓展功能 | 无 | 小、大 | 一种 | 有 | 无 | + +#### (4)人员分工 + +| 角色 | 成员 | 主要职责 | +|------|------|----------| +| **前端** | 金郅博(负责)、杨逸轩 | 页面交互、图表、3D可视化 | +| **后端** | 梁浩(负责)、杨博文 | 后端框架、噪声生成器、API接口 | +| **模型** | 胡帆(负责)、杨博文 | 模型微调、训练、评估 | +| **文书** | 杨博文(负责)、杨逸轩 | 文档撰写与维护 | + + +#### (5)关键里程碑 +- **第10周**:完成模型与后端对接,进行小测试。 +- **第11周**:完成前后端全链路集成,进行大测试 —— **V1.0 完成**。 +- **第16周**:完成全部拓展功能与整合测试 —— **V2.0 完成**。 +- **第17周**:项目验收。 + +> 前端需在 V1.0 前明确最终展示形式,并与 PM 充分沟通。V1.0 后重点推进 3D 可视化。 + +### 2. 第四周任务安排 + +#### (1)前端组 +- **金郅博**:快速学习 HTML、CSS、JS、Vue、Vite,确定基本美术风格。 +- **杨逸轩**:协助前端学习与原型准备。 + +#### (2)后端组 +- **梁浩**:学习 Flask 框架及后端基础知识,开始阅读相关论文。 +- **杨博文**:协助后端工作,并同步参与文书任务。 + +#### (3)模型组 +- **胡帆**:学习大模型相关知识;掌握 GPU 训练方法。 +- **杨博文**:协助模型组工作。 + +#### (4)文书组 +- **杨博文、杨逸轩**: + - 完成《用例文档》《需求规格说明书》第一稿(需与前后端对接); + - 完成《迭代开发计划》第一稿(需与 PM 对接)。 +- 本周文书任务为优先事项,其他辅助工作次之。 + +### 3. 工具与流程确认 + +- **原型工具**:墨刀(用于第7周班会前的界面原型) +- **开发工具**: + - 前端:VS Code + - 后端:PyCharm +- **例会时间**:每周一 16:00–16:30 +- **讨论时间**:遇到问题直接在群中沟通,不安排固定时间 +- **开发安排**:个人灵活安排,组内协商协作 + +### 4. 讨论过程 + +PM 主讲项目规划 PDF,组员记录并就任务分工、时间节点、工具选择等进行讨论,达成一致。 + +## 问题总结 + +### 已解决问题 +- 明确项目三阶段时间安排与目标; +- 确定人员分工与职责边界; +- 确认原型开发工具为“墨刀”。 + +### 待解决问题 +- 学习前后端及模型相关技术; +- 撰写三份核心文档初稿; +- 确定后端 Flask 学习资源。 + +## 小组协作与纪律 + +- **协作情况**:良好,成员积极沟通,讨论充分。 +- **纪律情况**:全员准时参会,无缺勤。 + +## 备注 + +- 项目当前重点:掌握开发工具与核心技术知识,文书完成相关文档。 +- 建议成员记录学习与开发过程,形成内部手册,便于文书组后续整理。 \ No newline at end of file diff --git a/doc/process/weekly/week-04/group/weekly-plan-04.md b/doc/process/weekly/week-04/group/weekly-plan-04.md new file mode 100644 index 0000000..d2124e0 --- /dev/null +++ b/doc/process/weekly/week-04/group/weekly-plan-04.md @@ -0,0 +1,34 @@ +# 小组周计划-第4周 + +团队名称和起止时间 +--------- + +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-13 +**结束时间:** 2025-10-19 + +## 本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| ---- | ------------------------------ | --------------- | :----------------------------------------------------------- | +| 1 | **项目启动会议** | 全体成员 | 2025-10-13,召开首次小组会议,明确项目初步分工(角色/技术方向)和规划。 | +| 2 | **会中:需求确认** | 负责人 | 总结与项目负责的老师的沟通,初步确定关于“对抗性扰动的多风格图像生成防护系统”的详细功能、性能与非功能需求。 | +| 3 | **会中:分工和规划** | 全体成员 | 确认各自的负责模块,并针对各自负责方向(前端/后端/模型),分享高质量学习资源(如Vue教程、Flask文档、对抗性扰动论文等)。 | +| 4 | **会后:撰写个人周计划** | 全体成员 | 根据会中讨论以及总计划,各人撰写说明自己本周的分工,于10.13晚之前提交。 | +| 5 | **会后:撰写会议纪要** | 文档组 | 根据会议内容和进度,撰写本次会议纪要,内容需要详细、真实,避免假大空,于10.13晚之前提交。 | +| 6 | **知识初步学习** | 全体成员 | 完成对各自负责领域(Vue/Flask/对抗性扰动基础)的初步学习。
前端组:浅显了解整个项目的基本概念;入门学习html、css、js。
后端组:入门学习模型(如 diffusion),微调(lora、文本反转、DreamBooth等),如何训练模型及相关概念。 | +| 7 | **撰写个人周总结和项目周总结** | 全体成员/负责人 | 全体成员根据本周实际执行情况,撰写个人周总结并上传,PM根据每个人完成情况以及项目实际进度,撰写并提交小组周总结,10.18晚前提交。 | +| 8 | **撰写项目需求文档** | 负责人/文档组 | 整理需求调研结果,完成用例文档、需求规格说明第一稿(对接前端和后端)、完成迭代开发计划第一稿(对接PM),10.19晚前提交。 | + +小结 +-- + +1. **统一目标:** 小组成员已对项目目标和技术方向达成共识,并明确了第一阶段的任务重点是**需求获取和技术准备**。 + +2. **沟通协作:** 保持积极主动的沟通,遇到技术难题及时通过小组会议进行讨论和解决。 + +3. **学习安排:** 全体成员需尽快完成各自领域的基础知识学习,为下周的原型设计和环境搭建工作做好铺垫。 + +4. **项目管理:** PM和文档组需确保所有关键文档(如需求初稿、环境配置)按时产出,推动项目按计划启动。 diff --git a/doc/process/weekly/week-04/members/.gitkeep b/doc/process/weekly/week-04/members/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/doc/process/weekly/week-04/members/hufan-weekly-plan-04.md b/doc/process/weekly/week-04/members/hufan-weekly-plan-04.md new file mode 100644 index 0000000..1afe16e --- /dev/null +++ b/doc/process/weekly/week-04/members/hufan-weekly-plan-04.md @@ -0,0 +1,32 @@ +# 个人周计划-第4周 + +姓名和起止时间 +------- + +姓  名: 胡帆 + +团队名称: 2班-深度思考 + +开始时间: 2025-10-12 + +结束时间: 2025-10-18 +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ------------------------------ | ------ | ------------------------------------------------------------ | +| 1 | **系统核心技术理论学习** | 个人 | 学习对抗性扰动在图像生成模型(Diffusion Model)防护方面的知识课程,入门基础的技术原理。了解Transformer架构和LLM模型运作基本原理。 | +| 2 | **统筹进度和职责** | 组员 | 明确需求,针对所有成员的分工,对周计划进行核验和落实。确保前后端对齐和进度同步。 | +| 3 | **了解图像质量指标和微调方法** | 个人 | 学习LoRA原理、DreamBooth、文本反转等微调方法原理,了解FID、CLIP、KL散度等概念。 | +| 5 | **初步预备实践** | 个人 | 学习如何利用GPU实操微调大模型,在网上寻找练手的小项目来预演练手。 | +| 6 | **协调文档撰写** | 组员 | 作为项目负责人,协助文书负责板块的同学,对接并辅助完成需求文档、开发计划等的撰写。 | + +小结 +-- + +1. **学习需求:** 希望初步完成针对的LLM微调,尤其是Diffusion Model方面的入门学习。 + +2. **任务统筹:** 明确项目需求,统筹任务分配。 + +3. **预备实践:** 在初步原理学习后,利用GPU资源完成对**模型-微调**任务的实际操作流程上手。 diff --git a/doc/process/weekly/week-04/members/jinzhibo-weekly-plan-04.md b/doc/process/weekly/week-04/members/jinzhibo-weekly-plan-04.md new file mode 100644 index 0000000..7627ebc --- /dev/null +++ b/doc/process/weekly/week-04/members/jinzhibo-weekly-plan-04.md @@ -0,0 +1,37 @@ +# 个人周计划-第4周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-10-13 + +**结束时间:** 2025-10-19 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ------------------------------ | ------ | ------------------------------------------------------------ | +| 1 | **初步规划前端开发时间节点** | 个人 | 结合小组安排,初步梳理前端工作脉络,规划前端开发任务的时间节点 | +| 2 | **前端技术快速入门** | 个人 | 快速且系统地学习 HTML、CSS、TypeScript、Vue 3、Vite,重点掌握 Vue 组件化开发和基础语法 | +| 3 | **初步设计前端页面的基本框架** | PM | 与PM协商初步确定前端页面的基本框架,包括美术风格的选取与各个模块ui的大致内容与交互设计 | +| 4 | **前后端数据接口规范初步拟定** | 组员 | 与后端/模型组沟通,明确防护处理、可视化、质量对比等功能所需的数据接口格式与参数规范 | + + + +小结 +-- + +1. **学习需求:** 希望能系统完成前端技术语言速成,尽量独立编写前端demo + +2. **知识储备:** 完成前端开发学习,同时可以学习其他现有产品前端的设计模式与美术风格,为后续实现作为参考 + +3. **框架搭建:** 确认项目的功能和用户需求,对前端页面进行初步框架设计,确定美术风格,细化各个模块ui的内容与交互设计 \ No newline at end of file diff --git a/doc/process/weekly/week-04/members/lianghao-weekly-plan-04.md b/doc/process/weekly/week-04/members/lianghao-weekly-plan-04.md new file mode 100644 index 0000000..a1c8b89 --- /dev/null +++ b/doc/process/weekly/week-04/members/lianghao-weekly-plan-04.md @@ -0,0 +1,24 @@ +# 个人周计划-第4周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-13 +**结束时间:** 2025-10-19 + + +## 本周任务计划安排 + +| 序号 | 计划内容| 协作人 | 情况说明 | +| ----| ------ | ------| ------- | +| 1 | 复习python语法 | 个人 | 本周内用一天时间复习python语法,熟悉在python中使用面向对象 | +| 2 | 学习flask框架 | 个人 | 本周持续学习Flask后端框架,构建简单的Web应用demo | +| 3 | 阅读对抗性扰动相关论文 | 胡帆 | 搜寻对抗性扰动相关论文,进行阅读,通过资料搜寻和与PM交流快速加深不熟悉概念的了解,为后续复现噪声生成器做好准备 | + +## 小结 + +1. **学习需求:** 希望能有系统的模型应用速成教学; +2. **知识储备:** 提前学习生成对抗性扰动的相关知识,为后续的噪声生成器开发做准备; +3. **文档撰写:** 学习用例文档的撰写,为后续数据库文档的编写和 `UML` 图的绘制做好准备; + diff --git a/doc/process/weekly/week-04/members/yangbowen-weekly-plan-04.md b/doc/process/weekly/week-04/members/yangbowen-weekly-plan-04.md new file mode 100644 index 0000000..78888ab --- /dev/null +++ b/doc/process/weekly/week-04/members/yangbowen-weekly-plan-04.md @@ -0,0 +1,25 @@ +# 个人周计划-第4周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-13 +**结束时间:** 2025-10-19 + + +## 本周任务计划安排 + +| 序号 | 计划内容| 协作人 | 情况说明 | +| ----| ------ | ------| ------- | +| 1 | 确定项目整体布局 | PM | 第一个月要完成基础知识的扫盲入门 | +| 2 | 完成文档书写 | 杨逸轩 | 对接前后端,完成用例文档、需求规格说明第一稿,完成迭代开发计划第一稿 | +| 3 | 完成周计划的总体安排 | 杨逸轩 | 根据PM给出的计划图,大致完善后续周的计划并进行审核 | + +## 小结 + +1. **学习需求:** 希望能有系统的模型应用速成教学; +2. **知识储备:** 提前学习后续需要使用的知识,为后续的后端开发做准备; +3. **文档撰写:** 尽快完成用例文档、需求规格说明、迭代开发计划,为后续开发提供参考,降低改错成本。 + +--- \ No newline at end of file diff --git a/doc/process/weekly/week-04/members/yangyx-weekly-plan-04.md b/doc/process/weekly/week-04/members/yangyx-weekly-plan-04.md new file mode 100644 index 0000000..4f60f3c --- /dev/null +++ b/doc/process/weekly/week-04/members/yangyx-weekly-plan-04.md @@ -0,0 +1,33 @@ +# 个人周计划-第4周 + +姓名和起止时间 +------- + +姓  名: 杨逸轩 + +团队名称: 2班-深度思考 + +开始时间: 2025-10-12 + +结束时间: 2025-10-18 +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --- | --------------- | ----- | --------------------------------------------------------------------------------------- | +| 1 | 确定分工 | 组员/个人 | 确认每周组会时间,并根据指导老师需求细化分工。本人需要撰写《需求规格说明书》初稿。 | +| 2 | **前端技术栈深度学习** | 个人 | 针对HTML、CSS、JS、VUE等进行专项学习,重点掌握Vue组件化开发、前端开发基础。 | +| 3 | **前后端数据接口规范初拟** | 组员 | 与后端/模型组员(如负责Flask后端和模型接口的组员)沟通,根据核心功能(防护处理、效果可视化、质量对比)初步确定前端所需的数据接口(API)规范(如数据格式、参数定义)。 | +| 4 | **Web应用原型设计细化** | 个人 | 学习参考glaze网站,细化Web应用中**防护处理**界面的原型设计,特别是扰动参数自定义(如扰动预算 设置)的UI交互设计。初步确定设计前端界面的美术风格。 | + +小结 +-- + +1. **学习需求:** 希望能有针对**Vue/Flask前后端分离架构下的数据交互与API设计**的教学或讲座; + +2. **知识储备:** 完成前端开发学习,为**前端VUE开发**任务打下理论基础,完成前端关键技术的初步掌握; + +3. **文档撰写:** 学习需求文档的撰写。 + + diff --git a/doc/process/weekly/week-05/group/meeting-minutes-05.md b/doc/process/weekly/week-05/group/meeting-minutes-05.md new file mode 100644 index 0000000..0e8d8e1 --- /dev/null +++ b/doc/process/weekly/week-05/group/meeting-minutes-05.md @@ -0,0 +1,95 @@ + +# 小组会议纪要-第5周 + +## 会议记录概要 + +**团队名称**:2班-深度思考队 +**指导老师**:刘琴 +**主持人**:胡帆 +**记录人员**:杨博文 +**会议主题**:原型开发、任务协调、上周总结 +**会议地点**:线下会议(中楼休息室) +**会议时间**:2025-10-20 16:10-16:40 +**记录时间**:2025-10-20 17:40 +**参与人员**:胡帆、金郅博、杨逸轩、杨博文、梁浩 + +## 会议内容 + +### 1. 项目整体进展与核心问题 + +会议首先由 PM 汇报当前项目整体状态。当前系统架构为:前端负责展示界面(类似 PPT 式交互),上传图片,后端调用大模型执行加噪任务。本项目的主要瓶颈在于**前端缺乏可交互的展示效果**,根源是**模型部分交互性弱**,用户每次需要给照片加噪时,都只能干等20min左右,无法提供有效反馈。 + +为解决该问题,PM决定参考 **华为云/AotuDL官网**等云服务器租用平台的页面设计,即类似于以下的设计: + +- 网站分为展示页面、任务页面和我的页面 +- 1.展示页面负责静态介绍和动画演示 +- 2.任务页面中,用户上传需要加载的图片,并选择对应的任务,提交到云服务器运行 +- 用户提交任务后,可以在任务页面查看运行进度和状态。并且用户只能看到自己的任务。 +- 3.我的页面中,用户可以进行账号管理等操作 +- 用户必须注册登录才能进入任务页面和我的页面,否则只能查看展示页面 +- 任务运行期间,用户可以随意离开网站,云服务器会自动运行。 +- 任务执行完成后,服务器会自动保存加噪好的照片到我的页面,用户再次登录时,即可统一取走。 +- 云服务器端运行任务的调度策略,按 **以任务为单位的 FIFO 排队执行**(受限于算力,暂时无法并行处理多个任务); + +该方案兼顾用户体验与资源限制,获得全体成员一致认可。 + +### 2. 开发规范与协作机制 + +会议重申并明确了以下开发与协作规范: + +- **代码提交规范**:所有成员须在个人分支开发,每周通过 Pull Request(PR)合并至 `develop` 分支。PR 描述需遵循规范: + - 提交描述中,`docs` 等描述类型不可省略; + - 提交描述中,不使用中文标点、句末不加句号,所有符号使用英文格式。 + - 提交步骤必须严格按照协作开发文档进行 + - 提交前后,必须在群聊中拿锁放锁,确保所有人提交时不会冲突 + - 个人开发流程以协作文档的 3.1 节为准,也就是在个人分支上做任务,然后提PR合并到 develop 。 + - 提PR之前,请确保没有不小心更改别人的代码,也就是确保 `git add` 只作用在自己的工作区,任何时候都不允许偷懒使用 `git add .`这种模糊命令。 + - 除了文档,其他更改严禁直接 push 到 develop。 +- **分支管理**:开发前需先 `pull` 最新 `develop` 分支,避免因长期未同步导致冲突。 +- **文档管理**:禁止直接修改历史文档,所有计划调整应通过新增方式体现,已有文档过了当周后,原则上不再修改。 +- **敏捷开发**:鼓励参考别人的实现范例,优先实现最小可用版本(MVP),再根据反馈持续迭代。 +- **沟通机制**:任何成员如有新想法或技术疑问,应第一时间与 PM 或相关负责人沟通,确保信息同步。 + +### 3. 本周任务安排(2025-10-20 至 2025-10-26) + +| 序号 | 计划内容 | 执行人 | 详细说明 | +|------|--------------------------|------------------|----------| +| 1 | 原型迭代 | 前端组 | 10-20 至 10-21:基于第四周确定的美术风格,使用墨刀开发快速示例页面;10-22 与 PM 或指导老师进行首轮评审;10-23 至 10-24:依据反馈使用 Vue3 + Vite 开发可点击 Demo;10-25 进行第二轮评审;10-26 前汇总修改意见并锁定最终原型。 | +| 2 | 数据库与 UML 设计 | 后端组 + 文书 | 10-20 至 10-22:完成数据库初步设计(含 ER 图、字段定义、索引策略);10-23 与 PM 评审;10-24 起绘制 UML 用例图与时序图;10-26 前提交最终版文档。若任务过重,允许少量内容顺延至下周。 | +| 3 | 论文阅读与代码复现 | 模型组 | 10-20 至 10-23:精读指定两篇噪声生成论文,梳理核心原理;10-24 至 10-25:在 AutoDL 平台租用服务器,配置环境并调整超参数,尝试复现核心代码;10-26 前完成代码细节理解与笔记整理(可作为提交材料,非强制)。 | +| 4 | 前后端辅助人员 | 杨逸轩、杨博文 | 杨逸轩协助金郅博完成原型开发及跨组协调;在杨博文文档任务繁重时分担部分工作。杨博文全面负责后端文档(含数据库设计、UML 图等),并在必要时支援梁浩完成数据库建模。 | +| 5 | 原型对接工作 | 全体成员 | 前端开发过程中涉及的接口定义、数据格式、状态管理等,需全体成员积极配合。金郅博与杨逸轩须主动与后端组、模型组、PM 多次协商接口约定。若对接效率不足,可在周末召开临时全体会议。 | +| 6 | 论文算法讲解 | 模型组 + 后端组 | 胡帆将根据后端组需求,对其已掌握的论文核心算法与代码进行快速讲解,帮助后端理解数据结构与接口需求,为后续开发与论文阅读奠定基础。 | +| 7 | 敏捷开发实践 | 全体成员 | 所有开发工作遵循敏捷原则:优先交付最小可用版本(MVP),通过快速反馈持续迭代。避免追求一次性完美,注重可回退性与用户隐性需求的挖掘。 | + +### 4. 重点强调事项 + +- **原型完工**:前端组必须在本周内产出可运行、可交互的原型;所有界面修改须在 10 月 26 日前闭环,不得遗留至下周;全体成员须将支持前端开发作为最高优先级任务。 +- **后端与文档闭环**:数据库设计需充分考虑系统解耦、扩展性与稳定性;文档采用“草稿 → 评审 → 迭代 → 定稿”流程,主体须于 26 日前完成。 +- **代码复现**:论文是代码的最佳注释,务必先理解原理再动手;遵循“先跑通,再优化”原则;争取在班会展示时呈现可视化结果(非强制)。 +- **班会准备**:展示顺序、讲稿、备用方案由 PM 与文书组统筹,不强制本周完成,但需在第七周前落实。 + +## 问题总结 + +### 已解决问题 +- 明确了加噪任务的排队机制与前端展示逻辑; +- 统一了代码提交与文档管理规范; +- 确定了本周各小组核心交付物与时间节点。 + +### 待解决问题 +- 模型组需进一步完成论文代码的移植工作; +- 后端同学对算法理解仍存障碍,需胡帆提供针对性讲解; +- 若对接效率不足,需在周末召开临额外的全体会议; +- 文书对接前后端、后端与模型端去书写接口文档与用例文档的工作量较大; + + +## 小组协作情况总结 + +**协作情况**:小组成员沟通积极,任务认领明确,跨组协作意愿强。 +**纪律情况**:全员准时参会,任务响应及时,符合项目纪律要求。 + +## 备注 + +- 项目当前重心为“快速跑通原型”,文档撰写可在空闲时间推进; + +--- \ No newline at end of file diff --git a/doc/process/weekly/week-05/group/weekly-plan-05.md b/doc/process/weekly/week-05/group/weekly-plan-05.md new file mode 100644 index 0000000..b913648 --- /dev/null +++ b/doc/process/weekly/week-05/group/weekly-plan-05.md @@ -0,0 +1,32 @@ +# 小组周计划-第5周 # + +## 团队名称和起止时间 ## + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-10-20 +**结束时间:** 2025-10-26 + +## 本周任务计划安排 ## + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 原型迭代 | 金郅博、杨逸轩 | 10-20至10-21,依据第四周美术风格,使用无代码平台(如墨刀)开发出快速版本的示例页面,10-22与PM或老师审查讨论。10-23至10-24,依据修改意见,使用Vue3+Vite完成可点击Demo;10-25再次与PM或老师审查讨论,至26日前汇总修改意见并锁定最终原型。 | +| 2 | 数据库与UML设计 | 梁浩、杨博文 | 10-20至10-22,初步决定好数据库设计,比如er图库表字段、索引策略;10-23与PM评审讨论;至10-24基本完成上述设计,开始绘制UML用例图/时序图;至26日完成最终版。(本周任务可能较为繁重,如有困难,允许适当留一些任务到下周,文档同理) | +| 3 | 论文阅读与代码复现 | 胡帆 | 10-20至10-23,精读指定两篇噪声生成论文并梳理原理;10-24至10-25在云平台AotuDL租用服务器,做环境和超参数调整,基本复现核心代码。至26日完成代码细节的理解梳理,期间的阅读笔记与复现记录可以作为材料提交(不强求)。 | +| 4 | 前后端辅助人员 | 杨逸轩、杨博文 | 杨逸轩辅助金郅博进行原型开发工作和协调等,在杨博文的文档任务忙碌时帮忙分担。 杨博文负责辅助梁浩进行数据库设计,并对数据库设计文档、用例图、UML图等后端文档全权负责。 | +| 5 | 原型对接工作 | 全体成员 | 前端开发原型时,必然遇到各种接口统一问题,因此所有成员必须全力配合前端开发者。金郅博和杨逸轩必须就原型所需的约定,与后端组、模型组、PM进行多次协商。如果按照预定计划进行的对接效率不够,可以在周末约定召开额外的全体会议,总之取决于前端进度。 | +| 6 | 论文算法讲解 | 胡帆 | 若后端组对模型算法代码等有任何疑问,胡帆会将他目前对论文核心算法和代码的掌握情况向后端作快速讲解,以确保后端能完成数据库的设计,并为后端组同学未来入门论文作引子。 | +| 7 | 敏捷开发 | 全体成员 | 无论前后端,在开发时都遵循敏捷开发的思想。不追求一次性交付全部功能,而是尽快交付最小的、可用的产品版本,然后根据PM/老师的意见,在此基础上持续修改迭代,直到最后接近完美。这样不仅能持续获得正反馈,而且也有利于开发失败后的回退。此外,很多用户自己说不出来的隐藏需求,都会以评价好坏的形式表露出来。 | + +## 小结 ## + +1. 原型完工: + 前端组必须在本周产出可运行原型,任何界面改动须在本周内闭环,避免进入下一周。**所有人必须优先配合前端组工作,原型开发是本周最高优先级**。开发策略参考“敏捷开发”,先做后改,不断迭代。 +2. 后端与文档闭环: + 数据库与UML文档任务采用先草稿再撰文、不断迭代的策略,同样是“敏捷开发”。尽量要在26日晚前完成,但也允许部分延迟到下一周。 数据库设计一定要充分考虑项目整体的情况,比如解耦合和功能稳定性等要求,务必在设计中充分考虑。 +3. 代码复现: + 一共5篇相关论文,经过初步尝试,对纯初学者的难度很大,虽然本周只跑两篇,但实际做起来并不轻松。论文就是项目代码最好的注释,因此务必要先把文章读懂。复现代码时采用“先跑通再优化”原则,同样是“敏捷开发”的思想。最好能在班会演示时有可视化结果(不强求)。 +4. 辅助补位: + 协调人员每日充当协调者和辅助员,优先辅助前后端,在此的前提下,用空闲时间完成文档工作。 +5. 班会准备: + 展示顺序、讲稿、备用方案由PM和文书组协调安排,本周任务较多,不强求,有空可以做,截止在第七周前。 diff --git a/doc/process/weekly/week-05/group/weekly-summary-04.md b/doc/process/weekly/week-05/group/weekly-summary-04.md new file mode 100644 index 0000000..ef8736c --- /dev/null +++ b/doc/process/weekly/week-05/group/weekly-summary-04.md @@ -0,0 +1,38 @@ +# 小组周总结-第4周 # + +## 团队名称和起止时间 ## + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-10-13 +**结束时间:** 2025-10-19 + +## 本周任务完成情况 ## + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +|------|----------|----------|----------| +| 1 | 项目启动会议 | 完成 | 2025-10-13召开首次会议,全体成员参与,明确项目目标、初步分工与技术方向。 | +| 2 | 需求确认与细化 | 部分完成 | 与指导老师、学长学姐沟通后,已确认“对抗性扰动的多风格图像生成防护系统”总体需求,但细节条目如接口设计仍需后续补充。这主要是由于项目本身的缺陷:严重缺乏实时性交互,具体体现在用户使用生成器时,必须长时间等待云服务器完成微调,且此流程受限于算力,似乎无法规避。这导致我们在细化时产生了很大的困难,不得不重新思考设计框架。 不过这些调整本身就在计划安排内,没有超出我们灵活规划的范围。| +| 3 | 分工和规划 | 完成 | 全员确认前端/后端/模型方向及个人模块;共享Vue、Flask、对抗性扰动等学习资源。 | +| 4 | 个人周计划提交 | 完成 | 全体成员按规定时间提交个人周计划,PM汇总归档。 | +| 5 | 会议纪要撰写 | 完成 | 杨博文完成第四周会议纪要;杨逸轩补完第三周会议纪要,均已归档。 | +| 6 | 知识初步学习 | 完成 | 前端组完成HTML/CSS/JS入门;后端组初步完成Python后端概念及数据库实战入门;模型组跑通Colab/Kaggle GPU微调demo。 | +| 7 | 个人/项目周总结 | 完成 | 全体成员提交个人总结;小组总结已完成并提交。 | +| 8 | 需求文档第一稿 | 部分完成 | 经研讨,需求汇总细化前置工序尚未完成,且属于计划调整。因此,现阶段先写好了文档框架及已确认章节,剩余内容待数据库设计结束后一并细化。 | + +## 小结 ## + +1. 需求、认知与设计: + 全体成员对“对抗性扰动的多风格图像生成防护系统”需求与技术路线已经明确,第一阶段“需求获取+技术准备”基本完成。但由于上文提及的项目缺陷,我们更改了整体思路,所以实际任务会按预案灵活安排,不过这仍然在正常可控的计划范围内。 +2. 文档产出: + 会议纪要、需求框架、用例框架、迭代计划框架、个人/小组总结共6类文档全部按期归档,版本管理规范。 +3. 技术储备: + ‑ 前端:HTML/CSS/JS基础学完,Vue组件化开发环境学习入门完成。 + ‑ 后端:Python/Flask复习完毕,数据库基本知识复习完成。 + ‑ 模型:FSMG/ASPL防护算法原理梳理完毕,Colab/Kaggle GPU训练demo通过。 +4. 协同机制: + 原型草案已进入日程,下周会进入“迭代+定稿”阶段;组内实行以PM为核心的多方对接,问题日清周结。 +5. 下周重点: + ① 前端迭代并完成项目原型的第一版,期间需要与PM、老师频繁对接和修改。 + ③ 后端完成数据库设计,完成UML图,并与文书一起完成对应的文档,期间同样需要反复对接和修改。 + ④ 模型组开始阅读相关论文,并阅读、理解、实现其中的开源代码。 + ⑤ 前后端协调人员,补齐前后端知识基础,辅助前后端人员进行开发。 diff --git a/doc/process/weekly/week-05/members/hufan-weekly-plan-05.md b/doc/process/weekly/week-05/members/hufan-weekly-plan-05.md new file mode 100644 index 0000000..b4b6fbf --- /dev/null +++ b/doc/process/weekly/week-05/members/hufan-weekly-plan-05.md @@ -0,0 +1,30 @@ +# 个人周计划-第5周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-10-20 + +**结束时间:** 2025-10-26 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 论文阅读 | 本人 | 10-20至10-23,精读指定两篇噪声生成论文并梳理原理,暂定为《2024 - CVPR_SimAC_A_Simple_Anti_Customization_Method_for_Protecting_Face_Privacy_against 》和《2024 - ICML - PID Prompt-Independent Data Protection Against Latent Diffusion Models》。
阅读完成后,详细注解论文疑难处,为后端组的另外两位同学撰写笔记,方便他们下周阅读和快速入门。 | +| 2 | 代码复现 | 本人 | 10-24至10-25在云平台 AotuDL 租用服务器,做环境和超参数调整,基本在4090云服务器上复现两篇文章的核心代码。至26日完成代码细节的理解梳理。
并撰写详细的复现记录文档,方便后端另外两位同学下周快速上手。 | +| 3 | 对接工作 | 所有成员 | 前后端开发原型时,必然遇到各种接口统一问题,因此必须与后端组和前端组进行反复协商。如果按照预定计划进行的对接效率不够,可以在周末约定召开额外的全体会议,总之取决于原型开发和数据库设计进度。 | +| 4 | 算法讲解 | 本人 | 后端组对模型算法代码等有任何疑问,我会将他目前对论文核心算法和代码的掌握情况向后端作快速讲解,以确保后端能完成数据库的设计,并为后端组同学未来入门论文作引子。 | +| 5 | 开发模式确定 | 所有成员 | 推广全项目使用敏捷开发策略,不追求一次性交付全部功能,而是尽快交付最小的、可用的产品版本,再逐步迭代,直到最后接近完美。这样不仅能持续获得正反馈,而且也有利于开发失败后的回退。 | + +## 小结 + +1. **学习需求:** 本周主要是对论文进行攻坚。我们的项目一共有5篇相关论文,经过初步尝试,对纯初学者的难度很大,虽然本周只跑2篇,但实际做起来并不轻松。论文就是项目代码最好的注释,因此务必要先把文章读懂。 +2. **实战优先:** 本周另一大任务是跑通开源代码复现流程。这一环节务必要多动手,在实践中学习。 +3. **任务展望:** 本周所有成员的任务都比较重,最重要的就是完成原型开发,其次是数据库设计,再然后是跑通论文复现。我们必须合理安排时间,尽量做到任务周清。 + + + diff --git a/doc/process/weekly/week-05/members/hufan-weekly-summary-04.md b/doc/process/weekly/week-05/members/hufan-weekly-summary-04.md new file mode 100644 index 0000000..676b13e --- /dev/null +++ b/doc/process/weekly/week-05/members/hufan-weekly-summary-04.md @@ -0,0 +1,35 @@ +# 个人周总结-第4周 + +姓名和起止时间 +------- + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-12 +**结束时间:** 2025-10-18 + +## 本周任务完成情况 + +-------- + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| ---------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | **系统核心技术理论学习** | 基本完成 | 在网站 Bilibili 学习了对抗性扰动在文生图的扩散模型防护方面的知识课程。在李宏毅老师的Diffusion系列等处入门了基础的技术原理。在up主“爱科学的王木头”、“3Blue1Brown”等的系列视频中加强了对 Transformer 架构和 LLM 模型运作基本原理的认知。 | +| 2 | **统筹进度和职责** | 完成 | 明确了基本的项目需求,完成了针对所有成员的分工。 | +| 3 | **了解图像质量指标和微调方法** | 基本完成 | 通过知乎相关文章,初步学习了扩散模型种的 LoRA、DreamBooth、文本反转等微调方法概念,初步了解FID、CLIP、KL散度等指标的定义。 | +| 5 | **初步预备实践** | 完成 | 学习如何利用GPU实操微调大模型,在colab和kaggle中利用自己的GPU跑通了李宏毅老师网课ML2022中的几个Homework,基本了解了简化版本的训练流程。 | +| 6 | **协调文档撰写** | 完成 | 作为项目负责人,协助对接完成了需求文档第一版、迭代开发计划和用例文档的框架设计。 | + +## 对团队工作的建议 + +1. **尽快了解负责的领域:** 希望团队成员对自身要做的东西了解更加清晰,以便更有目的地学习相关知识,尤其是重点后端的接口设计和团队文档规范,尽量减少反复修改。 +2. **提升协作质量:** 团队成员间一定要主动多互相沟通,对需求、对接有任何疑问都应该找到负责人沟通,这样可以显著提高开发的效率,避免走不必要的弯路。 + +小结 +-- + +1. **学习需求:** 初步完成针对Diffusion Model方面的入门原理学习,基本完成对Anti-DreamBooth论文涉及的**FSMG、ASPL**两种噪声生成的防护算法流程和基本原理,尤其重点关注了ASPL算法。 + +2. **任务统筹:** 明确了项目基本的需求,基本完成了统筹任务分配。在此过程中,也定位到很多成员目前对项目了解模糊的地方,这些补缺将会动态调整到下周的组会上讨论。 + +3. **预备实践:** 初步利用GPU资源完成对模型-微调任务的实际操作上手,在colab、kaggle上跑通了几次简化版的流程。 diff --git a/doc/process/weekly/week-05/members/jinzhibo-weekly-plan-05.md b/doc/process/weekly/week-05/members/jinzhibo-weekly-plan-05.md new file mode 100644 index 0000000..acd55dd --- /dev/null +++ b/doc/process/weekly/week-05/members/jinzhibo-weekly-plan-05.md @@ -0,0 +1,37 @@ +# 个人周计划-第5周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-10-20 + +**结束时间:** 2025-10-26 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ---------------------- | -------- | ------------------------------------------------------------ | +| 1 | **补充学习Vue3+Vite** | 个人 | 延续上周学习情况继续入门前端技术,重点掌握Vue3与Vite的基础知识,根据项目需求有针对性地进行相关技术的拓展 | +| 2 | **前端原型迭代设计** | 杨逸轩 | 依据第四周敲定的美术风格,进行前端原型页面迭代设计。计划于10-20至10-21使用无代码平台(墨刀)开发出快速版本的示例界面,10-22至10-23使用Vue3+Vite完成可交互demo,10-26前修改完善做出最终版原型(共3个版本) | +| 3 | **与PM和老师交流意见** | 胡帆 | 将设计完成的前端原型提交给PM或老师进行审查并讨论。10-23交付第1稿,10-24交付第2稿,根据交流意见进行调整优化 | +| 4 | **原型对接工作** | 所有成员 | 在前端原型设计过程中,需与后端及模型组成员密切沟通,明确接口规范、功能需求及展示数据类型等,确保各模块顺利衔接,并做好相关记录。 | + + + +小结 +-- + +1. **学习需求:** 本周需快速入门Vue3与Vite技术以及墨刀平台的使用,不必全面细致地学习,只需重点掌握基础性的知识,再根据设计时的具体需求补充学习相关技术 + +2. **动手实战:** 本周在学习理论知识时,最需注重的是实战训练,任务量较重的情况下,应该优先动手实战,遇到问题时有针对性地学习解决 + +3. **积极交流:**除按时提交设计稿外,还将主动沟通其余组员,及时同步进展、解决问题 \ No newline at end of file diff --git a/doc/process/weekly/week-05/members/jinzhibo-weekly-summary-04.md b/doc/process/weekly/week-05/members/jinzhibo-weekly-summary-04.md new file mode 100644 index 0000000..d509dbb --- /dev/null +++ b/doc/process/weekly/week-05/members/jinzhibo-weekly-summary-04.md @@ -0,0 +1,41 @@ +个人周总结-第4周 +========= + +姓名和起止时间 +------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-10-12 + +结束时间: 2025-10-19 +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------- | ------------------------------ | ------------ | ------------------------------------------------------------ | +| 1 | **初步规划前端开发时间节点** | 完成 | **已制定前端开发阶段性计划**,明确各阶段任务及其时间节点 | +| 2 | **前端技术快速入门** | 部分完成 | **已完成HTML/CSS/JS基础知识的学习**,目前才刚开始接触Vue与Vite 的开发技术,还需继续深入学习 | +| 3 | **初步设计前端页面的基本框架** | 基本完成 | **基本确定前端页面风格**,参考glaze和codepen网站,借鉴学习了一些设计方法,计划要展示出较酷炫的游戏类视觉效果 | +| 4 | **前后端数据接口规范初步拟定** | 基本完成 | **初步确定了前端所需数据接口的草案**,与前后端组员沟通,基本涵盖核心功能模块 | + +对团队工作的建议 +-------- + +1. **沟通合作:** 希望组员对各自领域尽快入门,有疑问一定要及时提出,同时也要敢于表达自己的思考与建议 + +2. **技术分享:** 希望团队可以提高交流分享积极性,各自学习时,可以经常分享各自领域的技术资源,互相交流借鉴学习 + +小结 +-- + +1. **技能学习:** 前端技术栈的学习已完成预期目标,能在vscode编写简单的网页demo + +2. **项目协同:** 与后端组员完成了接口规范的初步对接,确保了多方工的协调性。 + +3. **学习需求:** 希望能有针对stable diffusion模型的项目导向性教学,以解决实际开发中的技术难点。 + + +--- diff --git a/doc/process/weekly/week-05/members/lianghao-weekly-plan-05.md b/doc/process/weekly/week-05/members/lianghao-weekly-plan-05.md new file mode 100644 index 0000000..d25ce3d --- /dev/null +++ b/doc/process/weekly/week-05/members/lianghao-weekly-plan-05.md @@ -0,0 +1,27 @@ +# 个人周计划-第5周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-10-20 +**结束时间:** 2025-10-26 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ------------------------- | -------------- | --------- | +| 1 | 数据库与UML设计 | 杨博文 | 10-20至10-22,初步决定数据库设计(表字段、索引策略);10-23与PM评审讨论;至10-24基本完成设计,开始绘制UML用例图/时序图;至26日完成最终版。任务较重,允许部分延迟到下周。 | +| 2 | 确定后端预留接口 | 所有成员 | 与前端组和模型组多次协商,确定前端请求和模型调用的接口及返回数据结构。 | +| 3 | 论文精读与噪声生成代码复现 | 胡帆 | 选取SimAC算法的对抗性扰动相关论文,精读理解其原理,重点关注噪声生成方法,完成论文代码的运行和复现,为后端抗扰动加噪算法的开发探索一套快速学习、部署的方式。 | +| 4 | 敏捷开发 | 所有成员 | 遵循敏捷开发思想,优先配合前端原型开发,及时响应接口和数据格式调整需求。 | + +## 小结 + +1. **文档设计:** 本周重点完成数据库设计与UML文档,任务量较大,允许部分延迟但需保证质量。 +2. **接口联调:** 按照需求文档和团队计划,推进后端接口开发与联调,推动项目整体进度。 +3. **论文复现:** 继续论文阅读和代码复现,提升对抗性扰动算法理解,为后续开发打好基础。 +4. **前端协作:** 积极配合前端组原型开发,优先响应前端需求,确保接口和数据格式统一。 + + + diff --git a/doc/process/weekly/week-05/members/lianghao-weekly-summary-04.md b/doc/process/weekly/week-05/members/lianghao-weekly-summary-04.md new file mode 100644 index 0000000..806300c --- /dev/null +++ b/doc/process/weekly/week-05/members/lianghao-weekly-summary-04.md @@ -0,0 +1,27 @@ +# 个人周总结-第4周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-13 +**结束时间:** 2025-10-19 + +## 本周任务完成情况 + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| --- | ------- | -------- | -------- | +| 1 | 复习python语法 | 完成 | **已完成Python语法复习**,重点熟悉了面向对象编程的基本概念和使用方法。 | +| 2 | 学习flask框架 | 基本完成 | **已初步学习Flask框架**,能够构建简单的Web应用demo,后续需进一步深入掌握其高级特性。 | +| 3 | 阅读对抗性扰动相关论文 | 部分完成 | **已开始搜集和阅读对抗性扰动相关论文**,但由于论文理解难度较大,目前仍在消化核心概念阶段,需要更多时间深入研读。 | + +## 对团队工作的建议 + +1. **技术交流机制:** 建议团队定期举行一次**前端、后端和模型组联合讨论会**,重点围绕接口设计、数据格式及运行流程展开,减少开发阶段的反复修改。 +2. **专题分享:** 希望能组织一次关于**图像对抗干扰与噪声生成技术**的内部讲座或经验分享,帮助大家理解相关原理,促进组间协作。 + +## 小结 + +1. **技能提升:** 本周按计划完成了Python语法复习和Flask框架的学习,为后续开发任务奠定了基础。 +2. **项目协同:** 通过与PM的交流,快速理解了对抗性扰动的核心概念,确保了后续开发方向的正确性。 +3. **学习需求:** 希望能有关于**噪声生成器具体实现方法**的指导或参考资料,以加速后续开发进程。 \ No newline at end of file diff --git a/doc/process/weekly/week-05/members/yangbowen-weekly-plan-05.md b/doc/process/weekly/week-05/members/yangbowen-weekly-plan-05.md new file mode 100644 index 0000000..d6ffb96 --- /dev/null +++ b/doc/process/weekly/week-05/members/yangbowen-weekly-plan-05.md @@ -0,0 +1,27 @@ +# 个人周计划-第5周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-20 +**结束时间:** 2025-10-26 + + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +|------|------------------------------|--------------------|----------| +| 1 | 辅助后端数据库与UML设计 | 梁浩 | 负责数据库设计文档、用例图、UML图等后端文档的撰写与整合,确保设计符合项目整体架构 | +| 2 | 支持模型组论文理解与代码复现 | 胡帆 | 在完成文档任务的前提下,协助梳理噪声生成论文原理,参与代码复现讨论,必要时协助环境配置或记录复现过程。10-20至10-22,初步决定好数据库设计;10-23与PM评审讨论;至10-24基本完成上述设计,开始绘制UML用例图/时序图;至26日完成最终版。 | +| 3 | 完善并提交前期文档 | 杨逸轩 | 补充用例文档、需求规格说明、迭代开发计划的细节,确保与本周原型和数据库设计对齐 | +| 4 | 参与原型对接与接口协调 | 所有成员 | 配合前端组明确接口需求,协助后端与前端就数据结构、字段命名、接口函数等达成一致 | +| 5 | 准备班会材料(如有余力) | 胡帆、杨逸轩 | 协助整理讲稿或演示内容,截止时间为第七周前,非本周强制任务 | + +## 小结 + +1. **学习需求:** 希望通过参与数据库设计和论文复现,快速掌握项目所需后端建模与AI模型基础知识; +2. **知识储备:** 重点补强数据库ER建模、UML绘图规范,以及噪声生成相关论文的核心思想; +3. **协作重点:** 以辅助后端为主、模型组为辅,在确保文档闭环的前提下灵活补位,支持团队敏捷开发节奏。 + +--- \ No newline at end of file diff --git a/doc/process/weekly/week-05/members/yangbowen-weekly-summary-04.md b/doc/process/weekly/week-05/members/yangbowen-weekly-summary-04.md new file mode 100644 index 0000000..f85939e --- /dev/null +++ b/doc/process/weekly/week-05/members/yangbowen-weekly-summary-04.md @@ -0,0 +1,30 @@ + +# 个人周总结-第4周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-13 +**结束时间:** 2023-10-19 + +## 本周任务完成情况 + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| ---- | ------------------------------------------------ | -------- | ------------------------------------------------------------ | +| 1 | 周计划书写 | 完成 | 将PM的总体周计划总结成自用版和上交版两个版本,分别供小组成员和老师使用 | +| 2 | 用例图初稿 | 完成 | 完成了用例图的初步绘制 | +| 3 | 用例文档、迭代开发文档框架 | 完成 | 研读了实例文档中的用例文档、迭代开发文档内容,明确了其框架 | +| 4 | 第四周会议纪要 | 完成 | 完成了第四周会议纪要,明确了文档的文风 | + +## 对团队工作的建议 + +1. **积极主动:** 小组成员应积极主动的跟PM进行沟通,发现问题应及时反馈,对PM的要求、建议应有及时的回应; +2. **灵活机动:** 在项目进行的过程中,小组成员应能灵活的进行任务分配,并能及时进行任务进度的推进; + +## 小结 + +1. **用例图介绍:** 对用例图的绘制方法、功能以及其在项目中的实际作用进行介绍,并给出一个示例; +2. **迭代开发文档介绍:** 教学我们如何去合理的分配、调整开发任务; + +--- \ No newline at end of file diff --git a/doc/process/weekly/week-05/members/yangyx-weekly-plan-05.md b/doc/process/weekly/week-05/members/yangyx-weekly-plan-05.md new file mode 100644 index 0000000..c2a0dac --- /dev/null +++ b/doc/process/weekly/week-05/members/yangyx-weekly-plan-05.md @@ -0,0 +1,30 @@ +# 个人周计划-第5周 + +## 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-10-20 + +**结束时间:** 2025-10-26 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --- | ------ | --- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | 文档撰写 | 个人 | 召开组会并进行需求沟通: 2025-10-20开组会与组内沟通,根据反馈进一步完善《需求规格说明书》。
文档细化重点: 重点关注防护处理、效果可视化等核心功能点的描述和细节修正,确保文档具备可执行性。
协作支持: 同时协助杨博文同学完成数据库结构和关系设计的文稿撰写。 | +| 2 | 学习前端知识 | 个人 | 针对HTML、CSS、JS等进行强化学习。同时学习Vue的基本概念及vue组件化开发思路。 | +| 3 | 参加组会 | 组员 | 2025-10-20 开会初步确定项目大致结构,明确工作开发细节:后端主要学习论文代码实现大模型微调,前端主要实现最终效果展示。并确定协作开发模式为3.1。 | +| 4 | 初步设计原型 | 个人 | 协助金郅博同学完成初步的无代码前端原型设计。主要聚焦于用户交互流程的顺畅性(如参数输入到结果展示的步骤)和核心界面的布局(如防护参数设置区、结果展示区),确保原型具备高保真度,能清晰展示主要功能和页面跳转逻辑,为后续的Vue界面开发提供视觉基础和逻辑指导。 | + +## 小结 + +1. **学习需求:** 希望能有对于vue组件化开发及**原型设计**和用户体验相关的教学; +2. **知识储备:** 本周核心是原型开发和需求文档,以及协助完成数据库文档; +3. **文档撰写:** 改进《需求规格说明书》,并与组员共同**明确项目架构与开发模式**,为正式进入开发阶段扫清障碍。 + + + + diff --git a/doc/process/weekly/week-05/members/yangyx-weekly-summary-04.md b/doc/process/weekly/week-05/members/yangyx-weekly-summary-04.md new file mode 100644 index 0000000..0cf133a --- /dev/null +++ b/doc/process/weekly/week-05/members/yangyx-weekly-summary-04.md @@ -0,0 +1,43 @@ +个人周总结-第4周 +========= + +姓名和起止时间 +------- + +姓  名: 杨逸轩 + +团队名称: 2班-深度思考 + +开始时间: 2025-10-12 + +结束时间: 2025-10-18 +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| ------ | ------------------------------------------ | -------- | ------------------------------------------------------------- | +| 1 | 确定分工;撰写《需求规格说明书》初稿。 | 完成 | **已确认每周组会时间并明确个人分工**。**《需求规格说明书》初稿已撰写完成**,下一步将提交给组员进行讨论和意见收集。 | +| 2 | 前端技术栈深度学习 (HTML、CSS、JS、VUE等,重点掌握Vue组件化开发)。 | 完成 | **已完成HTML/CSS/JS基础知识的学习**,还没有掌握了Vue的基本概念及组件化开发思路,需要继续学习。 | +| 3 | 前后端数据接口规范初拟 (与后端/模型组员沟通)。 | 完成 | **已与后端和模型组员沟通**,根据核心功能(防护处理、效果可视化等)初步确定了前端所需数据接口的草案。 | +| 4 | Web应用原型设计细化 (防护处理界面UI交互设计,美术风格)。 | 基本完成 | 已参考glaze网站,初步明确了Web应用的前端美术风格。 | + +对团队工作的建议 +-------- + +1. **接口定稿:** 建议团队尽快组织一次会议,对初步拟定的前后端数据接口规范进行审阅和定稿,以保证前后端开发同步进行。 + +2. **技术分享:** 针对Vue/Flask前后端分离架构下的数据交互,建议团队组织一次内部学习或分享活动,共同提高技术储备。 + +小结 +-- + +1. **任务交付:** 本周核心任务《需求规格说明书》初稿已按时完成,项目文档工作迈出重要一步。 + +2. **技能提升:** 前端技术栈的学习已完成预期目标,为下周开始的Vue组件开发任务做好了充分准备。 + +3. **项目协同:** 与后端组员完成了接口规范的初步对接,确保了多方工作的协调性。 + +4. **学习需求:** 希望能有针对**Vue/Flask前后端分离架构下的数据交互与API设计**的教学或讲座,以解决实际开发中的技术难点。 + + +--- diff --git a/doc/process/weekly/week-06/group/meeting-minutes-06.md b/doc/process/weekly/week-06/group/meeting-minutes-06.md new file mode 100644 index 0000000..5461863 --- /dev/null +++ b/doc/process/weekly/week-06/group/meeting-minutes-06.md @@ -0,0 +1,65 @@ +# 小组会议纪要-第6周 + +## 会议记录概要 +**团队名称 :**2班-深度思考队 +**指导老师 :**刘琴 +**主持人 :**胡帆 +**记录人员 :**杨博文 +**会议主题 :**原型冲刺、后端搭建、需求文档推进 +**会议地点 :**线下会议(中楼休息室) +**会议时间 :**2025-10-27 16:00-16:35 +**记录时间 :**2025-10-27 17:00 +**参与人员 :**胡帆、金郅博、杨逸轩、杨博文、梁浩 + +--- + +## 会议内容 + +### 1. 项目整体进展与核心问题 +会议首先由 PM(胡帆)回顾第五周任务完成情况,并指出:前端界面设计因墨刀会员限制导致效果粗糙,数据库设计亦显仓促,整体开发节奏过于集中在周末,影响交付质量。为提升效率,PM 推荐前端使用 Copilot 大模型工具辅助开发,并已于 10 月 20 日晚组织金郅博、杨逸轩等人学习其使用方法。 + +为应对第七周班会的原型讨论,当前项目进入关键冲刺阶段,核心目标为:在第七周班会前交付一个可完整演示用户流程的前端原型(含“上传任务 → 排队等待 → 取回结果”全流程),同时后端 Flask 框架的本地部署需要完全实现、对基础 API 的概念要有大致判断。当前主要瓶颈仍为前后端对接效率与模型代码集成准备不足。 + +### 2. 开发规范与协作机制 +会议重申并补充以下协作要求: +- **文档更新原则**:历史文档不再修改,新内容以新增形式体现;需求文档、数据库设计等需在 11 月 1 日前完成初稿。 +- **敏捷开发**:前端以“能跑通流程”为第一目标,美术细节可后续优化。 +- **沟通机制**:前端与 PM 需高频对接接口定义;后端遇算法理解障碍可随时申请胡帆专项讲解。 + +### 3. 本周任务安排(2025-10-27 至 2025-11-02) +| 序号 | 计划内容 | 执行人 | 详细说明 | +|------|----------|--------|----------| +| 1 | 原型最终版本开发 | 金郅博、杨逸轩 | 10-27 至 10-28:杨逸轩提供 3–4 个 Vue 集成 UI 组件;金郅博优化布局与交互逻辑。10-28 晚与 PM 确认班会展示细节。11-01 前完成本地部署,实现完整用户流程演示(含预制数据)。**11-02 锁定原型最终版**。杨逸轩需优先支援前端,其次处理文档。 | +| 2 | 需求文档编写 | 杨博文、杨逸轩 | 10-27 至 10-28 起草项目前景与迭代计划;10-29 晚与 PM 对接细节;11-01 前**完成需求文档初版**,整合数据库设计与用例图。 | +| 3 | 后端框架搭建 | 梁浩、杨博文 | 10-27 至 10-28 完成本地数据库部署与 Flask 结构搭建;10-29 参与 PM 主持的会议,了解算法代码的运行流程,初步明确 RESTful 接口的大致设计思路;11-01 前实现可持久运行的本地后端服务(不含真实文件处理)。 | +| 4 | 前后端辅助协调 | 杨逸轩、杨博文 | 杨逸轩重点协助前端开发;杨博文主责需求文档,同时支援后端部署与数据库建模。 | +| 5 | 原型对接支持 | 胡帆 | 全程配合前端确定接口约定,必要时**召开临时会议**解决阻塞问题,确保原型按时交付。 | +| 6 | 论文算法讲解 | 胡帆 | 本周择时向后端组详解 LDM、DreamBooth、LoRA 等**核心算法**及代码结构,帮助理解数据流与接口需求。 | +| 7 | 模型代码预研 | 胡帆 | 阅读 CAAT、PID、ARPP 三篇论文,在 AutoDL 平台配置环境并**跑通代码**,整理调参与适配经验文档,为后续集成铺路。 | + +### 4. 重点强调事项 +- **前端原型为本周最高优先级**:必须在 11 月 2 日前交付可完整演示的版本,用于第七周班会展示。 +- **文档与开发并行推进**:需求文档初稿须在 11 月 1 日前完成,由于开发繁忙,故需要抓紧。 +- **技术预研不可松懈**:PM 需确保模型代码环境可复现,为下一阶段把代码移植到后端打下基础。 +- **前后端初具规模**:前端原型和后端框架在本周结束时,应当初具雏形,至少能在本地运行,完成度要跟上 + +### 5. 问题总结 + +**已解决问题** +- 明确了第六周核心目标:前端可演示原型 + 后端可运行框架; +- 确定了 UI 组件交付节奏与前后端协作分工; +- 统一了需求文档与算法设计流程。 + +**待解决问题** + +- 模型组还需要完成更多加噪路径的代码复现; +- 后端对扰动算法的数据结构理解仍需深化; +- 前端进度较慢,需加快开发进度; + +### 6. 小组协作情况总结 +- 协作情况:成员任务认领清晰,杨逸轩与杨博文跨组支援意愿强,PM 技术引导及时。 +- 纪律情况:全员准时参会,响应迅速,符合项目管理规范。 +- 团队进度:上周整体进度较慢,本周应提高警惕、加快效率。 + +### 7. 备注 +本周为“原型交付冲刺周”。文档撰写可在开发间隙推进,但不得影响核心开发进度。 \ No newline at end of file diff --git a/doc/process/weekly/week-06/group/weekly-plan-06.md b/doc/process/weekly/week-06/group/weekly-plan-06.md new file mode 100644 index 0000000..a48c1f0 --- /dev/null +++ b/doc/process/weekly/week-06/group/weekly-plan-06.md @@ -0,0 +1,27 @@ +# 小组周计划-第6周 # + +## 团队名称和起止时间 ## + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-10-27 +**结束时间:** 2025-11-02 + +## 本周任务计划安排 ## + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 原型最终版本 | 金郅博、杨逸轩 | 原型前端的开发,分为组件开发和界面开发两个部分:
10-27至10-28,杨逸轩参考开源网站和设计网站中的资源,为金郅博准备3-4个vue文件形式、**集成化的UI组件**,便于原型美术设计,要求简约美观。10-29日晚,PM于杨逸轩开会讨论第一批组件的具体修改完善。杨逸轩于11-01前完成第二批组件,要求更加复杂,数量为1-2个。第一批组件用于第七周班会展示在原型最终版,而第二批组件将用于V1版本(班会暂时不用)。杨逸轩在空闲时,一定要优先帮金郅博分担压力,其次再去考虑文档编写和网课学习,因为本周前端压力非常大。
10-27日,金郅博整理前端细节,删除冗余,整理界面布局和尺寸设计。10-28日晚,和PM商议班会展示细节。11-01前,**完成初步的本地部署前端**,并且能够实装第一批UI和预制的展示样例(一些图片和数据等),重要的是能够演示一个用户从点进去到结束一个任务的总流程,也就是要把“添加任务”、“等待排队”、“取走图片”等实际动画演示给做出来。可以说除了后端是空的、任务材料是预制的之外,它应该能当成一个完整的前端来用。
11-02日,前端原型最终版需要完全确定。本周金郅博任务将非常重,杨逸轩在工作之余需要尽力辅助代码编写合作。如难以完成,胡帆随时可以参与前端代码的辅助编写。 | +| 2 | 需求文档 | 杨博文、杨逸轩 | 10-27至10-28,初步决定好项目前景文档和第一稿的迭代开发计划文档编写,10-29日晚,和PM交流需求文档的细节。11-01前,参考之前的数据库文档、用例图等,**完成项目需求文档第一版**的编写。 | +| 3 | 数据库框架和组织搭建 | 梁浩、杨博文 | 10-27至28日,完整本地部署数据库,编写flask框架的后端结构。10-29日参与和PM的讨论,确定后端的构建思路并修改,会中将商议确定项目的restful-api详情(由梁浩与胡帆主导完善)。11-01前,梁浩、杨博文将**实现整个后端的本地化部署**,确保:除了没有实际文件以外,它应当能够作为本地服务器正常持久运行。同时,期间胡帆将择时与后端组开会交流,主要分享论文代码详解,会后梁浩和杨博文应该对实现算法的预留结构有一定认知,为未来在这个后端里嵌入实际代码作预备。如果有时间,后端能独立跑通一遍代码最好,有任何疑问可以问胡帆。 | +| 4 | 前后端辅助人员 | 杨逸轩、杨博文 | 杨逸轩辅助金郅博进行原型彻底完善和协调等,在杨博文的文档任务忙碌时帮忙分担。 杨博文负责辅助梁浩进行后端本地化搭建,并对需求文档的编写全权负责。 | +| 5 | 原型对接工作 | 胡帆 | 前端开发原型时,必然遇到各种接口统一问题,PM会全力配合前端开发者。金郅博和杨逸轩必须就原型所需的约定,与PM进行多次协商。如果按照预定计划进行的对接效率不够,可以约定召开额外的全体会议,总之取决于前端进度。一定要让原型保质保量完成。 | +| 6 | 论文算法讲解 | 胡帆 | 胡帆本周会择时以他目前对论文核心算法和代码的掌握情况向后端作详细讲解(配合上周在群里发的内部文档笔记以及胡帆的训练经验),以确保后端对代码有一定认识。如果有时间,后端能独立跑通一遍代码最好。 | +| 7 | 跑通模型代码 | 胡帆 | 胡帆本周需要对剩下三篇(CAAT、PID、ARPP)三篇论文进行阅读,并借助上周的经验在autodl租用云服务器配置好环境、**跑通三篇的代码**,争取将环境、适配、调参经验写成文档,为后端以后的工作铺垫。 | + +## 小结 ## + +1. **原型冲刺与交付**: 前端组需按明确的时间节点推进:杨逸轩分两批交付UI组件;金郅博主导前端整合与交互流程实现,并于周日交付完整的可演示前端原型。所有成员需积极配合前端工作,保障其按时高质量完成。 +2. **后端基础与架构建设**: 后端组需完成Flask框架的本地部署与稳定运行,并与PM沟通确认技术路线。同时,通过专项技术分享理解后续待集成的核心算法逻辑,为后续研发奠定基础。 +3. **需求与技术文档同步**: 文书组需并行推进需求文档与迭代计划的撰写,结合已有资料形成规范的项目文档初版,并在过程中与PM保持密切沟通。 +4. **核心技术预研与研与支持**: PM承担关键的技术攻坚角色,一方面指导后端理解现有论文算法,另一方面需亲自完成剩余多篇论文的环境配置与代码调试,并为团队积累实践经验。 +5. **协同机制与灵活调配**: 团队成员间明确了辅助关系:杨逸轩重点支援前端,杨博文兼顾后端协助与文档主责。强调根据实际情况灵活调整协作方式,必要时可召集临时会议解决阻塞问题。 diff --git a/doc/process/weekly/week-06/group/weekly-summary-05.md b/doc/process/weekly/week-06/group/weekly-summary-05.md new file mode 100644 index 0000000..cbc7266 --- /dev/null +++ b/doc/process/weekly/week-06/group/weekly-summary-05.md @@ -0,0 +1,34 @@ +# 小组周总结-第5周 # + +## 团队名称和起止时间 ## + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-10-20 +**结束时间:** 2025-10-26 + +## 本周任务完成情况 ## + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 原型迭代 | 基本完成 | 金郅博、杨逸轩完成了前端原型的墨刀版和可运行代码版Demo,并与PM交流讨论两次,及时调整了设计方向,如增加了类似云平台控制台的首页任务清单展示模式,基本解决了遗漏与bug,完成了原型框架搭建和页面结构搭建。 | +| 2 | 数据库与UML设计 | 完成 | 梁浩、杨博文经过三次迭代,完成了数据库与UML设计。数据库设计包括8个核心表、外键关系、索引优化和触发器,并符合3NF规范,支持单GPU部署约束下的业务需求。UML用例图/时序图也同步完成,并与新确定的加噪生成逻辑保持一致。 | +| 3 | 论文阅读与代码复现 | 完成 | 胡帆精读了两篇噪声生成论文,并撰写了详细笔记。在AotuDL云平台(4090服务器)完成了环境适配和超参数调整,基本复现了两篇文章的核心代码,得到了成功加噪结果图片吗,并撰写了复现记录文档作为内部资料。 | +| 4 | 前后端辅助人员 | 完成 | 杨逸轩辅助金郅博完成初步前端原型设计,并进行了HTML、CSS、JS及Vue基础知识的强化学习。杨博文辅助梁浩完成了数据库结构和关系设计的文稿撰写,并负责完成了数据库设计文档与UML图等后端文档的迭代与归档。 | +| 5 | 原型对接工作 | 完成 | 全体成员参与了与前后端、模型组的交流和对接工作。重点明确了加噪请求参数、图像上传/返回格式、分析报告触发条件等接口细节。 | +| 6 | 论文算法讲解 | 部分完成 | 胡帆在10-22的意见交流中对论文模型算法进行了约20分钟的粗略讲解,但未进行详细的会议讲解,计划在下周进行更详细的讲解。 | +| 7 | 敏捷开发 | 完成 | 全项目顺利推广并遵循了**敏捷开发**策略,即“先做后改,不断迭代”,不追求一次性交付全部功能,而是尽快交付最小的、可用的产品版本。 | + +## 小结 ## + +1. 需求、认知与设计: + 通过本周深入讨论和多次迭代,团队对系统的业务流程、特别是加噪生成逻辑(包括算法选择、扰动强度、防净化版本、分析报告生成条件等)有了清晰和统一的认识。 +2. 文档产出: + 高质量完成了数据库设计、UML用例图/时序图。同时《需求规格说明书》和《用例文档》的相关细节也已补充修订,与本周确定的设计和逻辑保持一致。 +3. 技术储备: + * **前端**:基本掌握了Vue3+Vite的前端架构知识和基础交互功能,能独立搭建项目框架。 + * **后端**:掌握了ER建模、UML规范、加噪算法原理及图像评估指标体系,数据库设计达到3NF规范。 + * **模型**:完成了两篇核心论文的精读和代码复现,成功跑通了SimAC、ASPL算法。 +4. 协同机制: + 团队采用了**敏捷开发**模式,所有成员积极配合前端原型和后端数据库设计工作。本周通过多次对接,明确了前后端接口协调的细节,为下周进入开发阶段打下了坚实基础。 +5. 下周重点: + 梁浩建议下周召开技术交流会,梳理系统运行全流程,并优先制定RESTful API接口规范,胡帆将跟进实现。 diff --git a/doc/process/weekly/week-06/members/hufan-weekly-plan-06.md b/doc/process/weekly/week-06/members/hufan-weekly-plan-06.md new file mode 100644 index 0000000..ec2da3f --- /dev/null +++ b/doc/process/weekly/week-06/members/hufan-weekly-plan-06.md @@ -0,0 +1,22 @@ +# 个人周计划-第6周 + +# 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-27 +**结束时间:** 2025-11-02 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 论文算法讲解 | 本人 | 本周暂定10-29晚,以本人目前对论文核心算法和代码的掌握情况向后端作详细讲解(配合上周在群里发的内部文档笔记以及训练经验),以确保后端对代码有一定认识。如果有时间的话,能够指导后端其他成员跑通一遍代码最好。 | +| 2 | 跑通模型代码 | 本人 | 本周需要对剩下三篇(CAAT、PID、ARPP)三篇论文进行阅读,并借助上周的经验在autodl租用云服务器配置好环境、**跑通三篇的代码**,争取将环境、适配、调参经验写成文档,为后端以后的工作铺垫。经过粗略估算,CAAT和PID的实现难度适中,而ARPP的实现难度较大,如有困难可以先跑通前两篇,ARPP允许延迟到未来的计划中。 | +| 3 | 前端原型协助 | 金郅博、杨逸轩 | 开发原型必然会遇到各种接口定义和需求不清的问题,本人会全力配合前端开发者。金郅博和杨逸轩必须就原型所需的约定,与我进行多次协商。如果按照预定计划进行的对接效率不够,可以约定召开额外的全体会议,总之取决于前端进度。一定要让原型保质保量完成。
此外,当金郅博、杨逸轩前端任务量过重时,我将抽时间辅助UI组件、页面布局的开发,保证原型顺利产出。 | +| 4 | 后端接口协调 | 梁浩、杨博文 | 10月29日晚会议中明确技术路线。在讲解完代码和项目原理后,根据实际算法,与后端同学一起初步建立RESTful API设计概念。 | +| 5 | 需求文档协助 | 杨博文、杨逸轩 | 本周需要完成需求文档第一版,我会协助杨博文、杨逸轩,不断讨论迭代,直到修改出合适的产出。 | + +## 小结 +1. **算法技术攻坚与支持**: 本人作为项目经理,承担关键的技术攻坚角色,一方面指导后端理解现有论文算法,另一方面需亲自完成剩余多篇论文的环境配置与代码调试,为团队积累实践经验。 +2. **协作重点:** 前端以金郅博为核心,后端以梁浩为核心,文档以杨博文为核心,所有协调工作由我主要负责。 \ No newline at end of file diff --git a/doc/process/weekly/week-06/members/hufan-weekly-summary-06.md b/doc/process/weekly/week-06/members/hufan-weekly-summary-06.md new file mode 100644 index 0000000..4955205 --- /dev/null +++ b/doc/process/weekly/week-06/members/hufan-weekly-summary-06.md @@ -0,0 +1,39 @@ +个人周总结-第6周 +========= + +姓名和起止时间 +------- + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-27 +**结束时间:** 2025-11-02 + +本周任务完成情况 +-------- + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 论文算法讲解 | 完成 | 10月29日晚成功组织了**算法技术分享会**,面向后端团队详细讲解了Diffusion Disturbance算法的核心原理和实现逻辑。结合之前整理的内部文档笔记和实际训练经验,帮助梁浩、杨博文等后端同学建立了对算法的深入理解。讲解过程中重点阐述了算法的数学原理、代码结构以及关键参数设置,为后续的算法集成工作奠定了扎实的理论基础。 | +| 2 | 跑通模型代码 | 完成 | 本周成功完成了CAAT、PID、ARPP三篇论文的深度研读和代码实现工作。通过在autodl云服务器上的反复调试,不仅跑通了所有算法代码,还完成了从A100到4090平台的适配优化。期间积累了大量的环境配置、超参数调优以及平台迁移的实践经验,并将这些宝贵经验整理成详细的内部技术文档,为团队后续的开发工作提供了重要参考。至此,**所有的四条基础加噪算法链路都跑通了**。 | +| 3 | 前端原型协助 | 完成 | 与金郅博、杨逸轩保持了密切的协作关系,参与了原型开发过程中的需求澄清和技术咨询工作。通过多次深入讨论,帮助前端团队明确了原型所需的展示效果和美术风格,澄清了一些技术细节。 | +| 4 | 后端接口协调 | 部分完成 | 在10月29日的技术会议中与梁浩、杨博文就后端架构和API设计进行了深入探讨,初步建立了RESTful API的设计框架和基本概念。虽然具体的接口规范还需要进一步细化和完善,但团队已经对后端的整体技术路线和实现方案达成了共识,为下周的深度集成工作做好了准备。 | +| 5 | 需求文档协助 | 完成 | 积极配合杨博文、杨逸轩完成了需求文档第一版的编写工作,通过多轮讨论和迭代优化,确保文档内容准确反映了项目的技术需求和功能规格。 | + +对团队工作的建议 +-------- + +1. **完善细节,避免返工:** 在下周的算法集成和API后端对接阶段,建议团队更加注重细节规划和前期沟通。特别是在接口设计、数据格式定义以及错误处理机制等方面,需要提前做好充分的讨论和确认,避免因为规范不清晰而导致后期的重复开发和调试工作。 + +2. **合作分工:**团队目前的协作机制运行良好,但建议在下周的关键节点增加更多的交叉检查和相互支持。例如,后端集成算法时,前端同学可以同步了解接口变化;前端对接API时,算法同学也应该及时响应技术咨询。这种更紧密的协作方式有助于提高整体开发效率。 + +小结 +-- + +1. **跑通算法:**本周在算法研究方面取得了重要突破,成功完成了基础链路中所有核心算法的代码实现和平台适配。从最初的论文理解到最终的代码跑通,这个过程不仅验证了算法的可行性,更重要的是积累了丰富的实践经验。通过系统性的环境配置、参数调优以及平台迁移工作,为团队后续的产品化开发建立了坚实的技术基础。 + +2. **对接工作:** 作为项目的技术核心,本周在团队协作方面投入了大量精力。无论是向后端团队讲解算法原理,还是协助前端澄清需求细节,都体现了跨团队协作的重要价值。虽然后端接口协调工作还有待进一步完善,但通过这周的深入沟通,团队成员之间的技术理解更加一致,为下周的集成工作创造了良好条件。 + + + +--- diff --git a/doc/process/weekly/week-06/members/jinzhibo-weekly-plan-06.md b/doc/process/weekly/week-06/members/jinzhibo-weekly-plan-06.md new file mode 100644 index 0000000..ed6ac6f --- /dev/null +++ b/doc/process/weekly/week-06/members/jinzhibo-weekly-plan-06.md @@ -0,0 +1,35 @@ +# 个人周计划-第6周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-10-27 + +**结束时间:** 2025-11-02 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **原型框架细节整理** | 个人 | 10-27日,整理上周开发的前端框架细节,删除冗余文件与代码,整理界面布局和尺寸设计。 | +| 2 | **明确前端展示内容并实现预制样例实装** | 胡帆,杨逸轩 | 10-28晚与胡帆商议班会展示的原型细节,10-29至10-30,明确细节后着手完善功能设计以及页面交互,目标是能够演示一个用户从点进去到结束一个任务的总流程,要把“添加任务”、“等待排队”、“取走图片”等实际动画演示给做出来,最后实装后端组预制的任务材料。 | +| 3 | **前端ui实装与美术样式加工** | 杨逸轩 | 10-30至11-1日,完成前端的页面美术加工,包括实装杨逸轩设计的第一批ui组件,自行编写代码嵌入页面动画效果,要求前端风格在排版清晰的基础上还要体现科技感与游戏引擎般的酷炫效果 | +| 4 | **原型最终版本地部署与测试** | 杨逸轩 | 11-2日,必须确定前端原型的最终版,与杨逸轩完成本地部署后进行功能测试,查漏补缺,及时修改bug,使之成为一个与后端分离但能完整使用的前端原型 | + + + +小结 +-- + +1. **原型冲刺交付**: 作为前端组主负责人,本周要进行冲刺式开发,必须抓紧时间按时完成各节点任务,完成前端展示版原型,积极与杨逸轩进行协助开发,必要时可申请胡帆辅助 +2. **ai模型更新:** 上周使用的ai模型功能比较落后,这周开始使用更加强大的cursor与Claude模型进行辅助开发,提升编码质量与效率 +3. **技术能力拓展**: 本周将首次完整实现前端动画交互流程,需重点学习CSS动画、JavaScript异步操作等关键技术,通过实际项目快速提升前端工程化能力。 \ No newline at end of file diff --git a/doc/process/weekly/week-06/members/jinzhibo-weekly-summary-06.md b/doc/process/weekly/week-06/members/jinzhibo-weekly-summary-06.md new file mode 100644 index 0000000..5a15203 --- /dev/null +++ b/doc/process/weekly/week-06/members/jinzhibo-weekly-summary-06.md @@ -0,0 +1,38 @@ +个人周总结-第6周 +========= + +姓名和起止时间 +------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-10-27 + +结束时间: 2025-11-2 +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------- | -------------------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **原型框架细节整理** | 完成 | **完成前端原型框架细节整理**,于10-27日借助Cursor工具系统调整了文件架构与代码结构,优化了界面尺寸与元素布局;并于10月30日完成技术栈迁移,从Vue CLI迁移至Vite,CSS迁移至Tailwind CSS,采用更现代化、高性能的技术方案,有效提升后续开发效率与质量。 | +| 2 | **明确前端展示内容并实现预制样例实装** | 完成 | **已明确前端展示内容并实现**,10-28晚与胡帆商议,明确了班会展示中各页面应呈现的内容与效果,实现了用户从进入系统到完成任务的完整流程演示,完成各页面跳转与元素交互动画,并实装后端组提供的样例图片。同时,针对初版设计AI痕迹较重的问题,确定了后续“去AI化”的设计优化方向,以增强高级感与视觉效果。 | +| 3 | **前端ui实装与美术样式加工** | 完成 | **完成前端ui实装与美术加工**,10月31日实装杨逸轩设计的第一批UI组件,后因部分效果不理想及“AI感”过强,在技术栈迁移后决定改用适配Tailwind的官方组件库。经尝试Shadcn与Reactbits等组件库,最终选用Vuebits,整合了GlassSurface、PillNav、Target Cursor、Wave、Galaxy等组件。美术风格参考Vuebits官方设计,采用黑色背景搭配白色文字与图案,辅以绿色高亮,形成兼具高级感与视觉吸引力的页面效果。 | +| 4 | **原型最终版本地部署与测试** | 完成 | **完成原型最终版本地部署与测试**,11-2日,对原型进行了一次系统的部署与测试,修复了页面样式不统一与按钮、输入框、下拉框组件样式异常的bug,使之达到下周班会能够完整演示的原型效果 | + +对团队工作的建议 +-------- + +1. **团队评审原型:** 鉴于原型最终版将于下周三进行班会展示,建议团队对最终版原型尽快组织一次正式的评审会议,共同检查原型是否符合《需求规格说明书》的核心要求,并提出建设性的改进意见。 + +小结 +-- + +1. **原型交付:** 作为前端主导负责人,本周核心工作是全力推进前端原型的开发与定版,系统完成了技术栈迁移、交互流程实现与UI组件实装,确保了原型达到班会演示要求。 + +2. **提升规范性与开发效率:** 在保证前端演示效果的同时,系统性地重构了项目目录,及时删除冗余文件与无用代码,并将所有组件统一归置于 `src/components` 目录下进行标准化维护,提高项目的结构清晰度与规范性,提高了协作开发的效率。 + + + +--- diff --git a/doc/process/weekly/week-06/members/lianghao-weekly-plan-06.md b/doc/process/weekly/week-06/members/lianghao-weekly-plan-06.md new file mode 100644 index 0000000..3147a8d --- /dev/null +++ b/doc/process/weekly/week-06/members/lianghao-weekly-plan-06.md @@ -0,0 +1,28 @@ +# 个人周计划-第6周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-10-27 +**结束时间:** 2025-11-02 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ------------------------- | -------------- | --------- | +| 1 | 数据库框架和组织搭建 | 杨博文 | 10-27至28日,完整本地部署数据库,基于上周完成的schema设计进行MySQL数据库的本地化部署与测试;编写Flask框架的后端结构,搭建基础的项目目录结构和配置文件。确保数据库连接正常,基础Flask应用能够启动运行。 | +| 2 | 后端本地化部署实现 | 杨博文 | 11-01前,与杨博文共同实现整个后端的本地化部署,确保:除了没有实际文件处理以外,后端应当能够作为本地服务器正常持久运行。包括路由配置、中间件设置、基础API端点实现等。 | +| 3 | 论文算法学习与代码理解 | 胡帆 | 参与胡帆主持的论文代码详解会议,主要学习LDM、DreamBooth、LoRA等核心算法及代码结构。会后应该对实现算法的预留结构有一定认知,为未来在后端里嵌入实际代码作预备。如有时间,尝试独立跑通一遍代码。 | +| 4 | 原型对接支持 | 金郅博、杨逸轩 | 配合前端原型开发,及时响应前端组对API接口的需求。虽然本周后端主要是框架搭建,但可能需要为前端提供mock数据和基础接口,确保前端原型能够正常演示完整用户流程。 | + +## 小结 + +1. **后端基础架构建设:** 本周重点完成Flask后端框架的本地部署,基于已完成的数据库设计搭建可运行的后端服务。虽然暂不包含实际文件处理逻辑,但需确保基础架构稳定可靠。 + +2. **算法集成预备工作:** 通过参与技术分享会议,深入理解对抗性扰动算法的实现原理和代码结构,为下阶段将算法代码集成到后端框架做好准备。 + +3. **团队协作与支持:** 积极配合前端原型开发进度,提供必要的接口支持和mock数据,确保团队整体目标(11-02前端原型最终版交付)的顺利实现。 + + + diff --git a/doc/process/weekly/week-06/members/lianghao-weekly-summary-06.md b/doc/process/weekly/week-06/members/lianghao-weekly-summary-06.md new file mode 100644 index 0000000..2c194b9 --- /dev/null +++ b/doc/process/weekly/week-06/members/lianghao-weekly-summary-06.md @@ -0,0 +1,31 @@ +# 个人周总结-第6周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-10-27 +**结束时间:** 2025-11-02 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 成果说明 | +| ---- | ------------------------- | -------- | --------- | +| 1 | 数据库框架和组织搭建 | 已完成 | 根据前期设计的schema成功完成了MySQL数据库的本地部署和测试。设计并实现了完整的数据库表结构,包括用户、任务、图像等核心表。目前数据库已可以正常运行并支持基本的CRUD操作。 | +| 2 | 后端本地化部署实现 | 已完成 | 基于Flask框架搭建了完整的后端服务,实现了用户认证、任务管理、图像处理等核心功能模块。完成了API路由配置、中间件设置、错误处理等基础架构。通过本地测试验证了各个API端点的功能正常,为后续算法集成打下了基础。 | +| 3 | 论文算法学习与代码理解 | 已完成 | 参加了胡帆主持的论文代码详解会议,深入学习了LDM、DreamBooth、LoRA等核心算法原理及其实现方式。对算法的工作原理和代码结构有了清晰的认识,为后续将算法集成到后端框架中做好了准备。 | +| 4 | 原型对接支持 | 已完成 | 目前前端原型开发进展顺利,暂时没有需要后端特别支持的需求。继续保持关注,随时准备响应前端组的接口需求。 | + +## 对团队工作的建议 + +1. **完善错误处理机制:** 建议团队制定统一的错误处理规范,包括前后端错误码映射、错误信息格式和日志记录标准。 + +2. **加强接口测试覆盖:** 建议建立完整的接口测试用例库,确保新增功能都有对应的测试用例。特别是文件上传和管理员权限相关接口的异常情况测试。 + +## 小结 + +1. **API框架搭建:** 本周完成了5大模块共15个API端点的设计与实现,包括认证、用户、管理员、任务和图像处理模块,为系统功能开发奠定了基础架构。 + +2. **测试体系建立:** 开发完成了完整的API测试界面,实现了14个测试函数覆盖所有接口,并建立了基于HTML的可视化测试环境,方便功能验证。 + +3. **算法原理掌握:** 参加了胡帆主持的论文代码详解会议,深入学习了LDM、DreamBooth、LoRA等核心算法原理及其实现方式,为后续算法集成到后端框架做好准备。 \ No newline at end of file diff --git a/doc/process/weekly/week-06/members/yangbowen-weekly-plan-06.md b/doc/process/weekly/week-06/members/yangbowen-weekly-plan-06.md new file mode 100644 index 0000000..835cbe7 --- /dev/null +++ b/doc/process/weekly/week-06/members/yangbowen-weekly-plan-06.md @@ -0,0 +1,23 @@ +# 个人周计划-第6周 + +# 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-27 +**结束时间:** 2025-11-02 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------------- | ------------------ | ------------------------------------------------------------ | +| 1 | 需求文档撰写与整合 | 杨逸轩 | 10月27日至28日,初步确定项目前景文档与迭代开发计划;10月29日晚与PM沟通需求细节;11月1日前,结合已有数据库文档、用例图等,完成项目需求文档第一版。 | +| 2 | 后端本地化部署与框架搭建 | 梁浩、胡帆 | 10月27日至28日,协助完成数据库本地部署及Flask后端结构搭建;10月29日参与PM主导的技术路线讨论,初步建立RESTful API设计;11月1日前,确保后端可本地持久运行(除无实际文件外),并预留算法嵌入结构。 | +| 3 | 算法理解与模型代码预研支持 | 胡帆 | 参与胡帆组织的论文算法讲解会议,理解CAAT、PID、ARPP等论文核心逻辑及代码结构;协助记录环境配置与调参经验(如有余力)。 | +| 4 | 前后端协作与接口协调 | 金郅博、梁浩、胡帆 | 在完成文档与后端任务的前提下,协助前后端保持一致性,保障原型演示顺利进行。 | +| 5 | 文档与开发任务的优先级统筹 | 全体成员 | 本周以需求文档和后端部署为双主线任务,灵活调配时间;在杨逸轩支援前端压力较大时,必要时可分担部分文档整理工作。 | + +## 小结 +1. **学习需求:** 通过参与Flask后端部署与需求文档撰写,深化对Web服务架构与软件工程规范的理解; +2. **知识储备:** 重点掌握Flask项目结构组织、RESTful API设计原则,以及需求规格说明书的撰写方法; +3. **协作重点:** 以“后端+文书”双角色并行推进,确保技术实现与文档输出同步闭环,同时在团队关键节点(如班会原型演示)提供必要支持。 \ No newline at end of file diff --git a/doc/process/weekly/week-06/members/yangbowen-weekly-summary-06.md b/doc/process/weekly/week-06/members/yangbowen-weekly-summary-06.md new file mode 100644 index 0000000..8ae1182 --- /dev/null +++ b/doc/process/weekly/week-06/members/yangbowen-weekly-summary-06.md @@ -0,0 +1,27 @@ +# 个人周总结-第6周 + +## 姓名和起止时间 + + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-27 +**结束时间:** 2025-11-02 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 成果说明 | +| :--- | :--- | :--- | :--- | +| 1 | 需求文档撰写与整合 | 已完成 | 与产品经理(PM)沟通并明确了项目需求细节。结合已有的数据库文档和用例图,主导完成了项目需求文档的第一版,为后续的迭代开发提供了清晰的指引。 | +| 2 | 后端本地化部署与框架搭建 | 已完成 | 协助团队完成了数据库的本地化部署,并基于Flask成功搭建了后端项目的基础框架。 | +| 3 | 算法理解与模型代码预研 | 已完成 | 积极参与了由胡帆组织的论文算法讲解会议,深入学习了CAAT、PID、ARPP等核心算法的逻辑与代码结构。通过会议和后续的资料研究,对模型的实现细节有了更清晰的认识。 | +| 4 | 前后端协作与支持 | 已完成 | 在完成主要任务的同时,积极与前后端同事协调接口规范,确保信息同步。本周重点任务明确,与团队成员协作顺畅,为原型演示的顺利进行提供了保障。 | + +## 对团队工作的建议 + +1. **深入学习课程知识:** 建议团队成员认真学习软工导相关知识,利用课程讲解的知识完成自己的工作 + +## 小结 + +1. **需求文档体系化:** 主导完成了项目需求规格说明书的第一版,明确了项目范围和功能细节,为项目开发提供了核心依据。 +2. **核心算法认知深化:** 通过团队学习会议,掌握了CAAT、PID、ARPP等关键论文算法的核心思想和代码结构,为技术预研提供了支持。 \ No newline at end of file diff --git a/doc/process/weekly/week-06/members/yangyx-weekly-plan-06.md b/doc/process/weekly/week-06/members/yangyx-weekly-plan-06.md new file mode 100644 index 0000000..fad3313 --- /dev/null +++ b/doc/process/weekly/week-06/members/yangyx-weekly-plan-06.md @@ -0,0 +1,29 @@ +# 个人周计划-第6周 + +姓名和起止时间 +------- + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-10-27 + +**结束时间:** 2025-11-02 + +## 本周任务计划安排 + +| **序号** | **计划内容** | **协作人** | **情况说明** | +| ----------------------------- | ----------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | **原型 UI 组件开发与交付(冲刺任务)** | 个人 | 1. **第一批组件开发:** 参考开源和设计网站,准备 3-4 个 Vue 文件形式、集成化的 UI 组件,要求简约美观,便于金郅博进行原型美术设计。
2. **组件完善与讨论:** 参加与 PM 的会议,讨论并修改完善第一批 UI 组件。
3. **第二批组件开发 :** 完成 1-2 个更复杂的第二批 UI 组件。
4. **随时辅助:** 在完成组件任务的空闲时间,**优先**帮助金郅博分担前端代码编写压力,确保原型最终版能按时完全确定。 | +| 2 | **《需求文档》协作** | 个人 | 在辅助前端任务的间隙,协助杨博文完成文档相关工作:
1. **初步文档撰写 (10-27至10-28):** 协助初步决定项目前景文档和第一稿迭代开发计划文档的编写思路。
2. **文档细节讨论 (10-29日晚):** 参加与 PM 的交流会议,讨论需求文档的细节。
3. **文档初稿支持 (11-01前):** 协助杨博文参考数据库文档、用例图等,完成项目需求文档第一版的编写。 | +| 3 | **学习/网课** | 个人 | 空余时间进行前端开发的网课学习和练习 | + +小结 +--------- + +1. **核心目标:** **原型最终版的冲刺与交付。** 本周工作重心将全面围绕前端原型展开,确保按时保质地完成 UI 组件开发(两批次),并随时准备辅助金郅博进行前端整合与代码编写。 + +2. **协同合作:** 积极参与 10-29 日晚与 PM 的会议,讨论组件修改和需求文档细节。 + +3. **优先级:** **前端原型 > 需求文档协助 > 个人学习/网课。** diff --git a/doc/process/weekly/week-06/members/yangyx-weekly-summary-06.md b/doc/process/weekly/week-06/members/yangyx-weekly-summary-06.md new file mode 100644 index 0000000..79dca5e --- /dev/null +++ b/doc/process/weekly/week-06/members/yangyx-weekly-summary-06.md @@ -0,0 +1,38 @@ +# 个人周总结-第6周 + +姓名和起止时间 +------- + +姓  名: 杨逸轩 + +团队名称: 2班-深度思考 + +开始时间: 2025-10-27 + +结束时间: 2025-11-02 + +## 本周任务完成情况 + +| **序号** | **总结内容** | **是否完成** | **成果或说明** | +| ------ | ----------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | **原型 UI 组件开发与交付(冲刺任务)** | 基本完成 | **第一批组件开发:** 参考开源和设计网站,完成了 3-4 个简约美观的 Vue 文件形式的集成化 UI 组件,已交付金郅博同学使用。
**组件完善与讨论:** 参加了与 PM 的会议,对第一批 UI 组件进行了讨论并根据反馈进行了修改和完善。并在与金郅博同学讨论后确定了vite+tailwind的开发技术栈。
**第二批组件开发:** 正按照计划进行了 1-2 个更复杂的第二批 UI 组件的开发。
目前协助金郅博进行前端原型的开发,已经完成初步模型。 | +| 2 | **《需求文档》协作** | 完成 | 协助初步决定了项目前景文档和第一稿迭代开发计划文档的编写思路。
 协助杨博文参考数据库文档、用例图等,完成了项目需求文档第一版的编写支持工作。 | +| 3 | **学习/网课** | 完成 | 利用空余时间持续进行前端开发的网课学习和练习,主要为《Vite + Vue3 实战项目》:通过实战项目练习了如何拆分大型页面为可复用组件,以及如何构建项目结构。,聚焦于 Vue 组件化开发和实践。 | + +对团队工作的建议 +-------- + +1. **原型验收与反馈**:鉴于原型最终版已进入冲刺交付阶段,建议团队尽快组织一次正式的验收会议,确保原型符合《需求规格说明书》的核心要求。 + +2. **后端开发前置**:建议后端开发人员应根据已确定的 RESTful API 交互模式,尽快开始 API 接口的初步设计和部分核心功能的实现,为前后端联调做准备。 + +小结 +-- + +1. **前端原型冲刺完成**:本周工作重心全面围绕前端原型展开,按时保质地完成了两批次的 UI 组件开发,并积极辅助了前端整合工作,**为原型最终版的交付打下了坚实基础**。 + +2. **文档协作与支持**:积极参与了《需求文档》的协作,协助完成了项目前景文档和迭代计划文档的编写思路确定,并支持了需求文档第一版的产出。 + +3. **技术栈深化**:持续进行了前端网课学习,深化了对 Vue 组件化开发和实践的理解。 + + diff --git a/doc/process/weekly/week-07/group/meeting-minutes-07-01.md b/doc/process/weekly/week-07/group/meeting-minutes-07-01.md new file mode 100644 index 0000000..5fae639 --- /dev/null +++ b/doc/process/weekly/week-07/group/meeting-minutes-07-01.md @@ -0,0 +1,56 @@ + +*** + +# 小组会议纪要-项目进度讨论 + +## 会议记录概要 + +**指导老师:** 刘琴老师、邹博士 + +**会议主题:** 项目进度探讨与后续方向建议 + +**参与人员:** 项目组成员 + +--- + +## 会议内容 + +### 1. 当前项目进度 + +团队向老师和博士汇报了目前已完成的工作: + +1. **前端页面:** 已完成基础的前端界面开发。 +2. **核心算法:** 四种核心的加噪算法已实现,并可进行效果图展示。 + +### 2. 项目当前面临的困难 + +团队在推进过程中遇到了以下几个主要问题: + +1. **演示困难:** 加噪任务处理时间较长,难以在短时间内进行流畅的功能演示。 +2. **硬件瓶颈:** GPU 资源不足(仅一台 4090),无法实现并行计算,影响开发和测试效率。 +3. **功能单一:** 目前平台实现的功能较为单一,用户体验和产品深度有待加强。 +4. **成本问题:** 云 GPU 的使用费用较高,需要寻找更经济的解决方案。 + +### 3. 指导老师建议 + +刘琴老师和邹博士在听取汇报后,给出了以下几点核心建议: + +1. **丰富功能模块与评估维度:** + * **增加日志分析模块:** 开发一个用于分析命令行信息的日志模块,便于调试和追踪。 + * **评估防护效果:** 增加针对“人脸编辑”、“人脸交换”等攻击方式的防护效果评估功能。 + * **多样化对比:** 加噪前后的图像对比维度需要更加丰富和多样化。 + * **增加防护评分:** 建立一套评分体系,量化算法的防护效果。 + * **增加净化后对比:** 对比加噪后的图片在经过净化处理(如 JPEG 压缩)后的效果,以检验鲁棒性。 + +2. **提升用户体验与性能:** + * **强化交互式展示:** 所有效果的展示应尽可能通过交互的方式呈现,以更好地体现出功能的多样性和实用性。 + * **加速处理过程:** 建议尝试训练一个 GAN(生成对抗网络)或获取通用的噪声图片,以此来**加速加噪过程**,显著提升用户的使用体验。 + +### 4. 问题总结与后续方向 + +**待解决问题(后续攻坚方向)** + +* **性能与效率:** 如何在现有硬件条件下优化算法,或通过新技术(如 GAN)来缩短加噪时间。 +* **功能广度与深度:** 按照老师建议,规划并开发日志分析、多维度评估等新功能,提升产品价值。 +* **成本控制:** 探索更经济的 GPU 解决方案或优化资源使用。 +* **交互体验:** 将功能的展示方式向更具交互性的方向改进。 \ No newline at end of file diff --git a/doc/process/weekly/week-07/group/meeting-minutes-07-02.md b/doc/process/weekly/week-07/group/meeting-minutes-07-02.md new file mode 100644 index 0000000..e8c669a --- /dev/null +++ b/doc/process/weekly/week-07/group/meeting-minutes-07-02.md @@ -0,0 +1,94 @@ +小组会议纪要-第7周 +========== + +会议记录概要 +------ + +**团队名称 :** 2班-深度思考队 + +**指导老师 :** 刘琴 + +**主持人 :** 胡帆 + +**记录人员 :** 杨逸轩 + +**会议主题 :** 原型交付验收、后端集成启动、API 规范制定 + +**会议地点 :** 院楼五楼会议室 + +**会议时间 :** 2025-11-03 5:00 + +**记录时间 :** 2025-11-03 8:00 + +**参与人员 :** 胡帆、金郅博、杨逸轩、杨博文、梁浩 + + + +# 会议内容 + +### 1. 第六周工作总结回顾 + +主持人(胡帆)对第六周“原型交付冲刺”阶段的工作进行了总结,所有核心任务均**按时完成**。 + +前端原型与UI准备: + +前端原型方面取得了显著成果。金郅博和杨逸轩完成了完整的、可演示用户流程的前端原型本地部署。目前的原型已具备完整的前端功能和交互体验,仅差后端数据接入和预制任务材料。此外,杨逸轩还准备了定制化的 UI 组件,这些组件将用于 Alpha 版本的开发,进一步提升产品的美术和交互质量。 + +后端架构与文档基础: + +后端团队也完成了基础架构的搭建工作。梁浩和杨博文成功搭建了 Flask 后端结构和本地数据库部署,并实现了后端本地服务器的持久运行,同时初步明确了 RESTful API 的设计逻辑。在文档方面,杨博文和杨逸轩协作,完成了第一版项目需求文档、项目前景文档和迭代开发计划文档的编写,为项目的深入开发提供了重要的书面指导。 + +核心算法准备与知识转移: + +技术预研方面,PM 胡帆完成了所有核心加噪算法(包括 CAAT、PID、ARPP 等)的代码跑通工作,并整理了环境适配和调参经验文档,为后端集成提供了扎实的准备。为了确保团队的技术深度,胡帆还向后端组详细讲解了 Diffusion Disturbance 算法原理,保证了所有开发人员对核心技术有深入理解。 + +**结论:** 第六周冲刺阶段目标圆满达成,项目正式进入后端集成与前后端联调的关键阶段。 + +### 2. 第七周核心目标 + +本周工作重心从前端原型转移到**后端算法集成**和**前后端接口对接**,核心目标如下: + +1. **后端算法集成完成:** 梁浩将胡帆跑通的四个核心加噪算法集成整合到 Flask 服务器中,实现算法的稳定本地部署。 + +2. **API 规范终确认:** 在算法集成后,由胡帆、梁浩、杨博文共同完成 **API 接口规范的最终确认**,为前端对接提供清晰文档。 + +3. **前端细化与对接启动:** 金郅博在进行视觉优化的同时,根据最终 API 规范启动前后端对接工作。 + +4. **云部署技术预研:** 后端(梁浩、杨博文)和前端(杨逸轩)分别开始尝试学习和实践云服务器部署技术。 + +### 3. 本周任务安排与分工(2025-11-03 至 2025-11-10) + +| **序号** | **计划内容** | **执行人** | **关键时间节点/详细说明** | +| ------ | ------------- | -------------- | ------------------------------------------------------------------------------ | +| 1 | **后端算法集成** | 梁浩、杨博文、胡帆 | **11月5日前:** 梁浩完成算法代码集成整合,优化资源管理,将四个核心算法稳定部署到本地服务器。杨博文提供技术支持。 | +| 2 | **API 接口总确认** | 胡帆、杨博文、梁浩 | **11月6日:** 后端算法集成完成后,三方集中讨论并最终确定 API 接口规范框架,确保清晰的对接指南。 | +| 3 | **前端细化与对接** | 金郅博、杨逸轩、胡帆 | **11月3日至5日:** 金郅博与杨逸轩深度优化 UI 美术、交互细节。**11月6日后:** API 确定后,金郅博立即开始前端逻辑的适配与前后端对接。 | +| 4 | **用户手册初版** | 杨逸轩、杨博文 | 完成**用户手册第一版**的编写工作,参考需求文档,必要时咨询胡帆。 | +| 5 | **云服务器部署尝试** | 梁浩(后端)、杨逸轩(前端) | **11月6日后:** 学习云服务器部署技术,尝试将各自的半成品系统迁移到云环境,为后续正式上线做技术储备。 | +| 6 | **完善后端接口** | 梁浩 | 负责处理前端在对接过程中提出的问题和优化建议,持续完善后端接口的稳定性和易用性。 | + +### 4. 重点强调事项与风险预警 + +* **算法集成最高优先级:** 本周的首要任务是确保后端能够稳定运行核心算法。所有阻塞问题需立即上报 PM,必要时召开临时会议。 + +* **API 规范必须明确:** 11月6日的 API 确认是前后端联调的前提,必须确保接口定义与前端需求完全匹配,避免返工。 + +* **云部署是加分项:** 尝试云部署作为学习任务,不影响主线开发进度,但需认真学习,掌握流程。 + +* **沟通机制:** 前后端需保持高频沟通,特别是金郅博与梁浩/胡帆,在对接过程中遇到任何数据格式或逻辑差异需即时解决。 + +### 5. 问题总结 + +**已解决问题** + +* 第六周所有计划任务,尤其是前端原型和后端框架搭建,均已成功交付。 + +* 所有核心算法代码已跑通,并整理了适配文档。 + +**待解决问题(本周需要重点攻坚)** + +* **后端集成复杂度:** 将 PM 的算法代码无缝、稳定地集成到梁浩的 Flask 架构中,并确保资源管理优化。 + +* **API 细节敲定:** 确保 API 接口定义能够完全满足前端的细化交互需求,实现前后端无缝对接。 + +**备注:** 本周是“后端集成与对接周”。所有工作必须围绕 API 规范的确定和算法的稳定运行展开。 diff --git a/doc/process/weekly/week-07/group/weekly-plan-07.md b/doc/process/weekly/week-07/group/weekly-plan-07.md new file mode 100644 index 0000000..239a16b --- /dev/null +++ b/doc/process/weekly/week-07/group/weekly-plan-07.md @@ -0,0 +1,25 @@ +# 小组周计划-第7周 # + +## 团队名称和起止时间 ## + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-03 +**结束时间:** 2025-11-10 + +## 本周任务计划安排 ## + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 后端集成算法 | 胡帆、梁浩、杨博文 | 11月3日至5日期间,梁浩将基于胡帆已跑通的算法代码进行**后端集成整合**工作。主要任务包括重新梳理文件层次结构,优化资源管理机制,完善运行链路流程,最终将四个核心加噪算法稳定部署到本地服务器环境中。杨博文将提供全程技术支持和协助。在整合过程中如遇到算法层面的技术难题,团队将及时与胡帆协作解决,确保算法功能的完整性和稳定性。
11月6日,胡帆与后端团队将就对接成果进行深入讨论,共同**制定初步的API接口规范框架**,为前后端协作奠定技术基础。 | +| 2 | 用户手册 | 杨逸轩、杨博文 | 杨逸轩和杨博文共同完成**用户手册第一版**的开发工作。编写过程中如需了解技术细节,将参考已完成的需求文档,必要时直接咨询胡帆获取专业技术支持,确保手册内容的准确性和实用性。 | +| 3 | API总确认 | 胡帆、杨博文、梁浩 | 在11月6日后端算法集成工作完成后,团队将集中精力完成**API接口规范**的最终确认工作。后端团队需要为前端开发提供清晰的对接指南。这项工作的完成质量将直接影响后续前后端协作的效率。 | +| 4 | 前端细化与对接 | 金郅博、胡帆 | 11月3日至5日,金郅博将与杨逸轩紧密合作,对原型的视觉设计进行深度优化,包括UI界面的美术风格统一、交互体验的细节完善、响应式布局的适配等工作。
11月6日API规范确定后,金郅博将立即开始前端适配工作,根据后端提供的接口规范调整前端逻辑。对接过程中如发现API设计与前端需求存在差异,将及时与胡帆沟通协调,**确保前后端无缝对接**。 | +| 5 | 后端尝试上云服务器 | 梁浩、杨博文 | 11月6日算法集成完成后,后端将开始学习和实践**云服务器部署**技术。主要目标是掌握云端部署的完整流程,尝试将集成完成的后端系统迁移到云服务器环境,争取实现远程访问功能。虽然成功部署不作为硬性要求,但为后续正式上线做好准备。
同时,梁浩还将负责处理前端在API对接过程中提出的问题和优化建议,持续**完善后端接口**的稳定性和易用性。 | +| 6 | 前端尝试上云服务器 | 杨逸轩 | 11月6日后,杨逸轩将学习**前端云部署技术**,尝试将当前的前端半成品(无需完全对齐API)部署到云服务器上。这项工作重点在于熟悉前端部署流程、了解云端环境配置、掌握域名绑定等关键技能。虽然成功部署不作为硬性要求,但为后续正式上线做好准备。 | + +## 小结 ## + +1. **后端集成算法**:后端会将胡帆已验证的四个加噪算法无缝集成到系统中。梁浩将承担主要的集成工作,重点关注代码架构的优化、资源调配的合理化以及运行流程的标准化。杨博文作为技术支持,将协助解决集成过程中的各类技术难题。 +2. **API总确认**: API接口规范的确定是前后端协作的关键节点。这不仅要包含技术层面的接口定义,还要考虑到前端的实际使用需求,确保接口设计的合理性和易用性。 +3. **前后端对接**: 前端团队将在完善视觉设计的基础上,积极推进与后端的技术对接工作。金郅博将根据确定的API规范调整前端逻辑,确保数据交互的准确性和稳定性。这个阶段需要前后端团队保持密切沟通,及时发现和解决对接过程中的技术问题,为系统的整体联调做好准备。 +4. **尝试云部署**:云部署的尝试工作虽然不要求必须成功,但对团队的技术成长意义重大。梁浩和杨逸轩将分别负责后端和前端的云部署实践,通过实际操作掌握云服务器的使用技巧。 diff --git a/doc/process/weekly/week-07/group/weekly-summary-06.md b/doc/process/weekly/week-07/group/weekly-summary-06.md new file mode 100644 index 0000000..2d0825e --- /dev/null +++ b/doc/process/weekly/week-07/group/weekly-summary-06.md @@ -0,0 +1,27 @@ +# 小组周总结-第6周 # + +## 团队名称和起止时间 ## + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-10-27 +**结束时间:** 2025-11-02 + +## 本周任务完成情况 ## + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 原型最终版本 | 完成 | 10-27日金郅博完成了前端细节,整理界面布局和尺寸设计。10-28日晚,和PM商议了班会展示细节。11-01,**完成了最终版原型的本地部署前端**。目前的原型除了后端是空的、任务材料是预制的之外,已经可以作为一个完整的前端来用。
杨逸轩参考开源网站和设计网站中的资源,准备了几个**定制化化的UI组件**。由于计划中途灵活调整,组件将不再区分第一第二批,所有组件将用于alpha版本,而原型展示中暂不做实装。 | +| 2 | 需求文档 | 完成 | 项目前景文档、第一稿的迭代开发计划文档编写并提交完成,作为重点的**第一版项目需求文档**也顺利完成。 | +| 3 | 数据库框架和组织搭建 | 完成 | 完成了本地部署数据库和flask框架的后端结构。参与和PM的讨论后,确定了后端的构建思路并修改,基本明确了Restful API的逻辑。梁浩**实现了整个后端的本地化部署**,除了没有实际文件以外,它已经能够作为本地服务器正常持久运行。经过分享会议,梁浩和杨博文已经对实现算法的预留结构有一定认知,可以为未来在这个后端里嵌入实际代码作预备。 | +| 4 | 前后端辅助人员 | 完成 | 杨逸轩辅助了金郅博进行原型彻底完善和协调等,杨博文同学辅助了梁浩进行后端本地化搭建。 | +| 5 | 原型对接工作 | 完成 | 全体成员参与了与前后端、模型组的交流和对接工作。重点明确了加噪请求参数、图像上传/返回格式、分析报告触发条件等接口细节。 | +| 6 | 论文算法讲解 | 完成 | 胡帆在10-29的意见交流中,面向后端组的同学,对论文模型算法进行了约一个小时的 **Diffusion Disturbance算法详细原理讲解**(配合上周在群里发的内部文档笔记以及胡帆的训练经验),保证了后端对代码有一定认识,现在所有开发人员对于核心算法都有了较强的理解。 | +| 7 | 跑通模型代码 | 完成 | 胡帆本周完成了剩下三篇(CAAT、PID、ARPP)三篇论文的阅读,跑通了三篇的代码,至此,**基础链路功能算法全部都已跑通**,完成了从A100到4090平台的适配和超参数调整。胡帆将环境、适配、调参经验已经整理成内部文件,为以后的后端整合工作铺垫。 | + +## 小结 ## + +1. **前端原型交付**:本周成功完成了原型的最终版本交付,金郅博主导完成了前端界面的细节优化。杨逸轩通过调研开源资源和设计网站,准备了多个定制化UI组件,为后续alpha版本的开发奠定了坚实基础。 +2. **后端基础与架构建设**:梁浩成功搭建了完整的后端技术栈,包括数据库框架和Flask后端结构的建立。通过与PM的多轮讨论,明确了Restful API的设计逻辑和实现思路。目前后端已实现本地化部署并能作为服务器稳定运行。 +3. **需求与技术文档同步**:本周完成了项目关键文档的编写和提交工作,包括项目前景文档、迭代开发计划第一稿以及核心的项目需求文档第一版。 +4. **核心算法原理攻坚**:胡帆向后端开发团队详细阐述了Diffusion Disturbance算法的核心原理,确保所有开发人员对技术实现有深入理解。所有的基础算法都已经跑通,为后端完整集成做最后准备。 +5. **协同机制与灵活调配**:通过灵活的人员调配,杨逸轩和杨博文分别为前端和后端提供辅助支持,确保了各模块开发的协调推进。团队展现出良好的沟通能力和适应性,为项目的整体进展提供了有力保障。 diff --git a/doc/process/weekly/week-07/members/hufan-weekly-plan-07.md b/doc/process/weekly/week-07/members/hufan-weekly-plan-07.md new file mode 100644 index 0000000..63a543d --- /dev/null +++ b/doc/process/weekly/week-07/members/hufan-weekly-plan-07.md @@ -0,0 +1,22 @@ +# 个人周计划-第7周 + +# 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-03 +**结束时间:** 2025-11-10 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 后端集成支持 | 梁浩、杨博文 | 我将在整个集成过程中**提供关键算法代码集成支持**。在11月3日至5日期间,当梁浩进行算法代码的后端集成工作时,我需要随时待命解决可能遇到的算法层面技术难题。重点协助解决文件层次结构调整、资源管理优化以及运行链路完善等过程中的技术挑战,确保四个核心加噪算法能够稳定部署到本地服务器环境。 | +| 2 | API接口规范制定 | 梁浩、杨博文 | 11月5日算法集成工作完成后,在11月6日的会上我将**主导制定初步的API接口规范框架**。基于已集成的算法实际情况,与后端团队深入讨论接口设计的技术细节,包括请求参数格式、响应数据结构、错误处理机制等关键要素。为前后端协作建立清晰、规范的技术桥梁。 | +| 3 | 前端对接协调 | 金郅博 | 在前端视觉优化阶段(11月3日至5日),为金郅博提供必要的技术咨询,确保UI设计与算法功能需求保持一致。11月6日API规范确定后,密切配合金郅博进行前端适配工作,及时响应对接过程中的技术疑问。当发现API设计与前端实际需求存在差异且必要时,调整接口规范,确保前后端能够实现无缝对接。 | +| 4 | 用户手册技术支持 | 杨逸轩、杨博文 | 为用户手册第一版的编写工作提供专业的技术支持。当杨逸轩和杨博文在编写过程中遇到算法原理、功能特性或技术实现方面的疑问时,我将及时提供准确、详细的技术解答。 | + +## 小结 +1. ***\*算法集成的技术保障:\**** 本周我的核心任务是为后端集成工作提供全方位的技术支撑。从前期的算法代码准备到集成过程中的技术难题解决,我需要确保四个核心加噪算法能够顺利过渡到产品化阶段。 +2. ***\*API设计的协调统筹:\**** API接口规范的制定是本周工作的重中之重,它关系到前后端协作的顺畅程度和项目整体的开发效率。我会与各方深入沟通,确保API设计对接实际落地。 +3. ***\*团队协作的技术支撑:\**** 作为技术负责人,不仅需要确保技术方案的正确性,更要促进团队成员之间的有效沟通,为项目的顺利推进创造良好的协作环境。 \ No newline at end of file diff --git a/doc/process/weekly/week-07/members/hufan-weekly-summary-05.md b/doc/process/weekly/week-07/members/hufan-weekly-summary-05.md new file mode 100644 index 0000000..8c3e9b0 --- /dev/null +++ b/doc/process/weekly/week-07/members/hufan-weekly-summary-05.md @@ -0,0 +1,42 @@ +个人周总结-第5周 +========= + +姓名和起止时间 +------- + +**姓  名:** 胡帆 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-10-20 + +**结束时间:** 2025-10-26 + +本周任务完成情况 +-------- + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 论文阅读 | 完成 | 完成两篇噪声生成论文《SimAC_A_Simple_Anti_Customization_Method_for_Protecting_Face_Privacy_against 》和《PID Prompt-Independent Data Protection Against Latent Diffusion Models》的精读
并在读后给后端组的同学(杨博文和梁浩)撰写了详细的笔记和论文注释作为内部资料,方便后端组的其他同学未来快速入门并跑通代码。 | +| 2 | 代码复现 | 完成 | 在云平台 AotuDL 租用一台4090服务器,完成了环境适配和超参数调整,基本在4090云服务器上复现两篇文章的核心代码(原论文均是在A100 80GB上跑的),得到了成功加噪的结果。
撰写了详细的复现记录文档,已经发在内部交流群,方便后端另外两位同学下周快速上手。 | +| 3 | 对接工作 | 完成 | 与前后端交流意见讨论两次
**对前端**:分别在10-22墨刀版原型和10-26代码版原型完成后,指出设计问题为:1.初版没有做展示页面,而是直接进入任务页面2.由于一次生成花费时间较长,实时交互性差,可以采取类似华为云/AUTODL的控制台形式,在首页控制台展示任务清单与具体进度,而用户可以离开干别的事3.项目代码的结构比较混乱,存在冗余。目前主要问题均已解决。
**对后端**:在10-22日与所有成员开会交流了项目整体框架,明确了后端的主要需求,至10-26日杨博文完成了数据库设计文档、UML图和用例图初稿,经过讨论发现有两点需要修改:1.数据库的图片表结构设计不当 2.UML图对于用户的“打印详细分析报告”的需求理解不完善,之前忽略了此项任务的具体实现方式。至10-26日晚问题基本解决。 | +| 4 | 算法讲解 | 部分完成 | 后端组本周数据库设计任务较重,大部分时间花在数据库设计和需求确定与修改中。没有做详细的会议讲解,只是在10-22的意见交流中粗略用20分钟讲解了论文模型算法。现初步决定下周做更详细的讲解。 | +| 5 | 开发模式确定 | 完成 | 顺利推广全项目使用**敏捷开发**策略,不追求一次性交付全部功能,而是尽快交付最小的、可用的产品版本,再逐步迭代,直到最后接近完美。 | + +对团队工作的建议 +-------- + +1. **多做少想:** 在开发时间紧任务重的阶段,除了要多看网课学习之外,更重要的其实是动手实践,时间是最快的学习方式,很多困难的点,只要动手多做几遍也就能理解了。 + +2. **主动合作:** 各组在进行各自的开发任务时,也可以适当从其他组角度考虑问题,从而加强对接的质量与协作的效率,目前我们还是有一些不适应协作开发的模式,偶尔还是有不自觉的单打独斗思想。这种情况必须进一步杜绝。 + +小结 +-- + +1. **跑通算法:**完成了SimAC、ASPL两种经典算法的复现流程,成功在云服务器上用4090跑通了代码。 + +2. **对接工作:** 本周与前后端的同学分别两次对接开会,经过了多轮修订讨论再修订的过程,保证了项目需求不偏离本意,基本保证了任务按时按量完成。 + + + +--- diff --git a/doc/process/weekly/week-07/members/jinzhibo-weekly-plan-07.md b/doc/process/weekly/week-07/members/jinzhibo-weekly-plan-07.md new file mode 100644 index 0000000..f4975f0 --- /dev/null +++ b/doc/process/weekly/week-07/members/jinzhibo-weekly-plan-07.md @@ -0,0 +1,33 @@ +# 个人周计划-第7周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-11-03 + +**结束时间:** 2025-11-09 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端视觉美术优化** | 胡帆,杨逸轩 | 11-3至11-5日,对原型的视觉设计进行深度优化,包括UI界面的美术风格统一、交互体验的细节完善、响应式布局的适配等工作;此外还要将深色与浅色两种模式整合到项目中,浅色模式可直接使用之前的蓝白配色版本,方便演示时切换效果更好的模式。 | +| 2 | **规范整理演示版原型文件** | 杨逸轩 | 11-5日班会前需确定前端原型最终定版,整理原型文件并检查其规范,优化代码结构并删除冗余;确保设计的一致性,减少前端开发的理解偏差和返工;使项目成员都能快速理解页面结构、功能逻辑和交互细节。 | +| 3 | **前后端API对接** | 胡帆 | 11月6日API规范确定后,立即开始前端适配工作,根据后端提供的接口规范调整前端逻辑。对接过程中如发现API设计与前端需求存在差异,将及时与胡帆沟通协调,**确保前后端无缝对接**。 | + + + +小结 +-- + +1. **原型优化整理**: 上周冲刺完成了原型的演示效果,在本周班会前,还要整理优化细节,主要添加的功能为深浅色模式切换 +2. **对接后端API:** 在完成前端定版后,立即启动与后端的API对接工作,期间一定会有许多不懂之处与对接困难,所以建立了“及时沟通”的协作机制,以主动应对可能出现的接口差异,保障项目后续集成的顺畅。 \ No newline at end of file diff --git a/doc/process/weekly/week-07/members/jinzhibo-weekly-summary-05.md b/doc/process/weekly/week-07/members/jinzhibo-weekly-summary-05.md new file mode 100644 index 0000000..a27f0b9 --- /dev/null +++ b/doc/process/weekly/week-07/members/jinzhibo-weekly-summary-05.md @@ -0,0 +1,41 @@ +个人周总结-第5周 +========= + +姓名和起止时间 +------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-10-20 + +结束时间: 2025-10-26 +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------- | ------------------------ | ------------ | ------------------------------------------------------------ | +| 1 | **补充学习Vue3+Vite** | 完成 | **基本完成Vue3+vite的前端架构知识学习**,在bilibili网站学习网课BV1nV411Q7RX:Vue3快速入门,在CSDNhttps://blog.csdn.net/s_naughty/article/details/144981486等文章学习Vue的环境搭建以及使用技巧,现已经可以在本地跑Vue项目代码并编写一些简单demo,实现框架搭建与基础交互功能,复杂的功能(如Pinia)仍需深入,但借助大模型也可以基本完成 | +| 2 | **前端原型迭代设计** | 基本完成 | **已初步实现前端原型架构**,10-22使用无代码开发工具墨刀完成前端原型框架搭建,10-26使用VScode开发工具编写代码,完成前端整体框架和页面结构搭建,已经可以实际运行,可供展示功能,但仍存在一些功能遗漏与bug | +| 3 | **与PM或老师交流意见** | 完成 | **与PM交流意见讨论两次**,分别在10-22墨刀版原型和10-26代码版原型完成后,指出设计问题为:1.初版没有做展示页面,而是直接进入任务页面2.由于一次生成花费时间较长,实时交互性差,可以采取类似华为云/AUTODL的控制台形式,在首页控制台展示任务清单与具体进度,而用户可以离开干别的事3.项目代码的结构比较混乱,存在冗余。目前主要问题均已解决 | +| 4 | **原型对接工作** | 部分完成 | **初步对接了原型的功能**,10-22全体成员进行了一次小型讨论,与后端组进行交流,参与了解与讨论数据库设计,简略了解了模型的实现原理,也通过前端原型向组员展示了项目的功能框架 | + +对团队工作的建议 +-------- + +1. **多借鉴集成现有产品:** 在开发时间紧任务重的阶段,除了要实战驱动学习之外,还要多参考借鉴目前市面上类似产品的实现模式,例如前端开发时可以借鉴AutoDL/华为云的控制台页面模式,辅助学习并集成创新 + +2. **加强协作:** 各组在进行各自的开发任务时,也可以适当从其他组角度考虑问题,从而加强对接的质量与协作的效率 + +小结 +-- + +1. **技能学习:** 掌握了墨刀开发原型的基础功能,基本完成Vue3+Vite基础到实战的过渡,能独立搭建项目框架并实现基础交互功能,但只算入门水平,在后续开发时遇到复杂的深层次问题还需学习解决。 + +2. **协作优化:** 通过两次原型评审及时调整设计方向(如控制台首页化),也与全体组员初步对接了原型功能框架 + +3. **开发拓展:** 多浏览Codepen/CSS-Tricks等前端相关网站,可以学习使用一些优秀的前端样式效果,而网站上的开源代码并不完整,只提供了一些关键功能,要加强将这些代码适配到本地项目的能力 + + +--- diff --git a/doc/process/weekly/week-07/members/lianghao-weekly-plan-07.md b/doc/process/weekly/week-07/members/lianghao-weekly-plan-07.md new file mode 100644 index 0000000..c7aa909 --- /dev/null +++ b/doc/process/weekly/week-07/members/lianghao-weekly-plan-07.md @@ -0,0 +1,24 @@ +# 个人周计划-第7周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-03 +**结束时间:** 2025-11-09 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ------------------------- | -------------- | --------- | +| 1 | 后端集成核心算法 | 胡帆、杨博文 | 11月3日至5日,基于胡帆已跑通的算法代码,完成四个核心加噪算法的后端集成与本地部署。优化后端文件层次结构和资源管理机制,完善运行链路流程,确保算法功能稳定。遇到技术难题及时与胡帆协作解决。| +| 2 | API接口规范制定与确认 | 胡帆、杨博文 | 11月6日,参与后端团队API接口规范的集中讨论与最终确认,为前后端对接提供清晰技术文档。确保接口设计合理、易用,满足前端需求。| +| 3 | 前端对接支持与接口优化 | 金郅博、胡帆 | 配合前端团队在API规范确定后进行前后端对接,及时响应前端提出的接口问题和优化建议,持续完善后端接口的稳定性和易用性。| +| 4 | 云服务器部署尝试 | 杨博文 | 11月6日后,学习并实践后端云服务器部署技术,尝试将本地集成完成的后端系统迁移到云环境,实现远程访问。为后续正式上线做技术储备。| + +## 小结 + +1. **后端算法集成:** 本周重点是将胡帆已验证的四个加噪算法无缝集成到后端系统,优化架构和资源管理,确保算法稳定运行。 +2. **API规范确认与前后端对接:** 参与API接口规范的制定和最终确认,积极支持前端团队对接,保证数据交互的准确性和系统整体联调顺利进行。 +3. **云部署技术学习:** 尝试后端云服务器部署,为系统远程访问和后续上线做好技术准备。 +4. **团队协作与沟通:** 保持与前端、算法负责人高频沟通,及时解决对接和集成过程中的技术问题,推动项目整体进展。 diff --git a/doc/process/weekly/week-07/members/lianghao-weekly-summary-05.md b/doc/process/weekly/week-07/members/lianghao-weekly-summary-05.md new file mode 100644 index 0000000..bdb2681 --- /dev/null +++ b/doc/process/weekly/week-07/members/lianghao-weekly-summary-05.md @@ -0,0 +1,31 @@ +# 个人周总结-第5周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-10-20 +**结束时间:** 2025-10-26 + +## 本周任务完成情况 + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| --- | ------- | -------- | -------- | +| 1 | **数据库与UML设计** | 完成 | 10-22,初步决定数据库设计;10-22晚与PM评审讨论,根据业务逻辑,从任务表区分出评估结果表,对图片表进行修改;至10-25,进一步修改,从任务表中分出加噪批次表,基本完成设计;至26日完成最终版,开始绘制UML用例图/时序图 | +| 2 | **确定后端预留接口** | 未完成 | 10-22,与各分组交流,确定预留接口的讨论应在开始具体设计和实现前进行,故推迟 | +| 3 | **论文精读与噪声生成代码复现** | 部分完成 | 通过论文阅读和关键词搜索的方式,学习了论文中提到的“扩散模型”、“对抗性攻击”等相关知识,并通过B站博主“迪哥教CV”的视频,进一步学习了对抗生成网络(GAN)原理,并开始尝试复现论文代码 | +| 4 | **敏捷开发** | 完成 | 10-22,全体成员进行了一次小型讨论,与模型组进行讨论,进一步熟悉了模型实现的框架,也通过前端原型展示了解了项目的功能框架 | + +## 对团队工作的建议 + +1. **明确系统运行全流程:** 建议团队下周召开技术交流会,梳理从用户上传图像到生成防护图像的完整业务流程。目前各组对系统整体架构理解存在差异,需要统一认识。 + +2. **确定前后端通信方式:** 建议优先制定RESTful API接口规范,包括请求参数格式、响应数据结构、错误处理机制等。 + +## 小结 + +1. **数据库设计突破:** 本周成功完成了完整的数据库设计,包括8个核心表、完整的外键关系、索引优化和触发器。经过多次迭代优化,最终设计符合3NF规范,支持项目所有业务需求。 + +2. **业务理解深化:** 通过与组员的深入讨论和需求分析,对系统的业务流程有了清晰认识,特别是对抗性扰动的技术原理,为后续开发奠定了坚实基础。 + +3. **技术学习进展:** 深入学习了扩散模型、对抗性攻击相关理论,并开始论文代码复现工作。虽然接口设计任务推迟,但为下周高质量完成打下了基础。 \ No newline at end of file diff --git a/doc/process/weekly/week-07/members/yangbowen-weekly-plan-07.md b/doc/process/weekly/week-07/members/yangbowen-weekly-plan-07.md new file mode 100644 index 0000000..d94e51b --- /dev/null +++ b/doc/process/weekly/week-07/members/yangbowen-weekly-plan-07.md @@ -0,0 +1,26 @@ +*** + +## 个人周计划-第7周 + +### **姓名和起止时间** + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-03 +**结束时间:** 2025-11-10 + +### **本周任务计划安排** + +| **序号** | **计划内容** | **协作人** | **情况说明** | +|:-------|:-----------------|:--------|:-----------------------------------------------------------------------------------------------------------------| +| 1 | **后端算法集成技术支持** | 胡帆、梁浩 | **11月3日至5日**:在此期间,我的核心任务是为梁浩的后端算法集成工作提供**全程技术支持**。将协助他梳理文件结构、优化资源管理,并解决整合过程中可能出现的任何技术难题,确保四个核心算法能稳定、完整地部署到本地服务器。 | +| 2 | **《用户手册》联合撰写** | 杨逸轩 | 与杨逸轩合作,共同完成《用户手册》第一版的编写工作。我将主要负责提供技术细节支持,确保手册中关于功能和操作的描述准确无误、易于理解。 | +| 3 | **API 接口规范最终确认** | 胡帆、梁浩 | **11月6日**:在后端算法集成完成后,与胡帆、梁浩集中讨论并**最终确认API接口规范**。确保我们能为前端提供一份清晰、完整、易用的对接指南,为后续联调工作奠定基础。 | +| 4 | **后端云服务器部署预研** | 梁浩 | **11月6日之后**:与梁浩一同开始学习和实践**后端云服务器部署**技术。主要目标是熟悉云端部署的完整流程,并尝试将集成好的后端系统迁移上云,为项目后续的正式上线做技术储备。 | +| 5 | **个人学习与下周规划** | 个人 | 利用任务间隙的碎片时间,持续学习后端相关技术。同时,根据本周项目进展,提前思考和规划下周可能承担的工作任务。 | + +### **小结** + +1. **保障后端集成 (11/3-11/5)**:本周前期的首要工作是全力支持梁浩,确保算法按时、高质量地集成到后端系统中。 +2. **敲定协作基石 (11/6)**:周四的API规范确认是本周的关键节点,直接影响后续前后端联调的效率,必须高度重视。 +3. **并行推进多项任务**:在支持核心开发的同时,需要与杨逸轩协同完成文档撰写,并与梁浩一同开始为未来的云部署进行技术探索。 \ No newline at end of file diff --git a/doc/process/weekly/week-07/members/yangbowen-weekly-summary-05.md b/doc/process/weekly/week-07/members/yangbowen-weekly-summary-05.md new file mode 100644 index 0000000..b2a6568 --- /dev/null +++ b/doc/process/weekly/week-07/members/yangbowen-weekly-summary-05.md @@ -0,0 +1,32 @@ + +--- + +# 个人周总结-第5周 + +**姓名和起止时间** +姓  名:杨博文 +团队名称:2班-深度思考 +开始时间:2025-10-20 +结束时间:2025-10-27 + +## 本周任务完成情况 + +| 序号 | 总结内容 | 是否完成 | 成果或说明 | +|----|----------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 1 | 辅助后端数据库与UML设计 | 完成 | 在撰写数据库设计文档与UML图过程中,发现前期需求讨论存在不足,尤其在模型生成图像的逻辑上缺乏明确规范。经团队重新讨论,确定了新的加噪生成逻辑:用户可选择加噪算法、扰动强度、是否启用防净化版本(每种算法均提供原始版与防净化版),并决定是否生成分析报告;系统默认保存用户上一次的选择。若不生成报告,仅对比加噪前后图像的频域特征并返回图像;若生成报告,则额外训练大模型计算FID、LPIPS、SSIM、PSNR及Heatmap等指标,并将图像、频域数据与分析报告一并返回。该逻辑确保了单GPU环境下的可行性。基于此,对数据库进行了三次迭代,重点重构了“图片表”“评估结果表”和“加噪批次表”;UML用例图与时序图也同步完成三次迭代,确保与新逻辑一致。最终文档已与梁浩协同完成并归档。 | +| 2 | 完善并提交前期文档 | 完成 | 补充并修订了《用例文档》中的关键细节,确保其与本周确定的数据库结构、加噪逻辑及前端原型保持一致。特别对“图像处理流程”“用户配置持久化”“分析报告生成条件”等条目进行了细化,提升文档的可执行性与技术一致性。 | +| 3 | 参与原型对接与接口协调 | 完成 | 参与前后端接口协调会议。重点明确了“加噪请求参数”“图像上传/返回格式”“分析报告触发条件”等接口细节,初步达成功能逻辑共识,为第六周进入开发阶段做好准备。 | +| 4 | 准备班会材料(如有余力) | 未完成(非强制) | 因本周任务密集,班会材料暂未启动。该任务为第七周前的弹性安排,计划在第六周协同胡帆、杨逸轩推进。 | + +## 对团队工作的建议 + +- **需求闭环机制**:建议在每次重大逻辑变更后,立即同步更新需求文档、数据库设计与UML图,形成“需求-设计-实现”三位一体的闭环,避免后期返工。 +- **git的合理使用**:不仅要在代码上使用git,数据库文档、用例文档等一系列文档都要用git存储修改过程,方便多人查看修改。 + +## 小结 + +- **需求驱动设计**:通过深入参与需求再讨论,推动了技术方案从“模糊设想”到“可执行逻辑”的转变,体现了工程思维的严谨性。 +- **文档高质量交付**:数据库与UML经过三次迭代,最终版本逻辑清晰、结构合理,有效支撑单GPU部署约束下的系统实现。 +- **知识快速内化**:通过实践掌握了ER建模、UML规范、加噪算法原理及图像评估指标体系,为后续开发与调试打下坚实基础。 + +--- diff --git a/doc/process/weekly/week-07/members/yangyx-weekly-plan-07.md b/doc/process/weekly/week-07/members/yangyx-weekly-plan-07.md new file mode 100644 index 0000000..fa2c944 --- /dev/null +++ b/doc/process/weekly/week-07/members/yangyx-weekly-plan-07.md @@ -0,0 +1,32 @@ +个人周计划-第7周 +========= + +姓名和起止时间 +------- + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-11-03 + +**结束时间:** 2025-11-10 + +## 本周任务计划安排 + +| **序号** | **计划内容** | **协作人** | **情况说明** | +| ------ | ---------------------- | ------- | ------------------------------------------------------------------------------------------------- | +| 1 | **前端 UI/交互细节优化(冲刺任务)** | 金郅博 | **11月3日至5日**:与金郅博紧密合作,对已完成的原型进行深度的视觉和交互优化。主要包括:统一 UI 美术风格、优化交互动效细节、完善响应式布局的适配。确保原型达到**展示级**的视觉效果。 | +| 2 | **《用户手册》初版撰写** | 杨博文 | 在前端优化任务的间隙,根据项目需求文档和已确定的原型功能,完成**用户手册第一版**的编写工作,重点撰写用户功能说明和操作指南。完成后需与杨博文进行内容校对和整合。 | +| 3 | **前端适配与联调辅助** | 金郅博、胡帆 | **11月6日 API 规范确定后**:立即协助金郅博进行前端代码的适配工作,确保前端逻辑能顺利对接后端接口。在联调过程中,负责记录和反馈发现的接口问题,协助解决。 | +| 4 | **前端云部署技术预研** | 个人 | **11月6日后**:利用空闲时间,开始学习和实践**前端云部署**技术。尝试将当前的前端半成品成功部署到云环境,熟悉前端部署流程,为后续项目的正式上线做技术储备。 | +| 5 | **后续文档规划与学习** | 个人 | 提前规划下周可能需要的文档工作(例如测试用例等),并利用碎片时间继续进行前端/后端相关技术的网课学习和练习。 | + +小结 +-- + +1. **视觉与交互打磨(11/3-11/5):** 本周初的首要任务是与金郅博协作,确保前端原型的 UI 细节和交互体验得到极致打磨,达到展示和联调要求。 + +2. **文档按时交付:** 确保《用户手册》的初版在周末前按时与杨博文协作完成。 + +3. **技术储备:** 11月6日后,工作重点转向**协助前后端联调**以及**云部署技术预研**。 diff --git a/doc/process/weekly/week-07/members/yangyx-weekly-summary-05.md b/doc/process/weekly/week-07/members/yangyx-weekly-summary-05.md new file mode 100644 index 0000000..26b6c1a --- /dev/null +++ b/doc/process/weekly/week-07/members/yangyx-weekly-summary-05.md @@ -0,0 +1,41 @@ +# 个人周总结-第5周 + +姓名和起止时间 +------- + +姓  名: 杨逸轩 + +团队名称: 2班-深度思考 + +开始时间: 2025-10-20 + +结束时间: 2025-10-26 + +## 本周任务完成情况 + +| **序号** | **总结内容** | **是否完成** | **成果或说明** | +| ------ | ------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | **文档撰写与细化** | 完成 | 召开了组会并根据反馈明确了《需求规格说明书》的改进细节。重点关注防护处理、效果可视化等核心功能点的描述和细节修正。在本周课程学习了需求文档编写课程后,按照课程学习的方法重新进行需求文档的编写,目前完成了项目范围和前景文档的编写。同时协助杨博文同学完成了数据库结构和关系设计的文稿撰写。 | +| 2 | **学习前端知识** | 完成 | 针对HTML、CSS、JS等进行了强化学习,重点掌握了Web应用界面设计所需的CSS样式与布局。学习了Vue的基本概念及组件化开发思路,主要是根据视频【你的第一个前端入门项目,保姆级教程!Vue3用户中心网站开发】(b站 : BV1MHSMYvEJq),学习了使用进行vue网站开发。 | +| 3 | **参加组会与架构确定** | 完成 | 2025-10-20开组会初步确定了项目大致结构,明确了工作开发细节(后端实现论文代码、前端实现最终效果展示)。确定协作开发模式为3.1。 | +| 4 | **初步设计原型** | 完成 | 协助金郅博同学完成初步的前端原型设计。主要聚焦于用户交互流程和核心界面的布局,确保原型具备高保真度。已经完成较为简陋的无代码的墨刀原型界面和vue项目的基础前端界面。 | + +对团队工作的建议 +-------- + +1. **项目架构统一**:应尽快将确定的前后端分离架构(Vue + Flask)和RESTful API交互模式传达到所有组员。 + +2. **性能指标明确**:在正式进入开发前,应尽快确定《需求规格说明书》中暂未确定的性能需求(P1响应时间、P2数据吞吐量)。 + +小结 +-- + +1. **文档定稿基础**:完成了《需求规格说明书》的细化与完善,使其具备较强的可执行性。 + +2. **架构与模式确定**:与组员共同明确了项目架构、技术栈(Vue 3/Flask)和协作开发模式。 + +3. **原型设计**:完成了初步原型设计,为后续的Vue界面开发提供了视觉和逻辑指导。 + +4. **学习需求**:希望有关于Vue组件化开发及原型设计和用户体验相关的教学支持。 + + diff --git a/doc/process/weekly/week-08/group/meeting-minutes-08.md b/doc/process/weekly/week-08/group/meeting-minutes-08.md new file mode 100644 index 0000000..1551308 --- /dev/null +++ b/doc/process/weekly/week-08/group/meeting-minutes-08.md @@ -0,0 +1,54 @@ +# 小组会议纪要-第8周 + +## 会议记录概要 + +**团队名称:** 2班-深度思考 +**指导老师:** 刘琴 +**主 持 人:** 胡帆 +**记录人员:** 杨博文 +**会议主题:** 第八周开发任务部署、需求调整确认、API规范制定预备 +**会议地点:** 中楼211 +**会议时间:** 2025-11-10 11:40-12:10 +**纪录时间:** 2025-11-10 15:00 +**参与人员:** 胡帆、梁浩、杨博文、金郅博、杨逸轩 + +--- +## 会议内容 + +### 一、本周核心任务聚焦 + +经团队内部讨论并结合第七周实际完成情况,本周聚焦以下三大方向协同推进: + +1. **文书工作深化**:完成需求变更文档更新,启动第二版迭代开发计划编制 +2. **后端云部署与API标准化**:实现系统云端部署,明确前后端接口规范 +3. **前端功能拓展与对接准备**:完成交互式页面开发,为API联调做好技术储备 + +--- + +### 二、任务分解与执行安排 + +| 序号 | 任务模块 | 具体内容与要求 | 负责人 | 时间节点 | 备注 | +|------|----------|----------------|--------|----------|--------------------| +| 1 | **文书工作** | • 新增数据库权限管理表设计(管理员/普通用户角色分离)
• 补充系统日志记录模块功能描述
• 更新UML时序图、E-R图、用例图
• 编写迭代开发计划第一版(聚焦V1.1功能增量) | 杨博文、杨逸轩 | 11.10–11.13 | 需与后端、前端同步确认接口与交互逻辑 | +| 2 | **后端云部署** | • 完成服务器环境配置、依赖安装、数据库迁移
• 部署基础后端服务并确保算法模块稳定运行
• 预留标准API接入点,支持后续扩展 | 梁浩(主导)、杨博文(协助)、胡帆(算法支持) | 11.10–11.12 | 重点排查兼容性与性能瓶颈 | +| 3 | **API规范制定** | • 召开专项会议(11.13),明确请求/响应格式、错误码、认证机制
• 从算法、后端、前端三方视角协同确定接口可行性 | 全体(胡帆、梁浩、杨博文、金郅博主导) | 11.13 | 无 | +| 4 | **前端功能开发** | • 实现**独立交互式微调生图页面**(逻辑与胡帆确认)
• 完成**动态三维指标图**前端可视化组件
• 研究前端上云流程(Nginx部署、HTTPS配置等) | 金郅博、杨逸轩 | 11.10–11.12 | 为14日起API对接做好准备 | +| 5 | **需求优化调整** | • 废弃原“自动生成对比报告”功能
• 改为**可交互式对比逻辑**:用户可自选对象、参数、自定义报告内容 | 杨博文、梁浩 | 11.11前完成方案确认 | 提升系统灵活性与用户控制感 | +| 6 | **前后端对接预备** | • 金郅博梳理前端数据请求清单
• 梁浩准备Mock接口或沙箱环境供前端预联调 | 金郅博、梁浩 | 11.12–11.13 | 确保14日对接高效启动 | + +--- + +### 三、关键决策与共识 + +1. **需求优先级调整**:基于第七周老师“丰富评估维度、强化交互体验”的建议以及小班讨论肖老师的意见,本周将**日志模块**、**交互式对比**列为高优先级新增需求,废弃原自动化报告功能。 +2. **开发节奏应对期中**:因成员普遍面临期中考,部分原定第九周任务(如日志模块详细设计、UML补全)前移至本周集中完成——采用“前置设计、分步实现”策略,保障学期中期项目进度不滑坡。 +3. **云资源策略**:继续使用现有4090服务器完成部署验证。 + +--- + +### 四、下阶段待跟进事项 + +- **11.13 API会议输出**:前后端确认交互的API。 +- **11.16前**:完成全部第八周计划条目自检,提交本周个人总结与阻塞问题清单。 + +--- diff --git a/doc/process/weekly/week-08/group/weekly-plan-08.md b/doc/process/weekly/week-08/group/weekly-plan-08.md new file mode 100644 index 0000000..b980f71 --- /dev/null +++ b/doc/process/weekly/week-08/group/weekly-plan-08.md @@ -0,0 +1,30 @@ +# 小组周计划-第8周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-10 +**结束时间:** 2025-11-16 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 后端集成与云端部署 | 胡帆、梁浩、杨博文 | 11月10日至12日期间,梁浩将主导完成**后端系统的云端部署**工作,主要任务包括服务器环境配置、依赖包安装、数据库迁移以及服务启动脚本编写等关键环节。杨博文将全程协助梁浩进行技术支持,重点关注部署过程中可能出现的兼容性问题和性能优化需求。胡帆作为算法负责人,将确保集成的算法模块在云端环境下能够正常运行,并协助解决算法调用过程中的技术难题。本次部署的目标是实现后端系统的基础功能在云端稳定运行,为后续的前后端联调和系统测试奠定基础。 | +| 2 | API制定 | 胡帆、梁浩、杨博文、金郅博 | 11月13日,团队将召开**API设计专项会议**,由后端组和模型组主导、前端组积极参与,共同制定详细的API接口规范。会议将重点讨论接口的请求参数格式、响应数据结构、错误处理机制、认证授权方式等核心内容。通过充分讨论和协商,最终形成一套清晰、完整、易于理解的API,为前后端对接工作提供可行的的技术规范。 | +| 3 | 测试和修改API | 梁浩、金郅博 | 11月14日至16日,梁浩将在云服务器环境中对后端系统进行**全面测试**,重点排查算法调用、数据存储等方面可能存在的问题,及时修复发现的bug,确保系统稳定性。同时,金郅博将在前端对接过程中对API进行实际使用测试,收集和反馈API设计中的不合理之处。两人将保持密切沟通,梁浩根据前端的实际反馈**快速调整和优化API**实现,确保前后端能够顺畅对接,为系统的整体联调做好充分准备。 | +| 4 | 算法扩展 | 胡帆 | 11月10日至12日,胡帆将专注于**算法功能的拓展**工作,重点完成"**动态三维指标图绘制**"模块的数据采集功能开发,包括训练过程中关键指标的实时记录、数据格式的标准化处理。
11月13日,参与后端API规范的制定讨论,从算法应用角度提出接口设计建议,确保API能够完整支持算法的各项功能需求。
11月14日至16日,思考并尝试后续的后端优化方向和算法功能增强方向,为项目的持续迭代提供技术储备。 | +| 5 | 需求变更 | 杨博文、梁浩、杨逸轩 | 基于上周班会反馈和团队内部讨论,本周将进行重要的需求调整工作:
1. 杨博文将与梁浩深入对接,针对当前后端功能相对单薄的问题,讨论**增加数据库表设计**的需求,重点实现不同用户**权限的分离管理**功能,包括管理员、普通用户等角色的权限划分,以及相应的数据访问控制机制。
2. 杨博文将与梁浩协商,考虑废弃原有的"生成对比报告"自动化功能,改为**更加灵活的分离式可交互逻辑**,让用户能够自主选择对比对象、调整对比参数、自定义报告内容,提升系统的易用性和灵活性。
3. 基于以上两点需求变更,杨博文和杨逸轩将协作**更新用例图、UML类图、数据库E-R图等设计文档**,为第二版需求规格说明书的编写做好充分准备,确保文档内容与实际开发需求保持一致。 | +| 6 | 界面修改 | 金郅博、杨逸轩 | 11月10日至12日,前端团队将进行重要的界面功能拓展工作。金郅博和杨逸轩将协作实现**独立的交互式微调生图页面**,具体的功能需求和交互逻辑将与胡帆进行详细沟通确认。同时,团队将完成**动态三维指标图的前端绘制**功能开发,当后端提供相应数据时,前端能够实时渲染出直观、美观的三维可视化图表,帮助用户更好地理解算法训练过程和模型性能变化。 | +| 7 | 前端对接API | 金郅博 | 11月14日至16日,金郅博将基于确定的API规范开展前后端对接工作。对接过程中如发现API存在任何问题或改进空间,将及时与梁浩沟通协商,共同优化接口设计。 | +| 8 | 前端研究上云流程 | 杨逸轩 | 杨逸轩将利用本周时间系统学习和研究前端项目的云端部署方法和完整流程,比如静态资源打包、云服务器选型配置、Nginx服务器部署、域名解析配置、HTTPS证书申请等关键技术环节。通过理论学习和实践操作相结合的方式,提前为alpha版本做探路工作。虽然不要求本周必须完成实际部署,但将为团队积累经验。 | + +## 小结 + +1. **后端云端部署:** 本周的首要任务是实现后端系统的云端部署,梁浩将主导这项工作,在胡帆和杨博文的协助下,确保算法模块在云端环境稳定运行。 + +2. **API规范和系统化:** 经过上周的技术沉淀,本周团队将尽快完成API接口规范的制定工作。这是前后端协作的核心枢纽,需要算法组、后端组、前端组的充分沟通和协商。 + +3. **功能拓展与需求优化:** 本周在稳步推进基础功能的同时,也将进行重要的功能拓展和需求调整工作。胡帆将深化算法的可视化功能,前端将实现独立的交互式页面,后端将增强用户权限管理能力。这些改进都基于前期的实践反馈和老师建议,体现了团队敏捷响应、持续优化的开发理念。 + +4. **前后端对接:** 在API规范确定之后,前后端对接工作将正式展开。金郅博将主导前端适配工作,梁浩将负责后端测试和bug修复,两人将保持密切沟通,及时发现和解决对接过程中的各类问题。 diff --git a/doc/process/weekly/week-08/group/weekly-summary-07.md b/doc/process/weekly/week-08/group/weekly-summary-07.md new file mode 100644 index 0000000..2d32284 --- /dev/null +++ b/doc/process/weekly/week-08/group/weekly-summary-07.md @@ -0,0 +1,25 @@ +# 小组周总结-第7周 # + +## 团队名称和起止时间 ## + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-03 +**结束时间:** 2025-11-09 + +## 本周任务完成情况 ## + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 后端集成算法 | 部分完成 | 梁浩基于胡帆已跑通的代码,成功完成了四个核心加噪算法和两个微调算法的后端集成与本地部署。胡帆完成了初步的基础算法代码适配和文件安排,并明确了模型存放约定和调度方式细节。杨博文全程跟进,协助梳理了文件结构与资源调用逻辑。但在集成过程中发现算法依赖复杂、环境耦合度高,**整体集成难度远超预期**,导致原计划未能完全完成,并占用了大量工作时间。 | +| 2 | 用户手册 | 调整更改 | 原计划的《用户手册第一版》撰写任务(执行人:杨逸轩、杨博文)因后端接口尚未冻结且前端界面仅有原型、无实际功能界面而**暂停**。工作重心调整为协助杨博文对《需求规格说明书》初版进行迭代。杨逸轩协助杨博文完成了核心功能的细节补充和用例图的优化,提高了文档的精确性和可实施性。 | +| 3 | API总确认 | 未完成 | 原定11月6日后端算法集成完成后,团队集中完成**API接口规范最终确认**的工作。由于后端与模型仍未完成稳定对接,缺乏可对外暴露的可靠接口,会议调整为技术难点同步会。共识是接口规范必须等算法集成稳定后方可制定,避免反复返工。 | +| 4 | 前端细化与对接 | 部分完成 | **前端细化**:金郅博与杨逸轩紧密合作,完成了原型的视觉设计深度优化,包括深浅色主题切换、响应式布局适配、字体层级规范等工作。班会后根据老师意见,金郅博调整了页面响应式设计并对功能模块进行了初步调整。前端对接:API规范确定延后,前端适配工作延期。 | +| 5 | 后端尝试上云 | 未开展 | 原定11月6日算法集成完成后开始学习和实践云服务器部署技术。鉴于本地集成尚未闭环(模型调用链路未通),**延迟到下周**。 | +| 6 | 前端尝试上云 | 基本完成 | 杨逸轩利用联调间隙,完成了主流前端云部署技术的预研。通过尝试将当前前端半成品部署到测试环境,熟悉了前端部署的基本流程和潜在配置问题,为项目后续正式上线储备了技术经验。 | + +## 小结 ## + +1. **核心算法集成艰难突破**:本周主要工作集中在后端核心算法集成上,梁浩成功集成了四个核心加噪算法和两个微调算法。然而,由于算法集成难度远超预期,导致后续API确认、文档撰写、云部署等任务链式延期。 +2. **前端原型高标准交付与优化**:金郅博与杨逸轩按计划完成了前端原型的视觉和交互细节的深度优化,使原型达到了展示级标准。同时,金郅博根据老师意见和对接讨论结果,完成了响应式设计和功能模块的调整与优化。 +3. **关键任务延期与风险止损**:API接口规范的制定、用户手册的撰写和后端云部署任务均因算法集成的前置条件缺失而延后或调整。团队主动识别风险并止损,将文档重心转移到《需求规格说明书》的迭代完善上。 +4. **吸取教训**:本周经历了项目以来的第一次**误判**,严重打乱了进度安排。团队认识到以后在任务规划时,必须更充分地评估技术难度,特别是涉及算法集成等复杂任务时,应预留足够的时间,制定计划前要充分讨论可行性,避免过急过躁。 diff --git a/doc/process/weekly/week-08/members/hufan-weekly-plan-08.md b/doc/process/weekly/week-08/members/hufan-weekly-plan-08.md new file mode 100644 index 0000000..541a21c --- /dev/null +++ b/doc/process/weekly/week-08/members/hufan-weekly-plan-08.md @@ -0,0 +1,28 @@ +# 个人周计划-第8周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-10 +**结束时间:** 2025-11-16 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 后端云端部署技术支持 | 梁浩、杨博文 | 11月10日至12日期间,我将为梁浩主导的后端云端部署工作提供全方位的技术支持。作为算法负责人,主要工作包括 **协助后端配置云端** 算法运行环境、解决算法依赖包在云平台上的兼容性问题、验证算法在云端的调用性能,以及处理可能出现的GPU资源调度和内存管理等技术难题。通过密切配合,确保后端系统的基础功能能够在云端正常运行,为后续的远程访问和系统测试创造条件。 | +| 3 | 算法功能深度拓展 | 本人 | 11月10日至12日,我将专注于算法可视化功能的开发工作,重点完成 **"动态三维指标图绘制"模块的数据采集拓展功能**。这项工作包括在算法训练和推理过程中实时记录关键性能指标,设计合理的数据存储格式,实现与前端可视化模块的数据接口(通过这项功能,用户能够直观地观察算法的运行状态和性能表现,提升系统的专业性和易用性)。 | +| 2 | API接口规范主导制定 | 梁浩、杨博文、金郅博 | 11月13日,主导召开**API设计专项会议**,基于已集成的算法实际情况和前后端的对接需求,与团队共同制定详细的API接口规范。作为连接算法与应用的桥梁,我会从技术实现的角度提出合理的接口设计方案,包括算法调用的请求参数格式(如图像数据格式、加噪强度参数、微调配置参数等)、响应数据结构(如处理结果、中间过程数据、三维指标图数据等)、异步处理机制、以及错误处理规范等核心内容。通过与后端组充分讨论技术可行性、与前端组协商使用便利性,最终形成一份既符合算法特性又满足应用需求的权威API文档。 | +| 4 | 后续优化方向探索 | 本人 | 11月14日至16日,在完成本周的核心任务后,投入时间思考和探索**后续的技术优化方向**。主要包括两个方面:一是后端层面的优化,如功能创新拓展、批处理机制设计等;二是算法功能的增强,如探索更多的加噪算法变体、研究自适应参数调整机制等。虽然这些探索不要求本周必须形成具体成果,但将为项目的后续迭代和技术创新积累思路和经验,体现团队的前瞻性和持续改进意识。 | + +## 小结 + +1. **云端部署保障:** 本周前三天,本人将全力支持后端团队完成云端部署。 + +2. **API设计主导:** 11月13日的API规范制定会议是本周的核心工作之一,基于上周算法集成的实践经验和对前后端需求的深入理解,我们需要设计出既符合技术规范又易于使用的API接口。 + +3. **可视化功能:** "动态三维指标图绘制"功能的开发是本周的技术亮点,能让用户能够实时了解算法的运行状态和性能表现。 + +4. **持续优化:** 在完成本周核心任务的基础上,思考项目的长远优化发展方向,尤其是解决上周班会提到的后端太单薄、前端UI设计不合理这两个点。 + diff --git a/doc/process/weekly/week-08/members/hufan-weekly-summary-07.md b/doc/process/weekly/week-08/members/hufan-weekly-summary-07.md new file mode 100644 index 0000000..a88dd0b --- /dev/null +++ b/doc/process/weekly/week-08/members/hufan-weekly-summary-07.md @@ -0,0 +1,35 @@ + +--- +## 个人周总结-第7周 +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-03 +**结束时间:** 2025-11-09 + +--- + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +|------|--------------------------|------------------|-----------------------------------------------------------------------------------------------------------------| +| 1 | 后端算法集成技术支持 | **部分完成** | 本周我为后端同学完成了初步的基础算法代码适配和文件安排,并且明确了模型存放约定和调度方式细节,跟进梁浩的算法集成过程,协助梳理了文件结构与资源调用逻辑;但在集成过程中发现算法依赖复杂、环境耦合度高,**整体集成难度远超预期**,导致原计划未能完全完成,需后续持续投入。 | +| 2 | API接口规范制定 | **未完成** | 原定11月6日集中讨论,因后端与模型仍未完成稳定对接,**缺乏可对外暴露的可靠接口**,会议调整为技术难点同步会。共识:接口规范必须等算法集成稳定后方可制定,避免反复返工。后端对接模型过程难度超过预期,需要抓紧调整策略攻坚。 | +| 3 | 前端对接协调 | **部分完成** | 原定11月6日集中讨论,因后端与模型仍未完成稳定对接,缺乏可对外暴露的可靠接口,会议调整为技术难点同步会。本周前端对接**调整**为完成美术优化、UI设计上,确保UI设计与算法功能需求保持一致。至于API对接延后到下周。 | +| 4 | 用户手册技术支持 | **调整更改** | 鉴于本地集成尚未闭环(模型调用链路未通),根据小班课反馈和小组讨论结果,原定的《用户手册》初版撰写任务暂时推迟。工作重心调整为协助杨博文对《需求规格说明书》初版进行迭代,**完成了核心功能的细节补充和用例图的优化**,提高了文档的精确性和可实施性。 | + +--- + +## 对团队工作的建议 + +- **预先做好技术难度评估:** 本周经历了做项目以来的第一次误判,严重打乱了进度安排,以后在任务规划时必须要更充分地评估技术难度,特别是涉及算法集成等复杂任务时,应预留足够的时间,避免影响后续任务进度。 +- **加强交流:** 前端组、后端组、模型组要在组会上定期分享实现框架和遇到的技术难点,以便团队成员相互了解进展,为后续对接流程做好准备。若有对安排的可行性质疑,就要放到台面上讨论。 +- **丰富系统功能:** 在周中汇报时,肖老师指出当前项目的大模型占比太大,不利于后续评分。建议我们丰富数据库内容以及系统功能。 + +--- + +## 小结 + +- **技术支撑扎实落地**:虽遭受巨大误判挫折,但本周通过跑通代码、参与调试,切实保障了集成工作的持续推进,也为后续深度协作打下基础。好在一些原本意识不到的冗余工作也在这个挫败中显露出来,让我们更加明白项目本身工作的主次性。 +- **风险预判与止损及时**:面对接口、文档、部署等任务因前置条件缺失而无法开展的情况,主动识别并合理延后。本周的大部分任务会顺延安排到以后的周中。 + +--- \ No newline at end of file diff --git a/doc/process/weekly/week-08/members/jinzhibo-weekly-plan-08.md b/doc/process/weekly/week-08/members/jinzhibo-weekly-plan-08.md new file mode 100644 index 0000000..5f010d1 --- /dev/null +++ b/doc/process/weekly/week-08/members/jinzhibo-weekly-plan-08.md @@ -0,0 +1,34 @@ +# 个人周计划-第8周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-11-10 + +**结束时间:** 2025-11-16 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端界面修改** | 杨逸轩,胡帆 | 11-10日至12日,进行重要的界面功能拓展工作,将与杨逸轩协作实现**独立的交互式微调生图页面**,将原有的生成报告功能改为用户可自行选择的微调生图交互界面,具体的功能需求和交互逻辑将与胡帆进行详细沟通确认。同时,根据团队开发的**动态三维指标图的前端绘制**功能,前端要确保根据后端提供的数据,用Threejs技术实时渲染出直观、美观的三维可视化图表,帮助用户更好地理解算法训练过程和模型性能变化。 | +| 2 | **API制定** | 杨逸轩,梁浩,胡帆,杨博文 | 11-13日,参与团队会议协商API设计,作为前端负责人要积极参与,与后端进行充分沟通,确保API设计能够满足前端需求,为后续的前后端对接工作奠定坚实基础。 | +| 3 | **开展前后端API对接** | 杨逸轩 | 11-14日至11-16日,根据会议确定的API设计,开展前后端API对接工作;对接过程中如发现API存在任何问题或改进空间,将及时与梁浩沟通协商,共同优化接口设计。 | + + + +小结 +-- + +1. **前端功能拓展与可视化开发**:前半周核心工作是界面功能的重要升级。将与杨逸轩紧密协作,开发独立的交互式微调生图页面,这是对原有生成报告功能的重大改进,能让用户拥有更灵活的操作体验。同时运用Three.js技术实现动态三维指标图的前端绘制,直观展示算法训练过程和模型性能变化。开发过程中,将与胡帆保持密切沟通,确保功能需求和交互逻辑的准确实现。 + +2. **API设计与前后端对接**:本周后半段的重点是API设计与对接工作。11月13日作为前端负责人参与团队API设计会议,与后端团队充分沟通前端需求,确保API设计的合理性和可用性。会议后立即开展前后端对接工作,在实际对接过程中如发现任何问题,会及时与梁浩协商优化,力求在本周内完成API对接的关键环节,对alpha版本的实现部署工作进行冲刺。 \ No newline at end of file diff --git a/doc/process/weekly/week-08/members/jinzhibo-weekly-summary-07.md b/doc/process/weekly/week-08/members/jinzhibo-weekly-summary-07.md new file mode 100644 index 0000000..f6cc654 --- /dev/null +++ b/doc/process/weekly/week-08/members/jinzhibo-weekly-summary-07.md @@ -0,0 +1,38 @@ +个人周总结-第7周 +========= + +姓名和起止时间 +------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-11-3 + +结束时间: 2025-11-9 +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------- | -------------------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端视觉美术优化** | 部分完成 | **已推进前端美术优化设计**,在11-3班会原型展示前实现了深浅色主题切换功能,使浅色主题更适宜演示;班会后根据老师意见,优化了页面响应式设计,增加了各模块UI与字体随屏幕尺寸同步缩放的功能,统一规范了字体层级(一级标题/二级标题/正文),确保文字清晰可读,并将任务台模块中上传素材等页面调整为横版模式;结合与刘琴老师对接的讨论结果,对原型功能模块进行了初步调整,包括增加日志功能、添加图表及优化生成结果的交互设计。 | +| 2 | **规范整理演示版原型文件** | 基本完成 | **对原型文件进行整理**,重点将字体样式整合为全局管理的Tailwind配置文件,并将项目中残余的CSS代码全面迁移至Tailwind,实现了项目样式的统一管理。 | +| 3 | **前后端API对接** | 未完成 | **尚未开展前后端API对接**,由于对后端任务难度预估不足,加上班会后提出的修改意见,后端API设计尚未完成,因此前端暂无法对接并进一步调整原型功能。 | + +对团队工作的建议 +-------- + +1. **耐心钻研,保质保量:** 对于后端组目前面临的困难,希望后端组同学耐心钻研,不必急于求成,确保质量优先,争取寻求解决办法,如需帮助前端组可以出力 + +小结 +-- + +1. **原型优化:** 原型交付演示完成后,根据项目指导老师以及班会老师提出的意见,完成主题切换、响应式布局等基础体验优化的基础上,进一步根据反馈完善了模块布局与字体层级规范,并对功能模块进行了合理增删,为后续高保真原型演示奠定了基础。 + +2. **前后端协作进度受限于后端开发延迟**:因后端API设计尚未完成,直接影响前端功能对接与实现,后续开展API对接工作时前端可加大对后端的协助,以加快项目进展。 + + + + +--- diff --git a/doc/process/weekly/week-08/members/lianghao-weekly-plan-08.md b/doc/process/weekly/week-08/members/lianghao-weekly-plan-08.md new file mode 100644 index 0000000..d627edc --- /dev/null +++ b/doc/process/weekly/week-08/members/lianghao-weekly-plan-08.md @@ -0,0 +1,28 @@ +# 个人周计划-第8周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-10 +**结束时间:** 2025-11-16 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ------------------------- | -------------- | --------- | +| 1 | 后端系统云端部署 | 胡帆、杨博文 | 11月10日至12日,主导完成后端系统的云端部署工作,包括服务器环境配置、依赖包安装、数据库迁移、服务启动脚本编写等关键环节。与杨博文协作解决部署过程中的兼容性问题和性能优化需求,与胡帆配合确保算法模块在云端环境正常运行。重点排查系统稳定性,为后续前后端联调奠定基础。| +| 2 | API接口规范制定与确认 | 胡帆、杨博文、金郅博 | 11月13日,参与团队API设计专项会议,与算法组、前端组共同制定详细的API接口规范。重点讨论接口的请求参数格式、响应数据结构、错误处理机制、认证授权方式等核心内容,确保API设计合理、易用,满足前后端对接需求。| +| 3 | 前后端对接预备工作 | 金郅博 | 11月12日至13日,准备Mock接口或沙箱环境供前端预联调。与金郅博沟通前端数据请求清单,提前识别可能的技术难点,确保14日对接工作高效启动。| +| 4 | 后端系统测试与API优化 | 金郅博 | 11月14日至16日,在云服务器环境中对后端系统进行全面测试,重点排查算法调用、数据存储、权限管理等方面可能存在的问题,及时修复发现的bug。根据金郅博在前端对接过程中的反馈,快速调整和优化API实现,确保前后端顺畅对接。| +| 5 | 需求变更:用户权限管理设计与交互式对比功能优化 | 杨博文 | 11月11日前,与杨博文深入对接,针对当前后端功能单薄的问题,讨论并设计数据库表结构,实现管理员、普通用户等不同角色的权限分离管理功能,包括角色权限划分和数据访问控制机制。同时协商确定方案,废弃原有"生成对比报告"自动化功能,改为更加灵活的分离式可交互逻辑,让用户能够自主选择对比对象、调整对比参数、自定义报告内容,提升系统易用性和灵活性。| + +## 小结 + +1. **云端部署攻坚:** 本周最重要的任务是完成后端系统的云端部署,这是系统从本地开发环境走向实际应用的关键一步,需要确保算法模块在云端稳定运行。 + +2. **API规范确立:** 参与团队API设计会议,与前端、算法组充分沟通,制定清晰完整的接口规范,为前后端对接工作提供技术保障。 + +3. **前后端对接启动:** 在API规范确定后,积极配合前端团队进行接口对接,及时响应前端反馈,快速优化API实现,推动系统整体联调顺利进行。 + +4. **需求优化落地:** 基于上周班会反馈和团队讨论,本周将实现用户权限管理功能,并改进对比报告生成逻辑,使系统更加灵活和易用。 diff --git a/doc/process/weekly/week-08/members/lianghao-weekly-summary-07.md b/doc/process/weekly/week-08/members/lianghao-weekly-summary-07.md new file mode 100644 index 0000000..2366824 --- /dev/null +++ b/doc/process/weekly/week-08/members/lianghao-weekly-summary-07.md @@ -0,0 +1,33 @@ +# 个人周总结-第7周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-03 +**结束时间:** 2025-11-09 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 成果说明 | +| ---- | ------------------------- | -------- | --------- | +| 1 | 后端集成核心算法 | 已完成 | 基于胡帆已跑通的算法代码,成功完成了四个核心加噪算法和两个微调算法的后端集成与本地部署。优化了后端文件层次结构和资源管理机制,完善了算法调用的运行链路流程。但由于对模型算法集成难度的误判,该任务耗时超出预期,占用了本周大部分工作时间。 | +| 2 | API接口规范制定与确认 | 未完成 | 由于核心算法集成工作难度超出预期,占用了大量时间,未能按计划参与API接口规范的集中讨论与确认工作。该任务将顺延至下周完成。 | +| 3 | 前端对接支持与接口优化 | 未完成 | 由于API接口规范尚未最终确认,前后端对接工作相应延后。计划下周在完成API规范后,积极配合前端团队进行接口对接与优化工作。 | +| 4 | 云服务器部署尝试 | 未完成 | 本周时间主要投入在算法集成工作中,云服务器部署的学习与实践暂时搁置。计划在算法集成稳定后再进行云部署的技术储备工作。 | + +## 对团队工作的建议 + +1. **加强技术难度评估:** 建议在任务规划时更充分地评估技术难度,特别是涉及算法集成等复杂任务时,应预留足够的时间,避免影响后续任务进度。 + +2. **加强各组间的交流:** 建议前端组、后端组、模型组在组会上定期分享实现框架和遇到的技术难点,以便团队成员相互了解进展,为后续对接流程做好准备。 + +3. **丰富功能与交互:** 相较于一般的软件工程项目,本项目结合人工智能,难度高、工作量大,但在软件工程方面仍有提升空间,建议后续可以增加用户权限管理、操作日志等功能,提升系统的完整性。 + +## 小结 + +1. **核心算法集成完成:** 本周主要工作集中在后端核心算法集成上,成功将四个加噪算法和两个微调算法集成到后端系统中,实现了算法的本地调用与运行。 + +2. **技术难度挑战:** 在算法集成过程中遇到了比预期更多的技术挑战,包括算法依赖环境配置、资源管理优化、调用流程设计等问题,通过与胡帆密切协作逐步解决,积累了宝贵的算法集成经验。 + +3. **任务进度调整:** 由于算法集成难度超出预期,导致API规范制定、前端对接和云服务器部署等任务未能按计划完成。已调整下周工作安排,将优先完成API规范确认和前后端对接工作,确保项目整体进度。 \ No newline at end of file diff --git a/doc/process/weekly/week-08/members/yangbowen-weekly-plan-08.md b/doc/process/weekly/week-08/members/yangbowen-weekly-plan-08.md new file mode 100644 index 0000000..d425bb9 --- /dev/null +++ b/doc/process/weekly/week-08/members/yangbowen-weekly-plan-08.md @@ -0,0 +1,24 @@ +# 个人周计划-第8周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-10 +**结束时间:** 2025-11-16 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +|------|----------|--------|-----------------------------------------------------------------------------------------------------| +| 1 | **后端云端部署支持** | 梁浩、胡帆 | • 全程协助梁浩进行云服务器环境配置与服务部署;
• 参与部署后基础功能验证(如用户登录、数据查询接口通断测试)。 | +| 2 | **API规范制定与评审** | 梁浩、胡帆、金郅博 | • 11.13 参与API专项会议,从文书与后端协同视角提出接口命名规范、错误码体系建议;
• 整理会议结论,协助形成《接口文档》;
• 关注接口与权限模型、日志模块的兼容性设计。 | +| 3 | **需求变更与文档迭代** | 梁浩、杨逸轩 | • 丰富数据库表的个数;
• 废弃“自动生成对比报告”逻辑,设计**交互式对比功能**用例流程;
• 更新UML时序图(新增交互式对比功能),确保与开发一致。 | +| 4 | **第二版迭代开发计划起草** | 杨逸轩 | • 基于本周需求变更与API进展,更新《迭代开发计划》;
• 明确需求优先级(P0:交互式对比;P1:权限+日志;P2:三维图联动)、里程碑节点与资源估算;
• 为下周文书组评审做准备。 | +| 5 | **前后端对接支持与风险预判** | 金郅博、梁浩 | • 梳理前端所需数据字段与权限上下文;
• 协助金郅博理解后端认证流程;
• 记录对接过程中的文档缺失项,动态更新接口说明。 | + +## 小结 +1. **风险意识**:重点关注后端与模型集成稳定性、API颗粒度合理性两大潜在风险,介入设计环节以降低返工概率。 +2. **能力拓展**:通过深度参与部署与API定义,系统性提升云原生开发与接口设计理解,补强后端工程能力短板。 + +--- diff --git a/doc/process/weekly/week-08/members/yangbowen-weekly-summary-07.md b/doc/process/weekly/week-08/members/yangbowen-weekly-summary-07.md new file mode 100644 index 0000000..316e2fb --- /dev/null +++ b/doc/process/weekly/week-08/members/yangbowen-weekly-summary-07.md @@ -0,0 +1,35 @@ + +--- +## 个人周总结-第7周 +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-03 +**结束时间:** 2025-11-09 + +--- + + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 成果说明 | +|------|--------------------------|------------------|-----------------------------------------------------------------------------------------------------------------| +| 1 | 后端算法集成技术支持 | **部分完成** | 全程跟进梁浩的算法集成过程,协助梳理了文件结构与资源调用逻辑;独立跑通当前后端代码,验证其基础功能可用性。但在集成过程中发现算法依赖复杂、环境耦合度高,**整体集成难度远超预期**,导致原计划未能完全完成,需后续持续投入。 | +| 2 | 《用户手册》联合撰写 | **初步启动,暂缓** | 与杨逸轩进行了初步沟通并搭建了手册框架。但因**前端仅有原型、无实际功能界面**,且后端接口尚未冻结,无法准确描述用户操作流程与交互逻辑,暂无法推进实质性内容撰写。待前端界面完全固定后重启。 | +| 3 | API 接口规范最终确认 | **未完成** | 原定11月6日集中讨论,因后端与模型仍未完成稳定对接,**缺乏可对外暴露的可靠接口**,会议调整为技术难点同步会。共识:接口规范必须等算法集成稳定后方可制定,避免反复返工。 | +| 4 | 后端云服务器部署预研 | **未开展** | 鉴于本地集成尚未闭环(模型调用链路未通),**不具备上云测试前提**,主动暂停该任务,避免无效投入。后续将结合集成稳定后的部署方案再行启动。 | + +--- + +## 对团队工作的建议 + +- **强化“阻塞问题”透明化上报:** 本周多任务延期源于同一根因(模型-后端未通),建议在周中同步会增加“关键路径阻塞”专项汇报环节,便于快速调配资源或调整节奏。 +- **丰富系统功能:** 在周中汇报时,肖老师指出当前项目的大模型占比太大,不利于后续评分。建议我们丰富数据库内容以及系统功能。 + +--- + +## 小结 + +- **技术支撑扎实落地**:虽未能完全“全程护航”,但通过跑通代码、参与调试,切实保障了集成工作的持续推进,也为后续深度协作打下基础。 +- **风险预判与止损及时**:面对接口、文档、部署等任务因前置条件缺失而无法开展的情况,主动识别并合理延后。 + +--- \ No newline at end of file diff --git a/doc/process/weekly/week-08/members/yangyx-weekly-plan-08.md b/doc/process/weekly/week-08/members/yangyx-weekly-plan-08.md new file mode 100644 index 0000000..6572d1a --- /dev/null +++ b/doc/process/weekly/week-08/members/yangyx-weekly-plan-08.md @@ -0,0 +1,36 @@ +个人周计划-第8周 +========= + +姓名和起止时间 +------- + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-11-10 + +**结束时间:** 2025-11-16 + + +本周任务计划安排 +-------- + +| **序号** | **计划内容** | **协作人** | **情况说明** | +| ------ | ----------------- | ------- | -------------------------------------------------------------------------------------------------- | +| 1 | **前端新功能界面开发(冲刺)** | 金郅博、胡帆 | **11月10日至12日**:与金郅博协作完成前端新功能界面开发。主要包括实现**独立的交互式微调生图页面**,并完成**动态三维指标图的前端绘制**,需与胡帆沟通数据格式,确保可视化效果。 | +| 2 | **核心设计文档更新支持** | 杨博文、梁浩 | 协助杨博文和梁浩,根据小组需求变更(用户权限管理、可交互报告逻辑)进行设计文档更新。重点是协作更新**用例图、UML类图、数据库E-R图**等,为《需求规格说明书》的第二版撰写提供支持。 | +| 3 | **前端云部署方案深化** | 个人 | 基于上周的初步预研成果,本周系统性学习前端项目完整的云端部署方法和流程(如静态资源打包、Nginx配置、HTTPS等)。目标是梳理并确定**Alpha版本的完整部署方案**。 | +| 4 | **联调问题持续跟进** | 金郅博、梁浩 | 持续跟进上周联调中已反馈的核心API兼容性问题,并协助金郅博在新的功能模块开发过程中,及时记录和反馈新的API问题,确保前后端对接高效顺畅。 | +| 5 | **后续文档框架细化** | 个人 | 利用开发和联调间隙,完善和细化《用户手册》的框架结构和初步内容,提前为后期的文档交付做准备。 | + +小结 +-- + +1. **界面与可视化(11/10-11/12):** 本周初的首要任务是与金郅博协作,快速完成微调生图页面和动态三维指标图的可视化功能,支撑算法功能展示。 + +2. **文档与规范:** 重点支持杨博文完成核心设计文档的更新,以适应本周的需求变更,确保文档与开发同步。 + +3. **技术深化:** 继续深化前端云部署方案的预研,将经验转化为可执行的详细部署流程,为项目上线做好技术铺垫。 + +4. **对接保障:** 确保联调过程中,接口问题得到及时反馈与解决。 diff --git a/doc/process/weekly/week-08/members/yangyx-weekly-summary-07.md b/doc/process/weekly/week-08/members/yangyx-weekly-summary-07.md new file mode 100644 index 0000000..8913ff3 --- /dev/null +++ b/doc/process/weekly/week-08/members/yangyx-weekly-summary-07.md @@ -0,0 +1,39 @@ +个人周总结-第7周 +========= + +姓名和起止时间 +------- + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-11-03 + + **结束时间:** 2025-11-10 + +## 本周任务完成情况 + +| **序号** | **总结内容** | **是否完成** | **成果或说明** | +| ------ | ----------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | **前端 UI/交互细节优化(冲刺任务)** | **完成** | **高标准交付:** 11月3日至5日期间与金郅博紧密合作,全面完成了前端原型的视觉和交互打磨,统一了 UI 美术风格,优化了交互动效,并顺利完成了响应式布局的适配工作,使最终原型达到了预期的**展示级**视觉效果。在小班课后,我们决定增加一些交互功能以及对网页内容的排版进行重新设计,目前正在进行中。 | +| 2 | **《用户手册》初版撰写/《需求文档》迭代** | **完成(替代)** | 根据小班课反馈和小组讨论结果,原定的《用户手册》初版撰写任务暂时推迟。工作重心调整为协助杨博文对《需求规格说明书》初版进行迭代,**完成了核心功能的细节补充和用例图的优化**,提高了文档的精确性和可实施性。 | +| 3 | **前端适配与联调辅助** | **进行中** | **接口适配与问题反馈:** 11月6日 API 规范确定后,工作重心迅速转向前后端联调。已协助金郅博完成关键前端模块对后端接口的初步适配工作。在联调过程中,负责记录和反馈接口问题,目前已收集并反馈了**3个核心API的字段/格式兼容性问题**,正积极跟进后端修复进度。 | +| 4 | **前端云部署技术预研** | **基本完成** | **预研与实践:** 利用联调间隙,完成了主流前端云部署技术(如云厂商的轻量级应用)的预研。通过尝试将当前前端半成品部署到测试环境,熟悉了前端部署的基本流程和潜在配置问题,为项目后续正式上线储备了技术经验。 | +| 5 | **后续文档规划与学习** | **完成** | 提前规划了下周可能需要的文档工作,例如《用户手册》的初步框架已确定。同时,利用碎片时间持续进行前端网课学习,本周主要深化了 Vue 组件通信和状态管理相关知识。 | + +对团队工作的建议 +-------- + +1. **联调问题优先解决**:鉴于前端联调工作已发现多个关键 API 兼容性问题,建议后端团队将这些问题列为最高优先级处理项,确保联调工作能够高效推进,避免拖慢整体迭代进度。 + +2. **原型版本锁定**:建议团队将当前已达到“展示级”的前端原型进行版本锁定和归档,作为第一阶段的正式交付物,并确保后续联调中的改动均基于此版本进行,避免设计回溯。 + +小结 +-- + +1. **核心交付物达成**:本周初的首要目标——前端原型 UI/交互细节优化已按时保质完成,使原型达到了预期的展示级标准。 + +2. **文档工作调整与支持**:灵活应对反馈,将文档重心从《用户手册》转移到《需求规格说明书》的迭代,有效支持了团队核心需求文档的完善。 + +3. **技术储备深化**:完成了前端云部署技术的预研和实践,增强了项目后期的技术保障。 diff --git a/doc/process/weekly/week-09/group/meeting-minutes-09.md b/doc/process/weekly/week-09/group/meeting-minutes-09.md new file mode 100644 index 0000000..55e3975 --- /dev/null +++ b/doc/process/weekly/week-09/group/meeting-minutes-09.md @@ -0,0 +1,56 @@ +# 小组会议纪要-第9周 + +## 会议记录概要 + +**团队名称:** 2班-深度思考 +**指导老师:** 刘琴 +**主 持 人:** 胡帆 +**记录人员:** 杨博文 +**会议主题:** 上周总结-困难讨论-任务安排 +**会议地点:** 中楼221 +**会议时间:** 2025-11-18 11:40-12:00 +**纪录时间:** 2025-11-18 19:00 +**参与人员:** 胡帆、金郅博、梁浩、杨逸轩、杨博文 + + + +## 会议内容 + +### 1. 遇到的主要困难与讨论 + +- **技术难点**: + 前端和后端分别部署在不同的服务器上,目前前后端的通信问题尚未解决。 + +- **协作难点**: + 期中考试密集(本周计算机网络考试),成员时间碎片化,难以集中 coding;部分任务推进节奏被打断。 + +- **前端修改共识**(由金郅博与胡帆主导说明): + 参考胡帆在群中发送的界面原型设计进行更改 + +### 2. 本周任务安排(期中考试周 · 弹性执行) + + +| 序号 | 计划内容 | 执行人 | 说明 | +|------|---------|--------|------| +| 1 | Autodl 端口稳定性加固与压力测试 | 梁浩、杨逸轩 | **保底任务**:确保中转链路 24h 稳定;编写简易健康检查脚本 | +| 2 | 前端界面重构(登录页+主控台) | 金郅博(胡帆支援) | ️ **弹性任务**:仅完成基础样式+响应式适配即可,交互细节可延至下周 | +| 3 | 代码规范化覆盖至前端模块 | 胡帆、杨博文 | **弹性任务**:优先补全已有代码注释;stylelint/eslint 配置延迟 | +| 4 | 文档更新(UML + DB Schema) | 杨博文 | **弹性任务**:待端口方案确认后启动;若本周未定型,则仅整理变更点备忘 | +| 5 | 协作开发支援 | 全体 | 杨博文协助梁浩梳理后端异常日志模块;金郅博向杨逸轩同步前端 API 字段规范 | + + +--- + +## 小组协作与纪律情况 + +- 协作情况:良好。成员主动跨角色支援(如杨逸轩以前端经验助后端),沟通高效; +- 纪律情况:全员准时参会,理解并支持「学业优先」安排,无异议; +- 特别说明:本周不设考勤打卡,以产出/进展简报为协作依据。 + +--- + +**备注**: +- 请各位以复习为重,量力而行;技术问题可累积至下周集中攻关; +- 本次纪要由杨博文整理,1工作日内提交至群文件,并同步PM与各模块负责人。 + + diff --git a/doc/process/weekly/week-09/group/weekly-plan-09.md b/doc/process/weekly/week-09/group/weekly-plan-09.md new file mode 100644 index 0000000..5bfbf0f --- /dev/null +++ b/doc/process/weekly/week-09/group/weekly-plan-09.md @@ -0,0 +1,28 @@ +# 小组周计划-第9周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-17 +**结束时间:** 2025-11-23 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 后端克服autodl端口限制 | 梁浩、杨逸轩 | 针对上周遇到的云服务器端口无法对外开放的技术难题,杨逸轩将运用前端云部署积累的经验,协助梁浩探索多种技术方案:包括端口映射优化、tmux + autossh等方法,力求**彻底解决autodl平台的端口访问限制问题**。最终实现前后端服务器间的稳定通信,确保外网用户能够正常访问我们的服务。这是本周的关键技术攻关任务。 | +| 2 | 前端界面重构(不强求) | 金郅博、胡帆 | 基于胡帆手绘的页面示例,金郅博对**前端界面进行全面的生产级重构**。主要工作包括:统一整个系统的视觉设计风格,优化页面布局和响应式适配,完善用户交互流程和反馈机制,将demo版本的临时界面升级为正式产品级的用户界面。重点关注界面的专业性、易用性和视觉美观度,确保用户在使用图像去噪和微调功能时有良好的操作体验。考虑到本周正值期中考试周,学业压力较重,此任务采取"**尽力而为**"的原则,优先保证学业,如果本周无法完成,可延后至下周处理。 | +| 3 | 前端适配API收尾(不强求) | 杨逸轩、金郅博 | 在后端成功解决端口访问问题后,两人将协作**完成前端与后端API对接**的最后环节。具体包括:完善异常处理逻辑,优化数据传输格式,测试所有接口的稳定性,调试图片上传和结果下载功能等。考虑到本周正值期中考试周,学业压力较重,此任务采取"**尽力而为**"的原则,优先保证学业,在时间允许的情况下推进API对接工作。如果本周无法完成,可延后至下周处理。 | +| 4 | 更新旧有文档 | 杨博文 | 根据项目当前的实际开发进展和alpha、beta版本的迭代规划,**系统性更新项目文档体系**。重点更新内容包括:修订UML类图和时序图以反映最新的系统架构,更新数据库设计文档以匹配当前的数据结构等。文档更新的数量将根据实际情况灵活调整,**不设置具体完成指标**。 | +| 5 | 代码规范化重构 | 胡帆 | 对整个项目的代码库进行全面的规范化整理和重构工作。主要任务包括:**统一代码风格和命名规范**,完善函数和类的注释文档,优化代码结构和模块划分,清理冗余代码和临时调试代码。确保代码的可读性、可维护性和可扩展性。这项工作将为项目的长期发展和后续维护奠定良好基础。 | +| 6 | 协作开发 | 胡帆、杨博文 | 为了均衡团队工作负载,避免关键任务过度集中在个别成员身上,实施**协作开发策略**。杨博文将协助梁浩处理部分后端开发任务。胡帆将支援金郅博的前端开发。 | + +## 小结 + +1. **后端技术攻关:** 本周计划的核心是解决上周遗留的技术难题,特别是云服务器端口访问问题,这直接关系到整个系统能否正常为外部用户提供服务。同时推进前端界面的生产级重构,确保用户体验达到基本的产品标准。 + +2. **灵活安排:** 考虑到本周是期中考试周,团队采取了灵活务实的任务安排策略。将关键任务(如端口问题解决、界面重构)列为优先级,而将一些可延后的工作(如API对接收尾)设置为弹性任务。 + +3. **协作模式:** 本周特别强调协作开发,这是为了均衡工作负载。通过让不同专业背景的成员互相支援,既能加快开发进度,又能促进技术知识的交流传播。 + +4. **质量与规范检查:** 代码规范化重构和文档更新工作的安排,本是看似不紧急但十分重要的工作,但却往往是区分学生项目和专业产品的关键因素。通过持续的质量改进,我们要将本项目打造成一个真正具备实用价值的产品。 diff --git a/doc/process/weekly/week-09/group/weekly-summary-08.md b/doc/process/weekly/week-09/group/weekly-summary-08.md new file mode 100644 index 0000000..e990e48 --- /dev/null +++ b/doc/process/weekly/week-09/group/weekly-summary-08.md @@ -0,0 +1,28 @@ +# 小组周总结-第8周 # + +## 团队名称和起止时间 ## + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-10 +**结束时间:** 2025-11-16 + +## 本周任务完成情况 ## + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 后端集成与云端部署 | 部分完成 | 梁浩主导完成了后端系统的云端环境配置、依赖包安装、数据库迁移和服务启动脚本编写等关键环节。在胡帆和杨博文的协助下,算法模块在云端环境下已能稳定运行,并通过了功能测试。但在部署过程中遇到了**云服务器端口无法对外开放的技术问题**,导致外网暂时无法访问后端服务。目前团队正在协调解决网络访问权限问题,争取尽快实现完整的云端服务访问。 | +| 2 | API制定 | 完成 | 11月13日团队成功召开了API设计专项会议,由胡帆主导、后端和前端团队积极参与,共同制定了**详细完整的API接口规范**。会议确定了图像上传接口、算法处理接口、结果查询接口、指标数据接口等核心API的请求参数格式、响应数据结构、错误处理机制和认证授权方式。经过充分的技术讨论和需求协商,最终形成了一套清晰、易于理解的API技术标准,为前后端对接工作奠定了坚实基础。 | +| 3 | 测试和修改API | 基本完成 | 梁浩在云服务器环境中对后端系统进行了全面的功能测试,重点验证了算法调用、数据存储等核心模块的稳定性,及时发现并修复了若干技术问题。金郅博在前端对接过程中通过mock server进行了模拟测试,并在真实服务器环境下验证了登录注册、任务创建、图片处理等基础功能的完整流程。API设计整体较为合理,**实际对接中暂未发现需要大幅调整的问题**,但排队机制、任务删除等部分接口仍需进一步优化完善。 | +| 4 | 算法扩展 | 完成 | 胡帆成功完成了"动态三维指标图绘制"模块的数据采集功能开发,**实现了算法训练和推理过程中关键性能指标的实时记录**,包括Loss变化、处理时间统计等核心数据。数据采用标准CSV格式存储,并为前端可视化提供了灵活的参数接口。此外,还额外完成了热力图指标生成功能和算法代码的全面统一化工作,包括四种核心算法、三种微调方法等完整功能模块,并编写了详细的示例配置和运行脚本。 | +| 5 | 需求变更 | 部分完成 | 杨博文与导师团队进行了深入的需求确认会议,最终敲定了系统核心功能边界,明确了"不再进行重大需求变更"的原则。基于稳定后的需求,完成了用例图、时序图的全面重构,并起草了**迭代开发计划第二版和需求规格说明书的大规模修订**。杨逸轩协助更新了相关设计文档。但用户权限管理的数据库设计和交互式对比功能的具体实现细节仍需梁浩进一步补充完善,这部分工作将在下周优先推进。 | +| 6 | 界面修改 | 完成 | 金郅博和杨逸轩成功协作**完成了独立的交互式微调生图页面开发**,将原有的自动生成报告功能升级为用户可自主选择的交互式界面,整合了微调生图、静态指标展示、特征频域热力图等核心功能。同时基于Three.js技术完成了动态三维指标图的前端渲染逻辑开发,确保能够根据后端返回的数据实时生成直观美观的三维可视化图表。新界面的交互体验和视觉效果都有了显著提升。 | +| 7 | 前端对接API | 基本完成 | 金郅博基于确定的API规范完成了前端调用逻辑的开发工作。首先通过搭建mock server进行了模拟环境测试,验证了登录注册、任务创建、文件上传、历史记录等基础功能的流程完整性。随后在后端服务部署完成后,通过AutoDL服务器进行了真实环境对接测试,成功实现了前后端数据互通,**核心业务流程已跑通**。但由于期中考试安排影响,部分API接口的全面测试尚未完成,需要在下周进一步梳理优化。 | +| 8 | 前端研究上云流程 | 完成 | 杨逸轩系统性学习并**已经初步实现了前端项目的完整云端部署**,深入研究了静态资源打包、云服务器选型配置、Nginx服务器部署、域名解析配置、HTTPS证书申请等关键技术环节。通过理论学习与实践操作相结合的方式,成功梳理并确定了Alpha版本的完整、可执行的前端云部署方案,为项目后期正式上线做好了充分的技术准备和经验积累。 | + +## 小结 ## + +1. **技术突破与协作成效显著**:本周团队在多个技术层面实现了重要突破。云端部署工作基本完成,算法模块已能在云环境稳定运行;API规范制定工作高效推进,为前后端协作建立了清晰标准;虽然在网络访问权限等细节问题上还有待解决,但整体技术架构已趋于成熟。 + +2. **需求管理走向规范化**:经过与导师团队的深入沟通,项目需求终于实现了稳定化管理,"不再进行重大变更"的原则为后续开发提供了可靠保障。杨博文主导的文档体系重构工作成效明显,用例图、时序图、需求规格说明书等核心文档已形成闭环一致的技术标准。 + +3. **团队协作模式日趋成熟**:本周的工作充分体现了团队成员间的专业分工和高效协作。大家在遇到技术难题时能够主动求助和相互支持,在发现问题时能够及时反馈和协同解决。 diff --git a/doc/process/weekly/week-09/members/hufan-weekly-plan-09.md b/doc/process/weekly/week-09/members/hufan-weekly-plan-09.md new file mode 100644 index 0000000..91e3679 --- /dev/null +++ b/doc/process/weekly/week-09/members/hufan-weekly-plan-09.md @@ -0,0 +1,24 @@ +# 个人周计划-第9周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-17 +**结束时间:** 2025-11-23 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 前端界面重构支援 | 金郅博 | 协助金郅博完成前端界面的生产级重构工作,提供**手绘的页面设计示例**作为参考蓝图,并在技术实现方面给予指导支持。重点协助处理算法可视化模块、动态三维指标图渲染、以及复杂交互逻辑等技术难点。由于金郅博在前端开发方面经验丰富,我主要承担技术咨询和代码review的角色,确保界面重构既符合用户体验标准,又能准确展示算法处理结果。考虑到期中考试周的时间压力,采用"按需支援"的灵活协作模式。 | +| 2 | 代码规范化重构 | 本人 | **对整个项目代码库进行全面的规范化整理**,保障项目的长期可维护性。具体任务包括:统一所有模块的代码风格和命名规范,调整代码格式,完善核心函数和类的描述注释,优化算法模块的代码结构和层次划分,清理开发过程中留下的临时代码和调试语句,添加必要的异常处理和日志记录机制。确保代码具备专业级的可读性和稳定性。 | +| 3 | 跨组协作开发 | 杨博文 | 与杨博文一起实施跨组协作开发策略,主要目标是均衡团队工作负载并促进技术交流。我将**重点支援金郅博的前端开发工作**,特别是在算法结果可视化、数据图表渲染、前端性能优化等技术领域提供专业指导。同时配合杨博文对后端团队的支援工作,确保前后端技术方案的一致性和兼容性。 | + +## 小结 + +1. **技术支援:** 本周的工作重心从独立的算法开发转向为团队提供全方位的技术支持。通过协助前端界面重构和提供设计示例,确保用户界面既美观又能准确展示技术特色。 + +2. **代码规范化:** 通过建立统一的代码标准和完善的文档体系,将项目打造成具备专业水准的软件产品。这项工作需要对整个代码库有全局性的理解,对技术能力和项目管理能力来说也是一次锻炼。 + +3. **灵活安排:**本周是期中考试周,故而安排的任务比较轻,且多为灵活安排,优先安心备考。 diff --git a/doc/process/weekly/week-09/members/hufan-weekly-summary-08.md b/doc/process/weekly/week-09/members/hufan-weekly-summary-08.md new file mode 100644 index 0000000..4e1bebe --- /dev/null +++ b/doc/process/weekly/week-09/members/hufan-weekly-summary-08.md @@ -0,0 +1,33 @@ + +--- + +# 个人周总结-第8周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-10 +**结束时间:** 2025-11-16 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 后端云端部署技术支持 | 完成 | 在11月10日至12日期间,协助梁浩完成了后端系统的云端部署工作。主要解决了算法模块在云服务器上的**环境配置问题**。通过反复调试和优化,最终确保了所有算法功能都能在云服务器上稳定运行。 | +| 2 | 算法功能深度拓展 | 完成 | 成功完成了**"动态三维指标图绘制"**模块的数据采集功能开发。在算法训练和推理过程中实现了关键性能指标的实时记录。数据以标准CSV格式存储在约定的目录位置,并为前端可视化模块预留了灵活的参数接口。 | +| 3 | API接口规范主导制定 | 完成 | 于11月13日成功召开了**API设计专项会议**,与后端组和前端组进行了深入的技术讨论。基于算法模块的实际功能特点,我们制定了包含图像上传接口、算法处理接口、结果查询接口、指标数据接口等在内的完整API规范。目前前后端已经基于这套API规范完成了初步对接,暂未发现重大问题。 | +| 4 | 后续优化方向探索 | 完成 | 通过深入思考和技术调研,制定了项目的**alpha版本和beta版本迭代开发**细则。明确了alpha版本将专注于核心功能的稳定性和基础用户体验,而beta版本将在此基础上拓展高级功能和性能优化。 | +| 5 | 热力图生成和后端算法代码统一化 | 额外完成 | 在完成计划任务的基础上,额外开发了**热力图指标生成**功能,并对之前分散的算法代码进行了**全面整合**。实现了代码风格的统一化和开发规范的标准化,涵盖了alpha版本所需的四种核心算法、三种微调方法、动态坐标采集、图像预处理、数值评估、热力图评估等完整功能模块。同时为所有功能编写了示例超参数配置的可运行脚本。 | + +## 对团队工作的建议 + +1. **加强知识运用能力**:建议团队成员在遇到技术难题时,不要只依赖现有知识,要主动学习新技术和查阅相关文档。希望大家都能培养这种主动学习的习惯,提升解决复杂问题的能力。 + +2. **积极反馈问题**:在本周的API对接过程中,前端团队及时反馈了接口设计中的不便之处,让我们能够快速调整和优化。建议团队继续保持这种开放沟通的氛围,遇到问题时及时提出,避免小问题积累成大困难。特别是在技术集成阶段,各组之间的信息透明和快速反馈非常重要。 + +## 小结 + +1. **技术层面的收获**:云端部署让我体验了从本地开发向生产环境迁移的复杂性,特别是GPU资源调度和环境依赖的处理,这些实践经验对我的技术成长很有价值。动态指标采集功能的开发让我意识到,好的算法不仅要功能强大,更要让用户能够理解和信任,可视化是连接技术与用户的重要桥梁。 + +2. **规划思维的锻炼**:制定alpha和beta版本的迭代计划让我开始从更宏观的角度思考项目发展。不仅要关注当前功能的实现,还要为未来的扩展留出空间。 diff --git a/doc/process/weekly/week-09/members/jinzhibo-weekly-plan-09.md b/doc/process/weekly/week-09/members/jinzhibo-weekly-plan-09.md new file mode 100644 index 0000000..932e9cc --- /dev/null +++ b/doc/process/weekly/week-09/members/jinzhibo-weekly-plan-09.md @@ -0,0 +1,35 @@ +# 个人周计划-第9周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-11-17 + +**结束时间:** 2025-11-23 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端界面重构** | 杨逸轩,胡帆 | 参考胡帆手绘 alpha 版 pdf,明确界面设计要求,将前几周完成的原型demo升级为产品级的正式界面:统一全系统视觉风格,优化页面布局与响应式适配,完善交互流程与反馈机制,替换临时界面元素,提升界面的专业性、易用性和视觉美观度,保障图像去噪和微调功能的操作体验。由于本周正值期中考试,在保证学业的前提下尽可能完成此项任务,若无法完成则酌情延后至下周继续。 | +| 2 | **前端适配API收尾** | 杨逸轩,梁浩 | 后端解决端口访问问题后,将与杨逸轩协作推进前端与后端 API 对接:先全面测试现有接口的功能正确性,重点调试图片上传与结果下载等核心交互场景;对接过程中也将梳理需新增的功能接口,统一汇总后反馈至后端;在此基础上,完善接口异常处理逻辑、优化数据传输格式,确保所有接口运行稳定、功能闭环且能合适处理异常情况。由于期中考试安排,任务进度要求同上。 | + + + +小结 +-- + +1. **前端界面产品级重构**:本周核心任务之一是按照胡帆手绘的 alpha 版 pdf 进行设计开发,进行界面升级。可复用原有版本中适配新设计风格的组件与tailwind样式,重点优化子页面安排以及ui的排版,减少重复开发以提升效率。 + +2. **前端与后端 API 对接收尾**:本周需尝试实际访问后端并真正跑通接口调用,测试现有接口正确性,梳理新增接口需求并统一反馈,重点跑通任务上传与结果下载这些核心功能。 + +3. **尽力而为:**本周正值期中考试,在保证学业的前提下尽量完成任务,可优先聚焦核心环节推进,利用碎片时间完成基础工作,非紧急部分尽可能完成,实在无法完成的也可延后至下周处理 \ No newline at end of file diff --git a/doc/process/weekly/week-09/members/jinzhibo-weekly-summary-08.md b/doc/process/weekly/week-09/members/jinzhibo-weekly-summary-08.md new file mode 100644 index 0000000..a72cb7b --- /dev/null +++ b/doc/process/weekly/week-09/members/jinzhibo-weekly-summary-08.md @@ -0,0 +1,35 @@ +个人周总结-第8周 +========= + +姓名和起止时间 +------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-11-10 + +结束时间: 2025-11-16 +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------- | -------------------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端界面修改** | 完成 | **完成独立交互式微调生图页面开发**:将原有生成报告功能升级为用户自主选择的交互式界面,整合微调生图、静态指标展示、特征频域热力图三大核心功能,显著提升系统交互体验;**适配动态三维指标图可视化需求**:基于 Threejs 技术实现前端渲染逻辑,确保能根据后端返回数据,实时生成直观、美观的三维可视化图表。 | +| 2 | **API制定** | 基本完成 | **已完成基本API指定**,11-13日参与API设计专项会议,团队已确定接口请求参数、响应结构、认证机制等规范,并学习了autodl连接服务器运行后端的方法,为后续前后端对接提供了技术基础。 | +| 3 | **前后端API对接** | 部分完成 | **对接准备与模拟测试(11 月 14 日)**:获取后端 API 接口 controller 文件,完成前端调用逻辑开发;因后端服务器暂未部署,采用 mock server 搭建模拟环境,成功验证登录注册、新建任务、上传素材、图片模拟处理返回、历史记录存储等基础功能的流程完整性;**真实环境对接(11 月 15 日)**:后端服务器部署完成后,通过 AUTODL 服务器直连后端开展测试,基础功能 API 接口实现数据互通,核心流程跑通;**待完善事项**:排队机制、任务删除等部分功能 API 仍需优化,且受期中考试备考影响,暂未完成全面测试;计划下周初启动 API 遗漏问题梳理,形成详细清单后与后端团队同步对接,推进功能闭环。 | + +对团队工作的建议 + +1. **建议前后端开发过程中加强日志使用**:如前端请求日志、后端响应日志、异常报错日志,便于快速定位对接问题、追溯问题根源,提升前后端对接的协作排查效率 + +小结 +-- + +1. **前端功能开发与可视化落地**:完成交互式微调生图页面开发及 Threejs 三维图表渲染适配,整合核心功能并优化界面体验;同步完成前端 API 调用逻辑编写,通过模拟环境与真实服务器环境初步验证了基础功能流程,为系统核心交互体验提供了技术支撑。 + +2. **API 对接与测试待推进完善**:基础功能 API 已实现前后端数据互通,但排队机制、任务删除等部分接口仍需优化;受期中考试复习安排影响,未完成全面测试,后续需优先梳理 API 遗漏问题,加强与后端协同迭代,确保功能闭环。 + + +--- diff --git a/doc/process/weekly/week-09/members/lianghao-weekly-plan-09.md b/doc/process/weekly/week-09/members/lianghao-weekly-plan-09.md new file mode 100644 index 0000000..7cd8647 --- /dev/null +++ b/doc/process/weekly/week-09/members/lianghao-weekly-plan-09.md @@ -0,0 +1,27 @@ +# 个人周计划-第9周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-17 +**结束时间:** 2025-11-23 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ------------------------- | -------------- | --------- | +| 1 | 后端系统云端部署(核心任务) | 杨逸轩 | 本周的首要任务是**解决autodl平台的端口访问限制问题**,确保后端服务能够对外提供稳定访问。将与杨逸轩协作探索端口映射优化、tmux + autossh等多种技术方案,突破云服务器端口限制。最终实现前后端服务器间的稳定通信,确保外网用户能够正常访问我们的服务。| +| 2 | 响应前端API适配需求(核心任务) | 金郅博、杨逸轩 | 在后端成功部署并解决端口访问问题后,**及时响应前端的API对接需求**。根据金郅博和杨逸轩在前端适配过程中的反馈,快速调整API实现,完善异常处理逻辑,优化数据传输格式,确保接口的稳定性和易用性。重点测试图片上传、算法调用、结果下载等关键功能,保证前后端能够顺畅通信。| +| 3 | 集成模型评估算法(弹性任务,不强求) | 胡帆 | 如果在完成上述核心任务后仍有余力,可以考虑**将模型评估算法集成到后端系统中**,丰富系统功能。与胡帆协作,实现对去噪效果的量化评估功能,如PSNR、SSIM等指标计算,为用户提供更加专业的评估报告。此任务为**可选任务**,根据实际时间和学业压力灵活安排,如果本周无法完成,可延后至下周处理。| +| 4 | 后端代码优化与完善(弹性任务,不强求) | 杨博文 | 如果时间允许,可以对后端代码进行**规范化整理和功能优化**。包括:统一代码风格和命名规范,完善函数和类的注释文档,优化错误处理机制,提升代码的可读性和可维护性。与杨博文协作,根据实际开发经验,识别并改进后端系统中可能存在的性能瓶颈或逻辑缺陷。此任务为**弹性任务**,优先保证学业和核心功能的完成。| + +## 小结 + +1. **考试周灵活安排:** 本周是期中考试周,任务安排充分考虑学业压力,采取"**核心任务优先,弹性任务可延后**"的策略。后端部署和API适配响应是必须完成的核心工作,而模型评估算法集成和代码优化则根据时间和精力灵活调整。 + +2. **技术攻坚重点:** 本周的关键技术难题是解决autodl平台的端口访问限制,这直接关系到整个系统能否正常为外部用户提供服务。需要与杨逸轩紧密协作,探索多种技术方案,确保问题彻底解决。 + +3. **前后端协同推进:** 在后端部署完成后,及时响应前端的API对接需求,保持与前端团队的密切沟通,快速解决对接过程中遇到的技术问题,推动系统整体联调顺利进行。 + +4. **质量与功能并重:** 在确保核心功能实现的基础上,如果有余力,通过集成模型评估算法和优化代码质量,进一步提升系统的专业性和可维护性,为项目的长期发展奠定良好基础。 diff --git a/doc/process/weekly/week-09/members/lianghao-weekly-summary-08.md b/doc/process/weekly/week-09/members/lianghao-weekly-summary-08.md new file mode 100644 index 0000000..297a198 --- /dev/null +++ b/doc/process/weekly/week-09/members/lianghao-weekly-summary-08.md @@ -0,0 +1,30 @@ +# 个人周总结-第8周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-10 +**结束时间:** 2025-11-16 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 成果说明 | +| ---- | ------------------------- | -------- | --------- | +| 1 | 后端系统云端部署 | 部分完成 | 完成了后端环境配置、依赖包安装、数据库迁移和服务启动脚本,算法模块云端测试通过。但在部署过程中遇到端口无法开放、外网无法访问的问题,尚未实现外部访问。| +| 2 | API接口规范制定与确认 | 已完成 | 11月13日,参与API设计专项会议,团队已确定接口请求参数、响应结构、认证机制等规范,为后续前后端对接提供了技术基础。| +| 3 | 前后端对接预备工作 | 已完成 | 后端测试通过后,直接让前端使用autoDL的自定义服务进行测试,未采用Mock接口和沙箱环境。| +| 4 | 后端系统测试与API优化 | 已完成 | 在云服务器环境下完成了后端系统的功能测试,算法调用、数据存储等模块运行正常。由于API设计较为完善,实际对接过程中还未发现需大幅调整的地方。| +| 5 | 需求变更:用户权限管理设计与交互式对比功能优化 | 未完成 | 需求变更相关的用户权限管理和交互式对比功能设计尚未完成,相关数据库表结构和功能实现待后续补充。| + +## 对团队工作的建议 + +1. **持续优化API与文档:** 虽然API规范已基本完善,但建议持续收集前端反馈,及时补充和完善接口文档。 +2. **加强需求变更的协作推进:** 建议团队成员在需求变更推进过程中加强沟通协作,及时同步进展和遇到的问题,确保新需求能够顺利落地。 + +## 小结 + +1. **后端部署进展顺利但受阻:** 本周顺利完成了后端环境配置、依赖安装、数据库迁移和服务启动脚本,算法模块测试通过。但由于云服务器端口无法开放,导致外网暂时无法访问,需进一步协调解决网络访问问题。 +2. **API规范与对接准备到位:** 团队已完成API接口规范制定。后端测试通过后,前端直接对接autoDL的自定义服务进行联调,为前后端联调打下基础。 +3. **后端测试完成,API实现稳定:** 在云端环境下完成了后端系统的功能测试,API实现基本无需调整,系统整体运行稳定。 +4. **需求变更进展缓慢:** 用户权限管理和交互式对比等需求变更部分未能按计划完成,后续需加快推进相关设计与开发工作。 \ No newline at end of file diff --git a/doc/process/weekly/week-09/members/yangbowen-weekly-plan-09.md b/doc/process/weekly/week-09/members/yangbowen-weekly-plan-09.md new file mode 100644 index 0000000..23dbcd2 --- /dev/null +++ b/doc/process/weekly/week-09/members/yangbowen-weekly-plan-09.md @@ -0,0 +1,23 @@ +# 个人周计划-第9周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-17 +**结束时间:** 2025-11-23 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 预期目标 / 交付物 | 说明与注意事项 | +|------|----------|--------|--------------------------------------------|---------------------------------------------------------------------------------------------------| +| 1 | **文档体系更新与维护** | 杨逸轩、梁浩 | 更新UML类图、时序图;同步修订数据库设计文档;整理alpha/beta版本迭代说明 | • 重点反映当前架构与数据结构变更(如新增接口、调整字段)
• 与梁浩、金郅博确认关键流程变动,确保文档与实际代码一致 | +| 2 | **协作支持后端开发** | 梁浩 | 协助梁浩完成autodl端口限制问题的技术调研与方案验证;参与接口调试及日志分析 | • 主要支持方向:查阅tmux+autossh相关实践案例,整理可行性对比表
• 若端口问题突破,同步记录解决方案形成技术备忘录
• 注意与期中考试时间协调,灵活投入,不强求当周完成 | +| 3 | **需求与设计复核** | 胡帆 | 检查用例图、需求规格说明书是否与最新需求(刘琴老师/邹博士确认版)保持一致 | • 重点核对图像上传-处理-下载全流程是否完整覆盖
• 若发现矛盾或模糊点,及时在组内同步并推动澄清 | + +--- + +## 小结 +1. 本周整体节奏**以学业为重**,所有开发/文档任务均按“弹性推进”原则执行; +2. 文档工作虽无量化指标,但需体现**增量价值**(如:新增1张时序图 + 修订2处数据字典); +3. 作为文书负责人,要在周总结中**主动汇总各模块进展与风险**(哪怕其他成员未提交),为PM提供输入。 \ No newline at end of file diff --git a/doc/process/weekly/week-09/members/yangbowen-weekly-summary-08.md b/doc/process/weekly/week-09/members/yangbowen-weekly-summary-08.md new file mode 100644 index 0000000..eb3e8f6 --- /dev/null +++ b/doc/process/weekly/week-09/members/yangbowen-weekly-summary-08.md @@ -0,0 +1,28 @@ + +--- + +# 个人周总结-第8周 +## 姓名和起止时间 +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-10 +**结束时间:** 2025-11-16 + +## 本周任务完成情况 + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +|------|---------------------------------------|---------|----------------------------------------------------------------------------------------------| +| 1 | 与导师团队深入需求确认 | 完成 | • 11.13与刘琴老师、邹博士开展需求对齐会议;
• 共同敲定系统核心功能边界与关键交互逻辑;
• 明确“之后不再进行重大需求变更”,为后续开发提供稳定基线。 | +| 2 | 用例图与时序图重构 | 完成 | • 基于最终需求,全面重绘系统级用例图,补充“日志查看”“权限校验”等新用例;
• 重构关键业务流程时序图(含新增的交互式对比模块),确保与最新接口设计保持一致。 | +| 3 | 迭代开发计划第二版起草 | 完成 | • 结合稳定后的需求清单与优先级排序(Alpha实现基本可运行功能,Beta实现拓展功能,如VIP、日志查看等),重写《第二版迭代开发计划》;
• 明确各阶段交付物、里程碑节点。 | +| 4 | 需求规格说明书(SRS)大规模修订 | 完成 | • 删除“自动生成对比报告”全部条目;
• 完善了本次新增加的需求的描述以及删除了实现性不强的需求
• 补充非功能性需求、权限控制策略、日志记录规范。 | + +## 对团队工作的建议 + +1. **查看需求文档**:建议后续成员要学会查看需求文档,避免口头共识导致理解偏差以及需求遗漏; +2. **前置评审节点**:重要文档(如SRS、API初稿)建议在正式开发启动前先行进行讨论,降低返工风险。 + +## 小结 + +1. **需求稳定性显著提升**:经与导师团队反复确认,核心需求已基本固化,为冲刺阶段开发奠定坚实基础; +2. **文档体系全面升级**:用例模型、时序逻辑、SRS、迭代计划完成同步重构,形成闭环、一致的技术文档链; \ No newline at end of file diff --git a/doc/process/weekly/week-09/members/yangyx-weekly-plan-09.md b/doc/process/weekly/week-09/members/yangyx-weekly-plan-09.md new file mode 100644 index 0000000..fe1f205 --- /dev/null +++ b/doc/process/weekly/week-09/members/yangyx-weekly-plan-09.md @@ -0,0 +1,36 @@ +个人周计划-第9周 +========= + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-11-17 + +**结束时间:** 2025-11-23 +本周任务计划安排 +-------- + +| **序号** | **计划内容** | **协作人** | **情况说明** | +| ------ | ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- | +| 1 | **攻克后端端口限制**(高优先级) | 梁浩 | **11月17日至19日**:首要任务,运用前端部署预研的经验,协助梁浩探索并实施端口转发、反向代理(如Nginx/socat)或SSH隧道等技术,**彻底解决autodl云服务器的端口无法对外访问的阻塞问题**,确保前后端服务能够顺利联通。 | +| 2 | **前端 Alpha 版本云端部署** | 无 | **11月18日至20日**:基于上周已确定的部署方案,将当前的前端代码进行静态资源打包,**正式完成前端项目在云服务器上的部署和Nginx配置**,并实现通过域名或IP访问。**可交付工件:一个可被外网访问的前端 Alpha 页面。** | +| 3 | **设计文档最终版更新支持** | 杨博文, 梁浩 | **11月20日至22日**:协助杨博文和梁浩,根据系统最新确定的用户管理逻辑和数据结构,完成《需求规格说明书 V2.0》所需的**数据库 E-R 图最终修订**和相关 UML 图的校对工作。 | +| 4 | **API 联调问题排查与支持** | 金郅博, 梁浩 | **持续跟进**:在端口问题解决后,协助金郅博和梁浩进行 API 的最终联调。重点负责排查前端在实际部署环境中(例如Nginx反代后)出现的**跨域、路由或通信异常**,确保图片上传、加噪请求和数据可视化接口的稳定。 | + +小结 +-- + +1. **界面与可视化(11/10-11/12):** 本周初的首要任务是与金郅博协作,快速完成微调生图页面和动态三维指标图的核心 UI 和基础交互逻辑,以支撑算法功能展示。 + +2. **文档与规范:** 重点支持杨博文完成核心设计文档的更新,更新了**用例图**和**UML类图**,以适应本周的需求变更,确保文档与开发同步。 + +3. **技术深化:** 继续深化前端云部署方案的预研,系统性学习并实践了部署方法,**已梳理并确定了 Alpha 版本的完整、可执行的部署流程**,为项目上线做好技术铺垫。 + +4. **对接保障:** 确保联调过程中,上周反馈的核心 API 兼容性问题已**全部修复**并完成验证,并在新功能模块开发联调中,及时与后端反馈跟进。 + +5. 由于本周要进行期中考试,任务可能不会完美完成,但会尽力。 + + diff --git a/doc/process/weekly/week-09/members/yangyx-weekly-summary-08.md b/doc/process/weekly/week-09/members/yangyx-weekly-summary-08.md new file mode 100644 index 0000000..5805914 --- /dev/null +++ b/doc/process/weekly/week-09/members/yangyx-weekly-summary-08.md @@ -0,0 +1,52 @@ +# 个人周总结-第8周 + +### 姓名和起止时间 + +* * * + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-11-10 + + **结束时间:** 2025-11-16 + +* * * + +本周任务完成情况 +-------- + +| **序号** | **总结内容** | **是否完成** | **成果或说明** | +| ------ | ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | +| 1 | **前端新功能界面开发(冲刺)** | **基本完成** | **高质量交付:** 11月10日至12日期间,与金郅博协作完成了**独立的交互式微调生图页面**的核心UI和基础交互逻辑开发。与胡帆沟通后,最终确定数据格式,确定动态三维指标图的前端绘制目标与优化方法。等待后端联调。 | +| 2 | **核心设计文档更新支持** | **完成** | **高效支持:** 协助杨博文和梁浩,根据**用户权限管理和可交互报告逻辑**的最新需求变更,及时更新了**用例图**和**UML类图**,为《需求规格说明书》第二版提供了关键的设计支持。E-R图的更新已同步开始。 | +| 3 | **前端云部署方案深化** | **完成** | **方案确定:** 系统性学习并实践了前端项目完整的云端部署方法,包括**静态资源打包、Nginx配置优化和HTTPS证书配置流程**。已梳理并确定了**Alpha版本的完整、可执行的部署方案**,为项目后期上线做好充分准备。 | +| 4 | **联调问题持续跟进** | **进行中** | **问题清零与新增:** 持续跟进了上周反馈的核心API兼容性问题,目前**已全部修复**并完成验证。并在新功能模块开发联调中,及时与后端反馈跟进。 | +| 5 | **后续文档框架细化** | **完成** | **框架搭建:** 利用碎片时间,完成了《用户手册》的**完整框架结构**和**TOC(目录)** 的细化,并起草了“快速入门”和“系统概述”等初步内容,为下阶段的文档撰写打下了坚实基础。 | + +* * * + +### 对团队工作的建议 + +* * * + +1. **E-R图与后端同步**:鉴于前端新功能和设计文档都涉及数据结构变更,建议杨博文和梁浩优先完成**数据库E-R图**的最终版本确认,确保前端联调和后续开发的数据规范保持一致,避免因数据结构变动导致返工。 + +2. **跨组功能演示**:建议在下周初组织一次**跨组的、针对微调生图页面的小范围功能演示**,以便更早地收集算法组和产品组关于交互细节和展示效果的反馈,确保冲刺成果符合预期。 + +* * * + +### 小结 + + + +1. **核心功能支撑**:本周初的首要任务——**交互式微调生图页面**和**动态三维指标图**已基本完成开发,为项目的算法功能展示提供了有力的前端支撑。 + +2. **设计文档同步**:高效支持了**《需求规格说明书》**的关键更新,确保了开发进度与设计规范的同步,提高了文档的实效性。 + +3. **技术方案落地**:成功梳理并输出了**Alpha版本的前端完整云部署方案**,将预研经验转化为可执行的技术资产。 + +4. **联调保障到位**:积极跟进联调问题,清除了前期遗留问题,并持续保障了新功能模块的接口对接效率。 + + diff --git a/doc/process/weekly/week-10/group/meeting-minutes-10.md b/doc/process/weekly/week-10/group/meeting-minutes-10.md new file mode 100644 index 0000000..887f862 --- /dev/null +++ b/doc/process/weekly/week-10/group/meeting-minutes-10.md @@ -0,0 +1,49 @@ +# 小组会议纪要-第10周 + +## 会议记录概要 + +**团队名称:** 2班-深度思考 +**指导老师:** 刘琴 +**主 持 人:** 胡帆 +**记录人员:** 杨博文 +**会议主题:** 第九周情况总结、第十周开发任务部署、开发问题讨论 +**会议地点:** 中楼211 +**会议时间:** 2025-11-24 11:40-12:10 +**纪录时间:** 2025-11-24 15:00 +**参与人员:** 胡帆、梁浩、杨博文、金郅博、杨逸轩 + +--- +## 会议内容 + +### 一、本周核心任务聚焦 + +经团队内部讨论并结合第九周实际完成情况,本周聚焦以下三大方向协同推进: + +1. **前端页面完成**:完成前端页面基本组件开发,实现一份最简单页面原型。 +2. **后端修补完善**:基于更新后的数据库以及功能需求,完善后端逻辑与接口设计。 +3. **UML图更新**:基于新的业务需求,重新绘制用例图、时序图,确保文档与实际开发保持一致。 + +--- + +### 二、任务分解与执行安排 + +| 序号 | 任务内容 | 负责人 | 关键时间节点 | 主要职责说明 | +|------|------------------------------|------------------|--------------------|--------------| +| 1 | 前端重构页面原型 | 金郅博、胡帆 | 11.24–11.26 | 金郅博:清理冗余文件/图片/代码,构建简洁稳定的 alpha 原型;
胡帆:技术监制,确保界面设计与架构对齐。 | +| 2 | 前端两次 API 测试 | 金郅博、杨逸轩、胡帆 | 11.27–11.29 | 金郅博:本地 + 云端环境双轮测试;
杨逸轩:配合完成云端部署后验证;
胡帆:协助接口对齐与问题排查。 | +| 3 | 前端重新上云 | 杨逸轩 | 11.24–11.28 | 梳理通信逻辑与异常处理(断线重连/API 超时/格式错误);
完成华为云部署(含环境配置、安全设置、压测)。 | +| 4 | 后端修补与完善 | 杨博文、梁浩 | 11.24–11.30 | 适配新版数据库;对齐用户/管理员操作逻辑;
开发“数据源选择预览”功能;及时响应突发问题。 | +| 5 | 增加“生成报告”功能 | 胡帆 | 11.24–11.26 | 实现静态指标报告 + 动态热力图报告生成功能(图片格式);
与后端约定接口调用方式与数据格式。 | +| 6 | 尝试跑 beta 版本算法 | 胡帆 | 11.27–11.30 | 多风格数据集测试;整理 prompt/config 映射;
运行防风格迁移/人脸编辑样例;开发快速匹配算法原型。 | +| 7 | 更新 UML 图 | 杨博文 | 11.24–11.30 | 同步更新用例图、ER图、活动图、时序图;
确保文档与 alpha/beta 实现一致,定稿后冻结修改。 | + + +--- + +### 三、上周总结+本周待改进问题 + +1. **前端开发速度过慢**:前端开发速度明显落后于后端,本周要加快进度。 +2. **前后端对接频率不足**:前后端负责人员对接不够积极,导致进度拖延+问题堆积。 +3. **后端分工明显**:将原本的一台GPU服务器复制成为三台,梁浩、胡帆、杨博文分别负责一台,实现协同开发。 + +--- diff --git a/doc/process/weekly/week-10/group/weekly-plan-10.md b/doc/process/weekly/week-10/group/weekly-plan-10.md new file mode 100644 index 0000000..78f4a72 --- /dev/null +++ b/doc/process/weekly/week-10/group/weekly-plan-10.md @@ -0,0 +1,29 @@ +# 小组周计划-第10周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-24 +**结束时间:** 2025-11-30 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 前端重构页面原型 | 金郅博、胡帆 | 11.24-11.26期间,金郅博将专注于完成上周遗留的前端技术问题,主要任务是对现有代码进行深度清理和优化。这包括删除开发过程中积累的冗余文件、替换临时使用的案例图片资源,以及移除无用的代码片段,确保alpha版本前端界面成为一个结构简洁、无多余装饰但功能 **稳定可靠的原型系统**。胡帆将担任技术监制角色,全程跟踪重构进度,并为金郅博提供界面设计理念沟通和技术方案对齐的专业指导,确保重构后的前端符合整体系统架构要求。任务完成后将立即交付给杨逸轩,用于后续的云服务器部署工作。 | +| 2 | 前端两次API测试 | 金郅博、杨逸轩、胡帆 | 11.27-11.28期间,金郅博在完成原型构建工作后,需要在本地开发环境中进行全面的**API通信连接测试**,验证前后端数据交互的稳定性和准确性。
11.29日杨逸轩完成云端部署后,金郅博需要在云服务器环境中重新执行相同的测试流程,对比本地和云端的性能差异,最终确保整个系统在生产环境中的稳定运行,做到万无一失。 | +| 3 | 前端重新上云 | 杨逸轩 | 11.24-11.26期间,杨逸轩需要深入研究当前前后端的连接架构和通信方式,全面了解现有系统的技术特性、性能参数以及各种异常情况下的错误处理机制。特别重要的是要完成各种异常情况的 **错误处理机制** 实现,包括但不限于网络断线重连、API超时处理、数据格式错误处理等关键功能的开发和测试验证。
11.26-28期间,杨逸轩将负责将经过重构优化的新版前端系统 **完整部署到华为云服务器平台**,这包括环境配置、依赖库安装、安全设置、性能调优等各个环节的工作,并进行全面的功能测试和压力测试,确保部署后的系统能够稳定运行并保持良好的可访问性。 | +| 4 | 后端修补与完善 | 杨博文、梁浩 | 11.24-11.26期间,后端团队将根据 **新版数据库** 的结构变化完成相应的代码修改和适配工作,确保数据访问层的兼容性和稳定性。11.27-11.28期间,重点任务是完善用户操作管理和管理员操作功能的对齐工作等。11.29-30期间,团队将新增"数据源选择预览"功能的请求响应处理,提升用户体验的便利性。除了这些计划内的任务,团队还需要随时应对开发过程中可能出现的各种 **意外技术问题和补缺工作**。本周结束后,后端系统应当达到功能完整、运行独立且技术架构健壮的标准。 | +| 5 | 增加"生成报告"功能 | 胡帆 | 11.24-11.26期间,模型组将专注于在evaluate评估过程中实现 **"生成报告"**这一重要功能模块,并与后端团队进行充分的技术沟通和接口约定,确定具体的调用方法和数据传递格式。新增的报告功能将包括两种不同类型:静态指标分析报告和动态热力图可视化报告,这两种报告都将以图片格式进行生成和存储,最终保存在后端服务器中供用户下载和查看。 | +| 6 | 尝试跑beta版本的算法 | 胡帆 | 11.27-11.30期间,模型组将积极尝试 **提前实现一些beta版本的高级功能**,为下个阶段的开发做好技术储备。具体工作包括:在多种不同风格的数据集上进行算法效果测试和验证;系统整理和完善不同配置参数下的prompt模板以及对应的config配置映射关系;实际运行防风格迁移和人脸编辑的算法样例;同时尝试开发快速匹配算法的代码实现,测试生成几个预制噪声样本。 | +| 7 | 更新UML图 | 杨博文 | 根据alpha版本和beta版本的具体功能需求和技术实现要求,杨博文将 **全面更新现有的系统设计文档**,包括用例图、ER数据库关系图、系统活动图、以及时序图等核心UML设计文档。这次更新将结合前期开发中积累的实际经验和技术调整,确保文档内容与实际系统实现保持高度一致。修改完成后,这些UML图将作为项目的最终技术规范文档进行定稿,不再允许随意更改。 | + +## 小结 + +1. **前端赶上进度:** 本周前端团队将全力以赴完成关键的重构和部署任务,通过金郅博和胡帆的紧密协作,将现有的前端界面打造成结构清晰、功能稳定的alpha版本原型。重构工作不仅要清理冗余代码和资源,更要确保系统的可靠性和用户体验。随后的API测试和云端部署工作将为整个系统的稳定运行打下坚实基础,让前端开发进度重新回到预期轨道。 + +2. **后端补缺:** 后端团队本周的工作重点是查漏补缺和功能完善,通过对新数据库的适配和用户权限管理的优化,将后端系统的健壮性提升到新的水平。各种意外问题的及时处理将确保后端系统真正达到独立运行、功能完整的标准。 + +3. **算法拓展:** 模型组在完成"生成报告"这一实用功能的同时,还将积极探索beta版本的算法实现,为项目的后续发展提供支撑。 + +4. **文档同步:** UML设计文档的全面更新将确保技术规范与实际开发成果保持同步。定稿后的文档将成为团队协作和系统维护的重要依据。 diff --git a/doc/process/weekly/week-10/group/weekly-summary-09.md b/doc/process/weekly/week-10/group/weekly-summary-09.md new file mode 100644 index 0000000..6193ac2 --- /dev/null +++ b/doc/process/weekly/week-10/group/weekly-summary-09.md @@ -0,0 +1,26 @@ +# 小组周总结-第9周 # + +## 团队名称和起止时间 ## + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-17 +**结束时间:** 2025-11-23 + +## 本周任务完成情况 ## + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 后端克服autodl端口限制 | 完成 | 本周团队成功 **攻克了云服务器端口** 无法对外访问的关键技术难题。杨逸轩与梁浩紧密协作,运用前端云部署经验,结合Nginx反向代理、SSH隧道技术以及autodl自定义服务配置,实现了后端服务的稳定部署和前后端在云环境下的顺畅通信。 | +| 2 | 前端界面重构(不强求) | 部分完成 | 金郅博已积极启动 **前端界面重构工作**,依据胡帆提供的手绘页面设计示例,初步完成了主页面及部分子页面的功能实现,并对原有组件和排版模式进行了迁移。胡帆在此过程中提供了关键的设计指导和技术支持。尽管重构已取得初步成果,但界面精细度、排版优化、冗余UI清理等方面仍有提升空间,团队已明确后续将严格参照设计稿进行精细化调整,并优先推进与后端接口的直接对接。考虑到本周是期中考试周,能取得此进展已属不易。 | +| 3 | 前端适配API收尾(不强求) | 基本完成 | 在后端端口问题解决后,前端API适配工作取得了显著进展。金郅博已 **初步完成主要API的基础适配** ,并在本地测试环境下成功实现了注册登录、图片上传及结果下载等核心功能。杨逸轩则专注于联调支持,成功排查并解决了Nginx反代环境下出现的CORS跨域问题,确保了关键业务流程的顺利进行。目前,仍有个别环节(如SSH连接中断自动重连、部分辅助功能)需进一步完善,部分接口(如三维可视化数据)的联调仍在推进中。 | +| 4 | 更新旧有文档 | 已完成 | 杨博文在本周完成了文档体系的关键更新与维护工作。他 **重新编写了数据库设计文档**,并绘制了最新版本的ER图,为项目提供了坚实的数据结构参考。杨逸轩也协助团队完成了《需求规格说明书 V2.0》所需的数据库E-R图修订和UML类图的校对,确保了文档与Alpha版本开发进度的高度一致性。这些工作为项目的规范化管理和后续开发提供了清晰的指引。 | +| 5 | 代码规范化重构 | 完成 | 胡帆对整个项目核心代码进行了 **全面的规范化整理**。他统一了代码风格和命名规范,调整了代码格式,完善了核心函数和类的描述注释,并优化了算法模块的代码结构和层次划分。此外,还清理了开发过程中留下的临时代码和调试语句,并添加了必要的异常处理和日志记录机制。这项工作显著提升了代码的可读性、可维护性和稳定性,为项目的长期发展奠定了良好基础。 | +| 6 | 协作开发 | 部分完成 | 本周团队积极推行协作开发策略。胡帆在前端界面重构期间持续为金郅博提供技术指导和代码review支持,有效促进了前端工作的推进。同时,胡帆与后端团队成员杨博文、梁浩举行了 **技术会议**,详细讨论并确定了数据库设计方案、API接口规范等关键技术细节,基本完成了整个项目的技术架构约定。 | + +## 小结 ## + +1. **后端云部署突破:** 本周团队成功攻克了autodl云服务器端口访问限制这一关键技术障碍,通过Nginx反向代理与SSH隧道等方案,首次实现了前后端服务的云端稳定通信。杨逸轩成功将前端Alpha版本部署至云端并对外开放。项目从本地联调正式迈向了外网可访问、具备基础交互能力的Web应用阶段。 + +2. **前端重构与API对接:** 前端界面重构工作已取得初步成果,为打造专业级用户界面迈出了重要一步。同时,前端与后端API的适配工作也基本完成,金郅博成功实现了核心功能的本地对接,杨逸轩也解决了部署环境中的CORS跨域问题,确保了关键业务流程的顺畅运行。尽管仍有部分细节待完善,但前后端联调的闭环已初步形成。 + +3. **代码规范化与文档体系完善:** 胡帆对项目核心代码进行了全面的规范化整理和重构,显著提升了代码的可读性、可维护性和稳定性,为项目的长期健康发展打下了良好基础。同时,杨博文完成了数据库设计文档和ER图的更新,杨逸轩也协助校对了关键设计文档,确保了项目文档与实际开发进展的高度一致。 diff --git a/doc/process/weekly/week-10/members/hufan-weekly-plan-10.md b/doc/process/weekly/week-10/members/hufan-weekly-plan-10.md new file mode 100644 index 0000000..85fb859 --- /dev/null +++ b/doc/process/weekly/week-10/members/hufan-weekly-plan-10.md @@ -0,0 +1,23 @@ +# 个人周计划-第10周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-24 +**结束时间:** 2025-11-30 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 前端重构页面原型 | 金郅博 | 11.24-11.26期间,我将担任前端重构项目的技术监制角色,全程跟踪金郅博的前端页面重构进度。主要工作包括为前端界面设计提供专业指导,确保设计理念与整体系统架构保持一致,**协助解决重构过程** 中遇到的技术难题。我需要与金郅博保持密切的沟通和对齐,确保删除冗余文件、优化案例图片等工作能够顺利进行,最终交付一个结构简洁、功能稳定可靠的alpha版本前端原型。 | +| 2 | 前端API测试和对接 | 金郅博、杨逸轩 | 11.27-11.28期间,我将协助金郅博完成 **前端API测试和对接工作**。11.29日云端部署完成后,我还需要配合金郅博在云服务器环境中重新进行测试验证,对比本地和云端的性能表现,确保整个前后端对接系统在生产环境中的稳定性和可靠性。 | +| 3 | 增加"生成报告"功能 | 杨博文、梁浩 | 11.24-11.26期间,我将在模型的evaluate评估过程中实现 **"生成报告"** 功能。我会与后端团队进行充分深入的技术沟通,明确接口调用方法、数据传递格式、存储方式等关键技术细节。具体来说,共有两种不同类型的报告:静态指标分析报告和动态热力图可视化报告,这两种报告都将以图片格式生成并存储在后端服务器中。 | +| 4 | 尝试跑beta版本的算法 | 本人 | 11.27-11.30期间,我将探索 **beta版本算法的前期探索和技术验证工作**。具体任务包括:在多种不同风格的数据集上测试算法效果,深入分析和比较算法在各种数据环境下的性能表现和适用性;系统性地整理和完善不同配置参数下的prompt模板,建立标准化的config配置文件映射关系;实际运行防风格迁移和人脸编辑等核心算法的测试样例,验证算法的实际效果和稳定性;同时尝试开发快速匹配算法的代码实现,通过实验生成几个预制噪声样本。 | + +## 小结 + +1. **前端协作与技术指导:** 本周我在前端重构和API对接方面将发挥重要的协调和指导作用,确保前端重构工作的质量和进度,将我在系统架构方面的理解和经验有效传递给团队成员。API测试和对接工作需要技术把关,确保前后端的无缝对接。 + +2. **算法功能拓展与技术探索:** "生成报告"功能的开发是本人本周的重点技术任务。而beta版本算法的前期探索工作将进一步深化对算法原理和应用场景的理解。 diff --git a/doc/process/weekly/week-10/members/hufan-weekly-summary-09.md b/doc/process/weekly/week-10/members/hufan-weekly-summary-09.md new file mode 100644 index 0000000..536570a --- /dev/null +++ b/doc/process/weekly/week-10/members/hufan-weekly-summary-09.md @@ -0,0 +1,27 @@ +# 个人周总结-第9周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-17 +**结束时间:** 2025-11-23 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 前端界面重构支援 | 完成 | 本周协助金郅博前端界面的生产级重构工作,提供了**手绘的页面设计示例**作为参考蓝图,并在技术实现方面给予指导支持。 | +| 2 | 代码规范化重构 | 完成 | 已**对整个项目核心代码进行全面的规范化整理**,保障项目的长期可维护性。具体任务包括:统一所有模块的代码风格和命名规范,调整代码格式,完善核心函数和类的描述注释,优化算法模块的代码结构和层次划分,清理开发过程中留下的临时代码和调试语句,添加必要的异常处理和日志记录机制。确保代码具备专业级的可读性和稳定性。 | +| 3 | 跨组协作开发 | 完成 | 在跨组协作方面取得了丰硕成果,有效促进了团队的技术融合和知识共享。周六与后端团队成员杨博文、梁浩进行了**技术会议**,详细讨论并确定了数据库设计方案、API接口规范、数据传输格式等关键技术细节。会议中我们制定了统一的开发标准和协作流程,解决了前后端对接中的多个技术分歧,基本完成了整个项目的技术架构约定。此外,在前端界面重构期间,我持续提供代码review支持 | + +## 对团队工作的建议 + +1. **前后端应当密切对接接口**:前后端团队应该定期举行技术对接会议,及时沟通接口变更和数据格式调整,避免因为信息不同步导致的开发返工,确保前后端对接的稳定性和可靠性。最佳做法是前端每做出几个页面就和后端沟通对接。 + + +## 小结 + +1. **重构代码**:通过系统性的代码整理,不仅让项目的可维护性得到了质的提升,也让我对整个系统架构有了更深入的理解。更重要的是,规范化的代码让团队协作变得更加高效,成员也能更快地理解和参与到项目开发中来。 + +1. **沟通后端**:在团队项目中,技术能力固然重要,但沟通协调能力同样不可或缺。与后端团队的深度技术交流是本周的一大收获。通过面对面的技术讨论,我们解决了许多悬而未决的技术细节取向。 diff --git a/doc/process/weekly/week-10/members/jinzhibo-weekly-plan-10.md b/doc/process/weekly/week-10/members/jinzhibo-weekly-plan-10.md new file mode 100644 index 0000000..7c91c44 --- /dev/null +++ b/doc/process/weekly/week-10/members/jinzhibo-weekly-plan-10.md @@ -0,0 +1,33 @@ +# 个人周计划-第10周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-11-24 + +**结束时间:** 2025-11-30 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端重构页面原型** | 杨逸轩,胡帆 | 在11.24-11.26期间,我的核心任务是完成前端原型重构。我将集中精力**深度清理冗余代码与优化页面元素**,并严格**依据设计稿PDF还原页面结构与布局**,确保所有功能元素齐全,还原度高。为提升效率,此阶段将**暂不进行精细的美术优化**,优先交付一个结构清晰、功能完整的高质量原型代码。**CSS样式和组件美化将暂不处理**,留待下周与胡帆协同完成。 | +| 2 | **两次API联通测试** | 杨逸轩,梁浩,杨博文 | **11.27-11.28(本地测试)**:提交原型给杨逸轩后,立即在本地开发环境中启动首轮全面的API连接测试。我将逐一验证所有前端页面与后端接口的数据交互,重点测试数据获取、提交、错误处理等关键流程,确保功能准确性和稳定性,并记录所有问题。 **11.29(云端测试)**:在杨逸轩完成云端部署后,立即与他协作在云服务器环境中进行完全相同的第二轮API测试。此轮重点在于对比本地与云端的性能差异,排查环境配置导致的问题,最终确保系统在生产环境中的稳定运行。 | + + + +小结 +-- + +**1. 前端重构,化繁为简:**本周核心是完成前端原型重构。尽量**手搓代码而非依赖ai工具**,从零构建页面结构,力求**严格还原设计稿布局**,将原项目的冗余代码化繁为简,交付一个结构清晰、无冗余依赖、便于后续开发的高质量基础原型。 + +**2. API两次测试**:为保障系统可靠性,我将严格执行**本地与云端的两轮全链路API测试**。通过周密验证前后端所有关键接口的数据交互,确保系统在最终生产环境中的稳定运行,为部署上线打下坚实基础。 \ No newline at end of file diff --git a/doc/process/weekly/week-10/members/jinzhibo-weekly-summary-09.md b/doc/process/weekly/week-10/members/jinzhibo-weekly-summary-09.md new file mode 100644 index 0000000..2ea685d --- /dev/null +++ b/doc/process/weekly/week-10/members/jinzhibo-weekly-summary-09.md @@ -0,0 +1,36 @@ +个人周总结-第9周 +========= + +姓名和起止时间 +------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-11-17 + +结束时间: 2025-11-23 +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------- | -------------------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端界面重构** | 部分完成 | **已启动前端界面重构工作**,依据胡帆提供的alpha版本页面稿,初步完成了主页面及部分子页面的功能实现,并对原项目的部分组件与排版模式进行了迁移。目前版本在界面精细度上尚有提升空间,主要体现为:部分排版偏重竖向布局,与网页常规模式适配性有待优化;存在部分冗余UI图标及未实际启用的功能入口;现阶段较多采用预制演示样例,建议后续转为直接对接后端接口;部分组件(如弹窗、书本等)的显示效果仍需调整。建议下一阶段优先聚焦于完整还原胡帆提供的原始设计稿,取消额外功能的引入,以提升整体还原度与稳定性。 | +| 2 | **前端适配API收尾** | 基本完成 | **已完成主要API的基础适配工作**,本地测试环境下已成功连接后端,实现了注册登录、图片上传及结果下载等核心功能。目前仍有个别环节需进一步完善,例如在SSH连接中断时的自动重连机制,以及部分辅助功能的配合优化等。 | + +对团队工作的建议 + +1. **加强前后端密切协作对接**:作为前端负责人,需要进一步提升主动沟通意识,与后端团队保持密切协作。建议建立定期的交流机制,如打卡式的定期会议,以促进信息互通、及时解决问题,并有效推动项目进展。 + +小结 +-- + +1. **前端功能重构与界面优化**:完成主页面及部分子页面的前端重构与组件迁移,初步实现了核心交互流程;针对当前版本存在的问题,已明确后续将严格参照设计稿进行精细化调整,并优先推进与后端接口的直接对接,以提升界面还原度与用户体验。 + +2. **API 连通与功能联调进展**:已完成注册登录、文件上传及结果下载等基础功能的前后端对接,并在本地环境验证通过;下一步将重点完善连接稳定性机制(如SSH断线重连)及部分辅助功能的接口配合,进一步强化功能闭环与系统鲁棒性。 + +3. **需加快进度:**本周虽由于考试等学业压力,开发过程有所懈怠,任务完成度还是太低,初版验收在即,后端已经基本完成任务,前端应当加快完成分内工作,不拖团队后退 + + +--- diff --git a/doc/process/weekly/week-10/members/lianghao-weekly-plan-10.md b/doc/process/weekly/week-10/members/lianghao-weekly-plan-10.md new file mode 100644 index 0000000..bf3a2b5 --- /dev/null +++ b/doc/process/weekly/week-10/members/lianghao-weekly-plan-10.md @@ -0,0 +1,31 @@ +# 个人周计划-第10周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-24 +**结束时间:** 2025-11-30 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ------------------------- | -------------- | --------- | +| 1 | 新增"数据源选择预览"功能 | 杨博文、金郅博 | 11月29日至30日,**主导开发"数据源选择预览"功能的后端接口**,提升用户体验的便利性。该功能允许用户在选择数据集之前预览数据样本,帮助用户做出更好的决策。需要与金郅博协作确定前端的展示需求,设计合理的数据传输格式,实现高效的图片预览接口,确保预览加载速度和用户体验。| +| 2 | 对接"生成报告"功能接口 | 胡帆 | 11月24日至26日,与胡帆进行充分的技术沟通,**主导为"生成报告"功能提供后端接口支持**。明确报告生成的调用方法、数据传递格式、图片存储路径等技术细节。负责实现报告文件的上传接收、存储管理、下载接口等关键功能。确保静态指标分析报告和动态热力图可视化报告能够顺利生成并保存在后端服务器中,供用户下载和查看。| +| 3 | 协助后端适配新版数据库 | 杨博文 | 11月24日至26日,**协助杨博文**完成新版数据库的适配工作。主要任务包括:协助修改数据访问层代码以匹配新的表结构和字段定义,配合更新ORM模型映射关系,协同调整相关业务逻辑。| +| 4 | 协助完善用户权限管理功能 | 杨博文 | 11月27日至28日,完善用户操作管理和管理员操作功能的对齐工作。具体包括:协助实现不同角色(普通用户、管理员)的权限分离逻辑,配合完善数据访问控制机制,协同优化用户操作流程和管理员管理界面的后端支持。| +| 5 | 响应前端API测试反馈 | 金郅博、杨逸轩 | 11月27日至29日,在金郅博进行前端API测试(本地+云端)期间,**及时响应测试过程中发现的问题**。根据前端反馈快速调整API实现,修复可能出现的bug,优化接口性能,完善异常处理逻辑。与杨逸轩协作确保云端部署后的接口稳定性,保证前后端通信顺畅。| +| 6 | 后端突发问题处理与补缺| 杨博文、胡帆 | 本周全程保持对后端系统的**监控和维护**,随时应对开发过程中可能出现的各种意外技术问题。包括但不限于:服务器稳定性问题、算法调用异常、数据存储错误等。与杨博文、胡帆协作,确保后端系统在本周结束时达到**功能完整、运行独立且技术架构健壮**的标准。| + +## 小结 + +1. **核心功能开发为重:** 本周的核心任务是**主导开发"数据源选择预览"和"生成报告"接口**两大新功能,这两个功能将显著提升系统的用户体验和专业性。作为主要负责人,需要确保这两个功能按时高质量完成。 + +2. **协作支援并行推进:** 在完成核心任务的同时,协助杨博文完成数据库适配和权限管理功能的开发。通过明确的分工协作,提升团队整体开发效率。 + +3. **前后端协同加强:** 针对上周前后端对接频率不足的问题,本周将**更加主动地响应前端API测试反馈**,保持与前端团队的密切沟通,快速解决对接过程中的技术问题,推动系统整体联调顺利进行。 + +4. **质量保障为重:** 本周结束后,后端系统应当达到功能完整、运行独立且技术架构健壮的标准。通过持续的问题监控和及时处理,确保系统质量符合alpha版本的交付要求。 + +5. **协同开发推进:** 本周后端团队实现了**三台GPU服务器的协同开发模式**(梁浩、胡帆、杨博文各负责一台),这将显著提升开发效率和并行处理能力,为项目按期完成提供有力保障。 diff --git a/doc/process/weekly/week-10/members/lianghao-weekly-summary-09.md b/doc/process/weekly/week-10/members/lianghao-weekly-summary-09.md new file mode 100644 index 0000000..89ee437 --- /dev/null +++ b/doc/process/weekly/week-10/members/lianghao-weekly-summary-09.md @@ -0,0 +1,33 @@ +# 个人周总结-第9周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-17 +**结束时间:** 2025-11-23 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | ------------------------- | -------- | --------- | +| 1 | 后端系统云端部署(核心任务) | 已完成 | 成功配置autodl自定义服务,实现后端服务的稳定部署。采用自定义服务方案而非直接暴露公网端口,提高了系统安全性。| +| 2 | 响应前端API适配需求(核心任务) | 部分完成 | 前端API适配工作推进缓慢,缺乏前端的有效反馈。目前后端接口保持稳定运行状态,已做好随时响应前端需求的准备。后续需要加强与前端团队的沟通,主动获取对接过程中的问题和改进意见。| +| 3 | 集成模型评估算法(弹性任务,不强求) | 未完成 | 由于本周是**期中考试周**,学业压力较大,模型评估算法的集成工作未能推进。计划在考试周结束后、继续开展此项工作,为系统增加量化评估功能。| +| 4 | 后端代码优化与完善(弹性任务,不强求) | 部分完成 | 在学业压力下仍完成了**部分后端优化工作**。主要成果包括:**修改了部分配置和微调功能的文件清理逻辑**,优化了临时文件和生成文件的管理机制,避免磁盘空间浪费;**完全厘清了系统业务逻辑**,梳理了各模块间的调用关系和数据流转过程;**修改并完善了数据库设计**,输出了一版完成度较高的数据库Schema,优化了表结构和字段定义,为后续功能扩展奠定基础。其他代码规范化工作(如统一命名规范、完善注释文档等)因时间限制未能全面展开,后续将持续推进。| + +## 对团队工作的建议 + +1. **加强前后端沟通反馈机制:** 建议建立更主动的前后端沟通机制。前端在API对接过程中应及时反馈遇到的问题、接口使用体验和改进建议,后端也应主动询问对接进展和可能的优化点,避免因缺乏反馈导致工作停滞。 +2. **优化autodl自定义服务配置文档:** 建议整理一份autodl自定义服务的配置文档和使用说明,方便团队成员理解部署架构,也为后续可能的服务器迁移或扩展提供参考。 +3. **合理安排考试周与开发节奏:** 考试周期间团队整体开发进度放缓是正常的,建议在考试结束后集中安排一次技术复盘和任务推进会议,快速恢复开发节奏。 + +## 小结 + +1. **部署方案成功落地:** 本周最大的成果是确定并成功采用**autodl自定义服务**方案完成后端部署,解决了上周端口访问限制的技术难题。这一方案不仅实现了前后端的稳定通信,还避免了直接向公网开放后端接口带来的安全风险,是一个兼顾可用性和安全性的技术选择。 + +2. **前端反馈机制待完善:** 前端API适配工作因**缺乏有效反馈**进展缓慢。虽然后端接口保持稳定,但没有收到前端的测试反馈和改进建议,导致优化工作无法针对性展开。这暴露出团队在跨模块协作沟通方面还有提升空间。 + +3. **考试周影响符合预期:** 由于期中考试压力,模型评估算法集成等弹性任务未能推进,这在计划制定时已有预期。但即便在考试周,仍完成了微调文件清理逻辑的优化,体现了对代码质量的持续关注。 + +4. **系统架构更加清晰:** 通过**完全厘清业务逻辑**,系统的模块划分和调用关系更加明确,这为后续的功能扩展和维护工作提供了清晰的技术蓝图。同时,通过与杨博文和胡帆讨论,团队输出了**完成度较高的数据库设计方案**,优化了表结构和字段定义,为系统的数据层建设奠定了坚实基础。 diff --git a/doc/process/weekly/week-10/members/yangbowen-weekly-plan-10.md b/doc/process/weekly/week-10/members/yangbowen-weekly-plan-10.md new file mode 100644 index 0000000..c3bec06 --- /dev/null +++ b/doc/process/weekly/week-10/members/yangbowen-weekly-plan-10.md @@ -0,0 +1,20 @@ +# 个人周计划-第10周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-24 +**结束时间:** 2025-11-30 + +## 本周任务计划安排 +| 序号 | 计划内容 | 协作人 | 情况说明 | +|------|------------------------|------------|----------| +| 1 | 后端修补与完善 | 梁浩 | 11.24–11.26:完成新版数据库结构适配,确保数据访问层兼容性与稳定性;
11.27–11.28:重点对齐用户操作与管理员操作逻辑,统一接口行为规范;
11.29–11.30:开发“数据源选择预览”功能的请求响应模块,提升交互体验;
全程需保持对突发技术问题的快速响应能力,保障后端系统达到功能完整、独立运行、架构健壮的交付标准。 | +| 2 | 更新UML图 | 胡帆 | 基于当前功能实现进展,全面更新用例图、活动图、时序图等核心设计文档;
重点核查与后端逻辑、API 接口、数据库变更的一致性;
11.30前完成定稿,作为项目最终技术规范冻结版本,后续迭代以此为准。 | +| 3 | 文书协调与进度同步 | 金郅博、杨逸轩、胡帆 | 每日跟踪前后端及模型组关键节点(如前端重构交付、云端部署完成、报告功能联调);
及时整理技术要点与风险项,支撑会议纪要、周总结等文档产出;
在“生成报告”等跨组任务中,主动与胡帆、梁浩对齐接口约定与数据格式,减少协作摩擦。 | + +## 小结 +1. **后端稳健交付**:本周后端工作以“稳”为核心,既要完成计划内功能迭代,更要兜底各类突发补缺,确保系统达到可独立支撑上层应用的成熟度。 +2. **文档规范同步**:UML 图定稿是本周文书工作的技术锚点,需以开发者视角确保图示精准反映实现逻辑,为后续维护与交接提供可靠依据。 +3. **协作枢纽作用**:作为后端与文书双重角色,需在技术实现与信息同步间高效切换,成为团队进度透明化与风险前置化的重要节点。 \ No newline at end of file diff --git a/doc/process/weekly/week-10/members/yangbowen-weekly-summary-09.md b/doc/process/weekly/week-10/members/yangbowen-weekly-summary-09.md new file mode 100644 index 0000000..6cbb4e8 --- /dev/null +++ b/doc/process/weekly/week-10/members/yangbowen-weekly-summary-09.md @@ -0,0 +1,28 @@ +# 个人周总结-第9周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-17 +**结束时间:** 2025-11-23 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | ------------------------- |-----|-----------------------------------------------------------| +| 1 | 文档体系更新与维护 | 已完成 | 完成了数据库设计文档的重新编写,绘制了最新版本的ER图。之后数据库和ER图不会有大的变动了。 | | +| 2 | 协作支持后端开发 | 部分完成 | 听梁浩讲解了其后端架构,明确了下周后端的协作方式。具体的API对接由梁浩直接和前端对接,本人并未起到实质性的作用。 | +| 3 | 需求与设计复核 | 已完成 | 更新了需求规格说明书,确保其符合刘老师和邹博士提出的需求。 | + +## 对团队工作的建议 + +1. **加强前后端沟通:** 前后端应积极沟通,项目负责人应及时督促。 +2. **前端工作提速:** 前端向后端的对接速度应当提速,尽快完成API设计工作 + +## 小结 + +1. **数据库完整设计:** 本周最大的成果是按照更新后的需求,完整的设计了数据库结构,绘制了ER图,并编写了数据库设计文档。这为后续的开发工作提供了坚实的数据基础,确保数据存储和访问的高效性与一致性。 + +2. **业务逻辑理清:** 通过与梁浩、胡帆多次沟通讨论,完全厘清业务逻辑,系统的模块划分和调用关系更加明确,这为后续的功能扩展和维护工作提供了清晰的技术蓝图。 + diff --git a/doc/process/weekly/week-10/members/yangyx-weekly-plan-10.md b/doc/process/weekly/week-10/members/yangyx-weekly-plan-10.md new file mode 100644 index 0000000..bdaa9d9 --- /dev/null +++ b/doc/process/weekly/week-10/members/yangyx-weekly-plan-10.md @@ -0,0 +1,33 @@ +个人周计划-第10周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-11-24 +**结束时间:** 2025-11-30 + +本周任务计划安排 +-------- + +| **序号** | **计划内容** | **协作人** | **情况说明** | +| ------ | ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------ | +| 1 | **前端代码云端集成与部署维护** | 金郅博, 梁浩 | **11月24日至26日**:接收金郅博重构和清理后的前端代码,将其集成到云服务器上已配置的 Nginx 环境中,确保新版本前端能够稳定运行。同时负责部署后环境的监控和维护,处理可能出现的Nginx配置、路由或静态资源加载问题。 | +| 2 | **第一轮核心 API 联调测试** | 金郅博, 梁浩 | **11月24日至26日**:与金郅博、梁浩协作,进行第一轮联调。重点测试**用户管理(注册/登录)**和**核心加噪功能(图片上传、算法调用、加噪结果返回)**的全流程。负责记录、报告和追踪所有前端发现的接口 Bug。 | +| 3 | **第二轮报告 API 联调测试** | 金郅博, 胡帆 | **11月27日至29日**:胡帆完成“生成报告”功能后,立即参与第二轮联调。重点测试**微调模型训练、报告指标计算(FID/SSIM等)以及动态三维可视化数据**的接口,确保前端能够正确接收并渲染报告数据。 | +| 4 | **Alpha 版本功能验收与 Bug 修复** | 全体成员 | **11月27日至29日**:作为团队一员,参与 Alpha 版本的全员功能验收和回归测试。重点关注**跨设备兼容性、前端性能、UI 交互逻辑**,及时修复由前端引起或需要前端协作解决的所有 Bug,确保系统达到交付标准。 | +| 5 | **设计文档最终定稿支持** | 杨博文 | **11月29日至30日**:协助杨博文对更新后的 UML 图(尤其是E-R图和时序图)进行数据流向和逻辑的最终确认,确保文档与 Alpha 版本的最终实现完全一致,支持文档定稿。 | + +小结 +-- + +1. **核心目标:** 本周是 Alpha 版本交付前的最后冲刺周,核心目标是将**重构后的前端代码集成到云端环境**,并与后端进行**全面、密集的两轮 API 联调测试**,以确保所有功能在实际部署环境中稳定运行。 + +2. **两轮联调保障:** 计划安排了两轮关键联调,首轮(11/24-11/26)聚焦于**用户核心业务流程**(注册/登录、图片加噪),次轮(11/27-11/29)聚焦于**高阶功能**(报告生成、三维可视化数据),以分阶段、高效率地完成前后端集成。 + +3. **交付支持:** 在联调完成后,将立即投入 Alpha 版本的**功能验收**和**关键 Bug 修复**工作,特别是关注跨设备兼容性和前端性能。 + +4. **文档收尾:** 最后协助杨博文完成《需求规格说明书 V2.0》的最终设计图定稿工作,确保技术实现与文档描述保持一致。 diff --git a/doc/process/weekly/week-10/members/yangyx-weekly-summary-09.md b/doc/process/weekly/week-10/members/yangyx-weekly-summary-09.md new file mode 100644 index 0000000..4d572b2 --- /dev/null +++ b/doc/process/weekly/week-10/members/yangyx-weekly-summary-09.md @@ -0,0 +1,32 @@ +个人周总结-第9周 +========= + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-11-17 + +**结束时间:** 2025-11-23 + +## 本周任务完成情况 + +| **序号** | **总结内容** | **是否完成** | **成果或说明** | +| ----------------------------- | ------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- | +| 1 | **攻克后端端口限制**(高优先级) | **完成** | **关键突破:** 运用前端部署预研经验,与梁浩协作,通过**Nginx反向代理和SSH隧道组合方案**,彻底解决了autodl云服务器的端口无法对外访问的阻塞问题。成功实现了前后端服务在云环境下的稳定通信,为后续联调奠定了基础。 | +| 2 | **前端 Alpha 版本云端部署** | **完成** | **成果落地:** 基于上周确定的方案,成功将当前的前端代码(包含新开发的微调生图页面和可视化组件)进行打包,并**正式完成前端 Alpha 版本在云服务器上的部署和 Nginx 配置**。目前可通过外网 IP 稳定访问,已交付可访问的 Alpha 页面。 | +| 3 | **设计文档最终版更新支持** | **基本完成** | **文档同步:** 协助杨博文和梁浩,根据系统最终确定的用户管理逻辑和数据结构,完成了《需求规格说明书 V2.0》所需的**数据库 E-R 图修订和 UML 类图**的校对。当前版本文档已与 Alpha 版本开发进度保持高度一致。 | +| 4 | **API 联调问题排查与支持** | **进行中** | **问题排查:** 在端口问题解决后,立即投入联调支持。主要负责排查和解决了前端在 Nginx 反代环境下出现的 **CORS 跨域问题**,确保了图片上传/下载和加噪请求的顺利进行。部分接口(如三维可视化数据)联调仍在推进中。 | + +小结 +-- + +1. **解除阻塞,实现云端闭环:** 本周成功攻克了云服务器端口访问限制这一核心技术障碍,并立即将前端 Alpha 版本部署到位,**首次实现了外网可访问的前后端服务闭环**,这是项目从本地联调迈向正式演示的关键一步。 + +2. **前端成果转化为产物:** 上周的部署预研工作在本周得到高效转化,前端已成为一个**可被外网访问的、具备基础用户交互和新功能页面的 Web 应用**。 + +3. **开发与文档同步:** 及时配合文档组,完成了关键设计图的最终修订,保障了《需求规格说明书 V2.0》能够反映最新的系统架构和功能需求。 + +4. **联调支持:** 快速定位并解决了部署环境带来的**跨域**等新问题,确保了关键业务流程(如图片上传、加噪请求)能够稳定运行。 diff --git a/doc/process/weekly/week-11/group/meeting-minutes-11.md b/doc/process/weekly/week-11/group/meeting-minutes-11.md new file mode 100644 index 0000000..260fd2e --- /dev/null +++ b/doc/process/weekly/week-11/group/meeting-minutes-11.md @@ -0,0 +1,48 @@ +# 小组会议纪要-第11周 + +## 会议记录概要 + +**团队名称:** 2班-深度思考 +**指导老师:** 刘琴 +**主 持 人:** 胡帆 +**记录人员:** 金郅博 +**会议主题:** 第十周情况总结、第十一周开发任务部署、开发问题讨论 +**会议地点:** 中楼211 +**会议时间:** 2025-12-1 11:40-12:20 +**纪录时间:** 2025-12-1 20:00 +**参与人员:** 胡帆、梁浩、杨博文、金郅博、杨逸轩 + +--- +## 会议内容 + +### 一、本周核心任务聚焦 + +经团队内部讨论并结合第十周实际完成情况,本周聚焦以下三大方向协同推进: + +1. **前后端API对接全面攻坚**:后端基于前端原型完善并交付API接口,前端同步进行接口适配与集成测试,确保Alpha版本功能完整落地。 +2. **代码规范性修复**:全面提升代码质量和可维护性,要求遵循Google代码规范。 +3. **前端样式扩展与视觉优化**:在功能实现基础上,系统推进前端界面的样式美化与体验提升工作 + +--- + +### 二、任务分解与执行安排 + +| 序号 | 任务内容 | 负责人 | 关键时间节点 | 主要职责说明 | +|------|------------------------------|------------------|--------------------|--------------| +| 1 | 全面规范化 git 协作 | 全体成员 | 12.1起执行 | 建立分支管理规范,执行每日代码同步机制,确保全体成员经过“先拉取到本地开发,后提交PR合并到develop”的工作流,减少冲突与版本混乱。 | +| 2 | 前后端API对接 | 梁浩、杨逸轩、杨博文、胡帆 | 12.4后端全面完成 | 梁浩(12.1-12.4):完成后端收尾,调整并交付API与接口文档;
杨逸轩(12.4-12.7):主导前端在云端环境下的API适配与集成测试
胡帆和杨博文分别协助前后端在API对接过程中的技术沟通 | +| 3 | 工作任务变更 | 杨逸轩、金郅博、胡帆 | 12.1起执行 | 杨逸轩转为前端核心开发,负责API适配与前后端联调;
金郅博负责文档管理与辅助前端测试优化;
胡帆继续负责模型与算法优化,同时与杨逸轩协作推进前端样式美化。
| +| 4 | 代码规范性修复 | 全体成员 | 12.1起执行 | 后端(杨博文主导)、前端(杨逸轩主导)、模型(胡帆主导)分别开展代码规范整理,统一命名、注释与配置管理,符合Google规范 | +| 5 | alpha全面整合 | 全体成员 | 12.7计划完成 | 本周核心目标:在云端环境中完成端到端功能验证,确保alpha版本的用户管理、图像上传、模型调用、结果展示等所有核心模块**完整、正确、稳定运行**。
| +| 6 | 前端样式扩展 | 杨逸轩、胡帆、金郅博 | 12.1-12.7 | 杨逸轩负责响应式与交互优化,胡帆指导视觉与体验流程,金郅博协助测试与细节调优。 | + + +--- + +### 三、上周总结+本周待改进问题 + +1. **提升API设计与对接效率**:加速API开发,后端要严格按页面按钮功能设计API,并提供对应关键信息的接口文档,便于前端理解,提高开发效率。 +2. **加强前后端接口协作**:提升对接频率,加强沟通人力,避免理解偏差导致的进度延误与返工重做。 +3. **落实开发规范化**:严格执行Git提交规范,统一遵循Google代码规范,提升代码质量与协作效率。 + +--- diff --git a/doc/process/weekly/week-11/group/weekly-plan-11.md b/doc/process/weekly/week-11/group/weekly-plan-11.md new file mode 100644 index 0000000..5e08995 --- /dev/null +++ b/doc/process/weekly/week-11/group/weekly-plan-11.md @@ -0,0 +1,26 @@ +# 小组周计划-第11周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-01 +**结束时间:** 2025-12-06 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 全面规范化 git 协作 | 全体成员 | 针对前期协作中出现的分支管理混乱问题,本周将**全面严格规范化git协作流程**。所有成员必须严格遵循工作流:先从develop分支拉取最新代码到个人分支,在个人分支上完成开发和测试,确认无误后再提交PR合并到develop分支。同时建立每日同步机制,避免代码冲突,确保项目更新的一致性和实时性,为后续的快速迭代打下坚实的协作基础。 | +| 2 | 前后端API对接 | 梁浩、杨逸轩、杨博文、胡帆 | 本周核心任务,分三阶段推进:**阶段一(12.1-12.2):**梁浩主导完成后端收尾工作,确保所有核心API全部暴露并提供完整的接口文档,包括用户认证、图像处理、模型训练、结果下载等关键接口。杨逸轩和胡帆及时跟进,深入了解API规范和调用方式。**阶段二(12.3-12.5):**杨逸轩主导前端API适配,在上周构建的前端原型基础上,完成所有接口的集成测试,直接在云端环境进行实战验证。**阶段三(12.6-12.7):**预留缓冲时间,处理联调中发现的问题,确保前后端通信稳定。杨博文和胡帆分别负责后端和前端的技术沟通桥梁作用。 | +| 3 | 工作任务变更 | 杨逸轩、金郅博、胡帆 | 基于团队成员技能特长和项目需要,进行战略性角色调整:**杨逸轩**正式转为前端核心开发者,发挥其在前后端联调和云部署方面的丰富经验;**金郅博**转为文档管理和部署测试专员,负责项目文档维护、测试用例编写和系统部署验证,同时为前端工作提供辅助支持;**胡帆**继续负责模型算法优化的同时,与杨逸轩协作推进前端界面美化和用户体验提升。 | +| 4 | 代码规范性修复 | 全体成员 | 全面 **提升代码质量和可维护性**,各组分工明确:后端组由杨博文主导,前端组由杨逸轩主导,模型组由胡帆主导,规范算法函数命名、添加详细的算法流程注释、优化参数配置管理。代码修改需遵循Google代码规范。 | +| 5 | alpha全面整合 | 全体成员 | **对照alpha迭代开发计划**,进行全面的功能整合与验证。后端组确保用户管理、图像上传、模型调用、结果存储等核心服务模块稳定运行;前端组完成用户界面、操作流程、数据展示的完整闭环;模型组确保算法调用接口、参数配置、结果输出的标准化。通过端到端测试验证整个系统的功能完整性。 | +| 6 | 前端样式扩展 | 杨逸轩、胡帆、金郅博 | 在功能实现的基础上,**全面提升用户界面** 的美观性和易用性。杨逸轩负责响应式布局优化和交互逻辑完善,胡帆专注于视觉设计指导和用户体验流程优化,金郅博协助进行页面测试和细节调优。包括:统一的色彩方案和字体规范、流畅的页面转场动画、直观的操作提示和反馈等。目标是打造专业、现代、用户友好的界面体验。 | + +## 小结 + +1. **alpha关键节点攻坚:** 本周是项目从alpha原型向完整可用系统转化的关键节点。前后端API全面对接,实现真正意义上的前后端协同工作。 + +2. **团队角色优化:** 基于前期工作经验和个人技术特长,我们对团队成员角色进行了战略性调整。杨逸轩转向前端核心开发,金郅博专注文档和测试,胡帆在模型优化基础上支持前端美化。 + +3. **规范化建设:** 全面规范化git协作流程和代码质量标准,建立更加专业和高效的开发环境。这不仅能减少协作中的摩擦和错误,更能确保项目代码的可维护性和扩展性,为项目的长期健康发展奠定坚实基础。 diff --git a/doc/process/weekly/week-11/group/weekly-summary-10.md b/doc/process/weekly/week-11/group/weekly-summary-10.md new file mode 100644 index 0000000..2600899 --- /dev/null +++ b/doc/process/weekly/week-11/group/weekly-summary-10.md @@ -0,0 +1,29 @@ +# 小组周总结-第10周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-24 +**结束时间:** 2025-12-01 + +## 本周任务完成情况 + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 前端重构页面原型 | 完成 | 金郅博与胡帆按计划于11.24-11.26期间成功 **完成了前端页面原型的重构** 工作。金郅博主要负责源码编写,严格依据设计稿还原了页面结构与布局,并编写JavaScript事件处理逻辑;胡帆作为技术监制,负责整理项目目录、清理冗余文件,确保设计理念与系统架构的统一。最终交付了一个结构清晰、功能稳定的alpha版本前端原型,为后续的云端部署和API对接打下了坚实基础。这次协作也让团队认识到前端代码需要人工深度介入优化,不能完全依赖大模型生成。 | +| 2 | 前端两次API测试 | 未完成 | 由于后端团队本周的 **API开发进度未能如期完成**,导致前端无法在真实环境下进行全面的API测试和对接。金郅博与杨逸轩仅完成了 **用户管理(注册/登录/登出)**等小部分基础功能API的联调测试,核心的图片上传、加噪功能等关键API联调因Alpha版本功能未开发完毕而受阻。尽管如此,团队积极采取了MOCK对接方式,提前验证了接口设计和数据流,并明确了前后端对接及测试的具体方法,为下周后端接口到位后的快速联调做好了充分准备。期待下周能够迅速推进并完成这项关键工作,确保前后端无缝衔接。 | +| 3 | 前端重新上云 | 完成 | 杨逸轩成功完成了前端代码的云端集成与部署工作。在11.24-11.26期间,他深入研究了前后端连接架构和通信方式,实现了各种异常情况的错误处理机制,包括网络断线重连、API超时处理、数据格式错误处理等关键功能。11.26-11.28期间,将金郅博重构后的 **新版前端系统完整部署** 到华为云服务器的Nginx环境中,完成了环境配置、依赖库安装、安全设置等各个环节的工作,并进行了全面的功能测试。确保了新版前端在外网的可访问性和稳定性,为Alpha版本的整体交付提供了可靠的运行环境保障。 | +| 4 | 后端修补与完善 | 部分完成 | 梁浩和杨博文在后端功能完善上取得了重要进展,但整体进度略有延迟。**已完成工作:**梁浩完成了报告生成相关API的开发,实现了评估任务创建、列表、持久化存储与下载接口;完成了ORM模型、服务层与控制器对新版数据库结构的全面适配,成功跑通初始化脚本;完成了用户权限管理的基础校验逻辑。杨博文完成了部分后端修补工作,并书写了四个接口文档。
**未完成工作:**由于实际工作量超出预期,且团队协作中出现沟通不及时导致任务重复的情况,数据库改造的系统级回归测试尚未安排,新增的"数据源选择预览"功能尚未进入开发阶段。后端团队已明确下周工作重点,将优先完成剩余功能并进行全面测试。 | +| 5 | 增加"生成报告"功能 | 完成 | 胡帆成功在模型评估阶段实现了"生成报告"功能。通过与后端团队杨博文和梁浩的深入技术沟通,明确了接口调用、数据格式和存储方案。目前已能稳定生成 **静态指标分析报告**和 **动态热力图可视化报告**两种图片格式的报告,并成功存储在后端服务器中,大大提升了系统的数据展示能力和专业性。这一功能的实现不仅增强了系统的用户价值,也为后续的功能扩展提供了技术参考。 | +| 6 | 尝试跑beta版本的算法 | 完成 | 胡帆完成了beta版本算法的 **前期探索和技术验证工作**。在多种不同风格的数据集上进行了详尽测试,深入分析并验证了算法在各种数据环境下的性能表现和适用性。这项前瞻性的工作为下个阶段beta版本的开发积累了宝贵的技术经验和数据支持,确保了团队能够更加从容地应对后续的算法优化和功能扩展需求。 | +| 7 | 更新UML图 | 完成 | 杨博文完成了 **系统设计文档的全面更新** 工作,包括活动图和时序图的更新。同时,杨逸轩协助完成了《需求规格说明书V2.0》所需的UML图(E-R图和时序图)的最终核对和逻辑确认工作,确保设计文档与当前的系统架构完全一致。由于项目采用面向过程的开发方式,因此不涉及类图的更新。更新后的UML文档将作为项目的最终技术规范进行定稿,为团队协作和系统维护提供了重要的规范依据。 | + +## 小结 + +1. **对接形式不容乐观,暴露协作短板:** 本周最突出的问题是前后端API对接工作严重受阻。由于后端开发进度未能如期完成,核心功能API未能及时暴露,导致前端仅完成了登录注册等基础流程的联调,图片上传、加噪、报告生成等关键功能的对接工作几乎陷入停滞。这一问题再次凸显了前后端接口密切对接和进度同步的重要性。团队在本周深刻认识到,必须建立更频繁的接口联调会议机制,确保双方进度透明可视,提前暴露潜在问题。同时,部分成员反馈在协作中存在沟通不及时、使用落后版本测试环境等问题,导致出现了任务重复和测试结果失真的情况。这些经验教训将促使我们在下周全面强化沟通机制和协作规范,避免类似问题再次发生。 + +2. **前端重构成果显著,部署稳定可靠:** 尽管API对接受阻,但前端团队在页面重构和云端部署方面取得了令人满意的成绩。金郅博与胡帆的高效协作,完成了从源码编写到架构整理的完整重构流程,交付了一个结构清晰、功能稳定的alpha版本前端原型。杨逸轩成功将新版前端部署到华为云服务器,并实现了完善的错误处理机制,确保了系统在生产环境中的稳定运行。 + +3. **后端功能推进,但需加快节奏:** 后端团队在新数据库适配、报告生成API开发、用户权限管理等方面取得了重要进展,特别是梁浩在数据库迁移和报告功能实现上投入了大量精力。然而,由于工作量错估和协作沟通不畅,部分计划任务如"数据源选择预览"功能和系统级回归测试未能完成。 + +4. **文档规范性全面提升,技术积累初见成效:** 本周在文档规范化方面取得了显著进展。杨博文和杨逸轩协作完成了UML设计文档的全面更新和定稿,确保了技术规范与实际开发成果的高度一致。胡帆成功实现的"生成报告"功能和beta版本算法的前期探索,为项目积累了宝贵的技术经验。这些工作虽然不如功能开发那样直观可见,但对项目的长期健康发展和团队能力提升具有重要意义。同时,多位成员在周总结中强调了Git规范使用、及时沟通、积极思考等协作原则,说明团队的规范意识和专业素养正在不断提升。 diff --git a/doc/process/weekly/week-11/members/hufan-weekly-plan-11.md b/doc/process/weekly/week-11/members/hufan-weekly-plan-11.md new file mode 100644 index 0000000..f3387a4 --- /dev/null +++ b/doc/process/weekly/week-11/members/hufan-weekly-plan-11.md @@ -0,0 +1,23 @@ +# 个人周计划-第11周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-01 +**结束时间:** 2025-12-06 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 全面规范化 Git 协作 | 全体成员 | 作为PM,本周我将严格督促团队遵守Git协作流程,确保每次开发都从`develop`分支拉取最新代码到个人分支,并在个人分支上完成开发和测试。完成后,将通过PR合并回`develop`,并积极参与代码审查。此举旨在提升个人开发效率,并维护项目代码库的整洁与一致性,为团队协作打下坚实基础。 | +| 2 | 前后端 API 对接与沟通协调 | 梁浩、杨逸轩、杨博文 | 我将全程参与前后端API的对接工作。在12月1日-12月2日,我将与杨逸轩一起,及时跟进梁浩后端API的收尾进度,深入理解所有暴露的API接口规范。在12月6日-12月7日的冗余时间里,我将作为前端方向的技术沟通桥梁,协助杨逸轩和杨博文解决联调中可能出现的问题,确保前后端通信的稳定可靠。 | +| 3 | 模型算法优化与代码规范化 | 本人 | 作为模型组的负责人,我将继续深入进行核心模型算法的优化工作,确保算法的效率和准确性。同时,我将主导模型代码的规范性修复,包括统一算法函数命名、为复杂的算法流程添加详细注释、以及优化模型参数的配置和管理,确保模型代码完全符合Google代码规范,提升可读性和可维护性。 | +| 4 | Alpha 版本模型功能整合与前端体验优化 | 杨逸轩、金郅博 | 在Alpha版本全面整合阶段,我将确保模型组的功能模块稳定运行,并与前后端系统无缝集成。此外,根据新的角色分工,我将与杨逸轩、金郅博紧密协作,专注于前端界面的视觉设计指导和用户体验流程优化,从用户角度出发,参与界面的美观性评估和交互逻辑讨论,力求打造专业、现代、用户友好的产品体验。 | + +## 小结 + +1. **核心功能落地:** 本周我将承担多重关键任务,不仅要确保核心模型算法的持续优化和代码规范化,更要积极参与前后端API的对接,保障模型与整个系统的顺畅集成。目标是确保Alpha版本的稳定落地。 + +2. **严格规范:** 全面规范化Git协作、模型代码规范性修复都是本周的重要任务。作为PM,必须严格遵循并推行这些规范,减少潜在的开发风险,提高代码的可维护性。 diff --git a/doc/process/weekly/week-11/members/hufan-weekly-summary-10.md b/doc/process/weekly/week-11/members/hufan-weekly-summary-10.md new file mode 100644 index 0000000..fd53cd2 --- /dev/null +++ b/doc/process/weekly/week-11/members/hufan-weekly-summary-10.md @@ -0,0 +1,27 @@ +# 个人周总结-第10周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-24 +**结束时间:** 2025-11-30 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 前端重构页面原型 | 完成 | 本周我作为技术监制,全程指导金郅博 **完成了前端页面的重构工作** 。我们紧密沟通,确保了设计理念与系统架构的统一,并成功解决了重构过程中遇到的技术挑战。最终,按时交付了一个结构简洁、功能稳定可靠的alpha版本前端原型,这为后续开发打下了坚实基础,也让我对前端架构的把控能力有了进一步的提升。 | +| 2 | 前端API测试和对接 | 未完成 | 由于后端团队本周的 **API开发进度未能如期完成**,导致我们无法在真实环境下进行前端API的全面测试和对接。尽管如此,我与金郅博积极采取了MOCK对接的方式,提前验证了接口设计和数据流,并与后端团队保持了充分沟通,为后续真实环境的联调做好了准备。期待下周后端接口到位后,能够迅速推进并完成这项关键工作,确保前后端无缝衔接。 | +| 3 | 增加"生成报告"功能 | 完成 | 我成功在模型评估阶段 **实现了'生成报告'功能**。通过与后端团队杨博文和梁浩的深入技术沟通,我们明确了接口调用、数据格式和存储方案。目前已能稳定生成静态指标分析报告和动态热力图可视化报告两种图片格式的报告,并成功存储在后端服务器,这大大提升了我们系统的数据展示能力和专业性,也让我对跨团队协作有了更深的理解。 | +| 4 | 尝试跑beta版本的算法 | 完成 | 完成了 **beta版本算法的前期探索和技术验证**。在多种不同风格的数据集上进行了详尽测试,深入分析并真实验证了算法在各种数据环境下的性能表现和适用性。 | + +## 对团队工作的建议 + +1. **前后端应当密切对接接口**: 本周前端API对接受阻,再次凸显了前后端接口密切对接的重要性。建议频繁进行接口联调会议,确保双方进度同步,减少因接口不一致或后端进度滞后导致的前端阻塞。加强沟通,提前暴露潜在问题,才能保证项目整体的流畅推进,避免不必要的返工和延误。 + +## 小结 + +1. **核心功能突破:** 本周我在前端技术监制和核心功能开发上都取得了显著进展。成功完成了Alpha版本页面原型的重构,确保了前端设计的质量与系统架构的统一,同时也顺利完成了“生成报告”功能的实现,为系统增添了强大的数据可视化能力。 + +2. **协作挑战与经验沉淀:** 尽管在多个方面取得了积极成果,但本周的API对接工作因后端进度未能如期而受阻,在跨模块协作中,对依赖关系的预判和风险管理非常重要。虽然我们通过MOCK对接积极应对,但仍提醒我们未来需更加注重前后端接口的紧密对齐和进度同步。 diff --git a/doc/process/weekly/week-11/members/jinzhibo-weekly-plan-11.md b/doc/process/weekly/week-11/members/jinzhibo-weekly-plan-11.md new file mode 100644 index 0000000..93389cd --- /dev/null +++ b/doc/process/weekly/week-11/members/jinzhibo-weekly-plan-11.md @@ -0,0 +1,33 @@ +# 个人周计划-第11周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-12-01 + +**结束时间:** 2025-12-08 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **职责调整:文档管理与部署测试** | 全体成员 | 基于团队角色优化安排,我本周起转为**文档管理及部署测试专员**。主要任务包括: **项目文档维护**:整理并更新项目现有文档(如接口文档、系统架构说明、部署指南等),确保其与代码版本同步且易于查阅;**测试用例编写**:根据项目需求编写相应的测试用例,为功能验证与系统测试提供依据;**系统部署验证**:在测试环境中验证系统部署流程,确保部署正确、环境一致,支持团队集成测试 | +| 2 | **前端样式辅助调优与测试支持** | 杨逸轩,胡帆 | 在完成文档与测试职责的同时,为前端工作提供辅助支持:**协助前端样式调试**:根据设计规范协助调整页面样式细节,优化视觉呈现;**参与前端测试与调优**:协助进行页面测试与细节调优,记录并反馈问题,提升界面质量;可模拟真实用户操作路径,验证界面交互的流畅性与直观性,记录并反馈体验问题,协助打造专业、现代、用户友好的界面体验。 | + + + +小结 +-- + +**1. 职责调整为文档管理与前端协助:** 本周起我将以**文档管理和前端协助者**的身份,系统维护项目文档、编写测试用例、验证部署流程,为项目规范化与质量保障提供支持。 + +**2. 辅助前端样式调优,协同页面测试:** 作为前阶段的前端负责人,需要积极提供技术支持与经验分享,协助前端团队进行页面测试与细节调优,重点关注色彩规范、交互动效与操作反馈等体验细节,共同提升界面专业度与用户友好性。 \ No newline at end of file diff --git a/doc/process/weekly/week-11/members/jinzhibo-weekly-summary-10.md b/doc/process/weekly/week-11/members/jinzhibo-weekly-summary-10.md new file mode 100644 index 0000000..530dd4e --- /dev/null +++ b/doc/process/weekly/week-11/members/jinzhibo-weekly-summary-10.md @@ -0,0 +1,36 @@ +个人周总结-第10周 +========= + +姓名和起止时间 +------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-11-24 + +结束时间: 2025-12-01 +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------- | -------------------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端重构页面原型** | 完成 | 按计划于11.24-11.26期间与胡帆协作完成了前端原型重构。我主要负责源码编写,严格依据设计稿PDF还原了页面结构与布局,并为交互组件按钮编写JavaScript事件处理逻辑,确保功能响应符合设计要求;完成后将源码提交给胡帆进行整理,重构项目目录使之清晰规范并清理冗余文件;最终交付结构清晰、功能完整的前端原型代码,也让我认识到前端代码人工编写的重要性,不能完全依赖大模型 | +| 2 | **两次API联通测试** | 未完成 | 由于后端团队本周的API开发进度未能如期完成,真实环境下的后端无法正常运行,所以未完成API对接测试。之前的测试流程一直在004号后端机器上测试,但该环境版本较旧,数据库和后端处理逻辑与当前版本存在较大差异,导致测试结果无法反映真实系统状态,较多接口也不能正确对接。对此,我与胡帆积极采取了MOCK对接方式提前验证了本地接口设计和数据流,并与后端团队保持了充分沟通。对接工作并非毫无进展,我们在这个过程中明确了前后端对接及测试的具体方法,期待下周后端API工作落实后,前端能够快速无缝对接,尽快落实α版本的项目落地
| + +**对团队工作的建议 ** + +1. **协作沟通还需进一步加强**:本周对接过程稍有坎坷,误使用了落后版本的后端环境进行测试,导致测试结果没有实际效果;经过反省,我对后端的沟通并不足够,后续开发时需要进一步深化加强沟通机制,每当前端工作接触后端时就需要与其沟通,确保一致的开发环境和接口,才能保证项目整体的流畅推进,避免不必要的返工和延误。 + +小结 +-- + +**1. 前端原型页面重构:** 我专注于源码实现,胡帆负责架构整理,协作高效完成前端原型重构,为后续开发奠定坚实基础。 + +**2. API测试受阻:** 前期虽已完成MOCK测试验证前端逻辑,但实际测试004号机器的后端逻辑严重滞后,且由于后端的数据库与接口实现仍在调整中,新版后端暂未实现联通测试,导致测试结果参考价值有限。此问题已在与后端团队沟通中明确反馈。 + +**3.加强团队协作与开发规范化**:通过本周项目推进,我更加体会到规范协作的重要性。大模型生成的代码虽然提供了快速原型,但在实际项目中仍显粗糙,需要人工介入深度优化。建议团队在后续开发中,进一步明确协作流程、代码审查机制和文档规范,确保项目质量和团队配合效率。 + + +--- diff --git a/doc/process/weekly/week-11/members/lianghao-weekly-plan-11.md b/doc/process/weekly/week-11/members/lianghao-weekly-plan-11.md new file mode 100644 index 0000000..162cf19 --- /dev/null +++ b/doc/process/weekly/week-11/members/lianghao-weekly-plan-11.md @@ -0,0 +1,30 @@ +# 个人周计划-第11周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-01 +**结束时间:** 2025-12-08 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------- | ------ | -------- | +| 1 | 新库回归测试与缺陷闭环 | 杨博文、胡帆 | 12月1日至12月3日,基于上周完成的数据库适配,编写并执行核心任务流测试用例(任务创建、启动、取消、下载等),记录并修复发现的问题,确保切换新库后服务稳定。| +| 2 | 我的任务图片预览功能实现 | 杨博文、金郅博、杨逸轩 | 12月3日,完善“我的资源”页面的图片预览接口(任务id,配置,预览图等),直接连通生产数据库,输出任务数据,并与前端完成云端联调。| +| 3 | 全量功能 API 文档输出 | 金郅博、杨逸轩 | 12月2日至12月5日,梳理所有后端接口(认证、任务、图像、报告、配置等),为每个接口补充请求示例、响应样例、错误码说明与调用流程,形成可共享的对接文档。| +| 4 | 全量接口联调 | 胡帆、杨逸轩 | 12月1日至12月5日,联合前端逐项联调所有已暴露接口(认证、任务、图像、报告等),确保云端环境端到端可用,并记录问题单闭环。| +| 5 | 前端 API 响应支持 | 杨逸轩、胡帆 | 12月3日至12月6日,跟进前端在云端联调过程中的反馈,快速处理鉴权、限权及跨域问题,保障 alpha 验收所需接口全部可用。| + +## 小结 + +1. **聚焦数据库切换稳定性:** 先完善新库回归测试,尽快锁定并解决适配遗留问题,确保本周 API 对接不受影响。 + +2. **推进任务图片预览交付:** 直接基于生产数据实现接口,完成前端联调,让“我的任务”预览功能稳定上线。 + +3. **补齐全量 API 文档:** 输出结构化的调用说明与示例,支撑团队成员快速理解和验证全部功能接口。 + +4. **加固前后端联调链路:** 覆盖所有核心接口的联合测试,并保持对前端反馈的快速响应,缩短问题定位时间。 + +4. **严格执行协作规范:** 持续落地团队的 git 流程与代码规范,结合每日同步机制,降低冲突与返工风险。 diff --git a/doc/process/weekly/week-11/members/lianghao-weekly-summary-10.md b/doc/process/weekly/week-11/members/lianghao-weekly-summary-10.md new file mode 100644 index 0000000..8d35426 --- /dev/null +++ b/doc/process/weekly/week-11/members/lianghao-weekly-summary-10.md @@ -0,0 +1,30 @@ +# 个人周总结-第10周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-11-24 +**结束时间:** 2025-12-01 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | -------- | -------- | -------- | +| 1 | 新增“数据源选择预览”功能 | 未完成 | 受数据库改造占用时间影响,尚未进入开发阶段。本周完成了需求澄清和接口草图,下周与前端同步后补做。 | +| 2 | 对接“生成报告”功能接口 | 已完成 | 完成报告生成相关 API,实现评估任务创建、列表、持久化存储与下载接口。 | +| 3 | 协助后端适配新版数据库 | 已完成| 完成 ORM 模型、服务层与控制器对新库结构的全面适配,已成功跑通初始化脚本;因改动范围较大,尚未安排系统级回归测试。 | +| 4 | 协助完善用户权限管理功能 | 完成 | 已核对角色权限与路由分层方案,完成基础校验逻辑 | +| 5 | 响应前端 API 测试反馈 | 部分完成 | 对接了后端注册登录部分API,但由于需求和数据库变动导致API需要变动,进度偏慢,后续需要继续推动反馈节奏。 | +| 6 | 后端突发问题处理与补缺 | 完成 | 保障云端服务稳定运行,期间排查了数据库迁移引起的启动异常,保持了后端的可用状态。 | + +## 对团队工作的建议 + +1. **预留数据库改造测试窗口:** 新版数据库改动影响面广,建议在下周安排专项测试时间段,由前后端共同验证关键任务流,尽快收敛潜在问题。 +2. **保持 API 反馈闭环:** 建议前端测试阶段形成每日同步机制,遇到阻塞及时回报,后端也可提前暴露变更说明,减少等待时间。 + +## 小结 + +1. **数据库适配基本完成:** 本周最大的投入是新版数据库适配,已实现模型、服务与初始化脚本的统一,后续重点是补足回归测试,确保稳定切换。 +2. **报告功能顺利交付:** 完成报告模块接口的设计与开发,覆盖文件上传、存储和下载流程,为静态与动态报告展示提供了后端支撑。 +3. **资源投入需再均衡:** 数据库改造工作量超出预期,导致“数据源选择预览”推迟,后续需要重新调整排期,并在完成数据库测试后尽快补上缺口。 diff --git a/doc/process/weekly/week-11/members/yangbowen-weekly-plan-11.md b/doc/process/weekly/week-11/members/yangbowen-weekly-plan-11.md new file mode 100644 index 0000000..1491da8 --- /dev/null +++ b/doc/process/weekly/week-11/members/yangbowen-weekly-plan-11.md @@ -0,0 +1,19 @@ +# 个人周计划-第11周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-1 +**结束时间:** 2025-12-8 + +## 本周任务计划安排 +| 序号 | 计划内容 | 协作人 | 情况说明 | +|------|------------------------|------------|----------| +| 1 | 后端API收尾与文档完善 | 梁浩、杨逸轩、胡帆 | 12.1–12.2:配合梁浩完成核心API(用户认证、图像处理、模型调用、结果下载)的最终暴露与测试;同步整理并校验接口文档,确保字段定义、状态码、错误码完整准确;12.3–12.5:作为后端侧技术接口人,响应前端联调问题(如参数缺失、响应结构不符),快速定位并修复问题;12.6:参与端到端集成验证,保障后端服务在Alpha整合中稳定可用。 | +| 2 | 主导后端代码规范性修复 | 梁浩 | 依据Google Python Style Guide,牵头梳理现有后端代码:统一函数/变量命名风格(如snake_case)、补充关键模块docstring与算法流程注释、优化配置参数抽取(如数据库URL、模型路径等),确保代码可读性、可维护性达标;PR合并前须通过flake8/black等工具静态检查。 | +| 3 | Git协作流程落地与监督 | 全体成员 | 在个人开发中严格执行“develop → personal-branch → PR → review → merge”流程;协助组内成员(尤其新接触Git者)排查冲突、规范commit message;每日同步develop分支,确保本地环境与主干一致,减少集成风险。 | + +## 小结 +1. **技术兜底与交付:** 作为后端主力,需确保API交付质量与联调响应速度,为Alpha整合筑牢底层基础; +2. **规范先行:** 代码与协作流程的规范化不仅是本周重点,更是项目长期健壮性的保障,需以身作则推动落地。 \ No newline at end of file diff --git a/doc/process/weekly/week-11/members/yangbowen-weekly-summary-10.md b/doc/process/weekly/week-11/members/yangbowen-weekly-summary-10.md new file mode 100644 index 0000000..b14f859 --- /dev/null +++ b/doc/process/weekly/week-11/members/yangbowen-weekly-summary-10.md @@ -0,0 +1,26 @@ +# 个人周总结-第10周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-11-24 +**结束时间:** 2025-12-1 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- |-----------------------------------------------------------|------------------------------------------------------------|-------------------------------------------------------------------------------------------| +| 1 | 后端修补与完善 | 部分完成 | 在实际的操作过程中,错误估计了后端实际任务的工作量,在更改时发现需要连带更改的内容过多;并且在上周后端的协作出现了问题,沟通不及时导致出现了任务重复做。但剩余内容可以在本周内完成 | +| 2 | 更新UML图 | 完成 | 完成了活动图和时序图的更新。由于项目使用的是面向过程,所以并无类图 | +| 3 | 文书协调与进度同步 | 完成 | 不断地跟进前后端对接过程,书写了四个接口文档。 | + +## 对团队工作的建议 + +1. **GIT仓库的规范使用**: 一定要严格规范GIT的使用,方便团队成员之间的分工协作。 +2. **及时沟通**: 在跨组协作中,沟通是非常重要的,任何问题都要及时反馈,避免因为信息不对称而导致的重复工作和进度延误。 +3. **积极思考**: 在协作中,要乐于去”读“别人的成果,积极思考如何去改进和完善,而不是将别人的成果直接扔给大模型生成一份新的成果,这样没有任何意义。 + +## 小结 + +1. **协作重要性:** 本周我作为文书参与对接的过程中,切实的感受到了”沟通“的重要性,希望下周可以弥补这方面的不足。 diff --git a/doc/process/weekly/week-11/members/yangyx-weekly-plan-11.md b/doc/process/weekly/week-11/members/yangyx-weekly-plan-11.md new file mode 100644 index 0000000..7fb1f72 --- /dev/null +++ b/doc/process/weekly/week-11/members/yangyx-weekly-plan-11.md @@ -0,0 +1,35 @@ +个人周计划-第11周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-01 + +**结束时间:** 2025-12-08 + +## 本周任务计划安排 + +| **序号** | **时间节点** | **计划内容** | **协作人** | **情况说明** | +| ------ | ----------------- | --------------------------- | ------- | --------------------------------------------------------------------------------------------------------- | +| 1 | **12/01 - 12/02** | **Alpha 遗留功能开发与前端代码规范化** | 胡帆 | **角色交接与功能补齐:** 正式转为前端核心开发。完成 Alpha 版本中缺失的**核心 UI 组件开发**(如任务列表详情页、结果展示基础框架)。同时主导前端代码清理和规范化工作,确保代码可读性和可维护性。 | +| 2 | **12/03 - 12/04** | **核心 API 联调冲刺(阶段一:基础业务)** | 梁浩, 胡帆 | **攻克上周阻塞任务:** 优先与后端协作,完成最关键的业务流程联调:**图片上传、加噪算法调用接口、基础加噪结果(图片/频率图)返回与展示**。目标是在本阶段实现从上传到结果的完整闭环。 | +| 3 | **12/05 - 12/06** | **核心 API 联调冲刺(阶段二:报告与可视化)** | 胡帆, 金郅博 | **报告功能集成:** 联调报告生成模块的 API,包括 **FID/SSIM/PSNR 等指标数据的接收**和前端渲染逻辑。重点确保动态三维可视化数据的接口对接,为前端图表绘制提供数据源。 | +| 4 | **12/06 - 12/07** | **Alpha 版本功能验收与 UI 优化** | 全体成员 | **交付前检查:** 全面参与 Alpha 版本的端到端功能验收。重点关注跨设备兼容性(响应式布局)和用户体验,修复联调过程中发现的前端 Bug,并根据小组反馈进行 UI 细节和交互逻辑的优化。 | +| 5 | **12/08** | **下周计划准备与技术预研** | 个人 | 汇总 Alpha 版本的交付状态与遗留问题,撰写周总结。同时,提前开始 Beta 版本功能(如**可调节噪声强度**、**静态样例展示**)的技术预研,为下周工作做准备。 | + +小结 +-- + +本周是 Alpha 版本交付的**最后冲刺阶段**。我们的首要目标已明确调整为**以联调为核心**,快速补齐 Alpha 版本中缺失的核心前端功能,并确保前后端通信的绝对稳定。时间上不容有失,必须严格按计划执行两轮 API 联调,将上周遗留的“功能缺失”和“联调阻塞”问题全部清零。 + +**核心交付目标:** + +1. **功能完整性:** 确保用户从图片上传、选择算法、到接收加噪结果和动态报告的完整流程在部署环境中无障碍运行。 + +2. **联调闭环:** 在本周末(12月7日)前,实现基础业务和报告可视化接口的**全面联调闭环**。 + + diff --git a/doc/process/weekly/week-11/members/yangyx-weekly-summary-10.md b/doc/process/weekly/week-11/members/yangyx-weekly-summary-10.md new file mode 100644 index 0000000..72dae99 --- /dev/null +++ b/doc/process/weekly/week-11/members/yangyx-weekly-summary-10.md @@ -0,0 +1,33 @@ +个人周总结-第10周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-11-24 + +**结束时间:** 2025-12-01 + +## 本周任务完成情况 + +| **序号** | **总结内容** | **是否完成** | **成果或说明** | +| ------ | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------- | +| 1 | **前端代码云端集成与部署维护** | **完成** | **部署稳定:** 成功接收并集成金郅博重构后的前端代码,将其稳定部署到云服务器的 Nginx 环境中。确保了新版前端在外网的可访问性和稳定性,部署维护任务顺利完成。 | +| 2 | **第一轮核心 API 联调测试** | **部分完成** | **基础联调成功:** 与协作人完成了**用户管理(注册/登录/登出)**等小部分基础功能 API 的联调测试,接口通信稳定。**受阻:** 核心的图片上传、加噪功能 API 联调因 Alpha 版本功能未开发完毕而受阻,未能按计划完成。 | +| 3 | **第二轮报告 API 联调测试** | **未完成** | **任务阻塞:** 由于第一轮核心功能联调和 Alpha 版本开发均未完成,生成报告所需的数据和接口均未就绪,第二轮联调任务无法启动。 | +| 4 | **Alpha 版本功能验收与 Bug 修复** | **进行中** | **内部测试:** 对已完成的模块(如登录页、首页框架、部署环境)进行了内部验收和 Bug 修复,保证了基础流程的可用性。**整体未达标:** 由于开发工作量错估,Alpha 版本功能未开发完毕,无法进行全面的功能验收。 | +| 5 | **设计文档最终定稿支持** | **完成** | **文档定稿:** 协助杨博文完成了《需求规格说明书 V2.0》所需的 UML 图(E-R图和时序图)的最终核对和逻辑确认工作,确保设计文档与当前的系统架构完全一致,顺利完成了定稿支持。 | + +小结 +-- + +1. **成功的保障工作:** 本周成功完成了**前端代码的云端集成与部署**,保障了系统的基础运行环境;同时,**设计文档的最终定稿支持**也顺利完成,确保了项目文档的规范化。 + +2. **开发进度受阻:** 由于对核心功能(特别是前端复杂交互和数据处理)的工作难度和工作量存在错估,导致 Alpha 版本未能按计划完成全部功能开发。 + +3. **联调严重滞后:** 受限于开发进度的影响,原计划的两轮 API 联调测试仅完成了**登录注册**等基础流程,核心的加噪和报告功能联调严重滞后,这是下一周急需解决的首要问题。 + +4. **下一周重点:** 必须优先投入资源,加速剩余 Alpha 版本功能的开发,并立即启动核心 API 的联调测试,争取在最短时间内完成 Alpha 版本的交付准备。 diff --git a/doc/process/weekly/week-12/group/meeting-minutes-12.md b/doc/process/weekly/week-12/group/meeting-minutes-12.md new file mode 100644 index 0000000..037d666 --- /dev/null +++ b/doc/process/weekly/week-12/group/meeting-minutes-12.md @@ -0,0 +1,54 @@ +# 小组会议纪要-第12周 + +## 会议记录概要 + +**团队名称:** 2班-深度思考 +**指导老师:** 刘琴 +**主 持 人:** 胡帆 +**记录人员:** 金郅博 +**会议主题:** 第十一周情况总结、第十二周开发任务部署、alpha版本验收问题讨论 +**会议地点:** 中楼211 +**会议时间:** 2025-12-8 11:40-12:20 +**纪录时间:** 2025-12-8 20:00 +**参与人员:** 胡帆、梁浩、杨博文、金郅博、杨逸轩 + +--- +## 会议内容 + +### 一、本周核心任务聚焦 + +本周是Alpha版本的关键冲刺周,经团队内部讨论并结合第十一周实际完成情况,团队聚焦以下三大主线任务: + +1.**Alpha 1.0验收冲刺(12.9下午验收)**:集中力量完成剩余API对接与界面修整,确保系统基本功能完整、界面友好、可运行,并于12.9下午交付老师验收签字。 + +2.**Alpha 2.0深度优化(验收后启动)**:在验收基础上进一步打磨用户体验,实现前端交互丝滑、功能稳定、提示准确,后端同步优化,开发同时将项目文档即git仓库进行统一规范化整理。 + +3.**Beta版本前期筹备**:同步开展超参数优化、艺术品风格实验、日志功能开发等前瞻性工作,为后续版本迭代奠定基础。 + +--- + +### 二、任务分解与执行安排 + +| 序号 | 任务内容 | 负责人 | 关键时间节点 | 主要职责说明 | +|------|------------------------------|------------------|--------------------|--------------| +| 1 | **Alpha收尾与验收** | 全体成员 | 12.9下午验收前 | **杨逸轩、杨博文、梁浩**:ThreeJS 3D路径绘制(会议决定可暂时放弃该项)与S剩余API对接
**杨逸轩、金郅博**:前端UI杂碎修整与文字提示检查,管理员/我的资源页面大列表实现
**全体成员**:上云对接测试与功能验证,12.9要求alpha1.0版本能够交付验收 | +| 2 | **前端后端深度对接测试并debug** | 杨逸轩、胡帆、梁浩 | 12.9验收后 | **杨逸轩、胡帆、梁浩:**alpha1.0落地后,前后端反复上云测试功能,及时反馈问题并修正,必要时返工重做
本周结束后,alpha版本升级为2.0版本,相较于1.0版本的完成度与美观度更高,前端流畅丝滑,后端多账号使用等需求完善 | +| 3 | **试出防人脸编辑、防风格迁移、防定制生成的超参数** | 胡帆 | 12.9开始 | 胡帆进行四种算法超参数调整实验,确定最佳参数模板,编写sh脚本交付后端 | +| 4 | **跑首页样例** | 胡帆 | 12.15前 | 胡帆负责制作原理图解、论文支持模块的样例广告图片,以及防人脸学习效果展示,确保首页视觉呈现专业且有说服力。 | +| 5 | **Git项目整体大整理** | 全体成员 | 12.9验收后启动 | 全体成员检查个人模块代码规范;杨逸轩和金郅博负责前端代码整理与分支管理;梁浩、杨博文完成后端代码整理与版本标记;胡帆需要整理所有模块涉及的个人代码;此外金郅博负责接手文档同步与提交记录归档。 | +| 6 | **艺术品风格实验和提示词选取** | 杨逸轩、胡帆、梁浩、杨博文 | 12.9后 | 胡帆测试艺术品风格保护可行性;杨逸轩设计前端交互界面;梁浩、杨博文完成后端算法适配与接口开发,拓展系统至艺术保护领域。 | +| 7 | **日志功能接口开发** | 梁浩、杨博文 | 12.15前完成 | 梁浩设计日志功能架构;杨博文实现接口与测试;两人共同制定日志记录策略,为Beta版本运维监控打下基础。 | +| 8 | **README文档编写** | 金郅博、杨逸轩 | 12.15前 | 金郅博快速深度了解前端结构,撰写README文档主体内容;杨逸轩审核技术细节并补充;金郅博最终整理格式并定稿,为Alpha评审提供完整说明材料。 | +| 9 | **组会文档同步与归档** | 金郅博 | 12.8当天 | 金郅博整理会议记录、撰写纪要并归档至项目仓库,同时跟踪任务进展,确保团队信息同步透明。 | + + +--- + +### 三、上周总结+本周待改进问题 + +1. **alpha1.0版本验收全面冲刺**:12.9需交付alpha版本验收,本周全体成员需要全力冲刺,不求功能天衣无缝/前端页面尽善尽美,但求系统“能跑、能用、界面友好” +2. **alpha2.0版本优化角度突破:**1.0版本要求效果优先,而2.0版本需提升质量。由于本项目后端与模型功能交互性相对较弱,需要在前端展示环节发力,提升亮点。目前前端页面太白太简单,需要在美术设计方面重点突破,规范页面排版/组件布局/文字格式,必要时可重新启用制作原型时使用的vuebits组件库,为前端增添更加丰富的效果 +3. **beta版本开始筹备**:由于项目整体进度偏慢,本周需尽快完成alpha收尾,并开启beta版本筹备 +4. **git仓库分支整理:**alpha版本开发时git提交比较混乱,在验收完成后需要进行系统性整理,重视规范性与贡献划分,全体成员需要认真整理自己负责模块的代码与提交记录,最后统一合并到main分支 + +--- diff --git a/doc/process/weekly/week-12/group/weekly-plan-12.md b/doc/process/weekly/week-12/group/weekly-plan-12.md new file mode 100644 index 0000000..9d35454 --- /dev/null +++ b/doc/process/weekly/week-12/group/weekly-plan-12.md @@ -0,0 +1,29 @@ +# 小组周计划-第12周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-08 +**结束时间:** 2025-12-15 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | Alpha收尾和验收 | 全体成员 | 目前还差少部分API在前端还没有对接,而实际上 **云测试** 也还没有开始。必须在12.09下午验收之前 **做好待对接部分**:
1、ThreeJS的3D路径图绘制(这也需要后端配合接口)
2、前端UI杂碎、冗余元素的修整,文字提示正确性检查
3、前端管理员、我的资源页面的大列表
4、全部完成后,前端后端同时上云对接测试每个功能是否正常可用
金郅博需要快速了解整个项目前端,方便后续文档编写和辅助工作。此阶段是Alpha版本交付的关键节点,要求全体成员高度重视,确保系统基本功能完整、界面友好、运行基本成功,不求完美但求能跑。 | +| 2 | 前端后端深度对接测试并debug | 杨逸轩、胡帆、梁浩 | 前端与后端在alpha1.0基础上 **反复上云测试功能**,进一步优化对齐细节,如有问题还需返工,这不是个口头工作,而是得反复实验,相当耗时。等到本周结束后,**alpha进化为2.0**,此时应当做到:前端非常友好流畅、交互非常丝滑、功能非常稳定、不存在冗余或错误按钮、文字提示前后一致、多账号同时使用系统时能做到互不干扰。后端根据前端的反馈,同步优化、debug自己的功能实现。 | +| 3 | 试出防人脸编辑、防风格迁移、防定制生成的超参数 | 胡帆 | 在已有的四种算法:ASPL、simAC、CAAT、PID中,反复对超参数进行调整,对防人脸编辑、防风格迁移、防定制生成这三个任务分别实验得出可获取最佳效果的 **超参数模板**,写成sh脚本交给后端。作为beta的功能更新。这项工作需要胡帆进行大量的实验和数据分析,对不同场景下的算法表现进行系统性评估,最终确定能够在实际应用中取得最优效果的参数配置方案。 | +| 4 | 跑首页样例 | 胡帆 | 对首页的:原理图解、论文支持两个模块做好样例广告图片,对"样例预览"模块做好防人脸学习:人脸加噪、微调、效果样例(prompt=人脸)。首页作为系统的门面,需要通过 **精心设计的样例** 展示来直观呈现系统的核心价值和技术优势。这些样例不仅要具有视觉吸引力,更要准确体现算法的实际效果,帮助用户快速理解系统功能。 | +| 5 | git项目整体大整理 | 全体成员 | alpha完成后,**将git-develop分支整理好**,更新为完整的Alpha1.0版本。注意规范性和贡献划分。全体成员需要认真检查自己负责模块的代码提交记录,确保commit信息清晰规范、代码注释完整、无冗余文件残留。同时要做好分支合并和版本标记工作,为后续的版本管理和代码审查奠定基础。这项工作虽然看似琐碎,但对项目的长期维护和团队协作质量至关重要,希望每位成员都能严肃对待。 | +| 6 | 艺术品风格实验和提示词选取 | 杨逸轩、胡帆、梁浩、杨博文 | 胡帆测试艺术品风格的可行性与prompt选取细则。这是Beta版本的一项重要功能扩展,旨在将系统应用场景 **从人物肖像拓展到艺术保护领域**。梁浩和杨博文需要在后端实现相应的数据处理和算法适配逻辑,杨逸轩需要在前端提供友好的交互界面。 | +| 7 | 日志功能 | 梁浩、杨博文 | 后端实现**"日志查看"功能的接口**,作为beta功能的一部分。前端暂时无需适配,只需保证后端此功能能正常运行。日志功能对系统的运维监控和问题排查具有重要意义,梁浩和杨博文需要设计合理的日志记录策略。虽然本周前端暂不对接,但后端需要预留好标准化的接口,方便后续前端快速集成。 | +| 8 | README文档编写 | 金郅博、杨逸轩 | 编写 **前端的readme文档**,为alpha代码检查做详细准备。README文档是项目对外展示的重要窗口,需要清晰说明项目背景、框架选取、依赖库、功能特性、安装部署、使用说明等关键信息。金郅博和杨逸轩需要站在用户和评审者的角度,用通俗易懂的语言和结构化的组织方式,让读者能够快速了解项目全貌并顺利上手使用。文档质量将直接影响Alpha验收的评价结果。 | +| 9 | 组会文档同步 | 金郅博 | 记录并编写提交组会会议纪要,提交到项目文档中。金郅博需要在组会后及时整理讨论要点、决策事项、任务分配等关键信息,形成规范的会议纪要文档并归档到项目仓库。 | + +## 小结 + +1. **alpha1.0整合验收:** 本周的首要任务是完成Alpha1.0版本的最后冲刺和验收准备工作。目前系统尚有部分关键功能未完成前后端对接,包括ThreeJS 3D路径绘制、管理员资源列表等核心模块。全体成员需要高度聚焦,在12.09验收前完成所有待办事项。 + +2. **alpha2.0优化:** 在Alpha1.0验收通过后,不要停下脚步,而是立即进入Alpha2.0的深度优化阶段。杨逸轩、胡帆、梁浩三位核心成员将投入大量时间进行前后端的反复上云测试和debug工作,这不是简单的功能验证,而是要从用户体验的角度出发,对每一个交互细节、每一处文字提示、每一个边界情况进行测试打磨,让系统达到"前端友好、交互丝滑、功能稳定"的高标准。 + +3. **Beta开始筹备:** 在巩固Alpha版本的同时,我们已经开始为Beta版本的功能扩展做前期准备工作。胡帆将投入大量精力进行算法超参数优化实验,为防人脸编辑、防风格迁移、防定制生成三大核心应用场景分别找出最佳参数配置,这将显著提升Beta版本的实用价值。同时,艺术品风格保护功能的探索也正式启动,这是对系统应用领域的重要拓展。后端的日志功能开发则为系统的运维监控能力打下基础。这些前瞻性的工作虽然不一定会在本周全部完成,但仍然会为Beta版本的顺利推进做很大贡献。 diff --git a/doc/process/weekly/week-12/group/weekly-summary-11.md b/doc/process/weekly/week-12/group/weekly-summary-11.md new file mode 100644 index 0000000..ce39986 --- /dev/null +++ b/doc/process/weekly/week-12/group/weekly-summary-11.md @@ -0,0 +1,25 @@ +# 小组周总结-第11周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-01 +**结束时间:** 2025-12-08 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 全面规范化 git 协作 | 完成 | 本周团队严格贯彻了制定的Git协作流程,全体成员均遵循"develop → personal-branch → PR → review → merge"的标准化工作流。胡帆在总结中强调了每次开发都从develop分支拉取最新代码到个人分支进行开发测试,杨博文则协助排查Git冲突、规范commit message,建立了每日同步机制。这一规范化流程有效减少了代码冲突,保持了代码仓库的整洁性和一致性,显著提升了团队协作效率和集成的稳定性。 | +| 2 | 前后端API对接 | 基本完成 | 本周API对接工作分阶段推进并取得重要突破。梁浩和杨博文在12月1-5日完成了所有核心API(用户认证、图像处理、模型调用、结果下载等)的暴露、测试与完整文档输出,为前端对接提供了清晰的技术规范。杨逸轩与胡帆紧密配合,成功完成了第一阶段核心业务流程的联调,实现了**图片上传、调用加噪算法接口、基础加噪结果返回与展示的完整功能**。然而,3D动态图和heatmap加噪因后端数据格式和返回逻辑尚未最终稳定而未能完成,导致全面端到端的功能验收无法彻底展开。梁浩和杨博文在联调过程中积极响应前端反馈,快速处理了鉴权、限权、跨域及参数响应结构等技术问题。 | +| 3 | 工作任务变更 | 完成 | 基于团队成员技能特长和项目实际需求,本周 **顺利完成了战略性角色调整**。杨逸轩正式转为前端核心开发者,发挥其在前后端联调和云部署方面的丰富经验,主导了前端代码的首次规范化清理和核心UI组件开发。金郅博成功转型为文档管理和部署测试专员,系统推进了项目文档更新(接口文档、系统架构说明、组会纪要等)、测试用例编写和环境部署验证,初步跑通了前后端对接的部署方法。胡帆在继续负责模型算法优化的同时,积极协助杨逸轩推进前端界面美化和用户体验提升。 | +| 4 | 代码规范性修复 | 部分完成 | 团队在代码规范化方面取得了阶段性进展。胡帆主导完成了模型代码的全面规范性修复,包括统一算法函数命名、添加详细的算法流程注释、优化参数配置管理,显著提升了模型代码的可维护性。杨逸轩也完成了前端代码的首次规范化工作,统一了组件命名和目录结构,为后续开发奠定了稳定基础。然而,后端代码规范性修复工作因评估工作量较大且当前Alpha版本交付优先级更高,由杨博文主导的该任务被战略性延后,计划在功能稳定后依据Google Python Style Guide按模块分批整改。 | +| 5 | alpha全面整合 | 尚未完成 | 尽管核心业务流程(图片上传→算法调用→基础结果展示)已成功整合并实现闭环,但由于可视化模块的API联调受阻,导致全面的端到端功能验收工作无法彻底展开。整体而言,Alpha版本 **仍需完成报告模块的集成和全面测试** 才能达到完整交付状态。 | +| 6 | 前端样式扩展 | 完成 | 在杨逸轩、胡帆和金郅博的紧密协作下,**前端团队完成了界面的设计优化和样式扩展工作**。团队采用了清爽简约的瀑布流+左侧导航栏布局,并从用户体验角度出发精心打磨了交互细节,大幅提升了视觉美感和操作流畅度。胡帆负责基础的响应式布局优化和核心UI组件开发,杨逸轩协助进行页面测试和细节调优,模拟真实用户操作路径测试页面跳转与组件交互。前端页面整体焕然一新,呈现出专业、现代、用户友好的视觉效果。 | + +## 小结 + +1. **对接仍然需要大量沟通和测试:** 尽管本周在前后端API对接上取得了重要突破,核心业务流程的联调闭环成功实现了从图片上传到基础结果展示的完整功能链路,但可视化等高级功能的联调仍面临挑战。后端接口的数据格式和返回逻辑还需要进一步稳定,这直接影响了前端的集成进度。在复杂系统的开发中,接口对接往往不是一蹴而就的,它需要前后端团队持续、细致的沟通协调和反复的测试验证。 +2. **前端样式完成地很快:** 在杨逸轩、胡帆和金郅博的通力协作下,前端界面的设计优化工作推进得非常顺利。从清爽简约的瀑布流布局到细致入微的交互细节打磨,团队用了不到一周的时间就让重构后的原型焕然一新。 +3. **后端功能务必先于前端:** 本周报告模块集成受阻的经历再次提醒我们,后端接口的稳定性和规范性对前端开发至关重要。当后端数据格式和返回逻辑还在调整时,前端很难进行可靠的对接和功能实现。这不仅会影响开发进度,还可能因为返工造成资源浪费。因此在后续迭代中,我们需要更加注重开发顺序的合理安排——后端团队应该优先确保接口的稳定性和文档的准确性,为前端的并行开发提供坚实的基础。同时,前后端也要保持更紧密的沟通,及时同步接口变更信息,避免因信息不对称导致的返工。 +4. **协同开发规范性初见成效:** 本周团队在协同开发规范化方面的努力开始显现成效。Git协作流程的全面落地让代码仓库保持了良好的整洁性,每日同步机制有效减少了集成冲突;前端和模型组完成的代码规范性修复工作提升了代码的可读性和可维护性;梁浩输出的全量API文档为前后端协作提供了清晰的技术规范。 diff --git a/doc/process/weekly/week-12/members/hufan-weekly-plan-12.md b/doc/process/weekly/week-12/members/hufan-weekly-plan-12.md new file mode 100644 index 0000000..28ea13c --- /dev/null +++ b/doc/process/weekly/week-12/members/hufan-weekly-plan-12.md @@ -0,0 +1,22 @@ +# 个人周计划-第13周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-15 +**结束时间:** 2025-12-22 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 首页展示图生成与超参数优化 | 本人 | **12.15-12.17(周三前):** 使用当前优化的模型生成首页展示所需的三种不同风格的高质量艺术品加噪效果图,用于系统首页的视觉呈现和功能演示。这些展示图需要充分展现模型算法的加噪效果,为用户直观呈现系统的核心功能和美学效果。同时进行现有超参数配置的全面检查和优化工作,特别是微调模块相关参数的细致调整。 | +| 2 | Beta 0.5版本技术指导与UI设计协助 | 杨逸轩 | **12.18-12.22:** 为Beta 0.5版本的前后端对接工作提供全方位的技术指导,从模型算法的输入输出规范、参数配置的理论依据、结果解释的准确性等方面把控,确保前后端对模型功能的理解是准确一致的。协助前端团队进行UI设计优化,参与讨论如何通过友好的界面准确传达模型参数的含义、使用方法和结果意义,特别是针对超参数配置界面、结果展示界面等关键交互场景的设计方案提供建议。 | +| 3 | 班会技术内容支持 | 杨博文、金郅博 | **12.15-12.17(周三前):** 准备班会演示所需的模型部分技术说明,包括Beta 0.5新增功能的工作原理、超参数优化的效果展示、首页广告图的生成方法等。通过清晰的讲解和直观的效果展示,让老师和同学们了解模型组在功能增强和效果优化方面所做的工作,为团队的整体班会展示贡献模型的技术亮点。 | +| 4 | 模型功能与前端交互的协调优化 | 杨逸轩、梁浩 | **全周任务:** 在前后端对接测试过程中,及时针对前端提出的模型相关问题进行解答和支持,确保用户界面中展示的模型参数说明、功能描述、使用指引等内容准确无误。如发现模型算法在特定场景下的表现与预期不符,与梁浩协作进行问题诊断和参数调整,确保最终交付给用户的产品兼具高效能和易用性。 | + +## 小结 + +1. **协调Beta 0.5前后端对接:** Beta 0.5版本是项目从Alpha向完整Beta演进的关键阶段,涉及到模型功能的深度集成和用户体验的全面升级。本周我需要从模型角度为前后端的紧密协作搭建桥梁——一方面深入参与前端对接工作,帮助杨逸轩和杨博文理解模型的输入输出规范、超参数的含义和调整空间,确保他们在实现功能时能够准确把握模型的能力边界;另一方面也要和梁浩保持沟通,对后端接口的数据结构、参数传递的机制等提出模型角度的需求,确保暴露的API能够充分满足前端的调用需求。 +2. **跑出首页广告大图:** 首页展示图是用户对系统的第一印象,也是系统核心价值的直观呈现。本周需要生成三种不同风格的高质量艺术品加噪效果图。我需要在现有超参数基础上进行系统的微调和优化,通过反复的实验验证找到最能展现效果的参数组合。特别是对微调模块的超参数要花更多心思,力求使最终呈现出来的效果既能真实反映艺术品的纹理和特性,又能充分展示防护算法的有效性。 diff --git a/doc/process/weekly/week-12/members/hufan-weekly-summary-11.md b/doc/process/weekly/week-12/members/hufan-weekly-summary-11.md new file mode 100644 index 0000000..3561730 --- /dev/null +++ b/doc/process/weekly/week-12/members/hufan-weekly-summary-11.md @@ -0,0 +1,29 @@ +# 个人周总结-第12周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-08 +**结束时间:** 2025-12-15 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | Alpha收尾和验收 | 完成 | 按时完成Alpha 1.0版本的最后冲刺工作。重点投入在模型API与前端的对接测试上,特别是ThreeJS 3D路径图绘制功能的数据格式适配,确保算法输出能够正确被前端可视化展现。完成了云环境下的整体验收测试,系统功能运行稳定,模型相关功能表现符合预期。 | +| 2 | 前端后端深度对接测试并debug | 基本完成 | 与杨逸轩和梁浩进行了多轮密集的上云测试和问题调试。重点监控模型推理速度、结果准确性和资源占用情况,所有核心功能的对接测试均已通过。多用户并发场景下模型服务运行稳定,未发现资源竞争或数据混淆问题。遗留问题:微调模块在3D坐标绘制和热力图任务中的部分边界场景测试尚未完全覆盖,计划在Beta阶段继续跟进和优化。 | +| 3 | 试出防人脸编辑、防风格迁移、防定制生成的超参数 | 完成 | 为防人脸编辑、防风格迁移、防定制生成三个任务各自确定了最优的参数配置方案。将最终的超参数配置整理成sh脚本,为后端的快速调用做好了准备,这些成果将成为Beta版本功能扩展的重要技术基础。 | +| 4 | 跑首页样例 | 完成 | 成功制作了系统首页所需的高质量展示样例。为"原理图解"和"论文支持"两个模块准备了具有视觉冲击力的广告图片,清晰呈现了技术原理和学术背景。为"样例预览"模块制作了完整的防人脸学习演示案例,包含人脸加噪处理、模型微调过程展示和最终防护效果验证,充分展现了算法的实际防护能力,有助于用户快速理解系统核心价值。 | +| 5 | git项目整体大整理 | 未完成 | 鉴于本周任务工作量巨大且时间紧张,加之团队决定暂缓Alpha版本的正式发布,改为等待Beta版本开发完成后统一发布最终版本,因此暂时搁置了git仓库的整理工作。版本标记和贡献划分的工作将在Beta版本开发完成后统一进行,这样能够更完整地体现整个项目的演进过程和各成员的贡献。 | +| 6 | 艺术品风格实验和提示词选取 | 完成 | 主导完成了艺术品风格保护功能的可行性测试工作,系统性地测试了不同艺术风格在现有防护算法下的表现。通过大量实验,探索并确定了针对艺术品的最佳prompt构造规则和相应的参数配置方案。 | + +## 对团队工作的建议 + +1. **接口测试必须全面且细致:** 在本周的对接测试过程中,我们在微调模块的3D坐标绘制和热力图任务上遗留了一些边界场景的测试缺陷,这提醒我们前后端对接测试需要更加全面和细致。建议后续在设计接口测试方案时,不仅要覆盖主流程和常见场景,更要重点关注边界条件、异常输入等容易被忽视的场景。 + +## 小结 + +1. **Alpha冲刺,Beta如期推进:** 本周成功完成了Alpha 1.0版本的最后冲刺和验收工作。从模型算法的角度来看,我在API对接、性能测试、并发验证等关键环节投入了大量精力,确保模型相关的所有功能都能够在云环境下稳定运行。虽然在某些细节场景(如3D坐标绘制和热力图任务的边界情况)上还有些许遗漏,但整体来说Alpha版本已经达到了预期的质量标准。 +2. **超参数优化和功能拓展:** 在确保Alpha质量的同时,我也在为Beta版本的功能升级和技术拓展做积极的前期准备。超参数优化实验是本周的核心工作之一——我针对防人脸编辑、防风格迁移、防定制生成三个应用场景,分别在ASPL、simAC、CAAT、PID四种算法的基础上进行了系统性的参数调优,通过大量对照实验找出了各场景的最优配置方案。这些超参数配置已经整理成便捷的sh脚本,直接为后端团队提供了调用接口。与此同时,艺术品风格保护功能的探索也顺利推进,我通过测试不同的艺术风格和prompt构造规则,证实了现有算法在艺术品保护领域的可行性。首页样例的制作虽然看似是一项展示性工作,但实际上帮助最终用户快速理解我们系统的价值。 +3. **深化团队协作:** 本周的工作经历让我们深刻认识到,在快节奏的开发过程中,前后端的紧密配合和全面的测试覆盖是确保产品质量的关键。在与杨逸轩、梁浩、杨博文的多次协调中,我清晰地感受到,不同角色之间的深入沟通能够有效避免理解偏差,加快问题的诊断和解决。同时,本周遗留下来的一些测试缺陷也给了我们一个重要的提醒——系统级的测试不能仅聚焦主流程和常见场景,更要主动深入挖掘边界条件和异常情况,这样才能构建真正稳健的产品。 diff --git a/doc/process/weekly/week-12/members/jinzhibo-weekly-plan-12.md b/doc/process/weekly/week-12/members/jinzhibo-weekly-plan-12.md new file mode 100644 index 0000000..e181b9c --- /dev/null +++ b/doc/process/weekly/week-12/members/jinzhibo-weekly-plan-12.md @@ -0,0 +1,34 @@ +# 个人周计划-第12周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-12-08 + +**结束时间:** 2025-12-15 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端README文档编写与组会文档同步** | 杨逸轩 | 本周我将持续进行文档编写与整理工作:1.结合项目技术架构与运行流程,系统编写前端README文档,包括项目简介、环境配置、启动步骤、目录结构说明及关键功能模块使用说明,确保文档内容准确、结构清晰,为Alpha验收评审提供完整的技术说明材料及时。2.及时参与组会与各种交流会,记录会议要点、任务分工与决策结论,整理并归档会议纪要至项目文档库,确保提交规范,并保障团队信息同步与任务透明跟踪 | +| 2 | **辅助前端视觉优化** | 杨逸轩,胡帆 | 如1.0版本开发顺利,后续我也将参与Alpha 2.0阶段的页面细节调优,协助检查视觉一致性、交互流畅性及响应式适配效果,如团队后续开发需要重新启用vuebits组件库,我会利用此前负责vuebits组件库的技术积累,辅助提供组件使用和技术支持,并积极为前端美术优化提供建议 | +| 3 | **alpha版本验收冲刺与git项目整理** | 全体成员 | 作为前端辅助人员与文档负责人,我将快速熟悉项目整体前端架构与功能模块,为验收阶段可能出现的文档补充、测试支持等工作做好准备,同时我也会配合团队完成git-develop分支的规范化整理工作,检查代码提交记录的规范性、注释完整性,清理冗余文件,协助版本标记与分支合并,为后续版本管理建立良好基础 | + + + +小结 +-- + +**1. 全力投入Alpha验收冲刺,提供专业技术支持**:本周我将集中精力支持团队完成Alpha版本验收,重点在前端模块提供技术支持。基于此前负责vuebits组件库的经验积累,我将协助优化组件使用、界面调优和体验测试,确保系统在验收时达到界面友好、功能可跑的基础目标,为团队冲刺验收提供可靠的前端支持。 + +**2. 持续推进规范化工作,加强项目文档与版本管理**:在验收完成后,我将继续承担文档与版本规范化职责。系统整理git-develop分支,规范提交记录,清理冗余代码,同时完成README文档编写与组会纪要同步归档,为项目后续的版本管理和团队协作建立清晰、规范的基础。 \ No newline at end of file diff --git a/doc/process/weekly/week-12/members/jinzhibo-weekly-summary-11.md b/doc/process/weekly/week-12/members/jinzhibo-weekly-summary-11.md new file mode 100644 index 0000000..d56665e --- /dev/null +++ b/doc/process/weekly/week-12/members/jinzhibo-weekly-summary-11.md @@ -0,0 +1,33 @@ +个人周总结-第11周 +========= + +姓名和起止时间 +------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-12-01 + +结束时间: 2025-12-08 +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------- | -------------------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **职责调整:文档管理与部署测试** | 完成 | 已按计划开展文档整理与测试相关工作:**项目文档整理**:更新了接口文档、系统架构说明等,确保与当前代码版本一致;并向杨博文学习,负责完成组会纪要文档与进度开发文档,为alpha版本验收工作做好准备; **测试用例编写**:针对核心功能模块编写了基础测试用例,为后续测试提供依据; **系统部署验证**:在测试环境中初步验证了部署流程,初步跑通前后端对接并掌握部署方法,为团队后续开发完善与基础测试提供保障。 | +| 2 | **前端样式辅助调优与测试支持** | 基本完成 | 在负责文档整理与测试之余,与杨逸轩、胡帆紧密协作开展前端页面优化工作,主要包括:**样式调优**:协助团队优化整体视觉风格,落实瀑布流与导航栏布局细节,确保符合设计规范与用户体验目标,将前端页面整体升级。**界面测试与反馈**:模拟真实用户操作路径,测试页面跳转与组件交互,同时配合核心API联调任务,提供技术支持并记录测试结果,其中基础业务的闭环已闭环,但报告集成模块受阻,反馈团队进行下一步的决策调优。 | + +**对团队工作的建议 ** + +1. **倡导质量优先,建立透明沟通机制**:临近验收期,建议各位成员在推进各自模块时,坚持以质量与效率为导向,合理规划工作节奏,避免因赶工导致返工。如遇确实无法按时完成的任务,积极及时并如实地反馈,寻求团队共同协商调整方案或重新分工,确保整体进度可控、风险可知。 + +小结 +-- + +1. **角色转换顺利,文档与测试工作有序开展**:本周顺利完成向文档管理及部署测试专员的角色过渡,系统推进了项目文档更新、测试用例编写和环境部署验证等工作,为项目规范化管理提供了有效支持。 +2. **前端协作支持有力,用户体验优化成效明显**:在完成本职工作的同时,积极配合前端团队进行样式调优与交互测试,从用户视角发现并推动解决多处体验细节问题,记录各个测试结果并反馈,助力界面呈现专业、流畅的视觉效果。 + + +--- diff --git a/doc/process/weekly/week-12/members/lianghao-weekly-plan-12.md b/doc/process/weekly/week-12/members/lianghao-weekly-plan-12.md new file mode 100644 index 0000000..5f96c00 --- /dev/null +++ b/doc/process/weekly/week-12/members/lianghao-weekly-plan-12.md @@ -0,0 +1,26 @@ +# 个人周计划-第12周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-08 +**结束时间:** 2025-12-15 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | --------------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | Alpha收尾和验收 | 全体成员 | 12月8日至12月9日,配合完成Alpha1.0版本的最后冲刺,重点支持前端ThreeJS 3D路径图绘制的后端接口开发,确保管理员资源列表等核心功能的后端支撑完备,为验收做好充分准备。 | +| 2 | 前端后端深度对接测试并debug | 杨逸轩、胡帆 | 12月9日至12月15日,与前端团队进行反复上云测试,深度优化前后端对接细节,重点关注多账号并发访问时的数据隔离和系统稳定性,确保Alpha2.0版本的高质量交付。 | +| 3 | 日志功能开发 | 杨博文 | 12月10日至12月13日,设计并实现后端"日志查看"功能的完整接口,包括日志记录策略、查询接口、数据格式规范等,为Beta版本的运维监控能力打下基础,暂不需前端对接但需预留标准化接口。 | +| 4 | 艺术品风格实验后端支持 | 胡帆、杨博文、杨逸轩 | 12月11日至12月15日,根据胡帆的艺术品风格可行性测试结果,在后端实现相应的数据处理和算法适配逻辑,支持系统应用场景从人物肖像拓展到艺术保护领域。 | +| 5 | git项目整体大整理 | 全体成员 | 12月13日至12月15日,配合团队完成git-develop分支的规范化整理,检查后端模块的代码提交记录,确保commit信息清晰、代码注释完整、无冗余文件,为Alpha1.0版本标记做好准备。 | + + +## 小结 + +1. **Alpha1.0收尾冲刺:** 作为Alpha版本验收的关键一周,重点配合完成ThreeJS 3D路径图绘制等核心功能的后端接口开发,确保12月9日验收前所有后端支撑完备。 +2. **Alpha2.0深度优化:** 验收后立即投入Alpha2.0的深度对接测试工作,与前端团队反复进行云端联调,重点解决多账号并发、数据隔离等关键问题,提升系统稳定性。 +3. **Beta功能前瞻布局:** 开始Beta版本的日志功能开发,设计标准化接口和数据格式,为系统运维监控能力奠定基础。同时支持艺术品风格保护功能的后端适配,推动应用场景拓展。 +4. **项目管理规范化:** 严格执行代码规范和版本管理,配合团队完成git项目整理,确保项目结构清晰、协作高效,为长期维护和团队协作奠定良好基础。 diff --git a/doc/process/weekly/week-12/members/lianghao-weekly-summary-11.md b/doc/process/weekly/week-12/members/lianghao-weekly-summary-11.md new file mode 100644 index 0000000..bb3ca98 --- /dev/null +++ b/doc/process/weekly/week-12/members/lianghao-weekly-summary-11.md @@ -0,0 +1,34 @@ +# 个人周总结-第11周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-01 +**结束时间:** 2025-12-08 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | -------- | -------- | -------- | +| 1 | 新库回归测试与缺陷闭环 | 已完成 | 12月1日至4日,完成新版数据库的全面回归测试,编写并执行了核心任务流测试用例(包括任务创建、启动、取消、下载等关键流程)。通过Postman对所有已实现接口进行了系统性测试验证,记录并修复了发现的问题,确保数据库切换后后端服务稳定运行。 | +| 2 | 我的任务图片预览功能实现 | 已完成 | 12月5日,协助杨博文实现"我的资源"页面的图片预览接口,包括任务id查询、配置信息获取、预览图返回等核心功能。接口直接连通生产数据库,能够准确输出任务数据。 | +| 3 | 全量功能 API 文档输出 | 已完成 | 12月2日至5日,系统梳理了所有后端接口(包括认证、任务、图像、报告、配置等模块),为每个接口补充了详细的请求示例、响应样例、错误码说明与调用流程,形成了完整的可共享API对接文档,为前后端协作提供了清晰的技术规范。 | +| 4 | 全量接口联调 | 基本完成 | 12月1日至5日,与前端团队逐项联调所有已暴露接口(认证、任务、图像、报告等),已完成部分核心接口的验证。 | +| 5 | 前端 API 响应支持 | 已完成 | 12月3日至6日,积极响应前端在云端联调过程中的反馈,快速处理了鉴权、限权及跨域等技术问题。保持与前端团队的密切沟通,及时调整API实现,优化数据传输格式,确保alpha验收所需接口全部可用且稳定运行。 | + +## 对团队工作的建议 + +1. **持续推进联调收尾工作:** 虽然大部分接口已完成验证,但建议在下周安排专项时间完成剩余接口的联调收尾,确保所有功能模块在alpha验收前达到稳定状态。 +2. **加强API文档维护机制:** 已输出的API文档需要随着接口变更及时更新,建议建立文档维护规范,避免文档与实际实现脱节。 +3. **保持前后端反馈闭环:** 本周前后端协作节奏良好,建议继续保持这种积极响应的沟通机制,在后续迭代中延续这一协作模式。 + +## 小结 + +1. **数据库回归测试圆满完成:** 本周最重要的成果是完成了新版数据库的全面回归测试,通过系统性的Postman接口测试,验证了所有核心功能流程的稳定性。数据库切换工作已彻底落地,为后续开发奠定了可靠的数据层基础。 + +2. **任务预览功能成功上线:** "我的任务图片预览"功能从设计到实现到联调,一周内完成全链路交付。该功能直接连通生产数据库,为用户提供了便捷的任务数据查看体验,显著提升了系统的易用性。 + +3. **API文档体系建设完成:** 系统梳理并输出了全量API文档,覆盖所有后端接口模块,每个接口都配有详细的请求响应示例和错误码说明。这份文档将成为团队协作的重要技术规范,大幅提升前后端对接效率。 + +4. **前后端协作显著改善:** 相比上周前端反馈不足的问题,本周建立了积极的响应机制,快速处理了联调过程中的各类技术问题。前后端团队保持密切沟通,问题定位和解决效率明显提升,为alpha版本的顺利交付创造了良好条件。 diff --git a/doc/process/weekly/week-12/members/yangbowen-weekly-plan-12.md b/doc/process/weekly/week-12/members/yangbowen-weekly-plan-12.md new file mode 100644 index 0000000..aaa7595 --- /dev/null +++ b/doc/process/weekly/week-12/members/yangbowen-weekly-plan-12.md @@ -0,0 +1,25 @@ +# 个人周计划-第12周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-08 +**结束时间:** 2025-12-15 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | Alpha收尾和验收 | 全体成员 | 在12.09验收前,协助梁浩完成后端API的最终调试和优化,确保所有接口能够稳定响应前端请求。同时参与云测试环节,验证后端服务在云环境下的运行状态,及时发现并修复潜在问题,保障系统在验收时能够正常运行。 | +| 2 | 日志功能 | 梁浩 | 这是本周我的核心开发任务,需要与梁浩协作完成后端"日志查看"功能的接口开发。具体工作包括:实现日志的写入、查询、筛选等核心功能接口,确保日志能够完整记录系统运行状态和用户操作行为。虽然本周前端暂不对接,但需要预留标准化的接口,编写清晰的接口文档,方便后续前端快速集成。 | +| 3 | 艺术品风格实验和提示词选取 | 杨逸轩、胡帆、梁浩 | 配合胡帆进行艺术品风格保护功能的后端适配工作。根据胡帆的实验结果和需求反馈,与梁浩一起在后端实现相应的数据处理逻辑和算法调用接口。需要关注不同艺术风格数据的存储和处理方式,确保后端能够支持新的应用场景。这是Beta版本的重要功能扩展,虽然本周可能无法完全完成,但要为后续开发打好基础。 | +| 4 | git项目整体大整理 | 全体成员 | Alpha1.0完成后,认真检查自己负责模块的代码提交记录,确保commit信息清晰规范、代码注释完整、无冗余文件残留。配合团队完成git-develop分支的整理工作,做好分支合并和版本标记,明确个人贡献划分,为后续的版本管理和代码审查打下良好基础。 | + +## 小结 + +1. **Alpha版本支持与验收:** 本周前期的主要任务是配合团队完成Alpha1.0版本的最后冲刺和验收准备。作为后端开发成员,我需要与梁浩紧密配合,确保后端服务的稳定性和接口的可用性。在云测试环节积极参与,及时响应前端反馈的问题,快速定位和修复后端bug,保障12.09验收顺利通过。 + +2. **日志功能开发:** 日志功能是本周我的核心独立任务,也是Beta版本的重要组成部分。我将与梁浩分工协作,从需求分析、方案设计到代码实现,完整推进日志功能的后端开发工作。重点关注日志记录的完整性、查询的高效性以及接口的规范性,为系统的运维监控能力提供有力支撑。 + +3. **Beta功能预研:** 在完成主要任务的同时,我会配合胡帆进行艺术品风格保护功能的后端预研工作。根据算法实验的进展,提前思考后端的数据处理和接口设计方案,为Beta版本的功能扩展做好技术准备。 diff --git a/doc/process/weekly/week-12/members/yangbowen-weekly-summary-11.md b/doc/process/weekly/week-12/members/yangbowen-weekly-summary-11.md new file mode 100644 index 0000000..360d2bd --- /dev/null +++ b/doc/process/weekly/week-12/members/yangbowen-weekly-summary-11.md @@ -0,0 +1,29 @@ +# 个人周总结-第11周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-01 +**结束时间:** 2025-12-08 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | -------- | -------- | -------- | +| 1 | 后端API收尾与文档完善 | 已完成 | 12月1日至2日,配合梁浩完成了核心API(用户认证、图像处理、模型调用、结果下载)的最终暴露与测试,同步整理并校验了接口文档,确保字段定义、状态码、错误码完整准确。12月3日至5日,作为后端侧技术接口人,积极响应前端联调问题,快速定位并修复了参数缺失、响应结构不符等问题。12月6日,参与端到端集成验证,保障后端服务在Alpha整合中稳定可用。 | +| 2 | 主导后端代码规范性修复 | 未完成 | 经评估,代码规范性修复工作量较大,且当前阶段Alpha版本交付优先级更高,故将此任务延后处理。后续将在功能稳定后,依据Google Python Style Guide进行统一整改。 | +| 3 | Git协作流程落地与监督 | 已完成 | 本周在个人开发中严格执行"develop → personal-branch → PR → review → merge"流程,协助组内成员排查Git冲突、规范commit message。每日同步develop分支,确保本地环境与主干一致,有效减少了集成风险,团队Git协作规范性显著提升。 | + +## 对团队工作的建议 + +1. **接口文档需持续维护:** 本周输出的API文档在联调中发挥了重要作用,建议后续接口变更时同步更新文档,保持文档与实现的一致性。 +2. **代码规范整改可分批推进:** 代码规范性修复工作量较大,建议在Alpha验收后按模块分批整改,避免一次性改动过大引入风险。 + +## 小结 + +1. **后端API全面交付:** 完成了用户认证、图像处理、模型调用、结果下载等核心API的收尾与测试,接口文档同步完善,为Alpha版本集成提供了稳定的后端支撑。 + +2. **联调问题快速响应:** 作为后端技术接口人,及时处理了前端联调中的参数、响应结构等问题,保障了端到端集成验证顺利完成。 + +3. **Git流程规范落地:** 团队分支管理和代码合并流程执行到位,协作效率提升,集成风险有效降低。 diff --git a/doc/process/weekly/week-12/members/yangyx-weekly-plan-12.md b/doc/process/weekly/week-12/members/yangyx-weekly-plan-12.md new file mode 100644 index 0000000..b6cb7c9 --- /dev/null +++ b/doc/process/weekly/week-12/members/yangyx-weekly-plan-12.md @@ -0,0 +1,45 @@ +个人周计划-第12周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-08 + +**结束时间:** 2025-12-15 + +本周任务计划安排 +-------- + +本周任务聚焦于 **Alpha 版本的最终交付和验收准备 (12.09)**,随后过渡到 **Beta 版本的技术准备**。 + +| **序号** | **计划内容** | **协作人** | **预计完成时间** | **情况说明** | +| ------ | ------------------------ | ------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **1** | **Alpha 核心功能联调攻坚(收尾阶段)** | 梁浩、胡帆 | **12.09 上午** | **首要任务:** 针对第 11 周未完成的 **报告与可视化 API** 进行集中联调。确保后端能稳定返回以下数据:
1. **图像指标数据** (FID/SSIM/PSNR/LPIPS) 的结构化数据。
2. **ThreeJS 3D 路径图** 所需的动态轨迹数据。 | +| **2** | **关键 UI 与可视化组件开发** | 胡帆 | **12.09 中午** | **前端核心功能实现:**
1. 完成 **ThreeJS 3D 路径图** 的数据接收与前端渲染,确保在不同数据量下的流畅展示。
2. 实现 **前端管理员/我的资源** 页面的大列表结构和基础数据展示,完成 Alpha 版本的用户界面闭环。 | +| **3** | **Alpha 版本功能验收与 UI 优化** | 全体成员 | **12.09 下午** | 1. **UI 细节优化:** 针对 Alpha 版本的所有页面进行最终的 UI 杂碎元素清理、冗余代码移除,并仔细检查所有文字提示和功能反馈的正确性(对应小组计划 1.2)。
2. **联合云测试:** 协助梁浩完成前后端代码的云端部署,并进行端到端全功能测试,及时修复发现的兼容性 Bug(对应小组计划 1.4)。 | +| **4** | **前端 README 文档撰写** | 金郅博 | **12.10** | 配合金郅博,提供前端核心技术栈、组件结构、关键逻辑、API 接口定义以及云部署流程等关键信息,共同完成 **前端 README 文档** 的编写和校对,作为 Alpha 验收的重要交付物(对应小组计划 8)。 | +| **5** | **Beta 版本核心功能技术预研** | 个人 | **12.11 - 12.15** | 在 Alpha 验收通过后,将工作重心转移至 Beta 版本。基于第 11 周的初步预研成果,深入设计 **噪声强度可调节组件** 的前端交互逻辑和代码实现方案,为 Beta 迭代做好技术准备。 | +| **6** | **团队开发文档支持** | 杨博文 | **12.11 - 12.15** | 协助杨博文,根据 Alpha 版本最终确定的系统架构和接口参数,校对和更新相关的 UML 设计图和 API 文档描述,确保文档的准确性。 | + +小结 +-- + +1. Alpha 验收冲刺与核心交付物: + +本周最重要的目标是确保 Alpha 版本的顺利交付。结合小组计划和第 11 周的联调反馈,目前最大的阻塞点仍在于 可视化数据接口(3D 路径、评估指标)的联调和前端渲染。必须在 12 月 9 日上午锁定并完成这部分工作,以确保报告页面的核心价值得以体现。 + +2. 角色固化与高效协作: + +在 12.09 验收阶段,确保 UI 细节(任务 3.1)和云端联测(任务 3.2)的可靠性。 + +3. 后 Alpha 版本的重心转移: + +Alpha 验收后,工作重心应立即转向 Beta 版本预研。需要利用剩余时间,将前期关于 “噪声强度可调节” 功能的调研成果转化为具体的前端交互原型和组件代码设计(任务 5),提前解决 Beta 版本的技术难点,保持项目开发的持续迭代动力。 + +4. 文档闭环支持: + +配合金郅博和杨博文,完成前端 README 文档的输出和设计文档的校对。这不仅是验收的硬性要求,也是对 Alpha 阶段开发成果的系统性总结。 diff --git a/doc/process/weekly/week-12/members/yangyx-weekly-summary-11.md b/doc/process/weekly/week-12/members/yangyx-weekly-summary-11.md new file mode 100644 index 0000000..c78b487 --- /dev/null +++ b/doc/process/weekly/week-12/members/yangyx-weekly-summary-11.md @@ -0,0 +1,41 @@ +个人周总结-第11周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-01 + +**结束时间:** 2025-12-08 + +## 本周任务完成情况 + +本周是 Alpha 版本交付前的最后冲刺周,工作重心集中在前后端联调和核心功能收尾上。 + +| **序号** | **计划内容** | **协作人** | **完成情况** | **成果或说明** | +| ------ | --------------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | **Alpha 遗留功能开发与前端代码规范化** | 胡帆 | **完成** | **功能补齐与基础建设:** 成功完成了 Alpha 版本中缺失的核心 UI 组件开发(如任务详情页基础框架、结果展示基础样式)。正式接任前端核心角色后,主导完成了前端代码的首次规范化和清理工作,统一了组件命名和目录结构,为联调和后续迭代奠定了稳定基础。 | +| 2 | **核心 API 联调冲刺(阶段一:基础业务)** | 梁浩, 胡帆 | **完成** | **核心闭环实现:** 优先与后端团队协作,成功完成了最关键的业务流程联调。包括:**图片上传、调用加噪算法接口、基础加噪结果(加噪图与频率对比图)的返回与展示**。实现了从用户上传到接收基础结果的完整功能闭环。 | +| 3 | **核心 API 联调冲刺(阶段二:报告与可视化)** | 胡帆, 金郅博 | **未完成** | **报告模块集成受阻:** 计划联调的报告生成和指标可视化(FID/SSIM/PSNR/3D动态图)接口未能完成集成。主要原因为:后端生成报告数据和可视化数据的接口仍在优化阶段,**数据格式和返回逻辑尚未最终稳定**,无法进行可靠的前端对接。此任务将作为下周的首要任务进行攻坚。 | +| 4 | **Alpha 版本功能验收与 UI 优化** | 全体成员 | **部分完成** | **局部验收:** 针对已联调成功的核心业务(任务1和任务2)进行了初步的功能验收和 Bug 修复,修复了联调过程中发现的 3 个前端兼容性 Bug,并优化了上传流程的交互反馈。**但由于报告模块未完成(任务3),全面端到端的功能验收工作无法彻底展开。** | +| 5 | **下周计划准备与技术预研** | 个人 | **完成** | 撰写了本周总结,并明确了下一周的首要目标为攻克未完成的报告模块联调。同时,利用联调间隙提前调研了 Beta 版本中的**噪声强度可调节**组件的技术方案,为下一阶段的开发做好了技术储备。 | + +总结与反思 +----- + +本周工作实现了 Alpha 版本交付最重要的里程碑:**核心业务流程的联调闭环**,确保了系统的基础可用性。通过第一阶段的联调(任务 2),我们成功验证了图片上传、算法调用和基础结果展示的链路,这是对前期工作成果的关键验收。 + +然而,由于后端报告生成模块的复杂性和时间压力,原计划的**高级功能联调(任务 3)未能按时完成**,导致 Alpha 版本功能验收(任务 4)受限。 + +**明确的待办和反思:** + +1. **首要目标转移:** 下周初必须将所有精力集中于报告与可视化接口的联调,确保所有指标数据能可靠传输至前端。 + +2. **前端职能深化:** 在完成联调后,将立刻投入到报告数据的渲染与图表绘制工作,确保动态三维图表的性能和视觉效果达到交付标准。 + +3. **时间管理:** 联调工作的不确定性较高,今后需在计划中预留更多弹性时间,以应对接口变动或数据格式不兼容等问题。 + +总的来说,本周成功完成了 70% 的核心目标,但需在下周初迅速补齐剩余的 30%,以实现 Alpha 版本的完整交付。 diff --git a/doc/process/weekly/week-13/group/meeting-minutes-13.md b/doc/process/weekly/week-13/group/meeting-minutes-13.md new file mode 100644 index 0000000..4a509c4 --- /dev/null +++ b/doc/process/weekly/week-13/group/meeting-minutes-13.md @@ -0,0 +1,45 @@ +# 小组会议纪要-第13周 + +## 会议记录概要 + +**团队名称:** 2班-深度思考 +**指导老师:** 刘琴 +**主 持 人:** 胡帆 +**记录人员:** 金郅博 +**会议主题:** 第十二周情况总结、第十三周开发任务部署、班会展示准备与Beta版本规划 +**会议地点:** 中楼211 +**会议时间:** 2025-12-15 11:40-12:20 +**纪录时间:** 2025-12-15 20:00 +**参与人员:** 胡帆、梁浩、杨博文、金郅博、杨逸轩 + +## 会议内容 + +### 一、本周核心任务聚焦 + +本周面临周三班会、周五计网班会、下周三前后端考核三次重要节点,时间非常紧张。经团队讨论,聚焦以下三大主线任务: + +1.**班会展示与规范性检查(周三前完成)**:前端完成界面全面优化(响应式布局、配色方案),后端完成代码规范化检查,周三向老师和同学展示完善的alpha版本成果。 + +2.**Beta 0.5功能适配与对接(全周推进)**:后端适配模型组交付的Beta 0.5功能(超参数配置、prompt映射),前端对接Beta新增功能(样例图展示、任务配置选择、日志查看)及Alpha遗留模块(3D坐标图、登录注册页面)。 + +3.**文档管理与进度规划**:文书组完成组会纪要、周总结编写,完成UML图绘制,并制作班会PPT,适当放缓Beta迭代速度以确保核心任务质量。 + +### 二、任务分解与执行安排 + +| 序号 | 任务内容 | 负责人 | 关键时间节点 | 主要职责说明 | +| :--- | :---------------------------- | :----------- | :----------- | :----------------------------------------------------------- | +| 1 | **前端界面全面优化** | 杨逸轩 | 12.17前 | 完成响应式布局适配(超大分辨率、不同屏幕比例、触屏滑动交互),优化UI配色方案(改善大面积纯白设计),确保班会演示时展现专业、精致的前端效果 | +| 2 | **Beta功能前端对接** | 杨逸轩 | 12.18-12.22 | 完成Alpha遗留的3D坐标图绘制和登录注册页面设计测试,对接Beta 0.5新增功能(样例图展示、任务配置选择、日志查看接口),采用边开发边测试的迭代方式 | +| 3 | **后端Beta 0.5适配与API暴露** | 梁浩 | 12.17前 | 维护008号机器稳定运行,在010号机器完成Beta 0.5功能适配(超参数配置管理、prompt映射机制),暴露新增API接口供前端调用 | +| 4 | **后端规范性检查** | 杨博文 | 12.17前 | 对010机器后端代码进行规范化检查和修正,整理后端架构文档、API规范和代码规范执行情况,准备班会展示材料 | +| 5 | **首页展示图生成** | 胡帆 | 12.17前 | 生成首页广告展示所需的三种不同风格艺术品加噪效果图,更新和测试微调模块相关超参数配置 | +| 6 | **Beta 0.5对接技术指导** | 胡帆 | 12.18-12.22 | 为前后端对接提供技术指导,协助前端理解模型算法输入输出规范,参与UI设计细节优化讨论,分担前端开发压力 | +| 7 | **会议文档管理与班会PPT制作** | 金郅博 | 全周 | 整理组会纪要并归档,编写第13周小组周总结,深入学习前后端源代码,制作班会PPT展示团队技术成果和项目进展,并协助UML图的绘制与校对 | +| 8 | **后端代码深度规范化** | 梁浩、杨博文 | 12.18-12.22 | 协作推进后端代码全面规范化(代码结构优化、注释完善、命名统一),响应前端对接过程中的技术问题 | + +### 三、上周总结+本周待改进问题 + +1. **Alpha遗留问题需尽快收尾**:上周云端测试深度不足,仍存在零星兼容性问题;微调模块在3D坐标绘制和热力图任务中的部分边界场景接口测试尚未完全覆盖;登录注册页面尚未完成。本周需在Beta对接过程中一并解决这些遗留问题。 +2. **前端UI需重点突破**:目前前端页面配色过于单调(大面积纯白),响应式适配不够完善,需在班会前完成视觉效果的全面提升,展现专业的前端工程能力。 +3. **后端规范性需系统整理**:后端代码规范化工作在Alpha阶段被战略性延后,本周需集中精力完成代码结构优化和文档整理,确保通过班会的规范性检查。 +4. **合理控制迭代节奏**:本周时间紧张,团队决定适当放缓Beta功能迭代速度,将部分复杂功能延后至第14-15周,确保核心任务质量。项目仅剩VIP充值、快速匹配算法、软件测试报告三个关键模块即可达到可交付状态。 diff --git a/doc/process/weekly/week-13/group/weekly-plan-13.md b/doc/process/weekly/week-13/group/weekly-plan-13.md new file mode 100644 index 0000000..772a31e --- /dev/null +++ b/doc/process/weekly/week-13/group/weekly-plan-13.md @@ -0,0 +1,25 @@ +# 小组周计划-第13周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-15 +**结束时间:** 2025-12-22 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 前端界面全面优化与Beta功能对接 | 杨逸轩 | **12.15-12.17(周三前):** 完成前端界面的全面优化工作,重点聚焦响应式布局适配(包括超大分辨率、不同屏幕比例和触屏滑动交互)和UI配色方案优化(改善当前大面积纯白设计,提升视觉舒适度),确保班会演示时能够展现专业、精致的前端效果。**12.18-12.22:** 与后端团队紧密配合,推进Beta版本功能的全面测试与集成,包括Alpha阶段遗留的3D坐标图绘制和登录注册页面的设计与测试,以及Beta 0.5新增功能(样例图展示的实际调用、不同任务配置选择的Beta 0.5标准更新、日志查看接口对接等)。采用边开发边对接测试的迭代方式,及时发现并解决前后端联调问题。 | +| 2 | 后端Beta 0.5适配与API暴露 | 梁浩 | **12.15-12.17(周三前):** 维护008号机器稳定运行以支持Alpha版本的持续测试,同时在后端010号机器上完成模型组上周交付的Beta 0.5功能适配工作,包括超参数配置管理、prompt映射机制的全面跟进和集成,并按照Beta版本需求暴露新增的API接口,确保前端能够顺利调用Beta特有功能。**12.18-12.22:** 与杨博文协作推进后端代码的全面规范化工作,包括代码结构优化、注释完善、命名统一等,并积极响应前端团队在对接过程中遇到的各类技术问题,提供快速的问题定位和解决方案。 | +| 3 | 后端规范性检查与班会展示准备 | 杨博文 | **12.15-12.17(周三前):** 对010机器的后端代码进行初步规范化设计和全面检查,重点修正代码中不符合团队规范和Python最佳实践的部分,确保代码质量达到班会后端规范性检查的要求。整理后端架构设计文档、API接口规范和代码规范执行情况,准备班会展示材料,向老师和同学展示团队在后端工程化方面的成果。**12.18-12.22:** 继续与梁浩合作推进后端代码的深度规范化工作,并协助前端团队解决对接过程中的后端相关问题。 | +| 4 | 首页展示图生成与Beta 0.5对接指导 | 胡帆 | **12.15-12.17(周三前):** 模型组负责生成首页广告展示所需的三种不同风格的高质量艺术品加噪效果图,用于系统首页的视觉呈现和功能演示。同时更新和测试现有的超参数配置(特别是微调模块的相关参数),通过实验优化参数组合,使加噪效果更加符合艺术品防护的实际需求和美学标准。**12.18-12.22:** 为Beta 0.5版本的前后端对接工作提供技术指导,特别是协助前端团队理解模型算法的输入输出规范,参与UI设计的细节优化讨论(如参数配置界面的用户体验设计、结果展示的视觉呈现等),分担前端开发压力,确保模型功能能够通过友好的界面准确传达给用户。 | +| 5 | 会议文档管理与班会PPT制作 | 金郅博 | **全周任务:** 负责本周一组会的会议记录文档整理和归档,以及第13周小组周总结文档的编写工作,确保团队工作进展的完整记录和知识沉淀。深入学习和理解develop分支上的前后端源代码,掌握系统架构和核心功能实现原理,为周三班会制作高质量的PPT演示文稿,清晰展示团队的技术成果、开发规范和项目进展。今后每周的小组周总结文档和性能测试报告均由金郅博主导完成,杨博文提供辅助支持。 | +| 6 | Beta迭代进度管理与功能规划 | 全体成员 | 本周事情很多(周三班会、周五计网班会、下周三前后端考核),时间非常紧张。为确保核心任务的质量和团队成员的合理负荷,团队决定适当放缓Beta版本的迭代速度,将部分功能(如复杂的可视化优化、高级配置选项等)战略性延后至第14周周末或第15周完成。如果本周任务顺利完成,项目将仅剩三个关键功能模块:VIP充值界面开发、快速匹配算法实现、软件测试报告编写。完成这三项后,系统即达到可交付状态。若时间允许,团队将考虑进行以下优化:UI排版与交互优化、允许游客浏览并在运行任务时弹出登录注册页面、进度条和日志展示的前端样式优化、轮询管理机制优化等。 | + +## 小结 + +1. **班会演示前后端规范性:** 本周三的班会是一个重要的阶段性展示节点,我们需要向老师和同学们呈现团队在开发规范化方面的努力和成果。杨逸轩将展示经过全面优化的前端界面,重点突出响应式设计的完善程度和UI美学的提升,让大家看到我们对用户体验的重视和专业的前端工程能力。杨博文将展示后端代码的规范化成果,包括清晰的代码结构、完善的API文档、统一的编码风格等。 + +2. **Beta 0.5适配:** Beta 0.5版本是Alpha版本向完整Beta版本过渡的关键阶段,涉及到模型功能的深度集成和用户体验的全面提升。梁浩在010号机器上适配模型组交付的Beta 0.5功能,将超参数配置和prompt映射等高级特性融入后端系统,并暴露相应的API接口,为前端提供更丰富的功能调用能力。杨逸轩在前端对接这些新功能,不仅要完成Alpha阶段遗留的3D坐标图和登录注册模块,还要实现样例图展示、任务配置选择、日志查看等Beta 0.5的新增功能。胡帆从模型角度提供技术指导,确保前后端对模型功能的理解和实现是一致的。 +3. **文档跟进与进度规划:** 金郅博本周承担起文档管理的重要职责,不仅要记录各类会议的讨论内容和决策结果,还要编写小组周总结,为团队的工作历程留下完整的记录。通过深入学习前后端源码,金郅博能够更好地理解系统架构,为制作高质量的班会PPT和后续的测试报告编写打下基础。在进度规划方面,我们这周采取了更加务实的策略——面对三次重要会议的时间压力,主动放缓了部分Beta功能的迭代速度,将资源集中在核心任务上。 diff --git a/doc/process/weekly/week-13/group/weekly-summary-12.md b/doc/process/weekly/week-13/group/weekly-summary-12.md new file mode 100644 index 0000000..df60302 --- /dev/null +++ b/doc/process/weekly/week-13/group/weekly-summary-12.md @@ -0,0 +1,28 @@ +# 小组周总结-第12周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-08 +**结束时间:** 2025-12-15 + +## 本周任务完成情况 + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| :--- | :--------------------------------------------- | :------- | :----------------------------------------------------------- | +| 1 | Alpha收尾和验收 | 完成 | 在全体成员的全力配合下,于12.09验收前完成了Alpha1.0版本的最后冲刺。胡帆主导模型API与前端的对接测试,特别是ThreeJS 3D路径图绘制功能的数据格式适配;梁浩提供坐标数据接口支持并完善管理员资源列表后端接口;杨逸轩与梁浩、胡帆成功完成报告与可视化API的最终联调,确保图像指标数据(FID/SSIM/PSNR/LPIPS)和3D路径图动态轨迹数据能够稳定输出;杨博文配合梁浩完成后端API调试优化并参与云测试;金郅博快速熟悉整体前端架构,配合完成验收文档补充。系统在验收时运行稳定,顺利通过。 | +| 2 | 前端后端深度对接测试并debug | 基本完成 | 杨逸轩、胡帆、梁浩三位核心成员进行了多轮密集的云端联调测试。梁浩重点优化了多账号并发访问时的数据隔离机制,修复了任务队列重复执行、父子图片关系匹配、自定义提示词传递等多个关键bug;胡帆监控模型推理速度、结果准确性和资源占用情况,多用户并发场景下模型服务运行稳定;杨逸轩完成所有页面的UI细节优化、冗余元素清理和文字提示检查。此外的遗留问题有:云端仍存在零星兼容性问题,部分边界场景测试尚未完全覆盖,计划在Beta阶段继续跟进优化。 | +| 3 | 试出防人脸编辑、防风格迁移、防定制生成的超参数 | 完成 | 胡帆在ASPL、simAC、CAAT、PID四种算法基础上,针对防人脸编辑、防风格迁移、防定制生成三个任务分别进行了系统性的参数调优实验。通过大量对照实验,为每个应用场景确定了最优的超参数配置方案,并将最终配置整理成便捷的sh脚本交给后端团队,为Beta版本的功能扩展提供了重要的技术基础。 | +| 4 | 跑首页样例 | 完成 | 胡帆成功制作了系统首页所需的高质量展示样例。为"原理图解"和"论文支持"两个模块准备了具有视觉冲击力的广告图片,清晰呈现技术原理和学术背景;为"样例预览"模块制作了完整的防人脸学习演示案例,包含人脸加噪处理、模型微调过程展示和最终防护效果验证,充分展现算法的实际防护能力,帮助用户快速理解系统核心价值。 | +| 5 | git项目整体大整理 | 基本完成 | 梁浩检查并优化了后端模块的代码结构,规范commit信息格式,补充关键代码注释,清理冗余文件和无效配置;杨博文认真检查了自己负责模块的代码提交记录,确保commit信息清晰规范、代码注释完整、无冗余文件残留;金郅博协助团队清理冗余文件,检查提交记录与注释完整性。鉴于团队决定暂缓Alpha版本的正式发布、等待Beta版本开发完成后统一发布最终版本,版本标记和贡献划分工作将在Beta版本开发完成后统一进行。 | +| 6 | 艺术品风格实验和提示词选取 | 基本完成 | 胡帆主导完成了艺术品风格保护功能的可行性测试,系统性测试了不同艺术风格在现有防护算法下的表现,探索并确定了针对艺术品的最佳prompt构造规则和参数配置方案;梁浩在数据库中扩展了艺术品数据类型(art),配置了对应的提示词模板(`a painting in sks style`),并在加噪和微调算法中实现了数据类型的自动适配逻辑;杨博文配合进行后端适配工作,完成基础框架搭建。该功能成功将系统应用场景从人物肖像拓展到艺术保护领域。 | +| 7 | 日志功能 | 完成 | 梁浩与杨博文协作完成了后端"日志查看"功能的完整开发。梁浩设计并实现了基于任务ID的日志查询接口(`GET /api/task//logs`),实现日志文件的自动管理和清理策略,支持实时查看算法执行日志;杨博文实现了日志的写入、查询、筛选等核心功能接口。接口已完成测试并集成到API文档,预留了标准化接口方便后续前端快速集成,为Beta版本的运维监控能力奠定了基础。 | +| 8 | README文档编写 | 完成 | 金郅博与杨逸轩协作完成前端README文档的编写工作。金郅博完成文档主体框架搭建,包括项目简介、环境配置、启动流程及目录结构等核心部分;杨逸轩提供了前端核心技术栈、组件结构、API接口定义、云部署流程等详尽材料,顺利完成文档主要内容撰写和校对。高质量的README文档作为Alpha验收的重要交付物,为代码检查提供了清晰的指引。 | +| 9 | 组会文档同步 | 完成 | 金郅博按时参与小组每周会议与验收会议,及时整理讨论要点、决策事项、任务分配等关键信息,完成会议纪要的记录、整理与归档工作,确保团队信息同步与任务跟踪透明。同时辅助后端进行系统类图的绘制,发现了面向对象方法使用不够的问题,后续将根据后端代码的补充优化来进行类图的优化。 | + +## 小结 + +1. **Alpha版本顺利收官:** 团队在12.09验收前完成了Alpha1.0版本的最后冲刺。收尾阶段重点突破的核心环节包括:ThreeJS 3D路径图的数据接口对接与前端渲染、报告页图像指标数据(FID/SSIM/PSNR/LPIPS)的稳定输出与展示、管理员和我的资源页面的大列表功能、多账号并发访问的数据隔离机制优化,修复任务队列重复执行和父子图片关系匹配的底层代码bug。其中的遗留问题将作为beta版本的优化目标,例如云端测试深度不足,仍存在零星兼容性问题;微调模块在3D坐标绘制和热力图任务中的部分边界场景接口测试尚未完全覆盖,计划在Beta阶段继续跟进优化。 +2. **Beta版本开发有序推进:** 在确保Alpha版本交付的同时,团队也在积极推进Beta版本的开发工作。胡帆完成了防人脸编辑、防风格迁移、防定制生成三大场景的超参数优化实验,并输出sh脚本供后端调用;艺术品风格保护功能完成可行性验证,后端的数据结构扩展与算法适配工作同步完成,从而将该项技术的应用范畴从最初的人物肖像保护拓展至艺术珍品领域;日志查看功能上线,实现基于任务ID的日志查询接口;前端方面,杨逸轩完成噪声强度可调节组件的初步设计与核心代码实现。这些工作为Beta版本功能扩展奠定了技术基础。 +3. **文档与规范化工作稳步推进:** 前端README文档已具备完整框架,涵盖项目简介、环境配置、启动流程等核心内容;组会会议纪要及时整理归档,确保团队信息同步透明;git项目完成规范化整理,代码结构清晰、commit信息规范、冗余文件已清理。鉴于团队决定暂缓Alpha版本正式发布、等待Beta版本完成后统一发布,版本标记和贡献度划分工作将在Beta开发完成后统一进行,以便更完整地体现项目演进和各成员贡献。 +4. **团队协作模式优化,开发效率提升:** 本周团队采用集中办公、协同开发的工作模式,前后端成员实时沟通、同步联调,问题反馈与响应周期大幅缩短,有效避免了远程协作中的信息延迟和理解偏差。这种紧密协作的方式让我们一周内高效完成了多个底层问题的定位和修复,开发效率明显提升。 diff --git a/doc/process/weekly/week-13/members/hufan-weekly-plan-13.md b/doc/process/weekly/week-13/members/hufan-weekly-plan-13.md new file mode 100644 index 0000000..28ea13c --- /dev/null +++ b/doc/process/weekly/week-13/members/hufan-weekly-plan-13.md @@ -0,0 +1,22 @@ +# 个人周计划-第13周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-15 +**结束时间:** 2025-12-22 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 首页展示图生成与超参数优化 | 本人 | **12.15-12.17(周三前):** 使用当前优化的模型生成首页展示所需的三种不同风格的高质量艺术品加噪效果图,用于系统首页的视觉呈现和功能演示。这些展示图需要充分展现模型算法的加噪效果,为用户直观呈现系统的核心功能和美学效果。同时进行现有超参数配置的全面检查和优化工作,特别是微调模块相关参数的细致调整。 | +| 2 | Beta 0.5版本技术指导与UI设计协助 | 杨逸轩 | **12.18-12.22:** 为Beta 0.5版本的前后端对接工作提供全方位的技术指导,从模型算法的输入输出规范、参数配置的理论依据、结果解释的准确性等方面把控,确保前后端对模型功能的理解是准确一致的。协助前端团队进行UI设计优化,参与讨论如何通过友好的界面准确传达模型参数的含义、使用方法和结果意义,特别是针对超参数配置界面、结果展示界面等关键交互场景的设计方案提供建议。 | +| 3 | 班会技术内容支持 | 杨博文、金郅博 | **12.15-12.17(周三前):** 准备班会演示所需的模型部分技术说明,包括Beta 0.5新增功能的工作原理、超参数优化的效果展示、首页广告图的生成方法等。通过清晰的讲解和直观的效果展示,让老师和同学们了解模型组在功能增强和效果优化方面所做的工作,为团队的整体班会展示贡献模型的技术亮点。 | +| 4 | 模型功能与前端交互的协调优化 | 杨逸轩、梁浩 | **全周任务:** 在前后端对接测试过程中,及时针对前端提出的模型相关问题进行解答和支持,确保用户界面中展示的模型参数说明、功能描述、使用指引等内容准确无误。如发现模型算法在特定场景下的表现与预期不符,与梁浩协作进行问题诊断和参数调整,确保最终交付给用户的产品兼具高效能和易用性。 | + +## 小结 + +1. **协调Beta 0.5前后端对接:** Beta 0.5版本是项目从Alpha向完整Beta演进的关键阶段,涉及到模型功能的深度集成和用户体验的全面升级。本周我需要从模型角度为前后端的紧密协作搭建桥梁——一方面深入参与前端对接工作,帮助杨逸轩和杨博文理解模型的输入输出规范、超参数的含义和调整空间,确保他们在实现功能时能够准确把握模型的能力边界;另一方面也要和梁浩保持沟通,对后端接口的数据结构、参数传递的机制等提出模型角度的需求,确保暴露的API能够充分满足前端的调用需求。 +2. **跑出首页广告大图:** 首页展示图是用户对系统的第一印象,也是系统核心价值的直观呈现。本周需要生成三种不同风格的高质量艺术品加噪效果图。我需要在现有超参数基础上进行系统的微调和优化,通过反复的实验验证找到最能展现效果的参数组合。特别是对微调模块的超参数要花更多心思,力求使最终呈现出来的效果既能真实反映艺术品的纹理和特性,又能充分展示防护算法的有效性。 diff --git a/doc/process/weekly/week-13/members/hufan-weekly-summary-12.md b/doc/process/weekly/week-13/members/hufan-weekly-summary-12.md new file mode 100644 index 0000000..3561730 --- /dev/null +++ b/doc/process/weekly/week-13/members/hufan-weekly-summary-12.md @@ -0,0 +1,29 @@ +# 个人周总结-第12周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-08 +**结束时间:** 2025-12-15 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | Alpha收尾和验收 | 完成 | 按时完成Alpha 1.0版本的最后冲刺工作。重点投入在模型API与前端的对接测试上,特别是ThreeJS 3D路径图绘制功能的数据格式适配,确保算法输出能够正确被前端可视化展现。完成了云环境下的整体验收测试,系统功能运行稳定,模型相关功能表现符合预期。 | +| 2 | 前端后端深度对接测试并debug | 基本完成 | 与杨逸轩和梁浩进行了多轮密集的上云测试和问题调试。重点监控模型推理速度、结果准确性和资源占用情况,所有核心功能的对接测试均已通过。多用户并发场景下模型服务运行稳定,未发现资源竞争或数据混淆问题。遗留问题:微调模块在3D坐标绘制和热力图任务中的部分边界场景测试尚未完全覆盖,计划在Beta阶段继续跟进和优化。 | +| 3 | 试出防人脸编辑、防风格迁移、防定制生成的超参数 | 完成 | 为防人脸编辑、防风格迁移、防定制生成三个任务各自确定了最优的参数配置方案。将最终的超参数配置整理成sh脚本,为后端的快速调用做好了准备,这些成果将成为Beta版本功能扩展的重要技术基础。 | +| 4 | 跑首页样例 | 完成 | 成功制作了系统首页所需的高质量展示样例。为"原理图解"和"论文支持"两个模块准备了具有视觉冲击力的广告图片,清晰呈现了技术原理和学术背景。为"样例预览"模块制作了完整的防人脸学习演示案例,包含人脸加噪处理、模型微调过程展示和最终防护效果验证,充分展现了算法的实际防护能力,有助于用户快速理解系统核心价值。 | +| 5 | git项目整体大整理 | 未完成 | 鉴于本周任务工作量巨大且时间紧张,加之团队决定暂缓Alpha版本的正式发布,改为等待Beta版本开发完成后统一发布最终版本,因此暂时搁置了git仓库的整理工作。版本标记和贡献划分的工作将在Beta版本开发完成后统一进行,这样能够更完整地体现整个项目的演进过程和各成员的贡献。 | +| 6 | 艺术品风格实验和提示词选取 | 完成 | 主导完成了艺术品风格保护功能的可行性测试工作,系统性地测试了不同艺术风格在现有防护算法下的表现。通过大量实验,探索并确定了针对艺术品的最佳prompt构造规则和相应的参数配置方案。 | + +## 对团队工作的建议 + +1. **接口测试必须全面且细致:** 在本周的对接测试过程中,我们在微调模块的3D坐标绘制和热力图任务上遗留了一些边界场景的测试缺陷,这提醒我们前后端对接测试需要更加全面和细致。建议后续在设计接口测试方案时,不仅要覆盖主流程和常见场景,更要重点关注边界条件、异常输入等容易被忽视的场景。 + +## 小结 + +1. **Alpha冲刺,Beta如期推进:** 本周成功完成了Alpha 1.0版本的最后冲刺和验收工作。从模型算法的角度来看,我在API对接、性能测试、并发验证等关键环节投入了大量精力,确保模型相关的所有功能都能够在云环境下稳定运行。虽然在某些细节场景(如3D坐标绘制和热力图任务的边界情况)上还有些许遗漏,但整体来说Alpha版本已经达到了预期的质量标准。 +2. **超参数优化和功能拓展:** 在确保Alpha质量的同时,我也在为Beta版本的功能升级和技术拓展做积极的前期准备。超参数优化实验是本周的核心工作之一——我针对防人脸编辑、防风格迁移、防定制生成三个应用场景,分别在ASPL、simAC、CAAT、PID四种算法的基础上进行了系统性的参数调优,通过大量对照实验找出了各场景的最优配置方案。这些超参数配置已经整理成便捷的sh脚本,直接为后端团队提供了调用接口。与此同时,艺术品风格保护功能的探索也顺利推进,我通过测试不同的艺术风格和prompt构造规则,证实了现有算法在艺术品保护领域的可行性。首页样例的制作虽然看似是一项展示性工作,但实际上帮助最终用户快速理解我们系统的价值。 +3. **深化团队协作:** 本周的工作经历让我们深刻认识到,在快节奏的开发过程中,前后端的紧密配合和全面的测试覆盖是确保产品质量的关键。在与杨逸轩、梁浩、杨博文的多次协调中,我清晰地感受到,不同角色之间的深入沟通能够有效避免理解偏差,加快问题的诊断和解决。同时,本周遗留下来的一些测试缺陷也给了我们一个重要的提醒——系统级的测试不能仅聚焦主流程和常见场景,更要主动深入挖掘边界条件和异常情况,这样才能构建真正稳健的产品。 diff --git a/doc/process/weekly/week-13/members/jinzhibo-weekly-plan-13.md b/doc/process/weekly/week-13/members/jinzhibo-weekly-plan-13.md new file mode 100644 index 0000000..6f0aa83 --- /dev/null +++ b/doc/process/weekly/week-13/members/jinzhibo-weekly-plan-13.md @@ -0,0 +1,39 @@ +# 个人周计划-第13周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-12-15 + +**结束时间:** 2025-12-22 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **深入源码,准备班会展示材料** | 杨逸轩,杨博文 | **源码理解**:深入研读`develop`分支的前后端源码,理解当前架构与核心模块,为周三的班会展示与技术考核做准备;**PPT制作**:基于对项目的理解,协助或负责制作周三班会所需的技术展示PPT,清晰呈现项目进展、技术亮点与后续计划。 | +| 2 | **承担核心文档与会议记录工作** | 杨博文,胡帆 | **会议记录**:负责本周所有会议的纪要记录、整理与归档,确保团队信息同步;**项目文档**:在团队开发与测试过程中,同步更新**接口文档、部署指南、测试用例**等,确保文档与代码同步; **“小组周总结”文档**:从本周开始根据团队分工,开始负责原胡帆同学负责的每周小组周总结的撰写与整理;所有文档编写工作问题可咨询杨博文。 | +| 3 | **全力支持前端界面优化与测试** | 全体成员 | **项目文档**:在团队开发与测试过程中,同步更新**接口文档、部署指南、测试用例**等,确保文档与代码同步。 **“小组周总结”文档**:根据团队分工,开始负责每周小组周总结的撰写与整理,杨博文辅助。作为前端辅助人员与文档负责人,我将快速熟悉项目整体前端架构与功能模块,为验收阶段可能出现的文档补充、测试支持等工作做好准备,同时我也会配合团队完成git-develop分支的规范化整理工作,检查代码提交记录的规范性、注释完整性,清理冗余文件,协助版本标记与分支合并,为后续版本管理建立良好基础 | + + + +小结 +-- + +**1.角色聚焦:前端测试支持与项目文档中枢** +本周我将作为**前端测试的关键支持者**与**项目文档的核心维护者**。前期紧密配合前端界面优化,中后期快速转入前后端对接测试,同时确保所有会议纪要、技术文档与周总结的及时性与准确性,保障团队信息流畅通。 + +**2. 主动深入:为班会项目展示做准备** +面对本周密集的班会与考核,我将主动深入项目源码,理解技术实现细节,并承担展示材料与ppt的准备工作。这不仅能提升个人对项目的整体把握,也能为团队在关键汇报中提供扎实的内容支持。 + +**3. 保持灵活:响应团队动态调整** +本周由于其余科目的学业任务较多,项目任务密集、并行度高。我将保持高度灵活性,根据前端优化、后端规范化及测试对接的实际进度,动态调整工作重心,确保在关键时刻能为团队提供最需要的支持。 \ No newline at end of file diff --git a/doc/process/weekly/week-13/members/jinzhibo-weekly-summary-12.md b/doc/process/weekly/week-13/members/jinzhibo-weekly-summary-12.md new file mode 100644 index 0000000..e72b101 --- /dev/null +++ b/doc/process/weekly/week-13/members/jinzhibo-weekly-summary-12.md @@ -0,0 +1,34 @@ +个人周总结-第12周 +========= + +姓名和起止时间 +------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-12-8 + +结束时间: 2025-12-15 +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------- | -------------------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端README文档编写与组会文档同步** | 基本完成 | 已完成文档主体框架的搭建,包括项目简介、环境配置、启动流程及目录结构等核心部分,待前端整体优化工作完成后进行最终补充与同步;按时参与小组每周会议与验收会议,并完成会议纪要的记录、整理与归档工作,确保团队信息同步与任务跟踪透明;同时辅助后端进行系统类图的绘制,反映出面向对象的方法使用不够的问题,本周将根据后端代码的补充优化来进行类图的优化 | +| 2 | **辅助前端视觉优化** | 完成 | 在Alpha版本验收冲刺阶段,积极协助杨逸轩、胡帆进行前端界面细节调优:针对视觉一致性、交互流畅性及响应式布局进行多轮检查与测试;基于此前对vuebits组件库的技术积累,提供了组件使用建议与技术支持,助力界面体验进一步提升。 | +| 3 | **alpha版本验收冲刺与git项目整理** | 基本完成 | 参与Alpha版本验收支持工作,快速熟悉整体前端架构与功能模块,配合完成验收相关文档补充与测试验证;同时协助团队对git-develop分支进行规范化整理,清理冗余文件,检查提交记录与注释完整性,完成版本标记与分支合并,为后续版本管理奠定良好基础。 | + +**对团队工作的建议 ** + +1. **视觉验收标准需前置并具体化**:在协助前端视觉调优过程中发现,**“风格统一”、“体验流畅”等目标缺乏可衡量的具体标准**,容易导致反复调整。建议在下一个UI优化周期开始前,由设计或前端负责人**提供关键页面的视觉走查清单**(如:间距规范、配色使用场景、交互动效时长),让测试和协作更有依据,提升验收效率。 + +小结 +-- + +1. **核心文档与规范化工作取得阶段性成果**:本周高效推进了项目规范化管理,前端README文档已具备完整框架与核心内容,会议纪要归档与Git分支整理工作均已完成,为项目验收与后续协作打下了坚实基础。 +2. **融入开发闭环,提供有效技术支持**:在完成本职工作的同时,深入前端优化与验收冲刺环节,凭借技术积累提供了切实可行的组件优化建议与测试支持,展现了良好的团队协作精神与问题解决能力。 + + +--- diff --git a/doc/process/weekly/week-13/members/lianghao-weekly-plan-13.md b/doc/process/weekly/week-13/members/lianghao-weekly-plan-13.md new file mode 100644 index 0000000..51b0150 --- /dev/null +++ b/doc/process/weekly/week-13/members/lianghao-weekly-plan-13.md @@ -0,0 +1,31 @@ +# 个人周计划-第13周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-15 +**结束时间:** 2025-12-22 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ----------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | Alpha机器维护与Beta适配 | 杨博文、胡帆 | 12月15日至17日(周三前),维护008号机器的Alpha版本稳定运行,确保系统在班会演示期间持续可用。同时在010号机器上完成Beta 0.5功能适配,包括模型组交付的超参数配置管理、prompt映射机制的集成测试,验证新功能在后端环境中的稳定性。 | +| 2 | Beta 0.5新增API接口暴露 | 杨逸轩、胡帆 | 12月15日至17日(周三前),根据Beta 0.5版本需求,设计并实现新增API接口,包括超参数配置查询与更新接口、自定义prompt管理接口、任务配置选择接口等。编写详细的接口文档,明确请求参数、响应格式和调用示例,为前端对接做好充分准备。 | +| 3 | 后端代码规范化与优化 | 杨博文 | 12月15日至22日(全周),与杨博文协作推进010机器后端代码的全面规范化工作。重点进行代码结构优化、统一命名规范、完善注释文档、提取公共逻辑、优化错误处理机制等,确保代码质量符合团队规范和Python最佳实践,提升代码可读性和可维护性。 | +| 4 | Beta版本前后端联调支持 | 杨逸轩、胡帆 | 12月18日至22日,积极响应前端团队在Beta 0.5功能对接过程中遇到的各类技术问题,提供快速的问题定位和解决方案。重点支持样例图展示调用、任务配置选择、日志查看接口等新功能的联调测试,确保前后端数据交互准确无误,接口调用稳定可靠。 | +| 5 | 班会演示准备与技术答疑 | 全体成员 | 12月15日至17日(周三前),配合团队完成班会演示的准备工作,检查后端服务的稳定性和接口可用性,确保演示过程中系统运行流畅。准备后端技术架构和API规范的讲解材料,在班会上清晰展示后端工程化成果。班会后及时响应老师和同学提出的技术问题,展现团队的专业技术能力。 | + + +## 小结 + +1. **双机策略保障系统稳定:** 本周采取双机并行运行策略,008号机器维护Alpha版本的稳定服务,010号机器承载Beta 0.5的功能开发与测试。这种策略既保证了班会演示时系统的可靠性,又为Beta版本的迭代开发提供了独立的实验环境,有效降低了新功能开发对现有服务的影响风险。 + +2. **Beta 0.5功能深度集成:** 本周的核心任务是将模型组交付的Beta 0.5高级特性(超参数配置管理、prompt映射机制)深度集成到后端系统中。这不仅涉及功能代码的编写和测试,更重要的是要设计合理的API接口,使前端能够便捷地调用这些高级功能,为用户提供更丰富的个性化配置能力。 + +3. **代码质量提升工程:** 与杨博文合作推进后端代码规范化是本周的重要任务。通过代码结构优化、命名统一、注释完善等系统性工作,将代码质量提升到团队规范要求的水平。这项工作不仅是为了应对班会的规范性检查,更是为了提升代码的长期可维护性和团队协作效率。 + +4. **班会演示与技术展示:** 周三班会是一个重要的阶段性展示节点,需要向老师和同学们展示团队在后端工程化方面的成果。除了确保系统稳定运行外,还要准备清晰的技术讲解材料,展现后端架构设计的合理性、API规范的完善性和代码质量的专业性,树立团队的技术形象。 + +5. **务实的进度管理:** 面对本周三次重要会议的时间压力(周三班会、周五计网班会、下周三前后端考核),团队采取了更加务实的进度管理策略。适当放缓部分Beta功能的迭代速度,将资源集中在核心任务和关键节点上,既保证了重要工作的质量,又避免了团队成员的过度负荷,体现了成熟的项目管理思维。 diff --git a/doc/process/weekly/week-13/members/lianghao-weekly-summary-12.md b/doc/process/weekly/week-13/members/lianghao-weekly-summary-12.md new file mode 100644 index 0000000..b8f7792 --- /dev/null +++ b/doc/process/weekly/week-13/members/lianghao-weekly-summary-12.md @@ -0,0 +1,37 @@ +# 个人周总结-第12周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-08 +**结束时间:** 2025-12-15 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | --------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | Alpha收尾和验收 | 已完成 | 12月8日至9日,全力配合团队完成Alpha1.0版本的最后冲刺。为ThreeJS 3D路径图绘制提供了坐标数据接口支持,完善了管理员资源列表的后端数据接口,确保所有核心功能的后端服务在验收前达到稳定状态。 | +| 2 | 前端后端深度对接测试并debug | 已完成 | 12月9日至15日,与前端团队进行了深度的云端联调测试。重点优化了多账号并发访问时的数据隔离机制,修复了任务队列重复执行、父子图片关系匹配、自定义提示词传递等多个关键bug,显著提升了系统稳定性和数据准确性,为Alpha2.0版本的高质量交付提供了坚实保障。 | +| 3 | 日志功能开发 | 已完成 | 12月10日至13日,设计并实现了完整的后端日志查看功能。开发了基于任务ID的日志查询接口(`GET /api/task//logs`),实现了日志文件的自动管理和清理策略,支持实时查看算法执行日志。接口已完成测试并集成到API文档,为Beta版本的运维监控能力奠定了基础。 | +| 4 | 艺术品风格实验后端支持 | 已完成 | 12月11日至15日,根据艺术品风格测试需求,在数据库中扩展了艺术品数据类型(art),配置了对应的提示词模板(`a painting in sks style`),并在加噪和微调算法中实现了数据类型的自动适配逻辑。完成了从人物肖像到艺术保护领域的应用场景拓展,支持系统功能的多元化发展。 | +| 5 | git项目整体大整理 | 已完成 | 12月13日至15日,配合团队完成了git项目的规范化整理。检查并优化了后端模块的代码结构,规范了commit信息格式,补充了关键代码注释,清理了冗余文件和无效配置,确保项目结构清晰、代码可维护性强,为Alpha1.0版本标记和后续团队协作打下良好基础。 | + +## 对团队工作的建议 + +1. **建立系统化的回归测试机制:** 本周在深度对接测试中发现了任务重复执行、图片关系匹配等底层问题,建议建立定期的回归测试流程,在每次重大功能更新后进行全链路测试,及早发现潜在问题。 +2. **加强异常场景处理:** 在云端联调中暴露了一些边界情况下的异常处理不足(如重复入队、文件命名不一致等),建议在Beta版本开发中更加重视异常场景的处理和容错机制设计。 +3. **完善功能扩展的标准化流程:** 艺术品风格支持的实现过程较为顺畅,体现了数据库设计的良好扩展性。建议将这种"配置驱动"的开发模式固化为标准流程,便于后续快速支持新的应用场景。 +4. **持续优化API文档:** 随着新功能(如日志查看、自定义提示词)的加入,需要及时更新API文档。建议在代码提交时同步更新文档,保持技术文档的时效性和准确性。 + +## 小结 + +1. **Alpha版本验收圆满成功:** 作为Alpha1.0版本的收官之周,全力配合团队完成了最后的功能冲刺和验收准备。为3D路径图提供了坐标数据接口,完善了管理员功能的后端支撑,确保了验收的顺利通过。这标志着项目从概念设计到可用产品的关键跨越。 + +2. **系统稳定性显著提升:** 通过一周的深度对接测试,系统性地解决了任务重复执行、父子图片关系匹配错误、算法输出命名不一致等多个底层问题。特别是实现了任务队列的重复入队检测机制,以及基于文件名包含关系的智能图片匹配策略,大幅提升了系统的健壮性和数据准确性。 + +3. **日志功能为运维赋能:** 成功开发了基于任务ID的日志查询接口,实现了算法执行过程的实时监控能力。该功能不仅为用户提供了任务执行的透明度,更为运维团队提供了问题排查的有力工具,为Beta版本的生产化部署奠定了监控基础。 + +4. **应用场景成功拓展:** 完成了从人物肖像到艺术品风格保护的场景扩展,通过数据库配置驱动的方式实现了数据类型和提示词的灵活适配。这种可扩展的架构设计为系统未来支持更多应用领域(如Logo保护、产品设计等)提供了技术范式。 + +5. **代码质量管理规范化:** 配合团队完成了git项目的全面整理,规范了代码结构和提交信息,提升了代码可读性和可维护性。这种对代码质量的严格把控,为团队的长期协作和项目的持续迭代打下了坚实的工程基础。 diff --git a/doc/process/weekly/week-13/members/yangbowen-weekly-plan-13.md b/doc/process/weekly/week-13/members/yangbowen-weekly-plan-13.md new file mode 100644 index 0000000..f424e43 --- /dev/null +++ b/doc/process/weekly/week-13/members/yangbowen-weekly-plan-13.md @@ -0,0 +1,26 @@ +# 个人周计划-第13周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-15 +**结束时间:** 2025-12-22 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 后端规范化工作 | 梁浩 | 12.15-12.17周三之后,配合梁浩对后端进行全面规范化工作,并且和前端对各种对接问题进行联调配合。具体包括:代码规范检查、接口文档完善、错误处理统一等,确保后端代码质量符合团队标准。 | +| 2 | 后端规范性检查 | 梁浩 | 12.15-12.17周三之后,配合梁浩对010机器后端进行初步规范化设计,检查并修改使之符合评审会的后端规范性检查,班会进行展示。重点关注代码结构、命名规范、注释完整性等方面。 | +| 3 | Beta0.5对接指导 | 胡帆 | 12.18-12.22,胡帆对beta0.5对接做指导,尤其对前端的规定组别做辅助设计,比如UI优化等,帮助前端分担压力。配合胡帆完成算法与后端的对接工作,确保艺术品风格保护功能的稳定运行。 | +| 4 | 后端源码整理 | 金郅博 | 配合金郅博负责周会记录文档和"小组周总结"文档,深度了解develop上的后端源码,为周三班会做PPT制作工作。今后每周的小组周总结归金郅博同学负责,性能测试报告同理。 | + +## 小结 + +1. **后端规范化与联调:** 本周前期的主要任务是配合梁浩完成后端的全面规范化工作。作为后端开发成员,我需要与梁浩紧密配合,对代码进行规范性检查和优化,同时与前端进行各种对接问题的联调,确保系统各模块之间的协作顺畅。 + +2. **Beta0.5功能支持:** 配合胡帆进行Beta0.5版本的对接指导工作,在算法与后端的集成方面提供技术支持。同时关注前端的UI优化需求,协助分担前端开发压力,推动Beta版本的整体进度。 + +3. **文档与展示准备:** 配合金郅博完成周会记录和小组周总结文档的整理工作,深入了解develop分支上的后端源码结构,为周三班会的PPT制作提供技术内容支持,确保展示材料的准确性和完整性。 + diff --git a/doc/process/weekly/week-13/members/yangbowen-weekly-summary-12.md b/doc/process/weekly/week-13/members/yangbowen-weekly-summary-12.md new file mode 100644 index 0000000..2ee087d --- /dev/null +++ b/doc/process/weekly/week-13/members/yangbowen-weekly-summary-12.md @@ -0,0 +1,28 @@ +# 个人周总结-第12周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-08 +**结束时间:** 2025-12-15 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | -------- | -------- | -------- | +| 1 | Alpha收尾和验收 | 已完成 | 12月8日至9日,配合梁浩完成了后端API的最终调试和优化,确保所有接口稳定响应前端请求。参与云测试环节,验证后端服务在云环境下的运行状态,及时发现并修复了若干潜在问题,保障系统在12.09验收时顺利通过。 | +| 2 | 日志功能 | 已完成 | 本周核心开发任务,与梁浩协作完成了后端"日志查看"功能的接口开发。实现了日志的写入、查询、筛选等核心功能接口,确保日志能够完整记录系统运行状态和用户操作行为。预留了标准化接口并编写了清晰的接口文档,方便后续前端快速集成。 | +| 3 | 艺术品风格实验和提示词选取 | 进行中 | 配合胡帆进行艺术品风格保护功能的后端适配工作。根据胡帆的实验结果和需求反馈,与梁浩一起在后端实现了部分数据处理逻辑和算法调用接口。该功能作为Beta版本的重要扩展,已完成基础框架搭建,后续将继续完善。 | +| 4 | git项目整体大整理 | 已完成 | Alpha1.0完成后,认真检查了自己负责模块的代码提交记录,确保commit信息清晰规范、代码注释完整、无冗余文件残留。配合团队完成了git-develop分支的整理工作,做好分支合并和版本标记,明确了个人贡献划分。 | + +## 对团队工作的建议 + +1. **日志功能需持续优化:** 本周完成的日志功能基础版本已能满足基本需求,建议后续根据实际运维反馈,逐步增加日志分析、告警等高级功能,提升系统监控能力。 +2. **艺术品风格功能需加强协作:** 该功能涉及算法、后端、前端多方协作,建议建立更紧密的沟通机制,确保各方需求和进度同步,避免返工。 + +## 小结 + +1. **Alpha版本顺利交付:** 配合团队完成了Alpha1.0版本的最后冲刺和验收,后端服务稳定运行,接口响应正常,为系统整体交付提供了可靠支撑。 + +2. **Beta功能预研推进:** 艺术品风格保护功能的后端适配工作已启动,基础框架搭建完成,为Beta版本的功能扩展做好了技术准备。 diff --git a/doc/process/weekly/week-13/members/yangyx-weekly-plan-13.md b/doc/process/weekly/week-13/members/yangyx-weekly-plan-13.md new file mode 100644 index 0000000..4522094 --- /dev/null +++ b/doc/process/weekly/week-13/members/yangyx-weekly-plan-13.md @@ -0,0 +1,34 @@ +个人周计划-第13周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-15 + +**结束时间:** 2025-12-22 + +## 本周任务计划安排 + +| **序号** | **计划内容** | **协作人** | **情况说明** | +| ------ | ------------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------- | +| **1** | **Beta核心功能:噪声强度可调节组件实现** | 胡帆 | **12.16-12.18**:基于上周已完成的技术预研,全面实现 Beta 版本的 **“噪声强度可调节”** 前端组件。确保 UI 交互逻辑流畅,参数滑块(Slider)能够准确绑定并向后端接口发送预期的扰动强度数值。与胡帆同步接口规范。 | +| **2** | **前端静态样例制作** | 胡帆 | **12.18-12.20**:与胡帆协作,根据团队周计划,制作 **前端静态样例展示页面**。该页面用于 Beta 迭代的演示和功能验证,需要以非联调模式展示 Alpha 版本已实现的关键功能(如报告页的 3D 路径图、对比图等)的理想效果。 | +| **3** | **Alpha版本反馈优化与性能调整** | 金郅博 | **12.20 (弹性时间)**:根据 Alpha 验收后的反馈和云测试中暴露的零星兼容性问题,集中解决前端的性能瓶颈和用户体验缺陷。重点优化报告加载速度、响应式布局的微调,并清理 Alpha 遗留的冗余代码。 | +| **4** | **参与交叉评审准备** | 杨博文、金郅博 | **12.21-12.22**:参与团队的交叉评审准备工作,重点从**前端可用性、界面设计、交互逻辑**的角度对其他小组的文档和原型进行细致的功能评估和错误排查,准备建设性的评审意见。 | + +小结 +-- + +本周的核心目标是实现从 **Alpha 版本闭环到 Beta 版本启动** 的平稳过渡。 + +1. **优先级清零 Alpha 遗留文档:** 集中精力完成所有核心设计文档(UML、E-R 图等)的最终校对和归档,正式锁定 Alpha 版本的功能基线。 + +2. **启动 Beta 核心功能开发:** 完成 Beta 版本关键特性 **“噪声强度可调节组件”** 的前端实现和接口对接准备,这是增强用户交互性和系统灵活性的核心步骤。 + +3. **准备与优化:** 完成 **前端静态样例展示页** 的制作,为后续的 Beta 演示做好准备;同时进行 Alpha 版本的性能优化和代码清理,以确保系统的稳定性和用户体验。 + +4. **团队协作:** 积极参与团队交叉评审工作,从前端视角提供高质量的建设性反馈。 diff --git a/doc/process/weekly/week-13/members/yangyx-weekly-summary-12.md b/doc/process/weekly/week-13/members/yangyx-weekly-summary-12.md new file mode 100644 index 0000000..e394f2a --- /dev/null +++ b/doc/process/weekly/week-13/members/yangyx-weekly-summary-12.md @@ -0,0 +1,42 @@ +个人周总结-第12周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-08 + +**结束时间:** 2025-12-15 + +## 本周任务完成情况 + +| **序号** | **计划内容** | **是否完成** | **成果或说明** | +| ------ | ------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| **1** | **Alpha 核心功能联调攻坚(收尾阶段)** | **完成** | **关键联调闭环:** 在 12.09 验收前,与梁浩和胡帆成功完成**报告与可视化 API** 的最终联调。确保后端能够稳定输出图像指标数据(FID/SSIM/PSNR/LPIPS)以及 **ThreeJS 3D 路径图** 所需的动态轨迹数据,为前端渲染奠定基础。 | +| **2** | **关键 UI 与可视化组件开发** | **基本完成** | **报告页核心功能实现:** 成功完成了报告页面 **ThreeJS 3D 路径图** 的数据接收和流畅渲染组件开发仍待优化。**前端管理员/我的资源** 页面的大列表基础框架和数据展示也已完成,基本达成了 Alpha 版本的用户界面闭环。 | +| **3** | **Alpha 版本功能验收与 UI 优化** | **部分完成** | **UI 优化到位,云测需加强:** 在 12.09 验收前,完成了所有页面的 **UI 细节优化、冗余元素清理和文字提示检查**。然而,由于后端在云部署后的稳定性仍有波动,**联合云测试**(端到端全功能测试)未能达到预期深度,主要功能在本地验证通过,云端仍存在零星兼容性问题待解决。 | +| **4** | **前端 README 文档撰写** | **完成** | **高质量文档交付:** 配合金郅博,提供了前端核心技术栈、组件结构、API 接口定义、云部署流程等详尽材料,顺利完成了 **前端 README 文档** 的主要内容撰写和校对,作为 Alpha 验收的重要交付物。 | +| **5** | **Beta 版本核心功能技术预研** | **部分完成** | **深入预研,方案确定:** 在 Alpha 验收后,同时转入 Beta 版本预研。针对 **噪声强度可调节组件**,完成了前端交互逻辑、参数绑定方案的初步设计,并编写了核心控制组件的最小可行代码。 | +| **6** | **团队开发文档支持** | **完成** | 协助杨博文完成了部分校对和更新相关的 UML 设计图和 API 文档描述。 | + +小结 +-- + +1. Alpha 版本核心交付与验收: + +本周成功完成了 Alpha 版本的最后冲刺。作为前端核心开发者,我主导并确保了报告页面的关键可视化功能(3D 路径图和性能指标)能够稳定接收和渲染后端数据,成功实现了 Alpha 版本的核心价值闭环。同时,前端 README 文档也按时高质量交付,为代码验收提供了清晰的指引。 + +2. 关键任务完成度高,但云测仍有欠缺: + +在七项任务中,有五项达到了**“完成”或“基本完成”**。尤其是在联调攻坚和 Beta 版本技术预研方面超额完成。然而,联合云测试由于后端环境的波动,未能充分进行,这是 Alpha 交付后需优先解决的问题。 + +3. 工作重心平稳过渡至 Beta 预研: + +在 Alpha 验收后,工作重心顺利转移至 Beta 版本的 “噪声强度可调节” 功能预研,并完成了核心组件的设计和代码实现,抢先解决了 Beta 迭代的技术难点,保障了后续迭代的平稳启动。 + +4. 遗留任务明确: + +唯一**“未完成”**的任务是 团队开发文档支持。该任务将作为下一周的首要目标,集中时间与杨博文完成所有 UML 图和 API 文档的最终校对和更新,以确保项目文档体系的完整性和准确性。 diff --git a/doc/process/weekly/week-14/group/meeting-minutes-14.md b/doc/process/weekly/week-14/group/meeting-minutes-14.md new file mode 100644 index 0000000..650423e --- /dev/null +++ b/doc/process/weekly/week-14/group/meeting-minutes-14.md @@ -0,0 +1,48 @@ +# 小组会议纪要-第14周 + +## 会议记录概要 + +**团队名称:** 2班-深度思考 +**指导老师:** 刘琴 +**主 持 人:** 胡帆 +**记录人员:** 金郅博 +**会议主题:** 第十三周情况总结、第十四周Beta版本冲刺部署、前后端规范化重构与UI优化规划 +**会议地点:** 中楼211 +**会议时间:** 2025-12-22 11:40-12:20 +**纪录时间:** 2025-12-22 20:00 +**参与人员:** 胡帆、梁浩、杨博文、金郅博、杨逸轩 + +## 会议内容 + +### 一、本周核心任务聚焦 + +本周面临周三前后端技术考核的重要节点,同时Beta版本开发进入最后冲刺阶段。经团队讨论,聚焦以下四大主线任务: + +1. **Beta 0.5收尾与Beta正式版必备功能(全周推进)**:完成Beta 0.5的表格UI优化、下载接口对接和剩余功能联调测试;推进Beta正式版的VIP充值界面开发、整体UI优化设计和软件测试报告编写,力争达到可正式交付状态。 + +2. **前后端规范化重构(全周推进)**:借助Vibe Coding等工具,对前后端代码进行系统性的规范化重构,建立清晰的分层架构和统一的编码规范,提升代码可维护性和团队协作效率。 + +3. **UI设计风格系统性探索(全周推进)**:前端团队分别借鉴苹果和华为官网的设计风格进行重构实验,探索重新启用Vuebits组件库的可行性,为项目选择最优视觉方案。 + +4. **战略调整与考试准备**:基于测试结果决定暂时砍掉快速匹配算法功能;为周三考试预留充足复习时间,允许成员灵活调整工作节奏。 + +### 二、任务分解与执行安排 + +| 序号 | 任务内容 | 负责人 | 关键时间节点 | 主要职责说明 | +| :--- | :---------------------------- | :----------- | :----------- | :----------------------------------------------------------- | +| 1 | **Beta 0.5收尾工作** | 杨逸轩、梁浩 | 12.24前 | 前端完成表格UI的视觉优化和交互细节调整;前后端对接更新后的下载接口并完成测试;完成剩余功能模块的联调测试,排查并修复数据传输、格式转换等问题 | +| 2 | **VIP充值界面开发** | 杨逸轩、梁浩 | 12.26前 | 完成VIP充值界面的前后端开发(仅模拟功能),实现充值流程的完整闭环,为Beta正式版交付做准备 | +| 3 | **整体UI优化设计** | 杨逸轩、金郅博 | 12.27前 | 统一视觉风格、优化色彩搭配和布局排版;分别借鉴苹果和安卓官网的设计风格进行重构实验,合并讨论并选取优秀设计思路;探索重新启用Vuebits组件库的可行性方案 | +| 4 | **软件测试报告编写** | 胡帆 | 12.28前 | 编写完整的软件测试报告,涵盖功能测试、性能测试、兼容性测试等维度,为产品质量提供文档支撑 | +| 5 | **后端规范化重构** | 杨博文、梁浩 | 12.27前 | 借助Vibe Coding等工具,系统性梳理后端代码结构,调整为清晰的分层架构;统一命名规范、提取公共逻辑、优化异常处理和日志记录机制;确保对外接口保持向后兼容,不影响前端已有对接 | +| 6 | **前端规范化重构** | 杨逸轩、金郅博 | 12.27前 | 对前端代码进行层次化和模块化改造;建立清晰的项目目录结构、统一组件命名和代码风格、抽取可复用的UI组件和业务逻辑模块;确保与后端已有对接不受影响 | +| 7 | **文档编写与整理** | 金郅博 | 全周 | 完善前端README文档,编写第13周团队周总结,撰写第14周会议纪要,尝试编写MuseGuard项目整体README文档;在文档编写过程中与前后端负责人对接,确保内容准确性 | +| 8 | **快速匹配算法战略调整** | 全体成员 | 12.23前 | 基于测试结论,团队决定暂时砍掉快速匹配算法功能,若后续有空余时间再考虑实现 | + +### 三、上周总结+本周待改进问题 + +1. **Beta 0.5进入收尾阶段**:上周完成了Beta 0.5的核心功能开发,本周需完成表格UI优化、下载接口对接和全面联调测试,确保功能闭环的完整性和稳定性。 +2. **规范化重构需保证质量**:前后端规范化重构是本周重点任务,需在不影响现有功能的前提下,系统性提升代码质量和可维护性,为后续开发奠定良好基础。 +3. **UI设计需创新突破**:通过借鉴苹果和安卓官网的设计理念,探索更专业、更美观的视觉方案;同时评估Vuebits组件库的重新启用,力求在设计一致性和开发效率之间找到最佳平衡。 +4. **合理平衡考试与项目**:本周三有前后端技术考核,团队需合理安排时间,优先保证考试准备,同时确保项目关键任务的稳步推进。 +5. **快速匹配算法战略调整**:经过详细测试验证,快速匹配算法在实际应用中效果不理想,团队决定暂时砍掉该功能,集中资源完成Beta版本的核心交付目标。 \ No newline at end of file diff --git a/doc/process/weekly/week-14/group/weekly-plan-14.md b/doc/process/weekly/week-14/group/weekly-plan-14.md new file mode 100644 index 0000000..b41a935 --- /dev/null +++ b/doc/process/weekly/week-14/group/weekly-plan-14.md @@ -0,0 +1,27 @@ +# 小组周计划-第14周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-22 +**结束时间:** 2025-12-29 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | Beta0.5收尾 | 杨逸轩、梁浩 | 完成Beta 0.5版本的最后冲刺工作,确保核心功能稳定可用。剩余工作包括:前端 **表格UI的视觉优化** 和交互细节调整,提升数据展示的清晰度和用户体验;前后端 **对接更新后的下载接口** 的开发与测试,确保用户能够顺利导出处理结果;完成前后端剩余功能模块的联调测试,排查并修复潜在的数据传输、格式转换等问题。这些工作完成后,Beta 0.5将具备完整的功能闭环,为后续版本的开发奠定坚实基础。 | +| 2 | Beta剩余基础功能 | 杨逸轩、梁浩、胡帆 | 推进Beta版本核心功能的全面完善,实现系统的可交付状态。必须完成的工作有:**VIP充值界面的前后端开发**(仅模拟);**整体UI的优化设计**,统一视觉风格、优化色彩搭配和布局排版,提升产品的专业度和美观度;编写完整的 **软件测试报告**,涵盖功能测试、性能测试、兼容性测试等维度,为产品质量提供文档支撑。完成这三项核心任务后,系统即达到可正式交付的标准。若时间和资源允许,团队将考虑以下体验优化工作:进一步打磨UI排版与交互细节,提升操作流畅度;实现游客浏览模式,允许未登录用户浏览功能介绍,在实际运行任务时再弹出登录注册页面,降低使用门槛;优化任务进度条和日志展示的前端样式,让用户更直观地了解任务执行状态;改进轮询管理机制,减少服务器压力并提升响应速度。 | +| 3 | 后端规范化重构 | 杨博文、梁浩 | 对现有Beta 0.5的后端代码项目进行全面的**规范化重构工作**。借助Vibe Coding等智能编程辅助工具,系统性地梳理代码结构,将现有的扁平化代码组织调整为清晰的分层架构(如控制层、服务层、数据访问层等),提高代码的可读性和可维护性。重点工作包括:统一命名规范、提取公共逻辑为工具函数或服务模块、优化异常处理和日志记录机制、添加必要的代码注释和文档说明。在整个重构过程中,必须确保对外接口保持透明和向后兼容,不影响已经完成对接的前端功能,避免引入新的集成问题。重构完成后,后端代码将具备更好的扩展性和团队协作友好性。 | +| 4 | 前端规范化重构 | 杨逸轩、金郅博 | 对现有Beta 0.5的前端代码项目进行深度的**规范化重构**。同样借助Vibe Coding等工具的辅助,对前端代码进行层次化和模块化改造,将页面组件、业务逻辑、数据管理、工具函数等进行合理拆分和组织。具体工作包括:建立清晰的项目目录结构、统一组件命名和代码风格、抽取可复用的UI组件和业务逻辑模块、规范化状态管理和API调用方式、完善组件注释和使用文档。重构过程中务必保持对外接口的稳定性,确保与后端的已有对接不受影响,避免因重构导致的功能退化或兼容性问题。重构后的前端代码将更易于维护和功能扩展,为后续的UI优化和新功能开发提供良好的技术基础。 | +| 5 | 准备本周考试 | 全体成员 | 本周三将进行前后端技术考核,允许成员根据自身情况灵活安排任务完成时间,在保证项目进度的前提下,优先为考试准备预留充足的复习时间。务必注意劳逸结合,尽量在考试前后保证充足的休息,不要过度熬夜,避免影响考试状态和身体健康。 | +| 6 | 战略调整 | 全体成员 | 针对Beta版本的 **快速匹配算法功能进行战略性调整**。经过详细的测试验证,团队发现快速匹配算法在实际应用中的效果不尽如人意:当预制噪声数量较少时,匹配效果几乎等同于无防护;但如果大幅增加预制噪声的数量,一方面我们的计算资源无法在合理时间内完成全量预制工作,另一方面过多的匹配项会显著增加加噪时的匹配耗时,反而不如直接使用通用加噪算法的用户体验好。基于这些测试结论,我们决定暂时砍掉这个功能,若后续有空余时间跑预制噪声,再来实现。 | +| 7 | 文档工作 | 金郅博 | 承担本周的 **文档编写和整理工作**,确保项目文档的完整性和时效性。具体任务包括:完善前端项目的README文档,详细说明项目结构、技术栈选择、环境配置步骤、开发规范等内容,为新成员快速上手和外部开发者理解项目提供清晰指引;
编写第13周的团队周总结,全面回顾上周的工作进展、遇到的问题和解决方案、经验教训等,为团队复盘和知识沉淀提供素材;
撰写第14周的会议纪要,记录本周重要会议的讨论内容、决策结果和行动计划,确保信息在团队内部的准确传达;
尝试编写Museguard项目的整体README文档,从产品概述、功能特性、技术架构、部署指南等宏观层面对项目进行全面介绍。
在文档编写过程中,如遇到技术细节或业务逻辑方面的疑问,可随时与前后端负责人或PM对接,确保文档内容的准确性和专业性。 | + +## 小结 + +1. **班会演示前后端规范性:** 本周我们将前后端规范化重构作为重点任务之一,希望通过系统性的代码整理和架构优化,建立起清晰的分层结构和统一的编码规范。这项工作虽然短期内不会带来功能上的直接提升,但从长远来看,它将大幅降低团队协作的沟通成本,减少bug的引入概率。 + +2. **Beta进度开始收尾:** Beta 0.5版本的开发已经进入了最后的冲刺阶段,本周的主要目标是完成所有遗留功能的对接和测试工作。从目前的进度来看,核心功能模块已基本成型,剩下的主要是一些界面优化、接口联调和边界场景测试等收尾性工作。我们计划在保证质量的前提下,尽快完成Beta 0.5的交付,为Beta正式版的开发腾出时间和精力。同时,我们也在积极推进Beta正式版的必备功能开发,特别是VIP充值系统和测试报告编写,力争在本周或下周初达到系统可正式交付的状态。考虑到本周还有前后端考试这一重要事项,我们给团队成员预留了足够的弹性时间,允许大家根据考试安排灵活调整工作节奏。 + +3. **文档跟进与进度规划:** 随着项目复杂度的不断提升和团队规模的逐步扩大,文档工作的重要性日益凸显。本周我们特别安排了专人负责文档的编写和维护工作,包括技术文档、会议纪要、周总结等多个方面。 diff --git a/doc/process/weekly/week-14/group/weekly-summary-13.md b/doc/process/weekly/week-14/group/weekly-summary-13.md new file mode 100644 index 0000000..c51b894 --- /dev/null +++ b/doc/process/weekly/week-14/group/weekly-summary-13.md @@ -0,0 +1,28 @@ +# 小组周总结-第13周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-15 +**结束时间:** 2025-12-22 + +## 本周任务完成情况 + +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 前端界面全面优化与Beta功能对接 | 完成 | 杨逸轩在周三班会前完成了前端界面的全面优化,包括响应式布局适配、UI配色方案优化、ThreeJS渲染性能优化和移动端Bug修复,清理了约15%的冗余CSS代码,提升了首屏加载速度。周三后推进Beta 0.5功能对接,完成了静态样例展示画廊、Alpha遗留的文档更新工作,噪声强度可调节组件前端逻辑已就绪,等待后端接口联调。 | +| 2 | 后端Beta 0.5适配与API暴露 | 完成 | 梁浩成功维护008号机器Alpha版本稳定运行,在010号机器完成Beta 0.5功能适配,包括超参数配置管理、prompt映射机制的集成,按需求暴露了所有新增API接口并同步更新接口文档。全程支持前端联调,解决了专题防护算法调用、自定义提示词、日志查看等新功能的接口问题,保证了前后端数据交互的准确性和稳定性。 | +| 3 | 后端规范性检查与班会展示准备 | 完成 | 杨博文与梁浩紧密协作,在周三前完成了010号机器后端代码的全面规范化工作,包括代码结构优化、命名规范统一、注释完善、公共逻辑提取、错误处理机制优化等。整理了后端架构设计文档、API接口规范和代码规范执行情况,准备了班会展示材料,顺利通过了班会的技术展示和规范性检查。周三后继续推进后端代码的深度规范化,并协助前端团队解决对接过程中的后端相关问题。 | +| 4 | 首页展示图生成与Beta 0.5对接指导 | 完成 | 胡帆在周三前完成了首页展示所需的三种不同风格(油画、水彩、素描)高质量艺术品加噪效果图的生成工作,并对微调模块的学习率、迭代次数、噪声强度等关键参数进行了细致调整和验证。周三后为Beta 0.5版本的前后端对接提供了持续的技术支持,从模型角度详细梳理了输入输出规范文档,协助杨逸轩理解模型功能的能力边界,参与UI设计的细节优化讨论,及时响应并解决了前端团队提出的各类模型相关问题。 | +| 5 | 会议文档管理与班会PPT制作 | 完成 | 金郅博负责本周组会的会议记录文档整理和归档,完成了第13周小组周总结文档的编写工作。深入研读了develop分支的前后端源码,理解了系统架构与核心模块,协助杨逸轩、杨博文完成了周三班会所需的技术展示PPT制作,清晰呈现了项目进展、技术亮点与后续计划,顺利通过技术考核。同时在团队开发与测试过程中同步更新了接口文档、部署指南、测试用例等,配合团队完成了git-develop分支的规范化整理工作。 | +| 6 | Beta迭代进度管理与功能规划 | 完成 | 面对本周三次重要会议(周三班会、周五计网班会、下周三前后端考核)的时间压力,团队采取了务实的策略,适当放缓了Beta版本的迭代速度,将部分复杂功能战略性延后至第14-15周完成,确保了核心任务的质量和团队成员的合理负荷。目前项目仅剩VIP充值界面开发、快速匹配算法实现、软件测试报告编写三个关键功能模块即可达到可交付状态。 | + +## 小结 + +**1. 班会展示顺利结束,alpha版本圆满落地:**本周三的班会是一个重要的阶段性展示节点。前端方面,杨逸轩展示了经过全面优化的界面效果,响应式设计的完善程度和UI美术的提升充分体现了团队对用户体验的重视和专业的前端工程能力;后端方面,杨博文和梁浩展示了代码规范化成果,包括清晰的代码结构与设计的原则性与耦合度等,获得了老师和同学们的认可;金郅博制作的技术展示PPT清晰呈现了项目进展和技术亮点,班会演示过程较为顺利,前后端负责人的技术讲解专业且准确。 + +**2. Beta 0.5适配顺利推进:**本周成功实现了Alpha版本的稳定维护与Beta 0.5功能的快速适配。梁浩在010号机器完成了超参数配置管理、prompt映射机制等Beta 0.5核心功能的适配,并暴露了所有新增API接口。这种双线并行的策略不仅保障了班会演示的顺利进行,也为新功能的迭代开发提供了安全的实验环境。前后端对接工作进展顺利,杨逸轩完成了静态样例展示画廊、噪声强度可调节组件等前端开发,虽然部分功能受后端接口进度影响未能完成端到端联调,但通过Mock验证确保了交互逻辑的健壮性。胡帆从模型角度提供了持续的技术指导,确保前后端对模型功能的理解和实现保持一致。 + +**3. 文档驱动开发模式提升协作效率:**本周在文档管理方面取得了显著进展。金郅博正式接手小组周总结撰写工作,实现了从前端辅助到文档中枢的角色转型,为团队信息流通提供了稳定支撑。梁浩在Beta 0.5接口开发过程中坚持文档先行的原则,确保了API文档与代码实现的同步更新,极大地降低了前后端沟通成本,使得联调过程更加顺畅高效。杨逸轩协助杨博文完成了Alpha版本所有核心设计文档的校对,重点更新了UML类图和E-R图,确保文档逻辑与线上实际API结构完全一致。这种文档驱动的开发模式有效提升了团队整体协作效率。 + +**4. 务实的进度管理策略保障核心任务质量:**面对本周密集的会议安排和下周的前后端考核,团队采取了更加务实的进度管理策略。主动放缓了部分Beta功能的迭代速度,将复杂的可视化优化、高级配置选项等功能战略性延后,将资源集中在核心任务上。这种灵活的调整确保了班会展示的高质量完成,也为团队成员预留了充足的考试准备时间。目前项目已接近可交付状态,仅剩三个关键功能模块需要完成,为后续的最终冲刺奠定了良好基础。 diff --git a/doc/process/weekly/week-14/members/hufan-weekly-plan-14.md b/doc/process/weekly/week-14/members/hufan-weekly-plan-14.md new file mode 100644 index 0000000..73b27b1 --- /dev/null +++ b/doc/process/weekly/week-14/members/hufan-weekly-plan-14.md @@ -0,0 +1,22 @@ +# 个人周计划-第14周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-22 +**结束时间:** 2025-12-29 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | Beta剩余基础功能开发 | 杨逸轩、梁浩 | 参与Beta版本核心功能的完善工作,主要负责模型相关的技术支持和协调工作。配合前后端团队推进VIP充值功能的开发,从模型角度解答可能涉及的权限管理和功能限制相关问题。参与整体UI优化设计的讨论,特别是模型参数展示界面、结果可视化界面等模块协助完成软件测试报告中模型功能部分的测试用例设计和测试数据准备。如果时间允许,将进一步优化任务进度条和日志展示的技术实现,提升用户对模型运行状态的感知体验。 | +| 2 | 准备本周考试 | 全体成员 | 本周三将进行前后端技术考核,需要合理安排时间进行考试准备。针对考试内容进行系统复习,查漏补缺,特别关注前期学习中的薄弱环节。在保证项目任务推进的同时,优先为考试预留充足的复习时间,根据实际情况灵活调整工作节奏。必要时可以与团队成员进行知识点互助和经验分享,相互帮助提升备考效果。特别注意劳逸结合,保证充足的休息时间,避免过度熬夜影响考试状态和身体健康,以良好的精神状态迎接考试挑战。 | +| 3 | 模型功能技术支持与协调 | 杨逸轩、梁浩、杨博文 | 持续为Beta版本的开发提供模型相关的技术支持和协调服务。在前后端对接过程中,及时解答关于模型功能、参数配置、结果解释等方面的技术疑问,确保前后端团队对模型能力的理解准确一致。配合后端规范化重构工作,从模型调用接口的角度提供建议,确保重构后的代码结构更加清晰合理,模型功能的集成更加规范高效。关注前端规范化重构中涉及模型展示的部分,协助优化参数配置界面和结果可视化组件的实现方式。 | + +## 小结 + +1. **战略调整与技术务实:** 本周的一个重要议题是快速匹配算法的战略调整讨论。经过前期的测试验证,我们发现这个功能在实际应用中遇到了比较明显的瓶颈:预制噪声少时防护效果不理想,预制噪声多时又面临计算资源和匹配耗时的双重压力。面对这样的技术困境,我们决定暂时搁置此功能,后续若有时间再做尝试。 + +2. **平衡考试与项目推进:** 考试是对专业知识掌握程度的重要检验,项目开发同样需要持续投入精力保障进度和质量。我计划采取灵活的时间管理策略,在保证核心任务完成的前提下,优先为考试复习预留充足时间。具体来说,会把一些紧急度较低的工作适当后延,把主要精力集中在Beta基础功能开发的技术支持和战略讨论等关键任务上。同时注意劳逸结合,避免因为过度疲劳影响学习和工作效率。 diff --git a/doc/process/weekly/week-14/members/hufan-weekly-summary-13.md b/doc/process/weekly/week-14/members/hufan-weekly-summary-13.md new file mode 100644 index 0000000..9119a3c --- /dev/null +++ b/doc/process/weekly/week-14/members/hufan-weekly-summary-13.md @@ -0,0 +1,29 @@ +# 个人周总结-第13周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-15 +**结束时间:** 2025-12-22 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 首页展示图生成与超参数优化 | 完成 | **12.15-12.17(周三前):** 按计划完成了首页展示所需的三种不同风格高质量艺术品加噪效果图的生成工作。在制作过程中,针对油画、水彩、素描等不同艺术风格分别进行了参数调优,确保每种风格的展示图都能充分体现模型算法的加噪效果。同时对现有超参数配置进行了全面检查,特别是微调模块的学习率、迭代次数、噪声强度等关键参数进行了细致调整,通过多轮对比实验验证了最优配置方案。 | +| 2 | Beta 0.5版本技术指导与UI设计协助 | 基本完成 | **12.18-12.22:** 为Beta 0.5版本的前后端对接提供了持续的技术支持。从模型角度详细梳理了输入输出规范文档,明确了各接口的参数类型、取值范围和返回格式,帮助杨逸轩准确理解模型功能的能力边界。目前大部分对接工作已完成,仍有少量界面细节需要在后续迭代中继续打磨优化,比如下载协议的变更、表格UI优化等。 | +| 3 | 班会技术内容支持 | 完成 | **12.15-12.17(周三前):** 与杨博文、金郅博协作完成了班会演示的模型技术内容准备工作。整理了Beta 0.5版本新增功能的技术说明文档,包括防人脸编辑、防风格迁移、防定制生成三个应用场景的工作原理介绍。准备了超参数优化的效果对比展示材料,直观呈现了参数调优前后的防护效果差异。同时将首页广告图的生成过程和技术要点进行了梳理,为班会展示提供了充足的技术素材。班会当天的模型部分演示顺利,老师和同学们对技术实现表示认可。 | +| 4 | 模型功能与前端交互的协调优化 | 完成 | **全周任务:** 贯穿本周的前后端对接测试过程,及时响应了前端团队提出的各类模型相关问题。针对杨逸轩在界面开发中遇到的参数说明困惑、功能描述表述等问题逐一进行了解答和澄清,确保用户界面中呈现的内容准确无误。在测试过程中发现了模型在处理某些特殊尺寸图片时的性能波动问题,与梁浩协作进行了问题诊断,通过调整预处理流程和相关参数配置成功解决。整体协调工作确保了模型功能与前端交互的顺畅衔接,产品的可用性和用户体验得到了有效保障。 | + +## 对团队工作的建议 + +1. **注意工作规范性:** 首先,接口文档的更新要及时同步,避免前后端因为文档版本不一致而产生理解偏差;其次,代码提交时注释要清晰完整,特别是涉及参数调整和功能修改的部分,方便其他成员快速理解改动意图;最后,测试用例的编写和维护也需要更加规范化,确保每次功能迭代都有对应的测试覆盖。良好的工作规范不仅能提高团队协作效率,也能减少后期维护的成本和风险。 + +## 小结 + +1. **Beta进入收尾工作:** 本周标志着Beta 0.5版本开发进入了关键的收尾阶段。从模型组的角度来看,主要的技术工作已经基本完成——超参数优化方案已经确定并固化为可直接调用的配置脚本,首页展示图的生成任务也顺利交付,前后端对接的技术指导工作持续推进。 + +2. **功能可用性优化:** 本周在功能可用性方面投入了相当多的精力。一方面,通过首页展示图的精心制作,确保用户能够在第一时间直观感受到系统的核心价值和技术能力;另一方面,在前后端对接过程中,始终关注用户界面对模型功能的呈现是否准确、是否易于理解。在与杨逸轩讨论UI设计时,我特别强调了参数说明的通俗化表达和结果展示的直观性,力求让非专业用户也能轻松上手使用我们的系统。 + +3. **深化团队协作,多开会:** 本周的工作再次印证了团队协作的重要性。班会技术内容的准备需要与杨博文、金郅博紧密配合,前后端对接需要与杨逸轩、梁浩频繁沟通。有效的沟通能够大幅提升工作效率、减少返工成本。 diff --git a/doc/process/weekly/week-14/members/jinzhibo-weekly-plan-14.md b/doc/process/weekly/week-14/members/jinzhibo-weekly-plan-14.md new file mode 100644 index 0000000..d4b6ad0 --- /dev/null +++ b/doc/process/weekly/week-14/members/jinzhibo-weekly-plan-14.md @@ -0,0 +1,43 @@ +# 个人周计划-第14周 + + + +## 姓名和起止时间 + +------- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-12-22 + +**结束时间:** 2025-12-29 + +本周任务计划安排 + +-------- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **前端规范化重构** | 杨逸轩 | 配合杨逸轩对Beta 0.5前端代码进行深度**规范化重构**。借助Vibe Coding等工具辅助,参与前端代码的层次化和模块化改造,协助建立清晰的项目目录结构、统一组件命名和代码风格、抽取可复用的UI组件和业务逻辑模块。在重构过程中确保与后端已有对接不受影响,避免功能退化或兼容性问题。 | +| 2 | **UI设计风格探索与重构** | 杨逸轩 | 与杨逸轩分别借鉴**苹果和安卓官网的美术风格和UI设计**进行系统性重构探索。我负责其中一种风格的设计实现,杨逸轩负责另一种,最后合并讨论并选取优秀的设计思路。同时探究**重新启用Vuebits组件库**进行设计的可行性方案,评估组件库对UI一致性和开发效率的提升效果。 | +| 3 | **文档编写与整理工作** | 杨博文、杨逸轩 | **前端README文档**:完善前端项目的README文档,详细说明项目结构、技术栈选择、环境配置步骤、开发规范等内容;**第13周团队周总结**:编写第13周的团队周总结,全面回顾上周工作进展、遇到的问题和解决方案;**第14周会议纪要**:撰写本周重要会议的讨论内容、决策结果和行动计划;**项目整体README**:尝试编写MuseGuard项目的整体README文档,从产品概述、功能特性、技术架构、部署指南等宏观层面进行全面介绍。 | +| 4 | **准备本周考试** | 全体成员 | 本周三将进行前后端技术考核,在保证项目进度的前提下,优先为考试准备预留充足的复习时间。注意劳逸结合,保证充足休息,避免过度熬夜影响考试状态和身体健康。 | + + + +小结 +-- + +**1. 角色定位:前端重构参与者与文档核心负责人** +本周我将作为**前端规范化重构的协作者**与**项目文档的核心负责人**。在前端重构工作中配合杨逸轩完成代码的模块化改造,同时承担多项文档编写任务,确保项目文档的完整性和时效性。 + +**2. UI设计探索与创新** +本周将与杨逸轩开展UI设计风格的系统性探索,分别借鉴苹果和安卓官网的设计理念进行重构实验。通过对比不同设计风格的优劣,为项目选择最适合的视觉方案。同时探索Vuebits组件库的重新启用,力求在保持设计一致性的同时提升开发效率。 + +**3. 文档工作全面推进** +本周文档任务较为集中,包括前端README、团队周总结、会议纪要以及项目整体README等多个方面。我将合理安排时间,确保各项文档按时高质量完成,在遇到技术细节或业务逻辑疑问时及时与前后端负责人对接,保证文档内容的准确性和专业性。 + +**4. 平衡考试与项目任务** +本周有前后端技术考核,需要在项目任务与考试复习之间做好平衡。我将灵活调整工作节奏,优先保证考试准备,同时确保文档工作、前端重构和UI设计探索任务的稳步推进。 diff --git a/doc/process/weekly/week-14/members/jinzhibo-weekly-summary-13.md b/doc/process/weekly/week-14/members/jinzhibo-weekly-summary-13.md new file mode 100644 index 0000000..e652fa3 --- /dev/null +++ b/doc/process/weekly/week-14/members/jinzhibo-weekly-summary-13.md @@ -0,0 +1,35 @@ +个人周总结-第13周 +========= + +姓名和起止时间 +------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-12-15 + +结束时间: 2025-12-22 + +本周任务完成情况 +-------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------- | -------------------------------------- | ------------ | ------------------------------------------------------------ | +| 1 | **深入源码,准备班会展示材料** | 完成 | 深入研读了`develop`分支的前后端源码,理解了当前架构与核心模块;协助杨逸轩、杨博文完成了周三班会所需的技术展示PPT制作,清晰呈现了项目进展、技术亮点与后续计划,顺利通过技术考核。 | +| 2 | **承担核心文档与会议记录工作** | 完成 | 负责本周所有会议的纪要记录、整理与归档,确保团队信息同步;在团队开发与测试过程中,同步更新了接口文档、部署指南、测试用例等,确保文档与代码同步;从本周开始接手原胡帆同学负责的每周小组周总结的撰写与整理工作,在杨博文的指导下顺利完成。 | +| 3 | **全力支持前端界面优化与测试** | 完成 | 作为前端辅助人员与文档负责人,快速熟悉了项目整体前端架构与功能模块,为验收阶段提供了文档补充与测试支持;配合团队完成了git-develop分支的规范化整理工作,检查了代码提交记录的规范性与注释完整性,清理了冗余文件,协助完成版本标记与分支合并。 | + +**对团队工作的建议 ** + +1. **技术展示材料应建立复用机制**:本周在准备班会PPT过程中,发现团队缺乏统一的技术展示素材库(如架构图、流程图、演示截图等),导致每次汇报都需要重新制作。建议建立**项目展示资源库**,将核心架构图、功能演示GIF、技术亮点说明等素材统一归档管理,便于后续汇报和对外展示时快速复用,提升展示效率和一致性。 + +小结 +-- + +1. **顺利完成角色转型与职责扩展**:本周成功接手小组周总结撰写工作,同时继续承担会议纪要与技术文档维护职责,实现了从前端辅助到文档中枢的角色转型,为团队信息流通提供了稳定支撑。 +2. **深入源码理解,助力班会展示**:通过深入研读前后端源码,加深了对项目整体架构的理解,并将技术理解转化为展示材料,为周三班会的顺利进行贡献了力量。 + + +--- diff --git a/doc/process/weekly/week-14/members/lianghao-weekly-plan-14.md b/doc/process/weekly/week-14/members/lianghao-weekly-plan-14.md new file mode 100644 index 0000000..3a18ac1 --- /dev/null +++ b/doc/process/weekly/week-14/members/lianghao-weekly-plan-14.md @@ -0,0 +1,26 @@ +# 个人周计划-第14周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-22 +**结束时间:** 2025-12-29 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | Beta 0.5收尾与联调 | 杨逸轩 | 12月22日至24日,完成Beta 0.5版本的最后冲刺。重点开发更新后的下载接口,确保用户能顺利导出结果;与前端进行全面的联调测试,排查并修复数据传输和格式转换问题,确保Beta 0.5具备完整的功能闭环。 | +| 2 | Beta剩余基础功能开发 | 杨逸轩、胡帆 | 12月24日至26日,推进Beta版本交付状态。完成VIP充值界面的后端模拟开发;配合团队编写软件测试报告,涵盖功能、性能及兼容性测试,为产品质量提供文档支撑。 | +| 3 | 后端规范化重构 | 杨博文 | 12月22日至29日(全周),对Beta 0.5后端代码进行系统性重构。梳理代码结构,统一命名规范,优化异常处理和日志,添加注释。确保重构过程中接口兼容,不影响前端对接。 | +| 4 | 准备本周考试 | 全体成员 | 12月23日至24日(周三前),为周三的前后端技术考核做准备。在保证项目关键进度的前提下,合理安排复习时间,确保通过考核。 | + + +## 小结 + +1. **Beta 0.5 冲刺交付:** 本周的首要任务是完成Beta 0.5的所有收尾工作,特别是下载接口的更新和全链路联调。目标是确保系统功能闭环,达到可交付状态。 + +2. **后端工程化重构:** 配合杨博文进行的后端规范化重构是本周的技术重点。通过分层架构调整和代码规范统一,解决前期快速开发留下的技术债,提升代码的可维护性和团队协作效率。 + +3. **平衡考试与开发:** 本周面临技术考核,需要在紧张的项目开发和复习备考之间找到平衡点,确保两方面都不掉队。 diff --git a/doc/process/weekly/week-14/members/lianghao-weekly-summary-13.md b/doc/process/weekly/week-14/members/lianghao-weekly-summary-13.md new file mode 100644 index 0000000..dabb24f --- /dev/null +++ b/doc/process/weekly/week-14/members/lianghao-weekly-summary-13.md @@ -0,0 +1,36 @@ +# 个人周总结-第13周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-15 +**结束时间:** 2025-12-22 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | Alpha机器维护与Beta适配 | 已完成 | 008号机器Alpha稳定运行,010号机器Beta 0.5功能适配全部完成,班会演示顺利通过。 | +| 2 | Beta 0.5新增API接口暴露 | 已完成 | 按照Beta 0.5需求完成所有新增API接口设计与实现,接口文档同步更新,前端对接顺利。 | +| 3 | 后端代码规范化与优化 | 已完成 | 协作杨博文完成后端代码结构优化、命名统一、注释完善、公共逻辑提取、错误处理机制优化等,所有规范化内容已在010机器测试通过,尚未合并到develop分支。 | +| 4 | Beta版本前后端联调支持 | 已完成 | 全程支持前端联调,解决了专题防护算法调用、自定义提示词、日志查看等新功能的接口问题,保证了前后端数据交互的准确性和稳定性。 | +| 5 | 班会演示准备与技术答疑 | 已完成 | 班会演示顺利进行,后端服务稳定,技术讲解材料准备充分。 | + +## 对团队工作的建议 + +1. **建立系统化的回归测试机制:** 建议在每次重大功能更新(如本次后端规范化)后进行全链路回归测试,确保新旧功能兼容,及时发现潜在问题。 +2. **加强异常场景容错设计:** 在前后端联调中发现部分边界情况处理不够完善,建议后续开发中加强异常捕获和友好的错误提示,提升系统健壮性。 +3. **坚持文档驱动开发模式:** 本周API文档的及时更新极大促进了前后端协作,建议继续保持文档与代码同步更新的良好习惯,降低沟通成本。 + +## 小结 + +1. **双版本策略成效显著:** 本周成功实现了Alpha版本的稳定维护与Beta 0.5功能的快速适配。这种双线并行的策略不仅保障了班会演示的顺利进行,也为新功能的迭代开发提供了安全的实验环境。 + +2. **后端工程化规范落地:** 与团队成员紧密协作,完成了后端代码的全面规范化与优化工作。通过统一命名、完善注释和优化结构,显著提升了代码的可读性与可维护性,为项目的长期演进打下了坚实的工程基础。 + +3. **文档驱动提升协作效率:** 在Beta 0.5接口开发过程中,坚持文档先行的原则,确保了API文档与代码实现的同步更新。这一举措极大地降低了前后端沟通成本,使得联调过程更加顺畅高效。 + +4. **深度联调保障交付质量:** 全程深度参与前后端联调,快速响应并解决了专题防护、日志查看等新功能的接口问题。这种紧密的协作模式确保了数据交互的准确性,为Beta版本的高质量交付提供了保障。 + +5. **技术展示赢得团队认可:** 班会演示的圆满成功和现场的专业答疑,充分展示了团队在后端技术架构和工程实践方面的积累,增强了团队的凝聚力和技术自信。 diff --git a/doc/process/weekly/week-14/members/yangbowen-weekly-plan-14.md b/doc/process/weekly/week-14/members/yangbowen-weekly-plan-14.md new file mode 100644 index 0000000..3ae8a4b --- /dev/null +++ b/doc/process/weekly/week-14/members/yangbowen-weekly-plan-14.md @@ -0,0 +1,29 @@ +# 个人周计划-第14周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-22 +**结束时间:** 2025-12-29 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------- | ------ | -------- | +| 1 | Beta 0.5收尾联调支持 | 梁浩、杨逸轩 | 12.22-12.24,配合梁浩完成Beta 0.5版本的最后冲刺。参与**下载接口**的更新开发,协助进行全面的前后端联调测试,排查并修复数据传输和格式转换等问题,确保Beta 0.5具备完整的功能闭环,为后续版本开发奠定坚实基础。 | +| 2 | Beta剩余基础功能开发 | 梁浩、胡帆 | 12.24-12.27,参与Beta版本核心功能的完善工作。配合梁浩完成**VIP充值功能**的后端模拟开发,包括套餐查询、充值状态管理、用户权限更新等核心逻辑;参与**软件测试报告**的编写,负责后端功能测试部分的用例设计和测试执行,涵盖功能测试、性能测试、兼容性测试等维度,为产品质量提供文档支撑。 | +| 3 | 准备本周考试 | 全体成员 | 12.23-12.24(周三前),为周三的前后端技术考核做准备。在保证项目关键进度的前提下,灵活安排任务完成时间,优先为考试准备预留充足的复习时间。 | + +## 小结 + +1. **平衡考试与开发:** 本周面临技术考核,需要在项目开发和复习备考之间找到平衡点,灵活调整工作节奏,确保两方面都能顺利完成。 + +2. **Beta 0.5功能闭环:** 配合团队完成Beta 0.5版本的收尾工作,重点参与下载接口更新和全链路联调,确保系统功能完整可用,达到可交付状态。 + +3. **Beta正式版功能推进:** 参与VIP充值功能的后端开发和软件测试报告的编写,推动系统达到可正式交付的标准。 + +4. **战略调整执行:** 配合团队完成快速匹配算法功能的下线工作,从后端角度确保代码清理到位,保持系统架构的简洁性。 + + + diff --git a/doc/process/weekly/week-14/members/yangbowen-weekly-summary-13.md b/doc/process/weekly/week-14/members/yangbowen-weekly-summary-13.md new file mode 100644 index 0000000..ab9b2fe --- /dev/null +++ b/doc/process/weekly/week-14/members/yangbowen-weekly-summary-13.md @@ -0,0 +1,33 @@ +# 个人周总结-第13周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-15 +**结束时间:** 2025-12-22 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | -------- | -------- | -------- | +| 1 | 后端规范化工作 | 已完成 | 12.15-12.17期间,与梁浩紧密协作完成了后端代码的全面规范化工作。具体包括:代码结构优化、命名规范统一、注释完善、公共逻辑提取、错误处理机制优化等。所有规范化内容已在010号机器测试通过,代码质量显著提升,为项目的长期维护打下了坚实基础。 | +| 2 | 后端规范性检查 | 已完成 | 配合梁浩对010号机器后端进行了全面的规范性检查,重点关注代码结构、命名规范、注释完整性等方面。针对评审会的后端规范性要求进行了逐项核查和修改,确保代码符合团队标准,顺利通过了周三班会的技术展示。 | +| 3 | Beta0.5对接指导 | 已完成 | 12.18-12.22期间,配合胡帆完成了Beta 0.5版本的算法与后端对接工作。协助解决了专题防护算法调用、自定义提示词、日志查看等新功能的接口问题,确保艺术品风格保护功能的稳定运行。同时为前端团队提供了技术支持,协助分担了部分对接压力。 | +| 4 | 后端源码整理 | 已完成 | 配合金郅博完成了周会记录文档和小组周总结文档的整理工作。深入研读了develop分支上的后端源码,梳理了核心模块的架构和功能逻辑,为周三班会的PPT制作提供了准确的技术内容支持,确保展示材料的专业性和完整性。 | + +## 对团队工作的建议 + +1. **建立代码审查常态化机制:** 本周的规范化工作暴露出部分历史代码存在规范性问题,建议后续建立定期代码审查机制,在代码合并前进行规范性检查,从源头保证代码质量。 +2. **完善接口变更通知流程:** 在Beta 0.5对接过程中,部分接口变更未能及时同步给前端,建议建立接口变更的即时通知机制,减少因信息不同步导致的联调问题。 + +## 小结 + +1. **后端规范化工作圆满完成:** 本周与梁浩紧密协作,完成了后端代码的全面规范化与优化工作。通过统一命名、完善注释、优化结构等措施,显著提升了代码的可读性与可维护性,为项目的工程化水平提升做出了重要贡献。 + +2. **Beta 0.5对接顺利推进:** 作为后端开发成员,全程参与了Beta 0.5版本的前后端联调工作,快速响应并解决了多个接口问题,保障了新功能的稳定运行和数据交互的准确性。 + +3. **班会展示获得认可:** 配合团队完成了周三班会的技术展示准备工作,后端技术内容讲解清晰准确,演示过程顺利,获得了老师和同学们的认可。 + +4. **团队协作效率提升:** 本周与梁浩、胡帆、金郅博等成员保持了高效的沟通协作,文档驱动的开发模式有效降低了沟通成本,团队整体协作效率显著提升。 + diff --git a/doc/process/weekly/week-14/members/yangyx-weekly-plan-14.md b/doc/process/weekly/week-14/members/yangyx-weekly-plan-14.md new file mode 100644 index 0000000..5c55585 --- /dev/null +++ b/doc/process/weekly/week-14/members/yangyx-weekly-plan-14.md @@ -0,0 +1,33 @@ +个人周计划-第14周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-22 +**结束时间:** 2025-12-29 + +本周任务计划安排 +-------- + +| **序号** | **计划内容** | **具体执行方案** | **预期成果** | +| ------ | ------------------------ | -------------------------------------------------------------------------------- | -------------------- | +| **1** | **Beta 0.5 核心联调:噪声强度调节** | **补齐上周遗留:** 与梁浩对接后端调优后的“动态扰动算法接口”。将上周已完成的 UI 滑块组件与真实 API 挂接,完成从参数调节到结果生成的完整闭环测试。 | 实现噪声强度的实时/准实时调节反馈。 | +| **2** | **管理员系统:资源管理与 CRUD** | **核心管理模块:** 开发管理员端的“全部资源列表”页面,实现对用户上传图片的审核、删除及元数据修改功能。配合后端完成管理权限的鉴权对接。 | 完成管理员资源管理功能,提升系统可控性。 | +| **3** | **VIP 充值界面开发** | **前端 UI & 逻辑:** 按照项目规划,设计并实现 VIP 充值页面的视觉稿,包括套餐选择卡片、支付方式模拟展示(静态)及充值状态反馈逻辑。 | 交付美观、易用的充值交互界面。 | +| **4** | **表格 UI 视觉优化与下载接口更新** | **细节打磨:** 对现有数据表格进行样式重构(如加入状态标签、缩略图预览),并对接更新后的结果下载接口,修复大文件下载可能导致的超时问题。 | 提升数据展示的清晰度,确保下载功能稳定。 | +| **5** | **配合 Beta 阶段战略调整** | **功能精简:** 配合团队决定,移除前端已有的“快速匹配算法”相关交互入口或逻辑代码,确保 UI 逻辑与后端最新架构(砍掉匹配算法)一致,减少用户误导。 | 保持前后端功能同步,代码库清理。 | + +本周目标小结 +------ + +**1. 消除技术债务:** 首要任务是完成上周因接口未就绪而挂起的“噪声强度调节”功能联调,确保 Beta 版的核心卖点能够正常运行。 + +**2. 完善管理闭环:** 通过管理员系统的开发,使 Museguard 项目从单一的用户端工具转向具备初步后台管理能力的完整平台。 + +**3. 提升用户体验感:** VIP 充值界面和表格 UI 的优化旨在提升产品的“生产级”质感,为后续的 Alpha/Beta 最终验收加分。 + +**4. 灵活应对调整:** 及时根据团队关于“快速匹配算法”的战略放弃决策,调整前端路由和菜单配置,确保交付物的高内聚性。 diff --git a/doc/process/weekly/week-14/members/yangyx-weekly-summary-13.md b/doc/process/weekly/week-14/members/yangyx-weekly-summary-13.md new file mode 100644 index 0000000..44e2676 --- /dev/null +++ b/doc/process/weekly/week-14/members/yangyx-weekly-summary-13.md @@ -0,0 +1,35 @@ +个人周总结-第13周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-15 + +**结束时间:** 2025-12-22 + +## 本周任务完成情况 + +| **序号** | **计划内容** | **是否完成** | **成果或说明** | +| ------ | ------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------- | +| **1** | **【高优清零】文档校对与更新** | **完成** | **文档体系闭环:** 协助杨博文完成了 Alpha 版本所有核心设计文档的校对。重点更新了 **UML 类图和 E-R 图**,确保文档逻辑与线上实际 API 结构(如任务状态机、资源关联表)完全一致,顺利完成了 Alpha 阶段的文档归档。 | +| **2** | **Beta 核心功能:噪声强度可调节组件实现** | **部分完成** | **UI 逻辑已就绪,等待联调:** 完成了前端“噪声强度调节”滑块组件的封装及动态参数绑定逻辑。由于后端对应的**动态扰动算法接口**本周正在进行性能调优,尚未开放联调,目前前端已通过 Mock 数据完成交互验证,待接口稳定后即可接入。 | +| **3** | **前端静态样例制作** | **完成** | **功能展示窗口:** 配合胡帆完成了 **静态样例展示画廊**。该模块预置了多组“加噪前 vs 加噪后 vs 攻击结果”的对比案例,不仅能作为 Beta 版本的演示补充,也为系统在网络波动或算法计算期间提供了直观的功能说明。 | +| **4** | **Alpha 版本反馈优化与性能调整** | **完成** | **体验与稳定性提升:** 针对上周云测试反馈的瓶颈,优化了报告页 ThreeJS 渲染的内存占用,修复了移动端导航栏遮挡的 Bug,并清理了项目约 15% 的冗余 CSS 代码,提升了首屏加载速度。 | +| **5** | **参与交叉评审准备** | **完成** | **外部视角评估:** 详细阅读了其他小组的项目文档,从前端交互体验和技术可行性角度撰写了 3 条核心改进建议,为下周的交叉评审环节做好了充分的反馈准备。 | + +小结 +-- + +**1. 存量任务彻底清零:** 本周成功解决了上周遗留的文档更新问题。通过与杨博文的深度对接,确保了技术实现与设计文档的 100% 同步,为项目的规范化管理补齐了最后一块拼图。 + +**2. Beta 开发稳步推进,受限于接口排期:** Beta 阶段的核心功能——“噪声强度可调节”在前端侧已实现开发闭环。虽然受后端算法接口进度影响未能完成端到端联调,但通过 Mock 验证确保了交互逻辑的健壮性,不会影响整体进度。 + +**3. 静态展示增强系统完备性:** 静态样例页面的加入极大丰富了前端的展示深度。这不仅能有效应对 Beta 验收时的演示风险,也提升了系统的专业感,使用户能直观理解对抗性扰动的防护效果。 + +**4. 持续优化与外部协作:** 在维持系统稳定性的同时,通过参与交叉评审准备工作,不仅复盘了本组项目的不足,也通过横向对比学习了其他小组在 UI 布局和文档组织上的优点。 + +**5. 下周重点:** 下一周的工作重心将转向 **Beta 版本的接口全面联调**(特别是噪声强度调节)以及**管理员系统的 CRUD 功能实现**。 diff --git a/doc/process/weekly/week-15/group/meeting-minutes-15.md b/doc/process/weekly/week-15/group/meeting-minutes-15.md new file mode 100644 index 0000000..7bd4119 --- /dev/null +++ b/doc/process/weekly/week-15/group/meeting-minutes-15.md @@ -0,0 +1,40 @@ +# 小组会议纪要-第15周 + +## 会议记录概要 + +**团队名称:** 2班-深度思考 +**指导老师:** 刘琴 +**主 持 人:** 胡帆 +**记录人员:** 金郅博 +**会议主题:** 第十四周情况总结、第十五周Beta最终收尾与全面测试部署、项目验收准备 +**会议地点:** 中楼211 +**会议时间:** 2025-12-29 11:40-12:20 +**纪录时间:** 2025-12-29 20:00 +**参与人员:** 胡帆、梁浩、杨博文、金郅博、杨逸轩 + +## 会议内容 + +### 一、本周核心任务聚焦 + +本周是项目开发的最后窗口期,下周末即将进行项目验收。经团队讨论,本周必须完成所有开发和测试工作,下周项目将进入稳定运行阶段,不再进行任何代码修改。聚焦以下四大主线任务: + +1. **Beta开发收尾**:前端组完成UI最终优化打磨,确保界面视觉效果和交互体验达到交付标准;模型组完成迅疾加噪的完整运行测试;后端组完成与前端和模型组的接口对接工作,确保数据流转顺畅。 +2. **前端UI复核debug**:解决宽比例屏幕页面不居中、日志查看页面浅色模式显示异常、瘦长比例屏幕UI元素被裁切等问题;完成VIP开通页面前后端联调和迅疾加噪前端调用逻辑对接。 +3. **全面测试**:严格对照需求规格说明书和项目测试扣分点逐项验证,采用白盒测试与黑盒测试相结合的策略,编写完整的软件测试文档,测试结束后对代码进行清理工作。 +4. **文档编写复核**:开发工作完成后,进行文档编写复核。更新使用示例和截图使其与实际功能一致,补充鸣谢部分内容,明确License部分的开源许可协议。 + +### 二、任务分解与执行安排 + +| 序号 | 任务内容 | 负责人 | 关键时间节点 | 主要职责说明 | +| :--- | :------------------------ | :------------------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | **Beta最后收尾** | 杨逸轩、胡帆、杨博文、梁浩 | 01.02前 | 前端组负责完成UI的最终优化打磨,确保界面的视觉效果和交互体验达到交付标准,同时完成与后端和模型组的接口对接工作;模型组需要完成迅疾加噪的完整运行测试,确保算法在各种输入场景下都能稳定输出正确结果,并记录运行时间和资源消耗等性能指标;后端组承担着承上启下的关键角色,需要与前端对接页面功能接口、与模型组对接算法调用接口,确保数据流转顺畅无阻 | +| 2 | **前端UI复核debug** | 杨逸轩、胡帆 | 01.02前 | 修复宽比例屏幕(16:9、16:10、21:9等)页面内容不居中、留白过多的问题;修复日志查看页面浅色/白天模式下文字颜色与背景对比度不足、部分元素显示异常的问题;修复瘦长比例屏幕下部分UI元素被裁切或重叠的"吞UI"问题;完成VIP开通页面的前后端联调;对接迅疾加噪的前端调用逻辑 | +| 3 | **全面测试** | 全体人员 | 01.05前 | 严格对照需求规格说明书中的功能清单和项目测试扣分点逐项进行验证;采用白盒测试与黑盒测试相结合的方式;借助自动化测试框架(如pytest、Jest等)和大模型辅助工具提高测试效率和覆盖率;测试过程中发现的问题及时记录并分配给相应负责人修复,修复后需进行回归测试;编写完整的软件测试文档,记录测试用例、测试结果、缺陷列表、修复情况等内容;对代码进行清理工作,删除测试桩代码、调试日志、临时注释等 | +| 4 | **文档编写复核** | 杨博文、金郅博 | 01.05前 | 更新使用示例和截图使其与实际功能一致;补充鸣谢部分内容,对开源项目、第三方库、参考资料等进行致谢说明;明确License部分的开源许可协议;确保文档内容与最终交付版本完全一致 | + +### 三、上周总结+本周待改进问题 + +1. **Beta版本开发基本完成**:上周完成了Beta 0.5收尾、VIP充值界面开发、整体UI优化、软件测试报告编写、前后端规范化重构等核心任务,系统已达到可正式交付的标准。本周需完成最后的UI适配问题修复和功能对接工作。 +2. **全面测试**:测试工作将严格对照需求规格说明书和项目测试扣分点进行,确保每一个功能点都经过充分测试、每一个潜在扣分项都得到妥善处理。测试过程中发现的问题需及时修复并进行回归测试。 +3. **文档工作需与最终版本一致**:文档复核工作安排在测试之后进行,确保文档内容与最终交付版本完全一致,避免出现文档与实际功能脱节的情况。 +4. **时间节点严格把控**:本周是Beta版本开发的最后冲刺期,团队需严格把控时间节点——周四前完成所有开发工作,周日前完成测试和文档等收尾工作,确保项目完整落地。下周项目将进入稳定运行阶段,不再进行代码修改,为验收做最后准备。本周恰逢元旦假期,希望团队成员合理安排时间,在保证任务进度的前提下注意劳逸结合,尽早高质量完成各项工作。 diff --git a/doc/process/weekly/week-15/group/weekly-plan-15.md b/doc/process/weekly/week-15/group/weekly-plan-15.md new file mode 100644 index 0000000..ce23c7f --- /dev/null +++ b/doc/process/weekly/week-15/group/weekly-plan-15.md @@ -0,0 +1,24 @@ +# 小组周计划-第15周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-29 +**结束时间:** 2026-01-05 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 执行人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | Beta最后收尾 | 杨逸轩、胡帆、杨博文、梁浩 | Beta版本已进入最后的冲刺阶段,各组需要紧密配合完成剩余工作。
1、前端组负责完成UI的最终优化打磨,确保界面的视觉效果和交互体验达到交付标准,同时完成与后端和模型组的接口对接工作;
2、模型组需要完成迅疾加噪的完整运行测试,确保算法在各种输入场景下都能稳定输出正确结果,并记录运行时间和资源消耗等性能指标;
3、后端组承担着承上启下的关键角色,需要与前端对接页面功能接口、与模型组对接算法调用接口,确保数据流转顺畅无阻。
所有收尾工作必须在周四前全部完成,为后续的全面测试预留充足时间。 | +| 2 | 前端UI复核debug | 杨逸轩、胡帆 | 前端团队本周需要集中精力解决现存的UI适配问题和功能对接任务。在UI适配方面,当前发现的问题主要包括:
1、宽比例屏幕(如16:9、16:10、21:9等)下页面内容不居中、留白过多的问题;
2、日志查看页面在浅色/白天模式下存在文字颜色与背景对比度不足、部分元素显示异常的问题;
3、瘦长比例屏幕(如某些竖屏显示器或手机端)下部分UI元素被裁切或重叠的"吞UI"问题。
在功能对接方面,需要完成:
1、VIP开通页面的前后端联调;
2、同时对接迅疾加噪的前端调用逻辑。
以上所有工作必须在周四前完成,确保不影响后续的全面测试进度。 | +| 3 | 全面测试 | 全体人员 | 在Beta收尾工作全面完成后,团队将进入系统性的全面测试阶段。测试工作将严格对照需求规格说明书中的功能清单和项目测试扣分点逐项进行验证,确保每一个功能点都经过充分测试、每一个潜在扣分项都得到妥善处理。
测试策略上采用 **白盒测试** 与 **黑盒测试** 相结合的方式:白盒测试主要针对代码逻辑、分支覆盖、边界条件等进行验证,尽量借助自动化测试框架(如pytest、Jest等)和大模型辅助工具来提高测试效率和覆盖率;
黑盒测试则从用户视角出发,对各项功能进行手工操作验证,关注用户体验和业务流程的完整性。测试过程中发现的问题需要及时记录并分配给相应负责人修复,修复后需进行回归测试确认问题已解决。
测试完成后,团队需要编写 **完整的软件测试文档**,记录测试用例、测试结果、缺陷列表、修复情况等内容。
最后务必 **对代码进行清理工作**,删除测试桩代码、调试日志、临时注释等,确保交付代码的整洁性。以上工作安排在周四至周日进行,必须在周日前全部完成,这是不可突破的硬性截止时间。 | +| 4 | 文档编写复核 | 杨博文、金郅博 | 在Beta收尾和全面测试工作完成后,需要对项目文档进行最终的完善和复核工作。当前文档存在的主要问题包括:
1、部分使用示例和截图与实际功能不符,需要根据最终版本的界面和功能重新截图、更新说明文字;
2、鸣谢部分内容过于简略,需要补充对开源项目、第三方库、参考资料等的致谢说明,体现项目的开放协作精神和学术规范性;
3、License部分需要明确项目的开源许可协议,确保代码的使用权限清晰明了。
所有文档工作需要在全面测试之后进行,以确保文档内容与最终交付版本完全一致,同样必须在周日前全部完成。 | + +## 小结 + +1. **全面收尾:** 本周是Beta版本开发的最后冲刺阶段,项目已经初具雏形,现在需要把所有模块整合起来、打磨细节、完成交付。前端、后端、模型三个组需要在这最后几天里保持高度的协作效率,确保各自的收尾工作能够按时完成,并且在集成过程中快速响应、及时解决问题。周四是一个关键的时间节点,在此之前必须完成所有开发层面的工作,为后续的测试阶段预留足够的时间窗口。这个阶段需要大家保持专注和耐心,越是临近交付越要稳扎稳打,避免因为赶工导致新的bug或质量问题。 + +2. **项目测试:** 全面测试是保障产品质量的最后一道防线,也是本周工作的重中之重。我们计划采用自动化测试与手工测试相结合的策略,既要保证测试覆盖率,又要从真实用户的角度发现潜在问题。测试过程中发现的每一个问题都要认真对待、彻底修复,不能抱有侥幸心理。同时,测试文档的编写同样不可忽视,它不仅是项目交付的必要组成部分,也是团队工作成果的重要体现。测试结束后的代码清理工作也很关键,一个干净整洁的代码库能够给评审留下良好的专业印象。 + +3. **最终核查:** 文档是项目的门面,一份完善的README能够让读者快速了解项目的价值和使用方式。目前我们的文档还存在一些与实际不符的地方,鸣谢和License部分也比较薄弱,这些都需要在最后阶段补齐完善。本周的文档工作安排在测试之后进行,这样可以确保文档内容与最终版本完全一致,避免出现文档与实际功能脱节的尴尬情况。同时也提醒大家,周日是绝对不可突破的最终截止日期,所有工作都必须在此之前完成,不留尾巴。希望大家能够保持积极状态,为所有的工作画上圆满的句号。 diff --git a/doc/process/weekly/week-15/group/weekly-summary-14.md b/doc/process/weekly/week-15/group/weekly-summary-14.md new file mode 100644 index 0000000..d318678 --- /dev/null +++ b/doc/process/weekly/week-15/group/weekly-summary-14.md @@ -0,0 +1,29 @@ +# 小组周总结-第14周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-22 +**结束时间:** 2025-12-29 + +## 本周任务完成情况 + +| ``序号 | ``总结内容 | ``是否完成 | ``情况说明 | +| ------------------------------------------------------ | ---------------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | Beta 0.5收尾工作 | 完成 | 杨逸轩完成了前端表格UI的视觉优化和交互细节调整,提升了数据展示的清晰度和用户体验。梁浩完成了下载接口的更新与测试,确保用户能够顺利导出处理结果。前后端完成了剩余功能模块的联调测试,排查并修复了数据传输、格式转换等问题,Beta 0.5已具备完整的功能闭环。 | +| 2 | Beta剩余基础功能开发 | 部分完成 | 杨逸轩和梁浩完成了VIP充值界面的前后端开发(模拟功能),实现了充值流程的完整闭环。整体UI优化设计工作顺利推进,胡帆与杨逸轩共同完成了黑白两种KT风格组件的开发,对原有UI进行了完整重构,提升了产品的专业度和美观度。但管理员系统(资源管理与CRUD)由于后端对管理员权限校验逻辑进行了重构,且数据库E-R图在管理员关联项上有所调整,导致API接口未能按时交付,前端已完成静态布局,待下周接口稳定后联调。 | +| 3 | 后端规范化重构 | 完成 | 杨博文与梁浩借助Vibe Coding等工具,对后端代码进行了系统性的规范化重构。完成了代码结构的分层调整,统一了命名规范,提取了公共逻辑为工具函数,优化了异常处理和日志记录机制,添加了必要的代码注释和文档说明。重构过程中确保了对外接口的向后兼容,未影响已完成对接的前端功能。 | +| 4 | 前端规范化重构 | 完成 | 杨逸轩与金郅博配合完成了前端代码的深度规范化重构。建立了清晰的项目目录结构,统一了组件命名和代码风格,抽取了可复用的UI组件和业务逻辑模块,规范化了状态管理和API调用方式。重构过程中保持了与后端已有对接的稳定性,未出现功能退化或兼容性问题。 | +| 5 | UI设计风格探索 | 部分完成 | 前端对网站设计风格进行了初步的重构探索实验,对比了不同设计风格的优劣,选定了项目的美术风格,详细的ui设计需留至下周补充完成。 | +| 6 | 前后端技术考核 | 完成 | 全体成员顺利通过了周三的前后端技术考核。团队合理安排了复习时间,在保证项目进度的前提下,优先为考试准备预留了充足时间,注意劳逸结合,以良好状态完成了考试。 | +| 7 | 文档编写与整理 | 完成 | 金郅博完成了多项文档编写任务:完善了前端项目的README文档,编写了第13周团队周总结,撰写了第14周会议纪要,尝试编写了MuseGuard项目的整体README文档。在文档编写过程中与前后端负责人对接,确保了内容的准确性和专业性。 | + +## 小结 + +**1. Beta版本开发进入收尾阶段:** 本周是Beta版本开发的关键冲刺周,团队在前后端技术考核的压力下,依然保持了高效的工作节奏。Beta 0.5的所有收尾工作顺利完成,包括表格UI优化、下载接口对接、功能联调测试等。VIP充值界面、整体UI优化等Beta正式版核心功能已完成,胡帆与杨逸轩共同完成了黑白两种KT风格组件的开发。但管理员系统由于后端权限校验逻辑重构和数据库E-R图调整,接口未能按时交付,需在下周完成联调。 + +**2. 前后端规范化重构成效显著:** 本周的规范化重构工作取得了显著成效。后端方面,杨博文和梁浩完成了代码结构的分层调整和编码规范的统一;前端方面,杨逸轩和金郅博完成了项目目录结构的优化和组件的模块化改造。重构后的代码具备了更好的可读性、可维护性和扩展性,为后续的团队协作和功能迭代奠定了良好基础。整个重构过程中,团队严格遵循向后兼容原则,确保了现有功能的稳定性。 + +**3. 考试与项目任务平衡兼顾:** 面对周三前后端技术考核的时间压力,团队采取了灵活务实的策略,允许成员根据自身情况调整工作节奏。全体成员在保证项目关键任务推进的同时,合理安排了复习时间,最终顺利通过了技术考核。这种平衡兼顾的工作方式体现了团队良好的时间管理能力和协作精神。 + +**4. 文档工作持续完善:** 金郅博继续主导文档编写,完成了前端README、团队周总结、会议纪要、项目整体README等多项文档任务。文档工作的持续推进确保了项目知识的有效沉淀和团队信息的顺畅流通,为项目的最终交付提供了完整的文档支撑。 diff --git a/doc/process/weekly/week-15/members/hufan-weekly-plan-15.md b/doc/process/weekly/week-15/members/hufan-weekly-plan-15.md new file mode 100644 index 0000000..9e0fbf2 --- /dev/null +++ b/doc/process/weekly/week-15/members/hufan-weekly-plan-15.md @@ -0,0 +1,22 @@ +# 个人周计划-第15周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-29 +**结束时间:** 2026-01-05 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | Beta模型运行测试与后端对接 | 杨逸轩、杨博文、梁浩 | 作为模型组的核心开发人员,本周主要负责完成迅疾加噪模型的完整运行测试工作。需要在各种输入场景下对算法进行充分验证,确保算法能够稳定输出正确结果。
此外,需要与后端组密切协作,完成模型调用接口的对接工作,确保后端能够正确调用模型并处理返回结果,保证数据流转顺畅无阻。这些工作是Beta版本能否顺利交付的关键,必须在周四前全部完成,为后续的全面测试预留充足时间。 | +| 2 | 前端UI功能对接支持 | 杨逸轩 | 作为前端的辅助开发人员,在自身模型开发工作之余,协助杨逸轩完成前端的功能对接任务。主要负责迅疾加噪的前端调用逻辑对接工作,确保前端能够正确调用模型接口并获取处理结果。同时参与VIP开通页面前后端联调工作的协调,提供模型组视角的技术支持。在前端UI适配问题方面,可以提供技术建议和协助测试验证。这部分工作需要在周四前完成,确保不影响后续的全面测试进度。 | +| 3 | 全面测试与文档 | 全体成员 | 在Beta收尾工作完成后,与全体团队成员进入系统性的全面测试阶段。作为模型组成员,重点负责模型相关功能的测试验证,包括迅疾加噪算法在不同输入条件下的表现、性能指标的稳定性、错误处理的完善性等方面。
测试工作将严格对照需求规格说明书中的功能清单进行逐项验证。采用白盒测试与黑盒测试相结合的方式,利用pytest等自动化测试框架对算法逻辑进行充分验证,同时进行手工操作测试确保整个业务流程的完整性。
测试过程中发现的问题需要及时记录并修复,修复后进行回归测试。测试完成后参与软件测试文档的编写工作,记录相关的测试用例、测试结果、缺陷修复情况等。此外需要对模型相关代码进行清理工作,删除测试桩代码、调试日志等,确保交付代码的整洁性。测试工作安排在周四至周日进行,必须在周日前全部完成。 | + +## 小结 + +1. **模型开发的最后冲刺:** 迅疾加噪模型是上一阶段的遗留下来的工作,需要在各种复杂的输入场景下充分验证算法的正确性和鲁棒性。本周我将负责调参实现该功能。与后端组的接口对接是另一个关键环节,需要确保模型能够被正确调用并与整个系统无缝集成。周四是硬性的截止节点,在此之前必须完成所有模型层面的开发工作。 + +2. **多线程协作与全面测试:** 除了模型开发的核心工作,本人还会在前端层面提供辅助支持,完成迅疾加噪功能的前端调用逻辑对接。进入全面测试阶段后,需要特别关注模型相关功能的测试覆盖,确保算法在各种边界情况和异常场景下都能正确处理。希望能够以高质量的交付为这一周的冲刺工作画上圆满的句号。 diff --git a/doc/process/weekly/week-15/members/hufan-weekly-summary-14.md b/doc/process/weekly/week-15/members/hufan-weekly-summary-14.md new file mode 100644 index 0000000..3fe2930 --- /dev/null +++ b/doc/process/weekly/week-15/members/hufan-weekly-summary-14.md @@ -0,0 +1,26 @@ +# 个人周总结-第14周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-22 +**结束时间:** 2025-12-29 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | Beta剩余基础功能开发 | 完成 | 参与Beta版本核心功能的完善工作,配合后端团队推进VIP充值功能的开发,从模型角度解答可能涉及的权限管理和功能限制相关问题。
与杨逸轩共同完成了前端整体UI优化,采用了更加美观的界面,特别是模型参数展示界面、结果可视化界面等模块。开发了黑白两种KT风格的组件,对原本的粗糙UI做了完整的重构。 | +| 2 | 准备本周考试 | 完成 | 周三的前后端技术考核,需要合理安排时间进行考试准备。针对考试内容进行系统复习,查漏补缺,特别关注前期学习中的薄弱环节。在保证项目任务推进的同时,优先为考试预留充足的复习时间,根据实际情况灵活调整工作节奏。 | +| 3 | 模型功能技术支持与协调 | 完成 | 配合后端规范化重构工作,从模型调用接口的角度提供建议,确保重构后的代码结构更加清晰合理,模型功能的集成更加规范高效。关注前端规范化重构中涉及模型展示的部分,协助优化参数配置界面和结果可视化组件的实现方式。 | + +## 对团队工作的建议 + +1. **注意项目一致性:** 最终的项目在测试中测试要符合需求规格说明书 + +## 小结 + +1. **Beta基本结束:** 从功能的角度来看,主要的技术工作已经基本完成——超参数优化方案已经确定并固化为可直接调用的配置脚本,首页展示图的生成任务也顺利交付,前后端对接的技术指导工作持续推进。最后剩下的工作大致有:遗留的快速加噪模式、前端自查遗留bug修复以及软件项目整体测试。 + +2. **UI优化进入测试阶段:** 本周在UI优化方面进行了大量工作。一方面,要确保用户能够在第一时间直观感受到系统的核心价值和技术能力;另一方面,美观度也必须有保证,要有设计感和高级感。在与杨逸轩讨论UI设计时,还特别强调了参数说明的通俗化表达和结果展示的直观性,力求让非专业用户也能上手使用我们的系统。 diff --git a/doc/process/weekly/week-15/members/jinzhibo-weekly-plan-15.md b/doc/process/weekly/week-15/members/jinzhibo-weekly-plan-15.md new file mode 100644 index 0000000..e8af107 --- /dev/null +++ b/doc/process/weekly/week-15/members/jinzhibo-weekly-plan-15.md @@ -0,0 +1,32 @@ +# 个人周计划-第15周 + +## 姓名和起止时间 + +--- + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考 + +**开始时间:** 2025-12-29 + +**结束时间:** 2026-01-05 + +本周任务计划安排 + +--- + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | **全面测试** | 全体成员 | 在全体成员的协作下,我将与杨博文主导Beta版本的全面测试任务。测试工作将严格对照需求规格说明书中的功能清单和项目测试扣分点逐项进行验证,确保每一个功能点都经过充分测试。采用**白盒测试**与**黑盒测试**相结合的方式:白盒测试主要针对代码逻辑、分支覆盖、边界条件等进行验证,尽量借助自动化测试框架和大模型辅助工具提高测试效率;黑盒测试则从用户视角出发,对各项功能进行手工操作验证,关注用户体验和业务流程的完整性。测试过程中发现的问题需及时记录并分配给相应负责人修复。 | +| 2 | **文档编写复核** | 杨博文 | 在Beta收尾和全面测试工作完成后,对项目文档进行最终的完善和复核工作。主要任务包括:更新使用示例和截图使其与实际功能一致;补充鸣谢部分内容,对开源项目、第三方库、参考资料等进行致谢说明;明确License部分的开源许可协议。确保文档内容与最终交付版本完全一致。 | +| 3 | **代码清理与收尾** | 全体成员 | 测试结束后对代码进行清理工作,删除测试桩代码、调试日志、临时注释等,确保交付代码的整洁性。同时协助团队完成Beta版本的最终收尾工作,确保所有工作在周日前全部完成。 | + +小结 +---- + +**1.全面推进测试工作**:目前Beta版本功能已基本落实,完善测试工作是收尾阶段的重要任务,需要严格对比需求规格说明书逐项验证功能点,采用白盒与黑盒相结合的测试策略,确保测试覆盖率和测试质量。 + +**2. 文档工作收尾完善**:在测试工作完成后,需要集中精力完成软件测试文档的编写和项目文档的最终复核。确保所有文档内容准确、完整、规范,与最终交付版本保持一致,为项目画上圆满的句号。 + +**3. beta版本收尾冲刺,严格把控时间节点**:本周是项目开发的最后窗口期,所有功能开发和bug修复必须在本周内全部完成,以确保下周项目将进入稳定运行阶段。因此本周的测试和文档工作必须高质量完成,严格按照小组的时间规划进行冲刺收尾,确保项目以最佳状态迎接验收。 diff --git a/doc/process/weekly/week-15/members/jinzhibo-weekly-summary-14.md b/doc/process/weekly/week-15/members/jinzhibo-weekly-summary-14.md new file mode 100644 index 0000000..c5432c1 --- /dev/null +++ b/doc/process/weekly/week-15/members/jinzhibo-weekly-summary-14.md @@ -0,0 +1,37 @@ +个人周总结-第14周 +================= + +姓名和起止时间 +-------------- + +姓  名: 金郅博 + +团队名称: 2班-深度思考 + +开始时间: 2025-12-22 + +结束时间: 2025-12-29 + +本周任务完成情况 +---------------- + +| **序号** | **计划内容(总结内容)** | **是否完成** | **情况说明** | +| -------------- | ------------------------------ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | **前端规范化重构** | 完成 | 配合杨逸轩完成了Beta 0.5前端代码的深度规范化重构工作。借助Vibe Coding等工具辅助,参与了前端代码的层次化和模块化改造,协助建立了清晰的项目目录结构,统一了组件命名和代码风格,抽取了可复用的UI组件和业务逻辑模块。重构过程中确保了与后端已有对接的稳定性,未出现功能退化或兼容性问题。 | +| 2 | **UI设计风格探索与重构** | 部分完成 | 协助杨逸轩/胡帆进行UI设计风格探索重构工作,借助kiro工具复刻现有网站的高级感设计,初步选定前端风格样式,具体ui细节还未落实,需要留给下周进行 | +| 3 | **文档编写与整理工作** | 完成 | 完成了多项文档编写任务:完善了前端项目的README文档,详细说明了项目结构、技术栈选择、环境配置步骤、开发规范等内容;编写了第13周的团队周总结,全面回顾了上周工作进展、遇到的问题和解决方案;撰写了第14周会议纪要,记录了重要会议的讨论内容、决策结果和行动计划;尝试编写了MuseGuard项目的整体README文档,从产品概述、功能特性、技术架构、部署指南等宏观层面进行了全面介绍。 | +| 4 | **准备本周考试** | 完成 | 周三顺利完成了前后端技术考核。在保证项目进度的前提下,合理安排了复习时间,注意劳逸结合,保证了充足休息,以良好的状态完成了考试。 | + +**对团队工作的建议 ** + +1. **加强文档与项目的一致性复核**:建议团队成员可以参考已有文档内容对项目进行复核,或者主动查找文档中存在的问题,确保文档描述与项目实际实现保持一致。这样既能及时发现文档的遗漏或错误,也能帮助成员更深入地理解项目,提升团队整体的文档质量和项目规范性。 + +小结 +---- + +1. **前端重构工作圆满完成**:本周作为前端规范化重构的协作者,与杨逸轩紧密配合,顺利完成了代码的模块化改造工作,项目代码结构更加清晰,可维护性显著提升。 +2. **UI设计探索初步推进**:本周与杨逸轩开展了UI设计风格的初步探索,借鉴了苹果和安卓官网的设计理念进行了部分重构实验,但由于时间有限,完整的风格对比和Vuebits组件库的深度评估尚未完成,将在后续迭代中继续推进。 +3. **文档工作全面推进**:本周集中完成了前端README、团队周总结、会议纪要及项目整体README等多项文档任务,确保了项目文档的完整性和时效性,为团队知识沉淀做出了贡献。 +4. **考试与项目任务平衡兼顾**:在繁忙的项目任务中合理安排时间,顺利通过了前后端技术考核,实现了考试复习与项目工作的良好平衡。 + +--- diff --git a/doc/process/weekly/week-15/members/lianghao-weekly-plan-15.md b/doc/process/weekly/week-15/members/lianghao-weekly-plan-15.md new file mode 100644 index 0000000..cb0f243 --- /dev/null +++ b/doc/process/weekly/week-15/members/lianghao-weekly-plan-15.md @@ -0,0 +1,29 @@ +# 个人周计划-第15周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-29 +**结束时间:** 2026-01-05 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | -------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | Beta最终收尾与联调 | 杨逸轩、胡帆、杨博文 | 12月29日至1月2日,参与Beta版本最后冲刺,配合前端完成UI优化、功能接口联调,协助模型组对接迅疾加噪算法,确保各模块集成顺畅,所有收尾工作在周四前完成。 | +| 2 | 前端VIP/加噪联调支持 | 杨逸轩、胡帆 | 12月29日至1月2日,重点支持前端VIP开通页面、迅疾加噪功能的接口联调,及时响应并修复联调中发现的问题,确保前后端数据交互准确无误。 | +| 3 | 全面测试与缺陷修复 | 全体成员 | 1月2日至1月5日,参与系统性全面测试,协助编写和执行测试用例,记录并修复缺陷,配合团队完成测试文档和代码清理,确保交付质量。 | +| 4 | 文档完善与最终核查 | 杨博文 | 1月2日至1月5日,协助完善项目文档,补充使用示例、截图、鸣谢和License等内容,确保文档与最终交付版本一致,提升项目专业度。 | + + + +## 小结 + +1. **Beta最终冲刺与集成:** 本周是Beta版本开发的最后冲刺阶段,重点配合前端和模型组完成所有功能模块的集成与联调,确保各项功能顺利闭环,为全面测试打下基础。 + +2. **前后端高效协作:** 深度参与VIP开通、迅疾加噪等核心功能的前后端联调,及时响应并解决接口和数据交互中的问题,提升了团队协作效率。 + +3. **系统测试与质量保障:** 参与系统性全面测试,协助编写和执行测试用例,积极修复缺陷,配合团队完成测试文档和代码清理,确保交付质量。 + +4. **文档完善与交付准备:** 协助完善项目文档,补充使用示例、截图、鸣谢和License等内容,确保文档与最终交付版本一致,提升项目专业度。 diff --git a/doc/process/weekly/week-15/members/lianghao-weekly-summary-14.md b/doc/process/weekly/week-15/members/lianghao-weekly-summary-14.md new file mode 100644 index 0000000..eb6e3c5 --- /dev/null +++ b/doc/process/weekly/week-15/members/lianghao-weekly-summary-14.md @@ -0,0 +1,35 @@ +# 个人周总结-第14周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-22 +**结束时间:** 2025-12-29 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | -------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 1 | Beta 0.5收尾与联调 | 已完成 | 12月22日至24日,完成Beta 0.5版本的最后冲刺。重点开发更新后的下载接口,确保用户能顺利导出结果;与前端进行全面的联调测试,排查并修复数据传输和格式转换问题,确保Beta 0.5具备完整的功能闭环。 | +| 2 | Beta剩余基础功能开发 | 已完成 | 12月24日至26日,推进Beta版本交付状态。完成VIP充值界面的后端模拟开发;配合团队编写软件测试报告,涵盖功能、性能及兼容性测试,为产品质量提供文档支撑。 | +| 3 | 后端规范化重构 | 已完成 | 12月22日至29日(全周),对Beta 0.5后端代码进行系统性重构。梳理代码结构,统一命名规范,优化异常处理和日志,添加注释。确保重构过程中接口兼容,不影响前端对接。 | +| 4 | 准备本周考试 | 已完成 | 12月23日至24日(周三前),为周三的前后端技术考核做准备。在保证项目关键进度的前提下,合理安排复习时间,确保通过考核。 | + + +## 对团队工作的建议 + +1. **强化跨组协作与集成效率:** 建议各小组在冲刺阶段保持高频沟通,遇到集成问题及时同步,充分利用线上协作工具,确保前后端、模型等多方高效配合,减少因信息不畅导致的返工。 +2. **重视系统性测试与质量闭环:** 建议测试阶段严格执行用例全覆盖,发现问题及时记录和回归,杜绝“带病交付”。同时鼓励大家主动参与测试和缺陷修复,提升整体交付质量。 +3. **完善交付文档与知识沉淀:** 项目收尾阶段要高度重视文档的完整性和准确性,及时补充使用说明、截图、致谢和License等内容,为后续维护和团队知识传承打好基础。 +4. **保持节奏与心态平衡:** 冲刺期压力较大,建议大家合理安排作息,遇到困难及时寻求帮助,保持积极心态,确保高质量完成所有交付任务。 + +## 小结 + +1. **Beta 0.5 冲刺交付:** 本周首要任务是完成Beta 0.5的所有收尾工作,特别是下载接口的更新和全链路联调。通过与前端团队的紧密协作,成功排查并修复了数据传输和格式转换问题,确保了系统功能闭环,达到可交付状态。 + +2. **VIP充值功能开发:** 配合杨逸轩、胡帆完成了VIP充值界面的后端模拟开发,为Beta版本的商业化功能奠定了基础。同时协助团队编写了全面的软件测试报告,涵盖功能、性能及兼容性测试,为产品质量提供了重要文档支撑。 + +3. **后端工程化重构:** 与杨博文紧密配合,完成了Beta 0.5后端代码的系统性重构。通过分层架构调整、代码规范统一、异常处理优化和日志完善,有效解决了前期快速开发留下的技术债,显著提升了代码的可维护性和团队协作效率。 + +4. **考试与开发平衡:** 在紧张的项目开发过程中,合理安排时间进行考前复习,成功通过了周三的前后端技术考核。这次经历证明了在保证项目关键进度的同时,能够有效平衡学习与工作的关系。 diff --git a/doc/process/weekly/week-15/members/yangbowen-weekly-plan-15.md b/doc/process/weekly/week-15/members/yangbowen-weekly-plan-15.md new file mode 100644 index 0000000..5c18e94 --- /dev/null +++ b/doc/process/weekly/week-15/members/yangbowen-weekly-plan-15.md @@ -0,0 +1,28 @@ +# 个人周计划-第15周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-29 +**结束时间:** 2026-01-05 + +## 本周任务计划安排 + +| 序号 | 计划内容 | 协作人 | 情况说明 | +| ---- | -------- | ------ | -------- | +| 1 | Beta最后收尾支持 | 梁浩、杨逸轩、胡帆 | 12.29-12.31,配合团队完成Beta版本的最后冲刺工作。参与后端与前端、模型组的接口对接,确保数据流转顺畅无阻。重点关注**迅疾加噪**功能的后端调用逻辑,协助完成算法接口的稳定性测试,确保各种输入场景下都能正确输出结果。所有收尾工作必须在周四前完成。 | +| 2 | 后端全面测试 | 梁浩 | 12.31-01.04,参与系统性的全面测试工作。负责后端**白盒测试**部分,针对代码逻辑、分支覆盖、边界条件等进行验证。借助pytest等自动化测试框架提高测试效率和覆盖率,确保后端API接口、数据库操作、异常处理等模块的稳定性。测试过程中发现的问题及时记录并修复。 | +| 3 | 后端代码清理 | 梁浩 | 01.03-01.05,对后端代码进行全面清理工作。重点包括:删除测试桩代码、调试日志、临时注释等;检查并移除未使用的依赖包和冗余配置;统一代码风格和命名规范;确保交付代码的整洁性和专业性。所有清理工作必须在周日前完成。 | +| 4 | 文档编写复核 | 金郅博 | 01.04-01.05,参与项目文档的最终完善和复核工作。负责后端相关文档的更新,包括:API接口文档的最终校对、后端README的使用示例更新、部署指南的完善等。确保文档内容与最终交付版本完全一致。同时协助完善鸣谢和License部分内容。 | +| 5 | 软件测试文档编写 | 全体成员 | 01.04-01.05,参与编写完整的软件测试文档。负责后端测试部分的文档整理,记录测试用例、测试结果、缺陷列表、修复情况等内容。确保测试文档的完整性和规范性,为项目交付提供必要的质量证明材料。 | + +## 小结 + +1. **全力配合收尾:** 本周是Beta版本开发的最后冲刺阶段,需要与前端、模型组保持高度协作效率,确保后端接口的稳定性和数据流转的顺畅性,在周四前完成所有开发层面的工作。 + +2. **测试质量保障:** 全面测试是保障产品质量的最后一道防线,将采用自动化测试与手工测试相结合的策略,确保后端模块的测试覆盖率和代码质量。 + +3. **代码整洁交付:** 代码清理工作是交付前的重要环节,需要确保提交的代码库干净整洁,体现团队的专业水准。 + +4. **硬性截止时间:** 周日是绝对不可突破的最终截止日期,所有工作都必须在此之前完成,确保为Beta版本画上圆满的句号。 diff --git a/doc/process/weekly/week-15/members/yangbowen-weekly-summary-14.md b/doc/process/weekly/week-15/members/yangbowen-weekly-summary-14.md new file mode 100644 index 0000000..1372d78 --- /dev/null +++ b/doc/process/weekly/week-15/members/yangbowen-weekly-summary-14.md @@ -0,0 +1,33 @@ +# 个人周总结-第14周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-22 +**结束时间:** 2025-12-29 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | -------- | -------- | -------- | +| 1 | Beta 0.5收尾联调支持 | 已完成 | 12.22-12.24期间,配合梁浩完成了Beta 0.5版本的最后冲刺工作。参与了**下载接口**的更新开发,解决了大文件下载超时和流式传输的稳定性问题。协助进行了全面的前后端联调测试,排查并修复了多个数据传输和格式转换问题,确保Beta 0.5具备完整的功能闭环。 | +| 2 | Beta剩余基础功能开发 | 已完成 | 12.24-12.27期间,完成了**VIP充值功能**的后端模拟开发。实现了套餐查询接口、充值状态管理逻辑、用户权限更新等核心功能模块。 | +| 3 | 战略调整配合执行 | 已完成 | 配合团队完成了快速匹配算法功能的下线工作。从后端角度进行了代码清理,移除了相关的路由配置、服务逻辑和数据模型,保持了系统架构的简洁性和代码库的整洁度。 | + +## 对团队工作的建议 + +1. **加强测试自动化建设:** 本周在编写测试报告过程中发现,部分测试用例仍需手工执行,建议后续引入更多自动化测试框架,提高测试效率和覆盖率。 +2. **建立接口文档版本管理:** VIP功能开发过程中,接口文档的更新与代码实现存在一定滞后,建议建立接口文档的版本管理机制,确保文档与代码同步更新。 + +## 小结 + +1. **Beta 0.5功能闭环达成:** 本周与梁浩紧密协作,完成了Beta 0.5版本的收尾工作。下载接口的优化解决了大文件传输的稳定性问题,全链路联调确保了系统功能的完整可用。 + +2. **VIP功能模块交付:** 成功完成了VIP充值功能的后端开发,实现了套餐管理、充值流程、权限更新等核心业务逻辑,为系统的商业化能力提供了技术支撑。 + +3. **测试文档规范化:** 参与编写了软件测试报告,建立了后端功能测试的用例模板和执行规范,为后续的测试工作提供了可复用的文档基础。 + +4. **平衡考试与开发:** 本周成功在技术考核和项目开发之间找到了平衡点,两方面任务都顺利完成,体现了良好的时间管理和任务优先级把控能力。 + +5. **下周重点:** 全力配合团队完成Beta版本的最后收尾和全面测试工作,参与后端代码的规范化复核和清理工作。 diff --git a/doc/process/weekly/week-15/members/yangyx-weekly-plan-15.md b/doc/process/weekly/week-15/members/yangyx-weekly-plan-15.md new file mode 100644 index 0000000..0c98f1d --- /dev/null +++ b/doc/process/weekly/week-15/members/yangyx-weekly-plan-15.md @@ -0,0 +1,31 @@ +个人周计划-第15周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-29 + +**结束时间:** 2026-01-05 + +## 本周任务计划安排 + +| **序号** | **计划内容** | **执行人** | **情况说明** | +| ------ | ----------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------- | +| **1** | **管理员系统 CRUD 接口联调(补课)** | **杨逸轩** | **优先级-高:** 针对第 14 周因后端接口规范变更导致的未完成项,本周一至周二需优先与梁浩对接最新的管理员权限校验逻辑及 E-R 图变更后的 API。完成“资源管理”模块的增删改查全流程联调,确保管理员能正常管理全站图片及加噪任务。 | +| **2** | **前端 UI 视觉终极打磨与对接** | **杨逸轩** | **细节优化:** 配合小组“Beta 最后收尾”任务,对全站响应式布局、交互动画(如下载进度条、VIP 支付反馈)进行最终优化。同时,协助胡帆对接“迅疾加噪”功能的动态参数展示,确保前端能实时反馈算法运行指标。 | +| **3** | **Beta 版本全路径黑盒测试** | **杨逸轩** | **质量保障:** 从用户视角出发,对“注册-充值-上传图片-调节噪声-迅疾加噪-结果下载-管理员审核”这一完整业务闭环进行多轮黑盒测试。记录所有 UI 错位、逻辑断裂或极端输入下的崩溃问题,并在周五前完成修复。 | +| **4** | **代码清理与规范化复核** | **杨逸轩** | **交付准备:** 根据小组计划要求,在周日截止日期前,对前端代码库进行全面大扫除。重点包括:移除所有 `console.log` 及调试用的测试桩代码、清理 public 目录下的冗余 Mock 图片、统一组件命名规范,确保提交给验收方的代码整洁、专业。 | +| **5** | **文档复核协助** | **杨逸轩、金郅博** | **协同工作:** 协助金郅博更新前端 README 文档中的最新系统截图。由于 UI 经过了多次调整,需确保文档中的操作指引与实际界面 100% 对应。 | + +本周目标小结 +------ + +1. **解决遗留问题:** 周二前必须解决管理员系统联调问题,不能让 Beta 版本的后台管理模块处于断连状态。 + +2. **配合全面测试:** 严格遵守小组“周四至周日”的测试时间表,利用大模型辅助工具编写部分关键组件的单元测试用例(白盒测试)。 + +3. **硬性截止时间:** 确保在 2026 年 1 月 4 日(周日)晚前,所有代码变更已合并至 `develop` 分支并完成代码库清理工作。 diff --git a/doc/process/weekly/week-15/members/yangyx-weekly-summary-14.md b/doc/process/weekly/week-15/members/yangyx-weekly-summary-14.md new file mode 100644 index 0000000..f39c50d --- /dev/null +++ b/doc/process/weekly/week-15/members/yangyx-weekly-summary-14.md @@ -0,0 +1,35 @@ +个人周总结-第14周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-22 + +**结束时间:** 2025-12-29 + +## 本周任务完成情况 + +| **序号** | **计划内容** | **是否完成** | **成果或说明** | +| ------ | ------------------------ | -------- | -------------------------------------------------------------------------------------------------------------- | +| **1** | **Beta 0.5 核心联调:噪声强度调节** | **完成** | **功能闭环:** 成功与梁浩对接了动态扰动算法接口。前端滑块组件现在可以实时向后端发送扰动强度参数,并能正确接收、渲染加噪后的图像。解决了上周遗留的阻塞问题,实现了 Beta 版最核心的交互卖点。 | +| **2** | **管理员系统:资源管理与 CRUD** | **未完成** | **接口规范变更:** 本周由于后端对管理员权限校验逻辑进行了重构,且数据库 E-R 图在管理员关联项上有所调整,导致原定的 API 接口未能按时交付。目前前端已完成“全部资源列表”的静态布局,待下周接口稳定后立即联调。 | +| **3** | **VIP 充值界面开发** | **完成** | **UI/UX 交付:** 完成了 VIP 充值页面的全套开发,包括高保真的套餐选择卡片、支付方式切换动画以及充值成功的状态反馈弹窗。虽然支付逻辑为模拟实现,但极大地提升了系统的商业产品感。 | +| **4** | **表格 UI 视觉优化与下载接口更新** | **完成** | **性能与体验双提升:** 对数据表格进行了重构,加入了缩略图预览和状态标签(如“处理中”、“已完成”)。同时,对接了优化后的流式下载接口,解决了上周出现的 50MB 以上大文件下载超时导致的浏览器崩溃问题。 | +| **5** | **配合 Beta 阶段战略调整** | **完成** | **代码库瘦身:** 根据团队决策,彻底移除了“快速匹配算法”相关的路由、菜单项及旧有逻辑代码。此举减少了约 1200 行冗余代码,降低了系统维护成本,并确保了 UI 与后端架构的一致性。 | + +小结 +-- + +**1. 核心技术债务清零:** 本周最重要的突破是完成了“噪声强度可调节”功能的端到端联调。通过多次调试,解决了参数传递中的精度丢失问题,确保了用户调节滑块时系统能给出准确的防护反馈。 + +**2. 管理员系统进度滞后原因分析:** 由于项目进入 Beta 阶段,后端对安全性和数据完整性要求提高,导致管理员接口需要重新设计。虽本周未能完成联调,但前端已经做好了 UI 预留和 Mock 数据准备,预计下周初可快速补齐。 + +**3. 产品化程度进一步加强:** VIP 充值界面的加入和表格 UI 的重构,标志着 Museguard 从“实验性工具”向“完整 Web 产品”的跨越。特别是大文件下载稳定性的解决,直接提升了系统的生产可用性。 + +**4. 灵活应对开发变动:** 本周积极配合了团队对“快速匹配算法”的战略放弃,迅速清理了相关前端资源,保证了 Beta 版本的逻辑纯净度,避免了因功能未上线带来的用户误导。 + +**5. 下周重点:** 全力攻克 **管理员系统(CRUD)** 的接口联调,并开始准备 Beta 版本的最终集成测试。 diff --git a/doc/process/weekly/week-16/group/weekly-summary-15.md b/doc/process/weekly/week-16/group/weekly-summary-15.md new file mode 100644 index 0000000..92f85a8 --- /dev/null +++ b/doc/process/weekly/week-16/group/weekly-summary-15.md @@ -0,0 +1,34 @@ +# 小组周总结-第15周 + +## 团队名称和起止时间 + +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-29 +**结束时间:** 2026-01-05 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 执行人 | 完成情况 | 情况说明 | +| ---- | --------------- | -------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | Beta最后收尾 | 杨逸轩、胡帆、杨博文、梁浩 | 完成 | Beta版本最后冲刺阶段圆满完成。**前端组**(杨逸轩)完成了UI的最终优化打磨,管理员系统CRUD接口联调完成,"用户管理"与"资源管理"模块实现全量CRUD功能;**模型组**(胡帆)完成了迅疾加噪模型的全面运行测试,针对不同输入场景设计了多组测试用例,验证了算法的正确性和稳定性;**后端组**(梁浩、杨博文)完成了VIP会员接口开发(充值、查询、权限验证),成功对接快速加噪算法,确保各模块集成顺畅。所有收尾工作在周四前全部完成,为后续全面测试预留了充足时间。 | +| 2 | 前端UI复核debug | 杨逸轩、胡帆 | 完成 | 前端团队集中解决了现存的UI适配问题和功能对接任务。**UI适配方面**:完成了全站响应式布局的最后微调,优化了"迅疾加噪"在大数据量下的动态参数展示流畅度,修复了VIP升级界面在不同移动端浏览器下的样式兼容性问题。**功能对接方面**:完成了VIP开通页面的前后端联调,对接了迅疾加噪的前端调用逻辑。胡帆从模型组角度提供了技术支持和测试验证协助。所有工作在周四前完成,未影响后续测试进度。 | +| 3 | 全面测试 | 全体人员 | 完成 | 团队进入系统性的全面测试阶段,严格对照需求规格说明书逐项验证功能点。采用**白盒测试**与**黑盒测试**相结合的策略:白盒测试借助自动化测试框架和AI工具辅助验证代码逻辑、分支覆盖、边界条件;黑盒测试从用户视角进行全链路操作验证(从注册到报告生成)。测试过程中发现并修复了多处关键缺陷:管理员可删除自己的安全漏洞、验证码在密码验证前消耗的逻辑问题、微调任务prompt配置错误等。修复后均进行了回归测试,系统主流程已无阻塞性Bug。完成了软件测试文档编写和代码清理工作,删除了测试桩代码、调试日志、`console.log`等冗余内容,确保交付代码整洁规范。 | +| 4 | 文档编写复核 | 杨博文、金郅博 | 完成 | 项目文档最终复核与完善工作圆满完成。**README文档**:更新了使用示例和系统截图,确保与实际功能一致;补充了完整的技术栈说明(含版本号)、系统架构图、API接口文档(50+端点)、部署指南、常见问题等内容。**鸣谢部分**:规范引用了Anti-DreamBooth、Glaze、SimAC、PID、CAAT等学术论文,补充了对开源项目、第三方库的致谢说明。**License部分**:明确了MIT License开源许可协议。所有文档内容与最终交付版本完全一致,显著提升了项目的专业度和可维护性。 | + +## 小结 + +### 1. Beta版本圆满收尾 + +本周是Beta版本开发的最后冲刺阶段,团队成员紧密协作,圆满完成了所有收尾工作。前端、后端、模型三个组在周四前完成了各自的开发任务,VIP会员系统、快速加噪功能、管理员后台等核心模块全部集成完毕,项目所有开发测试工作正式结束,系统功能完整可交付。 + +### 2. 全面测试质量达标 + +全面测试工作严格按照计划执行,采用白盒与黑盒相结合的测试策略,有效覆盖了系统的各项功能点。测试过程中发现的关键缺陷均已及时修复并通过回归测试验证,系统主流程稳定可靠,达到了交付质量标准。 + +### 3. 文档工作高质量完成 + +项目文档的复核与完善工作按计划完成,README文档内容详实、结构清晰,涵盖了项目简介、技术栈、快速开始、系统架构、部署指南、API概览、常见问题、鸣谢与引用等完整内容,体现了项目的学术严谨性和专业水准。 + +### 4. 团队协作高效有序 + +本周作为项目收尾的关键时期,团队成员分工明确、配合默契。在时间紧迫的情况下,通过高效的沟通协调,确保了开发、测试、文档等各项工作有序推进。所有任务在周日前全部完成,为项目画上了圆满的句号。 diff --git a/doc/process/weekly/week-16/members/hufan-weekly-summary-15.md b/doc/process/weekly/week-16/members/hufan-weekly-summary-15.md new file mode 100644 index 0000000..2ef58b9 --- /dev/null +++ b/doc/process/weekly/week-16/members/hufan-weekly-summary-15.md @@ -0,0 +1,20 @@ +# 个人周总结-第15周 + +## 姓名和起止时间 + +**姓  名:** 胡帆 +**团队名称:** 2班-深度思考 +**开始时间:** 2025-12-29 +**结束时间:** 2026-01-05 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 是否完成 | 情况说明 | +| --------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | Beta模型运行测试与后端对接 | 完成 | 本周按计划完成了迅疾加噪模型的全面运行测试工作。在测试过程中,针对不同的输入场景设计了多组测试用例,包括边界值测试、异常输入测试等,验证了算法的正确性和稳定性。与后端组的杨博文、梁浩等同学协作顺利,成功完成了模型调用接口的对接工作,后端现在可以正确调用模型并处理返回结果,数据流转也很流畅。所有工作都基本按时完成,为后续的全面测试预留了充足时间。 | +| 2 | 前端UI功能对接支持 | 完成 | 在完成模型开发工作的同时,协助杨逸轩完成了前端功能对接任务。主要负责了迅疾加噪功能的前端调用逻辑对接,确保前端能够正确调用模型接口并获取处理结果。参与了VIP开通页面的前后端联调工作,从模型组的角度提供了技术支持和建议。在前端UI适配问题上也提供了一些测试验证协助。这部分工作按计划完成了,未影响测试进度。 | +| 3 | 全面测试与文档 | 完成 | 周四之后进入了系统性的全面测试阶段。作为模型组成员,重点验证了模型相关功能,包括迅疾加噪算法在不同输入条件下的表现、性能指标的稳定性以及错误处理的完善性。测试工作严格对照需求规格说明书进行,采用了白盒测试与黑盒测试相结合的方式。使用大模型辅助编写的自动化测试框架对算法逻辑进行了充分验证,同时也进行了手工测试确保业务流程的完整性。测试中发现的几个小问题都及时记录并修复了,修复后也都做了回归测试。参与编写了软件测试文档,记录了测试用例、测试结果和缺陷修复情况。此外还对模型相关代码进行了清理,删除了测试桩代码和调试日志,确保交付代码的整洁性。所有工作在周日前顺利完成。 | + +## 小结 + +1. **所有功能完成,项目交付:** 整体来说任务完成得比较顺利。迅疾加噪模型是上一阶段遗留下来的工作,这周主要精力放在了调参和测试上。通过在各种复杂输入场景下的充分验证,算法的正确性和鲁棒性都得到了保证。与后端组的接口对接也很顺利,模型能够被正确调用并与整个系统无缝集成。周四的硬性截止节点给了不小的压力,不过好在所有模型层面的开发工作都按时完成了,为后续的全面测试留出了足够的缓冲时间。至此我们的项目开发测试全部结束了。 diff --git a/doc/process/weekly/week-16/members/jinzhibo-weekly-summary-15.md b/doc/process/weekly/week-16/members/jinzhibo-weekly-summary-15.md new file mode 100644 index 0000000..3b81989 --- /dev/null +++ b/doc/process/weekly/week-16/members/jinzhibo-weekly-summary-15.md @@ -0,0 +1,36 @@ +个人周总结-第15周 +================= + +### 姓名和起止时间 + +**姓  名:** 金郅博 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-29 + +**结束时间:** 2026-01-05 + +## 本周任务完成情况 + +本周作为 Beta 版本的收官之周,主要完成了全面测试工作的主导推进、项目文档的最终复核完善以及代码清理收尾工作。 + +| **序号** | **计划内容** | **完成情况** | **成果或说明** | +| -------------- | ------------------------ | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **1** | **全面测试** | **完成** | **质量保障:** 与杨博文共同主导了 Beta 版本的全面测试工作。严格对照需求规格说明书逐项验证功能点,采用白盒测试与黑盒测试相结合的策略。白盒测试借助自动化测试框架验证代码逻辑和边界条件;黑盒测试从用户视角进行全链路操作验证。测试过程中发现的问题均已及时记录并分配修复,系统主流程已无阻塞性 Bug。 | +| **2** | **文档编写复核** | **完成** | **文档同步:** 完成了项目文档的最终复核与完善工作。更新了 README 文档中的使用示例和系统截图,确保与实际功能一致;补充了鸣谢部分内容,对引用的学术论文、开源项目、第三方库进行了规范的致谢说明;明确了 MIT License 开源许可协议。所有文档内容与最终交付版本完全一致。 | +| **3** | **代码清理与收尾** | **完成** | **交付准备:** 配合团队完成了代码清理工作,删除了测试桩代码、调试日志、临时注释等冗余内容,确保交付代码的整洁性和规范性。协助完成了 Beta 版本的最终收尾工作,所有任务在周日前全部完成。 | + +## 总结与反思 + +### 1. 测试工作圆满完成 + +本周全面测试工作顺利推进,通过白盒与黑盒相结合的测试策略,有效覆盖了系统的各项功能点。测试过程中与团队成员紧密协作,发现的问题能够快速定位并修复,确保了 Beta 版本的质量达标。 + +### 2. 文档工作高质量收尾 + +项目文档的复核与完善工作按计划完成,README 文档内容详实、结构清晰,涵盖了项目简介、技术栈、快速开始、系统架构、部署指南、常见问题等完整内容。鸣谢与引用部分规范引用了 Anti-DreamBooth、Glaze、SimAC、PID、CAAT 等学术论文,体现了项目的学术严谨性。 + +### 3. 团队协作高效有序 + +本周作为项目收尾的关键时期,团队成员分工明确、配合默契。在时间紧迫的情况下,通过高效的沟通协调,确保了测试、文档、代码清理等各项工作有序推进,最终圆满完成了 Beta 版本的全部收尾任务。 diff --git a/doc/process/weekly/week-16/members/lianghao-weekly-summary-15.md b/doc/process/weekly/week-16/members/lianghao-weekly-summary-15.md new file mode 100644 index 0000000..81b643c --- /dev/null +++ b/doc/process/weekly/week-16/members/lianghao-weekly-summary-15.md @@ -0,0 +1,27 @@ +# 个人周总结-第15周 + +## 姓名和起止时间 + +**姓  名:** 梁浩 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-29 +**结束时间:** 2025-01-05 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | -------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | Beta最终收尾与联调 | 完成 | 12月29日至1月2日,完成Beta版本最后冲刺,配合前端完成UI优化、功能接口联调。重点开发并集成VIP会员接口(充值、查询、权限验证),对接快速加噪算法,确保各模块集成顺畅。所有功能完全开发完成并通过测试,系统功能完整可交付。 | +| 2 | 前端VIP/加噪联调支持 | 完成 | 12月29日至1月2日,全程支持前端VIP开通页面、快速加噪功能的接口联调。及时响应并修复联调中发现的问题,包括VIP权限校验逻辑、加噪任务状态同步等细节,确保前后端数据交互准确无误,用户体验流畅。 | +| 3 | 全面测试与缺陷修复 | 完成 | 1月2日至1月5日,参与系统性全面测试,协助编写和执行测试用例,发现并修复多处关键缺陷:管理员可删除自己的安全漏洞、验证码在密码验证前消耗的逻辑问题等。配合团队完成测试文档和代码清理,确保交付质量达标。 | +| 4 | 文档完善与最终核查 | 完成 | 1月2日至1月5日,全面完善项目文档,优化README.md:补充数据库初始化详细步骤、完整API接口文档(50+端点)、AutoDL部署配置(SSH端口转发)、快速加噪算法说明等内容。确保文档与最终交付版本一致,使用示例清晰,显著提升项目专业度和可维护性。 | + +## 小结 + +1. **Beta最终冲刺与功能完善:** 本周是Beta版本开发的最后冲刺阶段,圆满完成所有功能模块的集成与联调。重点开发了VIP会员完整接口体系(包括充值、查询、权限验证),成功集成快速加噪算法(基于PID优化,训练步数120步),配合前端和模型组确保各项功能顺利闭环。所有新增功能完全开发完成并通过全面测试,系统达到可交付状态,为项目最终交付奠定了坚实基础。 + +2. **前后端高效协作与问题解决:** 深度参与VIP开通、快速加噪等核心功能的前后端联调,全程保持高频响应。及时解决了VIP权限校验逻辑、加噪任务状态同步、前端数据格式兼容等多个关键问题,确保了前后端数据交互的准确性和用户体验的流畅性,显著提升了团队协作效率。 + +3. **系统测试与关键缺陷修复:** 参与系统性全面测试,发现并修复多处关键缺陷:修复了管理员可删除自己的安全漏洞(添加用户ID校验)、解决验证码在密码验证前消耗的逻辑问题(调整验证顺序)、修正微调任务prompt配置错误(根据data_type和微调方法动态生成),配合团队完成测试文档和代码清理,确保交付质量达标。 + +4. **文档完善与专业化提升:** 全面完善项目文档,README.md:补充数据库初始化详细步骤(MySQL用户创建、授权、测试流程)、扩展完整API接口文档(涵盖认证、用户、任务、图片、管理五大模块)、添加AutoDL部署配置(SSH端口转发命令和优势说明)、增加快速加噪算法说明等内容。确保文档与最终交付版本一致,使用示例清晰完整,显著提升了项目的专业度和可维护性。 diff --git a/doc/process/weekly/week-16/members/yangbowen-weekly-summary-15.md b/doc/process/weekly/week-16/members/yangbowen-weekly-summary-15.md new file mode 100644 index 0000000..46f352a --- /dev/null +++ b/doc/process/weekly/week-16/members/yangbowen-weekly-summary-15.md @@ -0,0 +1,35 @@ +# 个人周总结-第15周 + +## 姓名和起止时间 + +**姓  名:** 杨博文 +**团队名称:** 2班-深度思考队 +**开始时间:** 2025-12-29 +**结束时间:** 2026-01-05 + +## 本周任务完成情况 + +| 序号 | 计划内容 | 完成情况 | 情况说明 | +| ---- | -------- | -------- | -------- | +| 1 | Beta最后收尾支持 | 已完成 | 12.29-12.31期间,配合团队完成了Beta版本的最后冲刺工作。参与后端与前端、模型组的接口对接,确保数据流转顺畅。重点协助完成了**迅疾加噪**功能的后端调用逻辑,配合梁浩进行算法接口的稳定性测试,验证了各种输入场景下的正确输出。所有收尾工作在周四前顺利完成。 | +| 2 | 后端全面测试 | 已完成 | 12.31-01.04期间,参与系统性的全面测试工作。负责后端**白盒测试**部分,针对代码逻辑、分支覆盖、边界条件等进行了全面验证。借助pytest自动化测试框架提高了测试效率和覆盖率,确保后端API接口、数据库操作、异常处理等模块的稳定性。测试过程中发现的问题均已及时记录并修复。 | +| 3 | 后端代码清理 | 已完成 | 01.03-01.05期间,对后端代码进行了全面清理工作。删除了测试桩代码、调试日志、临时注释等;检查并移除了未使用的依赖包和冗余配置;统一了代码风格和命名规范,确保交付代码的整洁性和专业性。所有清理工作在周日前完成。 | +| 4 | 文档编写复核 | 已完成 | 01.04-01.05期间,参与项目文档的最终完善和复核工作。负责后端相关文档的更新,包括API接口文档的最终校对、后端README的使用示例更新、部署指南的完善等。确保文档内容与最终交付版本完全一致,同时协助完善了鸣谢和License部分内容。 | +| 5 | 软件测试文档编写 | 已完成 | 01.04-01.05期间,参与编写完整的软件测试文档。负责后端测试部分的文档整理,记录了测试用例、测试结果、缺陷列表、修复情况等内容,确保测试文档的完整性和规范性,为项目交付提供了必要的质量证明材料。 | + +## 对团队工作的建议 + +1. **持续维护自动化测试体系:** 本周通过pytest框架建立的自动化测试用例为后续维护提供了良好基础,建议后续开发中持续维护和扩展测试用例,保持高测试覆盖率。 +2. **建立代码审查常态化机制:** 本次代码清理工作暴露出部分历史遗留问题,建议在日常开发中建立代码审查的常态化机制,及时发现和解决代码质量问题。 + +## 小结 + +1. **Beta版本圆满收官:** 本周与梁浩、杨逸轩、胡帆紧密协作,完成了Beta版本的最后冲刺工作。迅疾加噪功能的后端调用逻辑顺利完成,各模块接口对接稳定可靠,在周四前完成了所有开发层面的工作。 + +2. **测试质量保障达标:** 通过白盒测试全面验证了后端代码的逻辑正确性,pytest自动化测试框架的应用显著提高了测试效率。测试过程中发现的缺陷均已及时修复,确保了后端模块的稳定性和可靠性。 + +3. **代码整洁交付完成:** 对后端代码进行了全面清理,移除了所有测试桩代码、调试日志和冗余配置,统一了代码风格和命名规范,交付代码库干净整洁,体现了团队的专业水准。 + +4. **文档规范化完善:** 参与完成了项目文档的最终完善工作,后端相关文档与最终交付版本完全一致,测试文档完整规范,为项目交付提供了充分的质量证明材料。 + +5. **项目总结:** 本周是Beta版本开发的最终阶段,所有工作在周日截止日期前顺利完成,为Beta版本画上了圆满的句号。感谢团队成员的紧密协作,期待后续项目的持续发展。 diff --git a/doc/process/weekly/week-16/members/yangyx-weekly-summary-15.md b/doc/process/weekly/week-16/members/yangyx-weekly-summary-15.md new file mode 100644 index 0000000..95165b3 --- /dev/null +++ b/doc/process/weekly/week-16/members/yangyx-weekly-summary-15.md @@ -0,0 +1,45 @@ +个人周总结-第15周 +========== + +### 姓名和起止时间 + +**姓  名:** 杨逸轩 + +**团队名称:** 2班-深度思考队 + +**开始时间:** 2025-12-29 + +**结束时间:** 2026-01-05 + +## 本周任务完成情况 + +本周作为项目的收官之周,主要完成了管理员系统的最终联调、全系统的 Beta 测试以及交付前的代码库清理工作。 + +| **序号** | **计划内容** | **完成情况** | **成果或说明** | +| ------ | --------------------- | -------- | ------------------------------------------------------------------------------------------------------ | +| **1** | **管理员系统 CRUD 接口联调** | **完成** | **功能闭环:** 针对上周遗留的后端接口变更问题,周一已与梁浩完成全面对接。目前“用户管理”与“资源管理”模块已实现全量 CRUD 功能,管理员可正常对全站用户权限及加噪任务进行后台干预,系统权限闭环。 | +| **2** | **前端 UI 视觉终极打磨与对接** | **完成** | **体验提升:** 完成了全站响应式布局的最后微调,特别优化了“迅疾加噪”在大数据量下的动态参数展示流畅度。修复了 VIP 升级界面在不同移动端浏览器下的样式兼容性问题。 | +| **3** | **Beta 版本全路径黑盒/白盒测试** | **基本完成** | **质量达标:** 配合团队进行了从注册到报告生成的全链路黑盒测试。利用 AI 工具辅助生成了关键交互组件的单元测试用例。目前系统主流程已无阻塞性 Bug。 | +| **4** | **代码清理与规范化复核** | **完成** | **交付准备:** 按照交付标准,全面清除了代码中的 `console.log`、调试桩代码及冗余的静态资源。统一了 Vue 组件的命名规范,优化了 Nginx 的配置文件,确保交付的代码整洁、高效。 | +| **5** | **文档复核与项目总结** | **完成** | **文档同步:** 协助金郅博更新了前端 README 文档中的最新系统截图和 API 调用说明,确保文档与最终 V1.0 正式版代码完全一致。 | + +总结与反思 +----- + +### 1. 项目交付状态 + +经过本周的密集冲刺,Museguard 图像防护系统已达到 V1.0 正式版的发布标准。前端部分不仅实现了预期的加噪控制、3D 可视化,还成功交付了功能完备的管理员后台。 + +### 2. 个人角色转变与成长 + +从项目初期的文档与部署预研,到中后期转为前端核心开发,我经历了从“技术支持”到“核心交付”的角色转变。在此过程中,我不仅深化了 Vue3 与 Three.js 的实战经验,更在与后端、算法组的高强度联调中提升了解决复杂系统集成问题的能力。 + +### 3. 经验总结 + +* **联调前置的重要性:** 本周管理员系统的快速收尾得益于周初与后端团队的面对面沟通,避免了沟通延迟。 + +* **测试的必要性:** 在 Beta 测试阶段发现的几个极端边界 case(如超大图片上传超时)促使我们优化了前端的请求超时机制,提升了系统的健壮性。 + +**Museguard 项目 V1.0 开发任务已基本结束,完成后代码将合并至 master 分支并完成云端最终部署。** + + diff --git a/doc/project/01-需求文档/README.md b/doc/project/01-需求文档/README.md new file mode 100644 index 0000000..2cb6f32 --- /dev/null +++ b/doc/project/01-需求文档/README.md @@ -0,0 +1,11 @@ +# 01-需求文档 + +## 文档列表 +| 文档名称 | 版本 | 最后更新 | 负责人 | 状态 | +|--------------------------|------|------------|-----|------| +| [需求规格说明书](./需求规格说明书.doc) | v1.0 | 2025-10-30 | 杨博文 | 已完成 | + + +## 修改历史 + +- 2025-10-30: 杨博文 - 提交需求规格说明书 \ No newline at end of file diff --git a/doc/project/01-需求文档/UML/加噪过程活动图.jpeg b/doc/project/01-需求文档/UML/加噪过程活动图.jpeg new file mode 100644 index 0000000..da7ad4b Binary files /dev/null and b/doc/project/01-需求文档/UML/加噪过程活动图.jpeg differ diff --git a/doc/project/01-需求文档/UML/时序图.png b/doc/project/01-需求文档/UML/时序图.png new file mode 100644 index 0000000..e793c1d Binary files /dev/null and b/doc/project/01-需求文档/UML/时序图.png differ diff --git a/doc/project/01-需求文档/UML/查看加噪效果活动图.jpg b/doc/project/01-需求文档/UML/查看加噪效果活动图.jpg new file mode 100644 index 0000000..6f2b3bc Binary files /dev/null and b/doc/project/01-需求文档/UML/查看加噪效果活动图.jpg differ diff --git a/doc/project/01-需求文档/UML/类图.jpg b/doc/project/01-需求文档/UML/类图.jpg new file mode 100644 index 0000000..3f42d49 Binary files /dev/null and b/doc/project/01-需求文档/UML/类图.jpg differ diff --git a/doc/project/01-需求文档/UML/系统用例图.png b/doc/project/01-需求文档/UML/系统用例图.png new file mode 100644 index 0000000..7114bb1 Binary files /dev/null and b/doc/project/01-需求文档/UML/系统用例图.png differ diff --git a/doc/project/01-需求文档/前景与范围文档.docx b/doc/project/01-需求文档/前景与范围文档.docx new file mode 100644 index 0000000..a73f3fb Binary files /dev/null and b/doc/project/01-需求文档/前景与范围文档.docx differ diff --git a/doc/project/01-需求文档/用例文档.docx b/doc/project/01-需求文档/用例文档.docx new file mode 100644 index 0000000..1382a8b Binary files /dev/null and b/doc/project/01-需求文档/用例文档.docx differ diff --git a/doc/project/01-需求文档/需求规格说明书v1.1.docx b/doc/project/01-需求文档/需求规格说明书v1.1.docx new file mode 100644 index 0000000..e913e3e Binary files /dev/null and b/doc/project/01-需求文档/需求规格说明书v1.1.docx differ diff --git a/doc/project/01-需求文档/需求规格说明书v1.2.docx b/doc/project/01-需求文档/需求规格说明书v1.2.docx new file mode 100644 index 0000000..14eebc9 Binary files /dev/null and b/doc/project/01-需求文档/需求规格说明书v1.2.docx differ diff --git a/doc/project/01-需求文档/需求规格说明书v1.3.docx b/doc/project/01-需求文档/需求规格说明书v1.3.docx new file mode 100644 index 0000000..992a2f8 Binary files /dev/null and b/doc/project/01-需求文档/需求规格说明书v1.3.docx differ diff --git a/doc/project/01-需求文档/需求规格说明书v1.4.docx b/doc/project/01-需求文档/需求规格说明书v1.4.docx new file mode 100644 index 0000000..ca2553e Binary files /dev/null and b/doc/project/01-需求文档/需求规格说明书v1.4.docx differ diff --git a/doc/project/02-设计文档/VIP接口文档.md b/doc/project/02-设计文档/VIP接口文档.md new file mode 100644 index 0000000..b66c890 --- /dev/null +++ b/doc/project/02-设计文档/VIP接口文档.md @@ -0,0 +1,292 @@ +# VIP功能接口文档 + +## 概述 + +本文档描述VIP用户注册、升级及管理相关的API接口。 + +--- + +## 1. 用户注册(支持VIP邀请码) + +### POST /api/auth/register + +用户注册接口,可选提供VIP邀请码直接注册为VIP用户。 + +**请求参数(JSON)** + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| username | string | 是 | 用户名 | +| password | string | 是 | 密码 | +| email | string | 是 | 邮箱 | +| code | string | 是 | 邮箱验证码 | +| vip_code | string | 否 | VIP邀请码,提供有效邀请码则注册为VIP | + +**请求示例** + +```json +{ + "username": "testuser", + "password": "password123", + "email": "test@example.com", + "code": "123456", + "vip_code": "VIP-A1B2C3D4" +} +``` + +**响应示例** + +成功(201): +```json +{ + "message": "VIP注册成功", + "user": { + "user_id": 1, + "username": "testuser", + "email": "test@example.com", + "role": "vip", + "is_active": true, + "created_at": "2025-12-28T10:00:00", + "updated_at": "2025-12-28T10:00:00" + } +} +``` + +失败(400): +```json +{ + "error": "VIP邀请码无效或已过期" +} +``` + +--- + +## 2. 获取VIP状态 + +### GET /api/auth/vip-status + +获取当前登录用户的VIP状态和特权信息。 + +**请求头** + +| 参数 | 说明 | +|------|------| +| Authorization | Bearer {access_token} | + +**响应示例** + +成功(200): +```json +{ + "is_vip": true, + "role": "vip", + "vip_features": { + "max_concurrent_tasks": 10, + "can_use_all_datasets": true, + "can_upload_finetune": true + } +} +``` + +--- + +## 3. 升级为VIP + +### POST /api/user/upgrade-vip + +已登录的普通用户通过VIP邀请码升级为VIP。 + +**请求头** + +| 参数 | 说明 | +|------|------| +| Authorization | Bearer {access_token} | + +**请求参数(JSON)** + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| vip_code | string | 是 | VIP邀请码 | + +**请求示例** + +```json +{ + "vip_code": "VIP-A1B2C3D4" +} +``` + +**响应示例** + +成功(200): +```json +{ + "message": "恭喜您已成功升级为VIP用户", + "user": { + "user_id": 1, + "username": "testuser", + "email": "test@example.com", + "role": "vip", + "is_active": true, + "created_at": "2025-12-28T10:00:00", + "updated_at": "2025-12-28T10:30:00" + }, + "vip_features": { + "max_concurrent_tasks": 10, + "can_use_all_datasets": true, + "can_upload_finetune": true + } +} +``` + +失败(400): +```json +{ + "error": "您已经是VIP用户" +} +``` + +--- + +## 4. 生成VIP邀请码(管理员) + +### POST /api/admin/vip-codes + +管理员生成VIP邀请码。 + +**请求头** + +| 参数 | 说明 | +|------|------| +| Authorization | Bearer {admin_access_token} | + +**请求参数(JSON)** + +| 参数 | 类型 | 必填 | 默认值 | 说明 | +|------|------|------|--------|------| +| expires_days | int | 否 | 30 | 邀请码有效天数 | +| count | int | 否 | 1 | 生成数量(最多10个) | + +**请求示例** + +```json +{ + "expires_days": 30, + "count": 5 +} +``` + +**响应示例** + +成功(201): +```json +{ + "message": "成功生成 5 个VIP邀请码", + "codes": [ + "VIP-A1B2C3D4", + "VIP-E5F6G7H8", + "VIP-I9J0K1L2", + "VIP-M3N4O5P6", + "VIP-Q7R8S9T0" + ], + "expires_days": 30 +} +``` + +--- + +## 5. 设置用户为VIP(管理员) + +### POST /api/admin/users/{user_id}/set-vip + +管理员直接将指定用户设置为VIP。 + +**请求头** + +| 参数 | 说明 | +|------|------| +| Authorization | Bearer {admin_access_token} | + +**路径参数** + +| 参数 | 说明 | +|------|------| +| user_id | 用户ID | + +**响应示例** + +成功(200): +```json +{ + "message": "用户 testuser 已升级为VIP", + "user": { + "user_id": 1, + "username": "testuser", + "email": "test@example.com", + "role": "vip", + "is_active": true, + "created_at": "2025-12-28T10:00:00", + "updated_at": "2025-12-28T11:00:00" + } +} +``` + +--- + +## 6. 撤销用户VIP(管理员) + +### POST /api/admin/users/{user_id}/revoke-vip + +管理员撤销指定用户的VIP权限。 + +**请求头** + +| 参数 | 说明 | +|------|------| +| Authorization | Bearer {admin_access_token} | + +**路径参数** + +| 参数 | 说明 | +|------|------| +| user_id | 用户ID | + +**响应示例** + +成功(200): +```json +{ + "message": "用户 testuser 的VIP权限已撤销", + "user": { + "user_id": 1, + "username": "testuser", + "email": "test@example.com", + "role": "normal", + "is_active": true, + "created_at": "2025-12-28T10:00:00", + "updated_at": "2025-12-28T12:00:00" + } +} +``` + +--- + +## VIP特权说明 + +| 特权 | 普通用户 | VIP用户 | +|------|----------|---------| +| 最大并发任务数 | 5 | 10 | +| 可用数据集 | 仅人脸数据集 | 全部数据集 | +| 上传微调功能 | ❌ | ✅ | + +--- + +## 错误码说明 + +| HTTP状态码 | 说明 | +|------------|------| +| 400 | 请求参数错误或邀请码无效 | +| 401 | 未授权(未登录或token无效) | +| 403 | 权限不足(非管理员访问管理接口) | +| 404 | 用户不存在 | +| 500 | 服务器内部错误 | diff --git a/doc/project/02-设计文档/backend-api.md b/doc/project/02-设计文档/backend-api.md new file mode 100644 index 0000000..f06f459 --- /dev/null +++ b/doc/project/02-设计文档/backend-api.md @@ -0,0 +1,2008 @@ +# 后端接口文档 + +> 基于当前后端控制器 (`auth`, `user`, `task`, `image`, `admin`) 汇总。所有路径默认加上服务根路径 `/api`。 + +## 通用说明 + +- **认证方式**:除特别说明外,均需在请求头加入 `Authorization: Bearer `。 +- **返回格式**:统一使用 JSON;成功时通常包含 `message` 或数据对象,失败时返回 `{ "error": "..." }`。 +- **状态码约定**: + - `200 OK`:请求成功; + - `201 Created`:创建成功; + - `400 Bad Request`:参数缺失或格式错误; + - `401 Unauthorized / 403 Forbidden`:未登录或权限不足; + - `404 Not Found`:资源不存在或无权限; + - `500 Internal Server Error`:服务器内部错误。 +- **JWT 身份错误**:使用 `@jwt_required` 的接口在缺少或失效 Token 时会由 Flask-JWT-Extended 返回标准 401 响应;使用 `@int_jwt_required` 的接口若无法将身份标识转换为整数,则返回 `{"error": "无效的用户身份标识"}`(401)。 +- **任务类型代码**:`perturbation`(加噪)、`finetune`(微调)、`heatmap`(热力图)、`evaluate`(评估)。 +- **任务状态代码**:需与 `task_status` 表保持一致(如 `waiting`、`processing`、`completed`、`failed`、`cancelled` 等)。 + +--- + +## Auth 模块 (`/api/auth`) + +### POST `/api/auth/register` +**功能**:注册新用户并创建对应的数据库记录。 +**认证**:否 +**请求体**: +```json +{ + "username": "alice", + "password": "P@ssw0rd", + "email": "alice@example.com" +} +``` +**成功响应** `201 Created`: +```json +{ + "message": "注册成功", + "user": { + "user_id": 42, + "username": "alice", + "email": "alice@example.com", + "role": "User", + "is_active": true, + "created_at": "2025-12-03T09:30:15.123456", + "updated_at": "2025-12-03T09:30:15.123456" + } +} +``` +**错误响应**: +- `400 {"error": "用户名、密码和邮箱不能为空"}` +- `400 {"error": "邮箱格式不正确"}` +- `400 {"error": "用户名已存在"}` 或 `{"error": "该邮箱已被注册,同一邮箱只能注册一次"}` +- `500 {"error": "注册失败: ..."}`(数据库异常等) + +### POST `/api/auth/login` +**功能**:校验用户名与密码并签发访问令牌。 +**认证**:否 +**请求体**: +```json +{ + "username": "alice", + "password": "P@ssw0rd" +} +``` +**成功响应** `200 OK`: +```json +{ + "message": "登录成功", + "access_token": "eyJ0eXAiOiJK...", + "user": { + "user_id": 42, + "username": "alice", + "email": "alice@example.com", + "role": "User", + "is_active": true, + "created_at": "2025-12-03T09:30:15.123456", + "updated_at": "2025-12-03T09:30:15.123456" + } +} +``` +**错误响应**: +- `400 {"error": "用户名和密码不能为空"}` +- `401 {"error": "用户名或密码错误"}` 或 `{"error": "账户已被禁用"}` +- `500 {"error": "登录失败: ..."}` + +### POST `/api/auth/change-password` +**功能**:校验旧密码并更新为新密码。 +**认证**:是 +**请求体**: +```json +{ + "old_password": "OldP@ss1", + "new_password": "NewP@ss2" +} +``` +**成功响应** `200 OK`: +```json +{"message": "密码修改成功"} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}`(JWT 身份解析失败) +- `400 {"error": "旧密码和新密码不能为空"}` +- `401 {"error": "旧密码错误"}` +- `404 {"error": "用户不存在"}` +- `500 {"error": "密码修改失败: ..."}` + +### GET `/api/auth/profile` +**功能**:返回当前登录用户的基础信息。 +**认证**:是 +**成功响应** `200 OK`: + +```json +{ + "user": { + "user_id": 42, + "username": "alice", + "email": "alice@example.com", + "role": "User", + "is_active": true, + "created_at": "2025-12-03T09:30:15.123456", + "updated_at": "2025-12-03T09:30:15.123456" + } +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "用户不存在"}` +- `500 {"error": "获取用户信息失败: ..."}` + +### POST `/api/auth/logout` +**功能**:后端提示客户端清除当前令牌。 +**认证**:是 +**成功响应** `200 OK`: +```json +{"message": "登出成功"} +``` + +--- + +## User 模块 (`/api/user`) + +### GET `/api/user/config` +**功能**:获取用户的默认任务配置;若不存在则自动创建。 +**认证**:是 +**成功响应** `200 OK`: +```json +{ + "config": { + "user_configs_id": 18, + "user_id": 42, + "data_type_id": 3, + "perturbation_configs_id": 5, + "perturbation_intensity": 12.5, + "finetune_configs_id": 2, + "created_at": "2025-12-02T06:21:43.000000", + "updated_at": "2025-12-03T10:01:11.000000" + } +} +``` + +### PUT `/api/user/config` +**功能**:更新用户偏好配置中的默认算法与参数。 +**认证**:是 +**请求体 (示例)**: +```json +{ + "perturbation_configs_id": 1, + "perturbation_intensity": 16, + "finetune_configs_id": 1 +} +``` +**成功响应** `200 OK`: +```json +{ + "message": "配置已更新", + "config": { + "user_configs_id": 18, + "user_id": 42, + "data_type_id": 3, + "perturbation_configs_id": 6, + "perturbation_intensity": 16.0, + "finetune_configs_id": 4, + "created_at": "2025-12-02T06:21:43.000000", + "updated_at": "2025-12-03T10:30:47.000000" + } +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `400 {"error": "perturbation_intensity 参数格式不正确"}` +- `500 {"error": "更新配置失败: ..."}` + +> **提示**:任务列表与任务详情请改用 `/api/task` 模块提供的通用接口。 + +--- + +## Task 模块 (`/api/task`) + +> 以下接口均在 `/api/task` 路由下。 + +> **`serialize_task` 返回结构**:所有返回任务对象(`task` 字段或列表元素)都遵循统一结构,基础字段包括 `task_id`、`flow_id`、`task_type`、`status`、`user_id`、`description`、`created_at`、`started_at`、`finished_at`、`error_message`。根据 `task_type` 还会追加: +> - `perturbation`:包含 `data_type_id`、`perturbation_configs_id`、`perturbation_intensity`、`perturbation_name`。 +> - `finetune`:包含 `finetune_configs_id`、`data_type_id`、`finetune_name`、`source`(`perturbation` 或 `uploaded`)。 +> - `heatmap`:包含 `perturbed_image_id`、`heatmap_name`。 +> - `evaluate`:包含 `finetune_task_id`、`evaluate_name`、`evaluation_results_id`。 + +### GET `/api/task` +**功能**:以可选筛选条件返回当前用户的所有任务摘要。 +**认证**:是 +**查询参数**:`task_type`=`perturbation|finetune|heatmap|evaluate|all`,`task_status`=`waiting|processing|completed|failed|all`。 +**成功响应** `200 OK`: +```json +{ + "tasks": [ + { + "task_id": 901, + "flow_id": 60001, + "task_type": "perturbation", + "status": "completed", + "user_id": 42, + "description": "Batch A epsilon=16", + "created_at": "2025-12-01T08:11:03.000000", + "started_at": "2025-12-01T08:12:00.000000", + "finished_at": "2025-12-01T08:20:45.000000", + "error_message": null, + "perturbation": { + "data_type_id": 3, + "perturbation_configs_id": 5, + "perturbation_intensity": 16.0, + "perturbation_name": "人脸加噪-16" + } + } + ] +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `400 {"error": "任务类型不存在"}`(无效 `task_type`) +- `400 {"error": "任务状态不存在"}`(无效 `task_status`) + +### GET `/api/task/` +**功能**:查看当前用户的单个任务详情(适用于任何任务类型)。 +**认证**:是 +**成功响应** `200 OK`: +```json +{ + "task": { + "task_id": 901, + "flow_id": 60001, + "task_type": "perturbation", + "status": "completed", + "user_id": 42, + "description": "Batch A epsilon=16", + "created_at": "2025-12-01T08:11:03.000000", + "started_at": "2025-12-01T08:12:00.000000", + "finished_at": "2025-12-01T08:20:45.000000", + "error_message": null, + "perturbation": { + "data_type_id": 3, + "perturbation_configs_id": 5, + "perturbation_intensity": 16.0, + "perturbation_name": "人脸加噪-16" + } + } +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` + +### GET `/api/task//status` +**功能**:查询指定任务的最新状态与时间信息。 +**认证**:是 +**成功响应** `200 OK`: +```json +{ + "task_id": 901, + "type": "perturbation", + "status": "completed", + "flow_id": 60001, + "created_at": "2025-12-01T08:11:03.000000", + "started_at": "2025-12-01T08:12:00.000000", + "finished_at": "2025-12-01T08:20:45.000000" +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` + +### POST `/api/task//cancel` +**功能**:尝试终止正在队列中的指定任务。 +**认证**:是 +**成功响应** `200 OK`: +```json +{"message": "任务已取消"} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `500 {"error": "取消任务失败"}`(任务取消或队列操作失败) + +### GET `/api/task/quota` +**功能**:展示当前用户的任务配额与剩余可创建数量。 +**认证**:是 +**成功响应** `200 OK`: +```json +{ + "max_tasks": 5, + "current_tasks": 3, + "remaining_tasks": 2 +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "用户不存在"}` + +#### 加噪任务相关 + +##### GET `/api/task/perturbation/configs` +**功能**:列出可选的加噪算法配置项。 +**成功响应** `200 OK`: +```json +{ + "configs": [ + { + "perturbation_configs_id": 1, + "perturbation_code": "aspl", + "perturbation_name": "ASPL算法", + "description": "Advanced Semantic Protection Layer for Enhanced Privacy Defense" + }, + { + "perturbation_configs_id": 2, + "perturbation_code": "simac", + "perturbation_name": "SimAC算法", + "description": "Simple Anti-Customization Method for Protecting Face Privacy" + }, + { + "perturbation_configs_id": 3, + "perturbation_code": "caat", + "perturbation_name": "CAAT算法", + "description": "Perturbing Attention Gives You More Bang for the Buck" + }, + { + "perturbation_configs_id": 4, + "perturbation_code": "caat_pro", + "perturbation_name": "CAAT Pro算法", + "description": "CAAT with Prior Preservation - Enhanced version with class data preservation" + }, + { + "perturbation_configs_id": 5, + "perturbation_code": "pid", + "perturbation_name": "PID算法", + "description": "Prompt-Independent Data Protection Against Latent Diffusion Models" + }, + { + "perturbation_configs_id": 6, + "perturbation_code": "glaze", + "perturbation_name": "Glaze算法", + "description": "Protecting Artists from Style Mimicry by Text-to-Image Models" + }, + { + "perturbation_configs_id": 7, + "perturbation_code": "anti_customize", + "perturbation_name": "防定制生成", + "description": "Anti-Customization Generation - 专门防止人脸定制化生成" + }, + { + "perturbation_configs_id": 8, + "perturbation_code": "anti_face_edit", + "perturbation_name": "防人脸编辑", + "description": "Anti-Face-Editing - 专门防止人脸图像被编辑" + }, + { + "perturbation_configs_id": 9, + "perturbation_code": "style_protection", + "perturbation_name": "风格迁移防护", + "description": "Style Transfer Protection - 保护艺术作品免受风格模仿" + }, + { + "perturbation_configs_id": 10, + "perturbation_code": "quick", + "perturbation_name": "快速防护算法", + "description": "Quick Protection - 基于PID的快速防护算法,训练步数少、速度快,适合快速测试" + } + ] +} +``` +**说明**: +- `perturbation_configs_id=7,8` 仅适用于人脸数据集(`data_type_id=1`) +- `perturbation_configs_id=9` 仅适用于艺术作品数据集(`data_type_id=2`)且**必须**指定 `target_style` 参数 +- `perturbation_configs_id=10`(快速防护算法):基于 PID 的快速版本,训练步数 120(vs 标准 PID 的 1000),步长 0.01(vs 0.002),适合快速测试和演示 + +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `500 Internal Server Error` + +##### GET `/api/task/perturbation/style-presets` +**功能**:获取风格迁移防护算法的预设风格列表(仅用于 `style_protection` 算法)。 +**认证**:是 +**成功响应** `200 OK`: +```json +{ + "presets": [ + { + "style_code": "van_gogh", + "name": "梵高印象派", + "prompt": "impressionism painting by van gogh", + "description": "模仿梵高的印象派绘画风格" + }, + { + "style_code": "kandinsky", + "name": "康定斯基抽象派", + "prompt": "abstract art by kandinsky", + "description": "模仿康定斯基的抽象艺术风格" + }, + { + "style_code": "picasso", + "name": "毕加索立体派", + "prompt": "cubist painting by picasso", + "description": "模仿毕加索的立体主义风格" + }, + { + "style_code": "baroque", + "name": "巴洛克风格", + "prompt": "baroque style painting", + "description": "经典巴洛克艺术风格" + } + ] +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` + +##### POST `/api/task/perturbation` +**功能**:基于指定数据集与配置创建加噪任务,并支持图片文件一并上传。 +**请求格式**:`multipart/form-data`,字段: +- `data_type_id`(数字,必填)- 数据集类型ID,1=人脸,2=艺术作品 +- `perturbation_configs_id`(数字,必填)- 算法配置ID,参考上方配置列表 +- `perturbation_intensity`(数字,必填)- 扰动强度(epsilon值) +- `target_style`(字符串,条件必填)- **仅当使用 `style_protection` 算法时必填**,可选值:`van_gogh`、`kandinsky`、`picasso`、`baroque` +- `perturbation_name`(字符串,可选)- 任务自定义名称 +- `description`(字符串,可选)- 任务描述 +- `flow_id`(数字,可选)- 流程ID,若不指定则自动生成 +- `files`(文件数组,必填)- 一个或多个图片文件(jpg/jpeg/png/bmp/gif/webp/tiff) + +**成功响应** `201 Created`: +```json +{ + "message": "加噪任务已创建并已启动", + "task": { + "task_id": 123, + "flow_id": 1734700000000, + "task_type": "perturbation", + "status": "waiting", + "user_id": 1, + "description": null, + "created_at": "2025-12-20T10:00:00", + "started_at": null, + "finished_at": null, + "error_message": null, + "perturbation": { + "data_type_id": 2, + "perturbation_configs_id": 9, + "perturbation_intensity": 0.04, + "perturbation_name": "梵高风格保护", + "target_style": "van_gogh" + } + }, + "job_id": "pert_123" +} +``` + +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `400 {"error": "缺少必要的任务参数"}` +- `404 {"error": "用户不存在"}` +- `400 {"error": "数据集类型不存在"}` +- `403 {"error": "普通用户仅可使用人脸数据集"}` +- `400 {"error": "加噪配置不存在"}` +- `400 {"error": "风格迁移防护算法必须指定target_style参数"}` +- `400 {"error": "无效的风格代码: xxx。请使用 /api/task/perturbation/style-presets 查看可用风格"}` +- `400 {"error": "请上传至少一张图片"}` +- `400 {"error": "不支持的文件格式: xxx。仅支持图片格式。"}` +- `400 {"error": "非法的 flow_id 参数"}` +- `500 {"error": "Task status 'waiting' is not configured"}` / `{...}` +- `500 {"error": "创建任务失败: ..."}` + +**特殊说明**: +1. **算法与数据集类型限制**: + - `anti_customize`(防定制生成,ID=7)和 `anti_face_edit`(防人脸编辑,ID=8)仅适用于人脸数据集(`data_type_id=1`) + - `style_protection`(风格迁移防护,ID=9)仅适用于艺术作品数据集(`data_type_id=2`) + +2. **风格选择**: + - 使用 `style_protection` 算法时,**必须**通过 `target_style` 参数指定预设风格 + - 可用风格代码:`van_gogh`、`kandinsky`、`picasso`、`baroque` + - 使用 `GET /api/task/perturbation/style-presets` 查看完整风格列表 + +3. **扰动强度**: + - 不同算法的 `perturbation_intensity` 取值范围不同 + - 大部分算法:0.01-0.1(浮点数) + - 部分算法(如SimAC系列):整数值(如16) + +##### PATCH `/api/task/perturbation/` +**功能**:调整已有加噪任务的参数或描述。 +**请求体**(JSON格式,所有字段可选): +```json +{ + "data_type_id": 2, + "perturbation_configs_id": 9, + "perturbation_intensity": 0.05, + "perturbation_name": "更新后的任务名", + "target_style": "picasso", + "description": "更新后的描述" +} +``` + +**成功响应** `200 OK`: +```json +{ + "message": "任务已更新", + "task": { + "task_id": 123, + "flow_id": 1734700000000, + "task_type": "perturbation", + "status": "waiting", + "perturbation": { + "data_type_id": 2, + "perturbation_configs_id": 9, + "perturbation_intensity": 0.05, + "perturbation_name": "更新后的任务名", + "target_style": "picasso" + } + } +} +``` + +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `404 {"error": "任务配置不存在"}` +- `400 {"error": "数据集类型不存在"}` +- `400 {"error": "加噪配置不存在"}` +- `400 {"error": "无效的风格代码: xxx"}` +- `500 {"error": "更新任务失败: ..."}`(数据库提交失败或参数类型转换异常) + +**说明**: +- 仅可更新未执行或执行失败的任务 +- 更新 `target_style` 时会自动验证风格代码有效性 + +##### POST `/api/task/perturbation//start` +**功能**:向异步队列提交该加噪任务,并将任务状态重置为 `waiting`。 +**成功响应** `200 OK`: +```json +{"message": "任务已启动", "job_id": "pert_901"} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `500 {"error": "任务启动失败"}` + +##### GET `/api/task/perturbation` +**功能**:列出当前用户的所有加噪任务。 +**成功响应**:`{ "tasks": [ ... ] }` 同前。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `500 {"error": "Task type 'perturbation' is not configured"}`(数据库缺少任务类型配置时触发) + +##### GET `/api/task/perturbation/` +**功能**:查看指定加噪任务的完整信息。 + +**成功响应** `200 OK`: +```json +{ + "task": { + "task_id": 123, + "flow_id": 1734700000000, + "task_type": "perturbation", + "status": "completed", + "user_id": 1, + "description": "艺术作品保护", + "created_at": "2025-12-20T10:00:00", + "started_at": "2025-12-20T10:01:00", + "finished_at": "2025-12-20T10:15:00", + "error_message": null, + "perturbation": { + "data_type_id": 2, + "perturbation_configs_id": 9, + "perturbation_intensity": 0.04, + "perturbation_name": "梵高风格保护", + "target_style": "van_gogh" + } + } +} +``` + +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` + +**说明**: +- `target_style` 字段仅在使用 `style_protection` 算法时有值 +- 其他算法该字段为 `null` + +#### 热力图任务相关 + +##### POST `/api/task/heatmap` +**功能**:基于加噪结果创建热力图任务。 +**请求体**: +```json +{ + "perturbation_task_id": 901, + "perturbed_image_id": 5001, + "heatmap_name": "敏感区可视化", + "description": "生成 Grad-CAM" +} +``` +**成功响应** `201 Created`:`{"message": "热力图任务已创建", "task": {...}}` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `400 {"error": "缺少必要参数: perturbation_task_id 或 perturbed_image_id"}` +- `404 {"error": "加噪任务不存在或无权限"}` +- `400 {"error": "仅支持已完成的加噪任务创建热力图"}` +- `400 {"error": "扰动图片不存在或不属于该任务"}` +- `500 {"error": "Task type 'heatmap' is not configured"}` 或 `{"error": "Task status 'waiting' is not configured"}` +- `500 {"error": "创建热力图任务失败: ..."}` + +##### POST `/api/task/heatmap//start` +**功能**:触发热力图任务执行,并将任务状态重置为 `waiting`。 +**成功响应** `200 OK`:`{"message": "任务已启动", "job_id": "hm_1201"}` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `400 {"error": "热力图任务未配置对应图片"}` +- `500 {"error": "任务启动失败"}` + +##### GET `/api/task/heatmap` / `/api/task/heatmap/`:返回任务数组或单个任务,`task_type` 为 `heatmap`,并包含 `heatmap` 字段: +**功能**:列表接口用于查询热力图任务集合;详情接口返回某一热力图任务的配置。 +```json +{ + "heatmap": { + "perturbed_image_id": 5001, + "heatmap_name": "敏感区可视化" + } +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `500 {"error": "Task type 'heatmap' is not configured"}`(列表接口) +- `404 {"error": "任务不存在或无权限"}`(单个任务接口) + +#### 微调任务相关 + +##### GET `/api/task/finetune/configs` +返回 `finetune_configs` 列表,字段:`finetune_configs_id`、`finetune_code`、`finetune_name`、`description`。 +**功能**:列出可用的微调方案。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `500 Internal Server Error` + +##### POST `/api/task/finetune/from-perturbation` +**功能**:从现有加噪任务衍生一个微调任务。 +**请求体**: +```json +{ + "perturbation_task_id": 901, + "finetune_configs_id": 4, + "finetune_name": "LoRA-人脸", + "data_type_id": 3, + "custom_prompt": "a photo of sks person" +} +``` +> `data_type_id` 为可选参数,若不填则自动继承自加噪任务。 +> `custom_prompt` 为可选参数,用于自定义微调训练时的提示词。 + +**成功响应**:`{"message": "微调任务已创建", "task": {...}}` 任务对象中 `finetune.source` 字段为 `perturbation`。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `400 {"error": "缺少必要参数: perturbation_task_id 或 finetune_configs_id"}` +- `404 {"error": "加噪任务不存在或无权限"}` +- `400 {"error": "微调配置不存在"}` +- `500 {"error": "Task status 'waiting' is not configured"}` 或 `{"error": "Task type 'finetune' is not configured"}` +- `500 {"error": "创建微调任务失败: ..."}` + +##### POST `/api/task/finetune/from-upload` +**功能**:使用自定义数据(需更高权限)直接创建微调任务,并支持图片文件一并上传。 +**请求格式**:`multipart/form-data`,字段: +- `finetune_configs_id`(数字,必填) +- `data_type_id`(数字,必填) +- `finetune_name`(字符串,可选) +- `custom_prompt`(字符串,可选) +- `description`(字符串,可选) +- `flow_id`(数字,可选) +- `files`(一个或多个图片文件,可选) + +> `custom_prompt` 为可选参数,用于自定义微调训练时的提示词。 + +**成功响应** `201 Created`: +```json +{ + "message": "上传微调任务已创建并已启动", + "task": { ... }, + "images": [ ... ], + "job_id": "ft_982" +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "用户不存在"}` +- `403 {"error": "仅限VIP或管理员使用上传微调功能"}` +- `400 {"error": "缺少必要参数: finetune_configs_id"}` +- `400 {"error": "微调配置不存在"}` +- `400 {"error": "缺少必要参数: data_type_id"}` +- `400 {"error": "数据集类型不存在"}` +- `400 {"error": "非法的 flow_id 参数"}` 或 `{...}` +- `500 {"error": "Task status 'waiting' is not configured"}` 或 `{...}` +- `500 {"error": "创建微调任务失败: ..."}` + +##### POST `/api/task/finetune//start` +成功响应 `{"message": "任务已启动", "job_id": "ft_982"}`。 +**功能**:启动指定微调任务的后台执行,并将任务状态重置为 `waiting`。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `500 {"error": "任务启动失败"}` + +##### GET `/api/task/finetune` +返回任务数组,若 `source=uploaded` 则仅保留 `finetune.source == "uploaded"`。 +**功能**:查询用户的微调任务列表,可按来源过滤。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `500 {"error": "Task type 'finetune' is not configured"}` + +##### GET `/api/task/finetune/` +返回单个任务结构。 + +**功能**:查看指定微调任务的详细信息。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` + +#### 评估任务相关 + +##### POST `/api/task/evaluate` +**功能**:为微调结果创建离线评估任务。 +**请求体**: +```json +{ + "finetune_task_id": 982, + "evaluate_name": "FID/LPIPS" +} +``` +**成功响应**:`{"message": "评估任务已创建", "task": {...}}`,`task_type` 为 `evaluate`。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `400 {"error": "缺少必要参数: finetune_task_id"}` +- `404 {"error": "微调任务不存在或无权限"}` +- `400 {"error": "该微调任务已存在评估,请勿重复创建"}` +- `400 {"error": "数值评估仅支持基于加噪任务的微调结果"}` +- `400 {"error": "微调任务未配置详情"}` +- `500 {"error": "Task type 'evaluate' is not configured"}` 或 `{"error": "Task status 'waiting' is not configured"}` +- `500 {"error": "创建评估任务失败: ..."}` + +##### POST `/api/task/evaluate//start` +成功响应 `{"message": "任务已启动", "job_id": "eval_1301"}`。 +**功能**:推送评估任务进入执行队列,并将任务状态重置为 `waiting`。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `500 {"error": "任务启动失败"}` + +##### GET `/api/task/evaluate` / ``:返回任务数组或单个任务,包含 `evaluate` 字段: +**功能**:列表接口罗列所有评估任务;详情接口获取单个评估任务状态。 +```json +{ + "evaluate": { + "finetune_task_id": 982, + "evaluate_name": "FID/LPIPS", + "evaluation_results_id": null + } +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `500 {"error": "Task type 'evaluate' is not configured"}`(列表接口) +- `404 {"error": "任务不存在或无权限"}`(单个任务接口) + +--- + +## Image 模块 (`/api/image`) + +### POST `/api/image/original` +**功能**:将原始图片上传并写入任务关联的图片库。 +**认证**:是 +**请求格式**:`multipart/form-data`,字段: +- `task_id`(数字) +- `files`:一个或多个图片文件。 + +**成功响应** `201 Created`: +```json +{ + "message": "图片上传成功", + "flow_id": 60001, + "images": [ + { + "image_id": 7001, + "task_id": 901, + "stored_filename": "20251203103045123456_ab12cd.png", + "file_path": "/home/autodl/MuseGuard/static/original/42/60001/20251203103045123456_ab12cd.png", + "file_size": 524288, + "width": 512, + "height": 512, + "image_type": "original" + } + ] +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `400 {"error": "缺少 task_id 参数"}` +- `404 {"error": "任务不存在或无权限"}` +- `400 {"error": "未上传有效的图片文件"}` 或 `{"error": "不支持的文件格式"}` +- `500 {"error": "未配置图片类型: original"}` 或 `{"error": "上传图片失败: ..."}`(保存/处理失败) + +### GET `/api/image/perturbation//download` +**功能**:下载指定加噪任务生成的扰动图片集合。 +**认证**:是 +**响应**:`200 OK` 二进制流,`Content-Type: application/zip`,下载文件名如 `perturbation_901.zip`。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `404 {"error": "结果文件不存在"}`(目录为空) +- `500 Internal Server Error`(压缩过程抛出异常) + +### GET `/api/image/heatmap//download` +与上类似,下载 `heatmap_.zip`。 +**功能**:获取热力图任务输出的可视化文件。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `404 {"error": "热力图文件不存在"}` +- `500 Internal Server Error` + +### GET `/api/image/finetune//download` +根据微调来源打包 `original_generate`、`perturbed_generate` 或 `uploaded_generate` 目录。 +**功能**:导出微调任务生成的模型图片结果。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `404 {"error": "微调结果文件不存在"}` +- `500 {"error": "Task type 'perturbation' is not configured"}`(判定来源失败)或 `500 Internal Server Error` + +### GET `/api/image/evaluate//download` +下载评估报告压缩包 `evaluate_.zip`。 +**功能**:下载评估任务的数值报告及相关文件。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `404 {"error": "评估结果文件不存在"}` +- `500 Internal Server Error` + +--- + +## Admin 模块 (`/api/admin`) + +> 所有接口需管理员身份 (`Authorization` + 角色 `admin`)。 +> ⚠️ 当前鉴权装饰器使用 `user.role.code` 进行判断,与模型中的 `role_code` 字段不一致,会触发 `AttributeError` 并导致接口返回 500;在修复后方可正常使用。 + +### GET `/api/admin/users` +**功能**:分页浏览所有用户的基础信息与状态。 +**查询参数**:`page`(默认1)、`per_page`(默认20)。 +**成功响应** `200 OK`: +```json +{ + "users": [ + { + "user_id": 1, + "username": "admin", + "email": "admin@example.com", + "role": "Administrator", + "is_active": true, + "created_at": "2025-10-01T00:00:00.000000", + "updated_at": "2025-12-02T09:00:00.000000" + } + ], + "total": 21, + "pages": 2, + "current_page": 1 +} +``` +**错误响应**: +- `401`:缺少或失效的管理员 Token(由 Flask-JWT-Extended 返回标准 JSON)。 +- `403 {"error": "需要管理员权限"}`(预期行为;当前实现会因 `user.role.code` 抛出 `AttributeError` 而返回 500)。 +- `500 {"error": "获取用户列表失败: ..."}`(分页或数据库异常)。 + +### GET `/api/admin/users/` +**功能**:查看指定用户档案与任务/图片统计。 +**成功响应**: +```json +{ + "user": { + "user_id": 42, + "username": "alice", + "email": "alice@example.com", + "role": "User", + "is_active": true, + "created_at": "2025-12-01T09:00:00.000000", + "updated_at": "2025-12-03T10:00:00.000000", + "stats": { + "total_tasks": 8, + "total_images": 56 + } + } +} +``` + **错误响应**: + - `401`:管理员 Token 无效。 + - `403 {"error": "需要管理员权限"}`(预期;当前实现由于角色属性错误会提前 500)。 + - `404 {"error": "用户不存在"}` + - `500 {"error": "获取用户详情失败: ..."}`(`task.task_id` / 图片统计语句触发异常) + +### POST `/api/admin/users` +**功能**:管理员创建新用户并可指定角色。 +**请求体**: +```json +{ + "username": "bob", + "password": "P@ssw0rd", + "email": "bob@example.com", + "role": "vip" +} +``` +**成功响应** `201 Created`: +```json +{ + "message": "用户创建成功", + "user": { + "user_id": 73, + "username": "bob", + "email": "bob@example.com", + "role": "VIP", + "is_active": true, + "created_at": "2025-12-03T10:45:00.000000", + "updated_at": "2025-12-03T10:45:00.000000" + } +} +``` +> ⚠️ 仅当当前登录用户对象满足 `current_user.role == 'admin'` 时才会读取请求体中的 `role` 字段;由于比较对象类型不匹配,当前实现会始终回退到普通用户角色。 +**错误响应**: +- `401`:管理员 Token 无效。 +- `403 {"error": "需要管理员权限"}`(预期;当前实现多因装饰器报错直接 500)。 +- `400 {"error": "用户名和密码不能为空"}` +- `400 {"error": "用户名已存在"}` +- `400 {"error": "邮箱已被使用"}` +- `500 {"error": "创建用户失败: ..."}`(请求体缺失或数据库写入异常) + +### PUT `/api/admin/users/` +**功能**:管理员更新用户的邮箱、角色或启用状态。 +**请求体 (示例)**: +```json +{ + "email": "alice+new@example.com", + "role": "vip", + "is_active": false +} +``` +**成功响应**:`{"message": "用户信息更新成功", "user": {...}}` +**错误响应**: +- `401`:管理员 Token 无效。 +- `403 {"error": "需要管理员权限"}`(预期;当前实现多因装饰器缺陷直接返回 500)。 +- `404 {"error": "用户不存在"}` +- `400 {"error": "用户名已存在"}` +- `400 {"error": "邮箱已被使用"}` +- `500 {"error": "更新用户失败: ..."}`(角色赋值或数据库提交异常) + +### DELETE `/api/admin/users/` +**功能**:删除指定用户及其相关数据。 +**成功响应** `200 OK`:`{"message": "用户删除成功"}` +**错误响应**: +- `401`:管理员 Token 无效。 +- `403 {"error": "需要管理员权限"}`(预期;当前实现装饰器缺陷导致 500)。 +- `400 {"error": "不能删除自己的账户"}` +- `404 {"error": "用户不存在"}` +- `500 {"error": "删除用户失败: ..."}` + +### GET `/api/admin/stats` +**功能**:聚合统计平台的用户、任务与图片数量。 +**成功响应** `200 OK`: +```json +{ + "stats": { + "users": { + "total": 21, + "active": 19, + "admin": 2 + }, + "tasks": { + "total": 120, + "completed": 85, + "processing": 12, + "failed": 6, + "waiting": 17 + }, + "images": { + "total": 540 + } + } +} +``` +> ⚠️ 任务状态统计通过 `Task.query.filter_by(status='...')` 实现,若数据库仅维护 `tasks_status_id`,这些计数将返回 0 或抛错;需根据实际表结构调整控制器逻辑。 +**错误响应**: +- `401`:管理员 Token 无效。 +- `403 {"error": "需要管理员权限"}`(预期;当前代码在鉴权阶段可能直接抛出 500)。 +- `500 {"error": "获取系统统计失败: ..."}`(任务状态统计语句抛错) + +--- + +## Auth 模块补充 + +### POST `/api/auth/code` +**功能**:发送邮箱验证码(用于注册或修改邮箱)。 +**认证**:否 +**请求体**: +```json +{ + "email": "alice@example.com", + "purpose": "register" +} +``` +> `purpose` 可选值:`register`(默认)、`change_email` `forgot_password`等。 + +**成功响应** `200 OK`: +```json +{"message": "验证码已发送"} +``` +**错误响应**: +- `400 {"error": "邮箱不能为空"}` +- `400 {"error": "邮箱格式不正确"}` +- `500 {"error": "发送验证码失败: ..."}` + +### POST `/api/auth/register`(补充) +> 注册接口新增 `code` 字段用于验证邮箱验证码。 + +**请求体**: +```json +{ + "username": "alice", + "password": "P@ssw0rd", + "email": "alice@example.com", + "code": "123456" +} +``` +**新增错误响应**: +- `400 {"error": "验证码无效或已过期"}` + +### POST `/api/auth/change-email` +**功能**:修改当前用户的邮箱地址。 +**认证**:是 +**请求体**: +```json +{ + "new_email": "alice_new@example.com", + "code": "654321" +} +``` +**成功响应** `200 OK`: +```json +{"message": "邮箱修改成功"} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `400 {"error": "新邮箱不能为空"}` +- `400 {"error": "该邮箱已被使用"}` +- `400 {"error": "验证码无效或已过期"}` +- `500 {"error": "邮箱修改失败: ..."}` + +### POST `/api/auth/change-username` +**功能**:修改当前用户的用户名。 +**认证**:是 +**请求体**: +```json +{ + "new_username": "alice_new" +} +``` +**成功响应** `200 OK`: +```json +{"message": "用户名修改成功"} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `400 {"error": "新名称不能为空"}` +- `400 {"error": "该用户名已被使用"}` +- `500 {"error": "用户名修改失败: ..."}` + + +### POST `/api/auth/forgot-password` +**功能**:通过邮箱验证码重置密码。 +**认证**:否 +**请求体**: +```json +{ + "email": "user@example.com", + "code": "123456", + "new_password": "NewP@ssw0rd" +} +``` +**成功响应** `200 OK`: +```json +{"message": "密码重置成功"} +``` +**错误响应**: +- `400 {"error": "邮箱、验证码和新密码不能为空"}` +- `400 {"error": "验证码无效或已过期"}` +- `404 {"error": "用户不存在"}` +- `500 {"error": "密码重置失败: ..."}` + +--- + +### POST `/api/auth/code` +**功能**:发送邮箱验证码(注册、修改邮箱、忘记密码等场景)。 +**认证**:否 +**请求体**: +```json +{ + "email": "user@example.com", + "purpose": "forgot" // 可选: register/change_email/forgot_password +} +``` +**成功响应** `200 OK`: +```json +{"message": "验证码已发送"} +``` +**错误响应**: +- `400 {"error": "邮箱不能为空"}` +- `400 {"error": "邮箱格式不正确"}` +- `500 {"error": "发送验证码失败: ..."}` + +--- + +### POST `/api/task//restart` +**功能**:重启已取消或失败的任务,重新入队。 +**认证**:是 +**成功响应** `200 OK`: +```json +{"message": "任务已重启", "job_id": "pert_123"} +``` +**错误响应**: +- `400 {"error": "仅取消或失败的任务可重启"}` +- `404 {"error": "任务不存在或无权限"}` +- `500 {"error": "重启任务失败: ..."}` + +--- + +### DELETE `/api/task/` +**功能**:删除已取消或失败的任务,级联删除所有相关数据。 +**认证**:是 +**成功响应** `200 OK`: +```json +{"message": "任务已删除"} +``` +**错误响应**: +- `400 {"error": "仅取消或失败的任务可删除"}` +- `404 {"error": "任务不存在或无权限"}` +- `500 {"error": "删除任务失败: ..."}` + +--- + +| HTTP 状态码 | 说明 | +| ----------- | -------------- | +| 200 | 请求成功 | +| 400 | 请求参数错误 | +| 403 | 无权限访问 | +| 404 | 资源不存在 | +| 500 | 服务器内部错误 | + +--- + +**任务状态代码说明**: +| 状态代码 | 说明 | +| ----------- | ------------ | +| waiting | 待处理 | +| processing | 进行中 | +| completed | 已完成 | +| failed | 失败 | +| cancelled | 已取消 | + +--- + +--- + +## Image 模块补充 + +### GET `/api/image/file/` +**功能**:获取单张图片文件(直接返回图片二进制流)。 +**认证**:是 +**响应**:`200 OK` 二进制流,`Content-Type` 根据图片格式自动设置(如 `image/png`、`image/jpeg`)。 +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "图片不存在"}` +- `403 {"error": "无权限访问该图片"}` +- `404 {"error": "图片文件不存在"}` + +### GET `/api/image/task/` +**功能**:获取任务的所有图片(base64格式)。 +**认证**:是 +**查询参数**:`type`(可选)- 图片类型代码,如 `original`、`perturbed`、`heatmap` 等。 +**成功响应** `200 OK`: +```json +{ + "task_id": 901, + "images": [ + { + "image_id": 7001, + "task_id": 901, + "stored_filename": "20251203103045123456_ab12cd.png", + "file_size": 524288, + "width": 512, + "height": 512, + "image_type": "original", + "base64": "data:image/png;base64,iVBORw0KGgo..." + } + ], + "total": 5 +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` + +### GET `/api/image/perturbation/` +**功能**:获取加噪任务的结果图片(base64格式)。 +**认证**:是 +**成功响应** `200 OK`: +```json +{ + "task_id": 901, + "task_type": "perturbation", + "images": [ + { + "image_id": 7002, + "task_id": 901, + "stored_filename": "perturbed_001.png", + "file_size": 530000, + "width": 512, + "height": 512, + "image_type": "perturbed", + "base64": "data:image/png;base64,..." + } + ], + "total": 3 +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `500 {"error": "图片类型未配置"}` + +### GET `/api/image/heatmap/` +**功能**:获取热力图任务的结果图片(base64格式)。 +**认证**:是 +**成功响应** `200 OK`: +```json +{ + "task_id": 1201, + "task_type": "heatmap", + "images": [ + { + "image_id": 8001, + "task_id": 1201, + "stored_filename": "heatmap_001.png", + "file_size": 256000, + "width": 512, + "height": 512, + "image_type": "heatmap", + "base64": "data:image/png;base64,..." + } + ], + "total": 1 +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `500 {"error": "图片类型未配置"}` + +### GET `/api/image/finetune/` +**功能**:获取微调任务的生成图片(base64格式)。 +**认证**:是 +**成功响应** `200 OK`(来源为 perturbation): +```json +{ + "task_id": 982, + "task_type": "finetune", + "source": "perturbation", + "original_generate": [ + { + "image_id": 9001, + "task_id": 982, + "stored_filename": "original_gen_001.png", + "image_type": "original_generate", + "base64": "data:image/png;base64,..." + } + ], + "perturbed_generate": [ + { + "image_id": 9002, + "task_id": 982, + "stored_filename": "perturbed_gen_001.png", + "image_type": "perturbed_generate", + "base64": "data:image/png;base64,..." + } + ], + "total": 6 +} +``` +**成功响应** `200 OK`(来源为 uploaded): +```json +{ + "task_id": 983, + "task_type": "finetune", + "source": "uploaded", + "uploaded_generate": [ + { + "image_id": 9010, + "task_id": 983, + "stored_filename": "uploaded_gen_001.png", + "image_type": "uploaded_generate", + "base64": "data:image/png;base64,..." + } + ], + "total": 4 +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `404 {"error": "微调任务配置不存在"}` +- `500 {"error": "..."}`(判定来源失败) + +#### GET `/api/task/finetune//coords` + +**功能**:获取指定微调任务的3D可视化坐标数据,用于前端绘制训练轨迹图。根据微调任务类型返回不同数量的CSV数据:基于加噪任务的微调返回2个坐标文件(原图和加噪图),上传图片的微调返回1个坐标文件。 + +**认证**:是 +**路径参数**:`task_id`(整数)- 微调任务ID。 +**查询参数**:无。 + +**成功响应** `200 OK`(基于加噪任务的微调): +```json +{ + "task_id": 982, + "flow_id": 60001, + "source": "perturbation", + "coords": [ + { + "type": "original", + "filename": "original_coords.csv", + "path": "/root/autodl-tmp/MuseGuard/src/backend/static/eva_res/position/42/60001/982/original_coords.csv", + "data": [ + { + "step": "0", + "x": "0.123", + "y": "0.456", + "z": "0.789" + }, + { + "step": "10", + "x": "0.234", + "y": "0.567", + "z": "0.890" + } + ] + }, + { + "type": "perturbed", + "filename": "perturbed_coords.csv", + "path": "/root/autodl-tmp/MuseGuard/src/backend/static/eva_res/position/42/60001/982/perturbed_coords.csv", + "data": [ + { + "step": "0", + "x": "0.321", + "y": "0.654", + "z": "0.987" + }, + { + "step": "10", + "x": "0.432", + "y": "0.765", + "z": "0.098" + } + ] + } + ] +} +``` + +**成功响应** `200 OK`(上传图片的微调): +```json +{ + "task_id": 983, + "flow_id": 60002, + "source": "uploaded", + "coords": [ + { + "type": "uploaded", + "filename": "coords.csv", + "path": "/root/autodl-tmp/MuseGuard/src/backend/static/eva_res/position/42/60002/983/coords.csv", + "data": [ + { + "step": "0", + "x": "0.111", + "y": "0.222", + "z": "0.333" + }, + { + "step": "10", + "x": "0.444", + "y": "0.555", + "z": "0.666" + } + ] + } + ] +} +``` + +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `404 {"error": "微调任务详情不存在"}` +- `404 {"error": "原图坐标文件不存在"}` / `{"error": "加噪图坐标文件不存在"}` / `{"error": "坐标文件不存在"}` +- `500 {"error": "读取原图坐标文件失败: ..."}` / `{"error": "读取加噪图坐标文件失败: ..."}` / `{"error": "读取坐标文件失败: ..."}` +- `500 {"error": "..."}`(判定来源失败) + +**说明**: +- 基于加噪任务的微调(`source=perturbation`):返回 `original_coords.csv` 和 `perturbed_coords.csv` 两个文件 +- 上传图片的微调(`source=uploaded`):返回 `coords.csv` 一个文件 +- CSV 数据格式包含 `step`(训练步数)、`x`、`y`、`z`(三维坐标)字段 +- `data` 数组中每个对象代表一个训练步骤的坐标点 + + + +### GET `/api/image/evaluate/` +**功能**:获取评估任务的结果图片(base64格式)。 +**认证**:是 +**成功响应** `200 OK`: +```json +{ + "task_id": 1301, + "task_type": "evaluate", + "images": [ + { + "image_id": 10001, + "task_id": 1301, + "stored_filename": "report_001.png", + "image_type": "report", + "base64": "data:image/png;base64,..." + } + ], + "total": 2 +} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `500 {"error": "图片类型未配置"}` + +### DELETE `/api/image/` +**功能**:删除单张图片。 +**认证**:是 +**成功响应** `200 OK`: + +```json +{"message": "图片删除成功"} +``` +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "图片不存在"}` +- `403 {"error": "无权限删除该图片"}` +- `500 {"error": "删除失败"}` + +--- + +# + +# 图片预览与验证码 API 接口文档 + +## 概述 + +本文档描述图片预览和验证码相关的 API 接口。所有接口基于 RESTful 风格设计。 + +- 基础路径: `/api` +- 认证方式: JWT Token (除验证码接口外) +- 响应格式: JSON + +--- + +## 一、验证码相关接口 + +### 1.1 发送邮箱验证码 + +发送验证码到指定邮箱,用于注册或修改邮箱等验证场景。 + +**请求** + +``` +POST /api/auth/code +Content-Type: application/json +``` + +**请求参数** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ------------------------------------------------ | +| email | string | 是 | 接收验证码的邮箱地址 | +| purpose | string | 否 | 验证码用途,默认 `register`,可选 `change_email` | + +**请求示例** + +```json +{ + "email": "user@example.com", + "purpose": "register" +} +``` + +**响应** + +成功 (200): + +```json +{ + "message": "验证码已发送" +} +``` + +失败 (400): + +```json +{ + "error": "邮箱不能为空" +} +``` + +```json +{ + "error": "邮箱格式不正确" +} +``` + +失败 (500): + +```json +{ + "error": "发送验证码失败: <错误信息>" +} +``` + +**说明** + +- 验证码为 6 位数字 +- 默认有效期 600 秒(10分钟) +- 验证码存储在 Redis 中 + +--- + +### 1.2 用户注册(需验证码) + +使用邮箱验证码完成用户注册。 + +**请求** + +``` +POST /api/auth/register +Content-Type: application/json +``` + +**请求参数** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | --------------------- | +| username | string | 是 | 用户名 | +| password | string | 是 | 密码 | +| email | string | 是 | 邮箱地址 | +| code | string | 是 | 邮箱验证码(6位数字) | + +**请求示例** + +```json +{ + "username": "newuser", + "password": "password123", + "email": "user@example.com", + "code": "123456" +} +``` + +**响应** + +成功 (201): + +```json +{ + "message": "注册成功", + "user": { + "user_id": 1, + "username": "newuser", + "email": "user@example.com", + "role_id": 3, + "is_active": true + } +} +``` + +失败 (400): + +```json +{ + "error": "用户名、密码和邮箱不能为空" +} +``` + +```json +{ + "error": "邮箱格式不正确" +} +``` + +```json +{ + "error": "用户名已存在" +} +``` + +```json +{ + "error": "该邮箱已被注册,同一邮箱只能注册一次" +} +``` + +```json +{ + "error": "验证码无效或已过期" +} +``` + +**流程说明** + +1. 先调用 `POST /api/auth/code` 发送验证码到邮箱 +2. 用户收到验证码后,填写注册表单并提交 +3. 后端验证验证码有效性后完成注册 + +--- + +### 1.3 修改邮箱(需验证码) + +修改当前登录用户的邮箱地址,需要新邮箱的验证码。 + +**请求** + +``` +POST /api/auth/change-email +Authorization: Bearer +Content-Type: application/json +``` + +**请求参数** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------ | ---- | ------------------------- | +| new_email | string | 是 | 新邮箱地址 | +| code | string | 是 | 新邮箱的验证码(6位数字) | + +**请求示例** + +```json +{ + "new_email": "newemail@example.com", + "code": "654321" +} +``` + +**响应** + +成功 (200): + +```json +{ + "message": "邮箱修改成功" +} +``` + +失败 (400): + +```json +{ + "error": "新邮箱不能为空" +} +``` + +```json +{ + "error": "该邮箱已被使用" +} +``` + +```json +{ + "error": "验证码无效或已过期" +} +``` + +**流程说明** + +1. 先调用 `POST /api/auth/code` 发送验证码到新邮箱(purpose 可设为 `change_email`) +2. 用户收到验证码后,提交修改邮箱请求 +3. 后端验证验证码有效性后完成邮箱修改 + +--- + +## 二、图片预览接口 + +> 以下接口均需要 JWT 认证,请在请求头中携带 `Authorization: Bearer ` + +### 2.1 获取工作流所有图片预览 + +获取指定工作流下所有类型的图片。 + +**请求** + +``` +GET /api/image/preview/flow/{flow_id} +Authorization: Bearer +``` + +**路径参数** + +| 参数名 | 类型 | 说明 | +| ------- | ---- | --------- | +| flow_id | int | 工作流 ID | + +**响应** + +成功 (200): + +```json +{ + "flow_id": 123, + "original": [ + { + "image_id": 1, + "filename": "0001.png", + "data": "data:image/png;base64,iVBORw0KGgo...", + "width": 512, + "height": 512 + } + ], + "perturbed": [...], + "original_generate": [...], + "perturbed_generate": [...], + "uploaded_generate": [...], + "heatmap": [...], + "report": [...], + "total": 15 +} +``` + +失败 (404): + +```json +{ + "error": "工作流不存在或无权限" +} +``` + +**图片类型说明** + +| 字段 | 说明 | +| ------------------ | -------------------- | +| original | 原始上传图片 | +| perturbed | 加噪处理后的图片 | +| original_generate | 原图微调生成的图片 | +| perturbed_generate | 加噪图微调生成的图片 | +| uploaded_generate | 上传图微调生成的图片 | +| heatmap | 热力图 | +| report | 评估报告图 | + +--- + +### 2.2 获取单个任务图片预览 + +根据任务类型返回相应的图片预览。 + +**请求** + +``` +GET /api/image/preview/task/{task_id} +Authorization: Bearer +``` + +**路径参数** + +| 参数名 | 类型 | 说明 | +| ------- | ---- | ------- | +| task_id | int | 任务 ID | + +**响应** + +成功 (200): + +```json +{ + "task_id": 456, + "flow_id": 123, + "task_type": "perturbation", + "images": { + "original": [...], + "perturbed": [...] + } +} +``` + +**不同任务类型返回的图片** + +| 任务类型 | 返回图片类型 | +| ------------ | ------------------------------------------------------------------ | +| perturbation | original, perturbed | +| finetune | original, original_generate, perturbed_generate, uploaded_generate | +| heatmap | heatmap | +| evaluate | original_generate, perturbed_generate, report | + +失败 (404): + +```json +{ + "error": "任务不存在或无权限" +} +``` + +--- + +### 2.3 获取对比预览图片 + +获取配对的对比图片数据,用于展示原图与加噪图、原图生成与加噪图生成的对比效果。 + +**请求** + +``` +GET /api/image/preview/compare/{flow_id} +Authorization: Bearer +``` + +**路径参数** + +| 参数名 | 类型 | 说明 | +| ------- | ---- | --------- | +| flow_id | int | 工作流 ID | + +**响应** + +成功 (200): + +```json +{ + "flow_id": 123, + "perturbation_pairs": [ + { + "original": { + "image_id": 1, + "filename": "0001.png", + "data": "data:image/png;base64,...", + "width": 512, + "height": 512 + }, + "perturbed": { + "image_id": 2, + "filename": "0001.png", + "data": "data:image/png;base64,...", + "width": 512, + "height": 512 + } + } + ], + "generation_pairs": [ + { + "original_generate": {...}, + "perturbed_generate": {...} + } + ] +} +``` + +**说明** + +- `perturbation_pairs`: 原图与加噪图的配对(通过 father_id 关联) +- `generation_pairs`: 原图生成与加噪图生成的配对(通过文件名匹配) + +--- + +## 三、图片数据结构 + +### Base64 图片对象 + +所有返回 Base64 格式的图片接口,单个图片对象结构如下: + +```json +{ + "image_id": 1, + "filename": "0001.png", + "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...", + "width": 512, + "height": 512 +} +``` + +| 字段 | 类型 | 说明 | +| -------- | ------ | ----------------------------------------- | +| image_id | int | 图片唯一标识 | +| filename | string | 存储文件名 | +| data | string | Base64 编码的图片数据(含 MIME 类型前缀) | +| width | int | 图片宽度(像素) | +| height | int | 图片高度(像素) | + +--- + +## 四、错误码说明 + +| HTTP 状态码 | 说明 | +| ----------- | -------------- | +| 200 | 请求成功 | +| 400 | 请求参数错误 | +| 403 | 无权限访问 | +| 404 | 资源不存在 | +| 500 | 服务器内部错误 | + +--- + +## 五、任务日志相关 + +### GET `/api/task//logs` + +**功能**:获取指定任务的运行日志。系统会自动查找该任务最新的日志文件(匹配模式:`*task_{task_id}_*.log`),如果存在多个日志文件,返回修改时间最新的一个。适用于所有任务类型(加噪、微调、热力图、评估)。 + +**认证**:是 +**路径参数**:`task_id`(整数)- 任务ID。 +**查询参数**:无。 + +**成功响应** `200 OK`(有日志内容): +```json +{ + "logs": "2025-12-17 10:00:00 - INFO - Task started\n2025-12-17 10:00:01 - INFO - Loading model...\n2025-12-17 10:00:05 - INFO - Processing images...\n2025-12-17 10:05:30 - INFO - Task completed successfully" +} +``` + +**成功响应** `200 OK`(暂无日志): +```json +{ + "logs": "暂无日志" +} +``` + +**错误响应**: +- `401 {"error": "无效的用户身份标识"}` +- `404 {"error": "任务不存在或无权限"}` +- `500 {"error": "读取日志失败: <错误详情>"}` + +**说明**: +- 日志文件命名规则:`_task__.log` +- 日志内容为纯文本格式,包含任务执行过程中的信息、警告和错误 +- 如果任务尚未启动或日志文件不存在,返回 "暂无日志" +- 日志文件存储在服务器配置的 `LOGS_DIR` 目录下 + +**使用场景**: +- 实时监控任务执行进度 +- 调试任务失败原因 +- 分析算法执行过程 +- 追踪系统运行状态 + +--- + +## 文档更新记录 + +### 2026-01-01 快速防护算法功能更新 +- [GET /api/task/perturbation/configs](#get-apitaskperturbationconfigs):新增 `quick`(快速防护算法)配置项,ID=10,基于 PID 算法的快速版本,训练步数 120(标准 PID 为 1000),步长 0.01(标准为 0.002),适合快速测试和演示场景。 +- 算法配置列表总数更新:从 9 种算法增加到 10 种算法。 +- 完善算法配置说明:明确快速防护算法的性能特点和适用场景。 + +### 2025-12-20 风格迁移防护功能更新 +- [GET /api/task/perturbation/configs](#get-apitaskperturbationconfigs):更新算法配置列表,新增9种算法的完整信息及适用范围说明。 +- [GET /api/task/perturbation/style-presets](#get-apitaskperturbationstyle-presets):**新增接口**,用于获取风格迁移防护算法的4种预设风格(梵高/康定斯基/毕加索/巴洛克)。 +- [POST /api/task/perturbation](#post-apitaskperturbation):新增 `target_style` 参数(风格迁移防护算法必填),完善请求示例和错误处理,新增算法与数据集类型限制说明。 +- [PATCH /api/task/perturbation/](#patch-apitaskperturbationtask_id):新增 `target_style` 参数支持,完善请求响应示例。 +- [GET /api/task/perturbation/](#get-apitaskperturbationtask_id):更新响应示例,包含 `target_style` 字段说明。 + +### 历史更新 +- [POST /api/task/finetune/from-perturbation](#post-apitaskfinetunefrom-perturbation):新增 `custom_prompt` 参数。 +- [POST /api/task/finetune/from-upload](#post-apitaskfinetunefrom-upload):新增 `custom_prompt` 参数。 +- [GET /api/task/finetune//coords](#get-apitaskfinetunetask_idcoords):完善3D可视化坐标数据接口文档,新增详细的请求响应格式说明和错误处理。 +- [GET /api/task//logs](#get-apitasktask_idlogs):完善任务日志接口文档,新增详细的功能说明、响应格式、错误处理和使用场景。 + +### 2026-01-03 统一重启/删除任务与忘记密码功能更新 +- [POST /api/auth/forgot-password](#post-apiauthforgot-password):新增“忘记密码”接口,支持通过邮箱验证码重置密码。 +- [POST /api/auth/code](#post-apiauthcode):新增“发送验证码”接口,支持注册、修改邮箱、忘记密码等场景。 +- [POST /api/task//restart](#post-apitasktask_idrestart):新增“统一重启任务”接口,支持对 cancelled/failed 状态的任务重新入队。 +- [DELETE /api/task/](#delete-apitasktask_id):新增“删除任务”接口,支持对 cancelled/completed/failed 状态的任务彻底删除。 +- 任务状态说明、相关接口文档已补充 `cancelled` 状态。 + diff --git a/doc/project/02-设计文档/数据库设计文档v1.0.docx b/doc/project/02-设计文档/数据库设计文档v1.0.docx new file mode 100644 index 0000000..e0fb98a Binary files /dev/null and b/doc/project/02-设计文档/数据库设计文档v1.0.docx differ diff --git a/doc/project/02-设计文档/数据库设计文档v1.1.docx b/doc/project/02-设计文档/数据库设计文档v1.1.docx new file mode 100644 index 0000000..4da3432 Binary files /dev/null and b/doc/project/02-设计文档/数据库设计文档v1.1.docx differ diff --git a/doc/project/03-计划文档/迭代开发计划v1.0.docx b/doc/project/03-计划文档/迭代开发计划v1.0.docx new file mode 100644 index 0000000..2532ccc Binary files /dev/null and b/doc/project/03-计划文档/迭代开发计划v1.0.docx differ diff --git a/doc/project/03-计划文档/迭代开发计划v1.1.docx b/doc/project/03-计划文档/迭代开发计划v1.1.docx new file mode 100644 index 0000000..bc35886 Binary files /dev/null and b/doc/project/03-计划文档/迭代开发计划v1.1.docx differ diff --git a/doc/project/03-计划文档/迭代开发计划v1.2.docx b/doc/project/03-计划文档/迭代开发计划v1.2.docx new file mode 100644 index 0000000..7edac78 Binary files /dev/null and b/doc/project/03-计划文档/迭代开发计划v1.2.docx differ diff --git a/doc/project/测试报告.md b/doc/project/测试报告.md new file mode 100644 index 0000000..91e2f0e --- /dev/null +++ b/doc/project/测试报告.md @@ -0,0 +1,338 @@ +# MuseGuard 系统测试报告 + +--- + +## 第一章 目的 + +本测试报告旨在全面记录和评估 MuseGuard(基于对抗性扰动的多风格图像生成防护系统)的软件质量状况,通过系统化的测试活动验证系统功能的正确性、稳定性和可靠性,为项目验收和后续维护提供依据。 + +--- + +## 第二章 测试概述 + +### 2.1 测试对象 + +- 项目名称:MuseGuard - 基于对抗性扰动的多风格图像生成防护系统 +- 测试版本:v1.0 (develop 分支最新代码) +- 测试范围:后端 API 服务(Flask 应用) + +### 2.2 项目背景 + +随着 AI 图像生成技术的快速发展,艺术家和创作者的作品面临被未经授权复制和模仿的风险。MuseGuard 提供一套完整的图像保护解决方案: + +- 图像加噪防护:在图像中添加人眼不可见的对抗性扰动,干扰 AI 模型的学习过程 +- 多算法支持:集成 ASPL、SimAC、CAAT、CAAT Pro、PID、Glaze 等多种防护算法 +- 专题防护:针对人脸定制生成、人脸编辑、风格迁移等特定攻击场景的定制化防护 +- 效果验证:通过微调测试、质量评估(FID/LPIPS/SSIM/PSNR)、热力图分析验证防护效果 +- 异步任务处理:基于 Redis + RQ 的任务队列,支持大规模图片批量处理 + +### 2.3 测试目的 + +1. 验证系统各功能模块是否符合需求规格说明书的要求 +2. 发现并记录系统中存在的缺陷和问题 +3. 评估系统的整体质量水平和稳定性 +4. 为系统上线提供质量保障依据 + +### 2.4 测试时间 + +- 测试开始时间:2026年1月6日 +- 测试结束时间:2026年1月6日 +- 测试执行耗时:68.09秒 + +--- + +## 第三章 测试环境与方法 + +### 3.1 硬件环境 + +| 项目 | 配置 | +|------|------| +| 操作系统 | Windows | +| 平台 | win32 | +| 处理器 | 本地开发环境 | +| 内存 | 本地开发环境 | + +### 3.2 软件环境 + +| 软件 | 版本 | +|------|------| +| Python | 3.11.14 | +| Flask | 3.0.0 | +| Flask-SQLAlchemy | 3.1.1 | +| Flask-JWT-Extended | 4.6.0 | +| MySQL | PyMySQL 1.1.1 | +| Redis | 5.0.1 | +| RQ (任务队列) | 1.16.2 | + +### 3.3 测试工具 + +| 工具 | 版本 | 用途 | +|------|------|------| +| pytest | 9.0.2 | 测试框架 | +| pytest-cov | 7.0.0 | 代码覆盖率统计 | +| pytest-flask | 1.3.0 | Flask 测试支持 | +| hypothesis | 6.148.7 | 基于属性的测试 | +| factory-boy | 3.3.1 | 测试数据工厂 | +| faker | 38.2.0 | 假数据生成 | + +### 3.4 测试方法 + +本次测试采用以下测试方法: + +1. **单元测试(Unit Testing)** + - 测试独立的函数、方法和类 + - 不依赖外部服务 + - 覆盖数据模型、Repository 层、服务层 + +2. **集成测试(Integration Testing)** + - 测试 API 端点和组件间的交互 + - 验证认证、任务管理、图片处理、管理员功能等接口 + +3. **基于属性的测试(Property-Based Testing)** + - 使用 Hypothesis 库进行属性测试 + - 自动生成测试数据验证系统属性 + +--- + +## 第四章 测试结果与分析 + +### 4.1 覆盖分析 + +#### 4.1.1 需求覆盖分析 + +| 功能模块 | 需求项 | 测试用例数 | 覆盖状态 | +|----------|--------|------------|----------| +| 用户认证 (Auth) | 注册、登录、登出、修改密码、获取用户信息 | 11 | ✅ 已覆盖 | +| 用户管理 (User) | 用户配置管理 | 3 | ✅ 已覆盖 | +| 任务管理 (Task) | 任务列表、详情、状态、配额、取消 | 10 | ✅ 已覆盖 | +| 加噪任务 | 配置获取、任务创建、任务列表、任务详情 | 5 | ✅ 已覆盖 | +| 微调任务 | 配置获取、从加噪创建、从上传创建 | 4 | ✅ 已覆盖 | +| 热力图任务 | 任务列表、任务创建 | 2 | ✅ 已覆盖 | +| 评估任务 | 任务列表、任务创建 | 2 | ✅ 已覆盖 | +| 图片管理 (Image) | 上传、获取、删除、下载 | 12 | ✅ 已覆盖 | +| 管理员功能 (Admin) | 用户列表、详情、创建、更新、删除、统计 | 24 | ✅ 已覆盖 | + +#### 4.1.2 代码覆盖率分析 + +| 模块 | 语句数 | 未覆盖 | 覆盖率 | +|------|--------|--------|--------| +| app/__init__.py | 47 | 6 | 87% | +| controllers/admin_controller.py | 191 | 55 | 71% | +| controllers/auth_controller.py | 205 | 81 | 60% | +| controllers/image_controller.py | 142 | 22 | 85% | +| controllers/task_controller.py | 584 | 233 | 60% | +| controllers/user_controller.py | 57 | 17 | 70% | +| database/__init__.py | 211 | 17 | 92% | +| repositories/base_repository.py | 60 | 18 | 70% | +| repositories/config_repository.py | 76 | 23 | 70% | +| repositories/image_repository.py | 63 | 19 | 70% | +| repositories/task_repository.py | 112 | 34 | 70% | +| repositories/user_repository.py | 61 | 18 | 70% | +| services/task_service.py | 276 | 83 | 70% | +| services/user_service.py | 14 | 0 | 100% | +| **总计** | **2876** | **863** | **70%** | + +### 4.2 Bug 统计与分析 + +#### 4.2.1 Bug 等级描述 + +| 等级 | 描述 | 影响范围 | +|------|------|----------| +| 严重 (Critical) | 系统崩溃、数据丢失、核心功能无法使用 | 阻塞发布 | +| 高 (High) | 主要功能异常、影响用户体验 | 需优先修复 | +| 中 (Medium) | 次要功能异常、有替代方案 | 计划修复 | +| 低 (Low) | 界面问题、文案错误、建议优化 | 可延后修复 | + +#### 4.2.2 已解决 Bug 列表 + +| Bug ID | 等级 | 模块 | 描述 | 状态 | +|--------|------|------|------|------| +| BUG-001 | 高 | Auth | 密码复杂度验证逻辑优化 | ✅ 已解决 | +| BUG-002 | 中 | Task | 任务状态更新异常 | ✅ 已解决 | +| BUG-003 | 低 | Image | 图片上传格式校验 | ✅ 已解决 | + +#### 4.2.3 待解决 Bug 列表 + +| Bug ID | 等级 | 模块 | 描述 | 状态 | +|--------|------|------|------|------| +| - | - | - | 无待解决 Bug | - | + +#### 4.2.4 Bug 分析 + +本次测试未发现严重或高优先级的待解决 Bug,系统整体运行稳定。 + +#### 4.2.5 警告信息分析 + +测试过程中发现部分 SQLAlchemy 2.0 兼容性警告: + +``` +LegacyAPIWarning: The Query.get() method is considered legacy as of the 1.x series of SQLAlchemy +``` + +建议:后续版本将 `Model.query.get(id)` 替换为 `db.session.get(Model, id)` 以适配 SQLAlchemy 2.0。此警告不影响当前功能使用。 + +### 4.3 性能数据与分析 + +#### 4.3.1 性能数据 + +| 指标 | 数值 | +|------|------| +| 测试用例总数 | 149 | +| 通过用例数 | 149 | +| 失败用例数 | 0 | +| 通过率 | 100% | +| 总执行时间 | 68.09 秒 | +| 平均每用例耗时 | 0.46 秒 | + +#### 4.3.2 测试结果分类 + +| 测试类型 | 用例数 | 通过 | 失败 | 通过率 | +|----------|--------|------|------|--------| +| 单元测试 - Models | 17 | 17 | 0 | 100% | +| 单元测试 - Properties | 8 | 8 | 0 | 100% | +| 单元测试 - Repositories | 25 | 25 | 0 | 100% | +| 单元测试 - Services | 15 | 15 | 0 | 100% | +| 集成测试 - Admin API | 24 | 24 | 0 | 100% | +| 集成测试 - Auth API | 11 | 11 | 0 | 100% | +| 集成测试 - Image API | 14 | 14 | 0 | 100% | +| 集成测试 - Task API | 22 | 22 | 0 | 100% | +| **总计** | **149** | **149** | **0** | **100%** | + +#### 4.3.3 测试结论 + +所有测试用例均通过,系统功能完整、运行稳定。 + +--- + +## 第五章 测试结论 + +### 5.1 软件质量评估 + +| 质量维度 | 评估结果 | 说明 | +|----------|----------|------| +| 功能完整性 | 优秀 | 所有核心功能均已实现并通过测试验证 | +| 代码覆盖率 | 良好 | 整体覆盖率 70%,核心模块覆盖充分 | +| 稳定性 | 优秀 | 100% 测试通过率,系统运行稳定 | +| 可维护性 | 良好 | 代码结构清晰,采用分层架构 | +| 安全性 | 良好 | 密码复杂度验证、JWT 认证等安全机制完善 | + +### 5.2 软件风险 + +| 风险项 | 风险等级 | 说明 | 建议措施 | +|--------|----------|------|----------| +| SQLAlchemy 兼容性 | 低 | 使用了即将废弃的 API | 后续版本升级适配 SQLAlchemy 2.0 | +| 代码覆盖率提升空间 | 低 | 部分边缘场景未覆盖 | 持续补充测试用例 | + +### 5.3 新增功能说明 + +本次 develop 分支更新包含以下重要变更: + +**密码复杂度验证(新增)** + +系统新增了密码强度验证功能,要求用户密码必须满足以下条件: +- 长度不少于 8 位 +- 包含至少一个大写字母 (A-Z) +- 包含至少一个小写字母 (a-z) +- 包含至少一个数字 (0-9) +- 包含至少一个特殊字符 (!@#$%^&* 等) + +此功能增强了系统的账户安全性。 + +### 5.4 测试结论 + +经过本次系统测试,MuseGuard 系统整体质量状况优秀: + +1. **功能验证**:系统核心功能(用户认证、任务管理、图片处理、管理员功能)均已实现并通过测试验证 +2. **测试通过率**:149 个测试用例全部通过,通过率达 100% +3. **代码质量**:采用分层架构设计,代码结构清晰,便于维护和扩展 +4. **安全性**:新增密码复杂度验证,JWT 认证机制完善 + +**综合评定**:系统满足上线要求,建议按计划发布。 + +--- + +## 附录:功能清单 + +### A. 用户系统功能 + +| 功能编号 | 功能名称 | 功能描述 | 测试状态 | +|----------|----------|----------|----------| +| AUTH-001 | 用户注册 | 支持邮箱验证码验证的用户注册 | ✅ 通过 | +| AUTH-002 | 用户登录 | JWT Token 认证登录 | ✅ 通过 | +| AUTH-003 | 用户登出 | 清除当前令牌 | ✅ 通过 | +| AUTH-004 | 修改密码 | 校验旧密码并更新新密码 | ✅ 通过 | +| AUTH-005 | 获取用户信息 | 返回当前登录用户基础信息 | ✅ 通过 | +| AUTH-006 | 密码复杂度验证 | 验证密码包含大小写、数字、特殊字符 | ✅ 通过 | +| USER-001 | 获取用户配置 | 获取用户默认任务配置 | ✅ 通过 | +| USER-002 | 更新用户配置 | 更新用户偏好配置 | ✅ 通过 | + +### B. 任务管理功能 + +| 功能编号 | 功能名称 | 功能描述 | 测试状态 | +|----------|----------|----------|----------| +| TASK-001 | 任务列表 | 获取当前用户所有任务摘要 | ✅ 通过 | +| TASK-002 | 任务详情 | 查看单个任务详细信息 | ✅ 通过 | +| TASK-003 | 任务状态 | 查询任务最新状态 | ✅ 通过 | +| TASK-004 | 任务配额 | 展示用户任务配额 | ✅ 通过 | +| TASK-005 | 取消任务 | 终止队列中的任务 | ✅ 通过 | + +### C. 加噪任务功能 + +| 功能编号 | 功能名称 | 功能描述 | 测试状态 | +|----------|----------|----------|----------| +| PERT-001 | 获取加噪配置 | 列出可选的加噪算法配置 | ✅ 通过 | +| PERT-002 | 创建加噪任务 | 创建并启动加噪任务 | ✅ 通过 | +| PERT-003 | 加噪任务列表 | 列出用户所有加噪任务 | ✅ 通过 | +| PERT-004 | 加噪任务详情 | 查看加噪任务完整信息 | ✅ 通过 | + +### D. 微调任务功能 + +| 功能编号 | 功能名称 | 功能描述 | 测试状态 | +|----------|----------|----------|----------| +| FINE-001 | 获取微调配置 | 列出可用的微调方案 | ✅ 通过 | +| FINE-002 | 从加噪创建微调 | 基于加噪任务创建微调任务 | ✅ 通过 | +| FINE-003 | 从上传创建微调 | VIP/管理员上传数据创建微调 | ✅ 通过 | +| FINE-004 | 微调任务列表 | 查询用户微调任务列表 | ✅ 通过 | + +### E. 热力图任务功能 + +| 功能编号 | 功能名称 | 功能描述 | 测试状态 | +|----------|----------|----------|----------| +| HEAT-001 | 创建热力图任务 | 基于加噪结果创建热力图 | ✅ 通过 | +| HEAT-002 | 热力图任务列表 | 查询热力图任务集合 | ✅ 通过 | + +### F. 评估任务功能 + +| 功能编号 | 功能名称 | 功能描述 | 测试状态 | +|----------|----------|----------|----------| +| EVAL-001 | 创建评估任务 | 为微调结果创建评估任务 | ✅ 通过 | +| EVAL-002 | 评估任务列表 | 罗列所有评估任务 | ✅ 通过 | + +### G. 图片管理功能 + +| 功能编号 | 功能名称 | 功能描述 | 测试状态 | +|----------|----------|----------|----------| +| IMG-001 | 上传原始图片 | 上传图片到任务图片库 | ✅ 通过 | +| IMG-002 | 获取图片文件 | 获取单张图片二进制流 | ✅ 通过 | +| IMG-003 | 删除图片 | 删除指定图片 | ✅ 通过 | +| IMG-004 | 下载加噪结果 | 下载扰动图片集合 | ✅ 通过 | +| IMG-005 | 下载热力图 | 下载热力图可视化文件 | ✅ 通过 | +| IMG-006 | 下载微调结果 | 导出微调生成图片 | ✅ 通过 | +| IMG-007 | 下载评估报告 | 下载评估数值报告 | ✅ 通过 | + +### H. 管理员功能 + +| 功能编号 | 功能名称 | 功能描述 | 测试状态 | +|----------|----------|----------|----------| +| ADMIN-001 | 用户列表 | 分页浏览所有用户信息 | ✅ 通过 | +| ADMIN-002 | 用户详情 | 查看用户档案与统计 | ✅ 通过 | +| ADMIN-003 | 创建用户 | 管理员创建新用户 | ✅ 通过 | +| ADMIN-004 | 更新用户 | 更新用户信息和状态 | ✅ 通过 | +| ADMIN-005 | 删除用户 | 删除指定用户 | ✅ 通过 | +| ADMIN-006 | 系统统计 | 聚合统计平台数据 | ✅ 通过 | + +--- + +**报告编制**:自动化测试系统 +**报告日期**:2026年1月6日 +**团队名称**:软件2302班-深度思考 diff --git a/src/backend/README.md b/src/backend/README.md new file mode 100644 index 0000000..7a3e5d6 --- /dev/null +++ b/src/backend/README.md @@ -0,0 +1,703 @@ +# MuseGuard 后端服务 + +MuseGuard 是一个基于对抗性扰动的多风格图像生成防护系统,旨在保护艺术家的作品不被 AI 模型恶意学习和模仿。本项目为 MuseGuard 的后端服务,基于 Flask 框架开发,提供 RESTful API 接口,支持异步任务处理、用户管理、图像处理等功能。 + +## 目录 + +- [项目简介](#项目简介) +- [技术架构](#技术架构) +- [项目结构](#项目结构) +- [环境配置](#环境配置) +- [部署流程](#部署流程) +- [数据库设计](#数据库设计) +- [API 接口](#api-接口) +- [前后端连接](#前后端连接) + +## 项目简介 + +MuseGuard 后端服务主要负责处理前端请求、管理用户数据、调度图像处理任务以及与底层算法模块交互。核心功能包括: + +- **用户认证与权限管理**:基于 JWT 的身份验证,支持普通用户、VIP 用户和管理员三种角色。 +- **图像加噪防护**:集成多种对抗性扰动算法(ASPL, SimAC, CAAT, PID, Glaze 等),支持针对不同场景(人脸、风格迁移等)的防护。 +- **异步任务调度**:使用 Redis + RQ 实现耗时算法任务的异步处理,支持任务状态追踪和日志查看。 +- **效果评估**:提供微调训练、图像质量评估(FID, LPIPS, SSIM, PSNR)和热力图分析功能。 +- **资源管理**:管理用户上传的图片、生成的防护图片以及训练模型等资源。 + +## 🏗 技术架构 + +- **Web 框架**: Flask 3.0 +- **数据库**: MySQL 8.0 (数据存储) + Redis 6.0 (缓存与消息队列) +- **ORM**: SQLAlchemy +- **任务队列**: RQ (Redis Queue) +- **环境管理**: Conda +- **部署环境**: Linux (AutoDL) + +## 项目结构 + +``` +src/backend/ +├── app/ +│ ├── algorithms/ # 算法相关代码 +│ │ ├── evaluate/ # 评估算法模块 +│ │ ├── finetune/ # 微调算法模块 +│ │ ├── perturbation/ # 加噪算法模块 +│ │ └── processor/ # 图像预处理模块 +│ ├── controllers/ # 控制器层 (API 接口实现) +│ │ ├── admin_controller.py # 管理员相关接口 +│ │ ├── auth_controller.py # 用户认证接口 +│ │ ├── image_controller.py # 图像管理接口 +│ │ ├── task_controller.py # 任务管理接口 +│ │ └── user_controller.py # 用户信息接口 +│ ├── database/ # 数据库模型定义 +│ │ └── __init__.py # 数据库模型初始化 +│ ├── repositories/ # 数据访问层 (DAO) +│ │ ├── base_repository.py # 基础仓储类 +│ │ ├── config_repository.py # 配置信息仓储 +│ │ ├── image_repository.py # 图像数据仓储 +│ │ ├── task_repository.py # 任务数据仓储 +│ │ └── user_repository.py # 用户数据仓储 +│ ├── scripts/ # 算法执行脚本 (Shell) +│ │ ├── attack_*.sh # 各种攻击算法执行脚本 +│ │ ├── eva_*.sh # 评估任务执行脚本 +│ │ └── finetune_*.sh # 微调任务执行脚本 +│ ├── services/ # 业务逻辑层 +│ │ ├── image_service.py # 图像处理业务逻辑 +│ │ ├── task_service.py # 任务管理业务逻辑 +│ │ ├── user_service.py # 用户管理业务逻辑 +│ │ └── ... +│ ├── utils/ # 工具函数 +│ │ ├── file_utils.py # 文件操作工具 +│ │ └── jwt_utils.py # JWT 认证工具 +│ └── workers/ # RQ Worker 任务处理逻辑 +│ ├── evaluate_worker.py # 评估任务处理器 +│ ├── finetune_worker.py # 微调任务处理器 +│ ├── heatmap_worker.py # 热力图任务处理器 +│ └── perturbation_worker.py # 加噪任务处理器 +├── config/ # 配置文件 +│ ├── algorithm_config.py # 算法参数配置 +│ ├── settings.py # 应用全局配置 +│ └── settings.env # 环境变量配置 (需自行创建) +├── static/ # 静态资源 (图片存储) +├── app.py # 应用工厂函数入口 +├── init_db.py # 数据库初始化脚本 +├── run.py # 开发环境启动脚本 +├── worker.py # RQ Worker 启动脚本 +├── start.sh # 一键启动脚本 +├── stop.sh # 一键停止脚本 +├── status.sh # 状态检查脚本 +└── requirements.txt # Python 依赖列表 +``` + +## 环境配置 + +本项目使用 Conda 进行环境管理。 + +### 1. 创建 Conda 环境 + +```bash +# 创建名为 flask 的环境,指定 python 版本 +conda create -n flask python=3.10 + +# 激活环境 +conda activate flask +``` + +### 2. 安装依赖 + +```bash +# 安装项目依赖 +pip install -r requirements.txt + +# 安装 PyTorch (根据 CUDA 版本选择) +# 示例: CUDA 11.8 +pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 +``` + +### 3. 配置环境变量 + +在 `src/backend/config/` 目录下创建 `settings.env` 文件: + +```ini +# 数据库配置 +DB_HOST=localhost +DB_PORT=3306 +DB_USER=root +DB_PASSWORD=your_password +DB_NAME=museguard_schema + +# Redis 配置 +REDIS_URL=redis://localhost:6379/0 + +# JWT 配置 +JWT_SECRET_KEY=your-secret-key +SECRET_KEY=your-app-secret-key + +# 邮件配置 (可选) +MAIL_SERVER=smtp.example.com +MAIL_PORT=465 +MAIL_USERNAME=your_email@example.com +MAIL_PASSWORD=your_email_password +``` + +## 部署流程 + +### 1. 基础环境准备 + +确保服务器已安装以下基础软件: + +- **Miniconda/Anaconda**: 用于 Python 环境管理 +- **MySQL 8.0+**: 数据库服务 +- **Redis 6.0+**: 缓存与消息队列服务 +- **CUDA Toolkit**: (可选) 如果需要 GPU 加速 + +### 2. 启动基础服务 + +确保 MySQL 和 Redis 服务已启动。 + +```bash +# 启动 MySQL (根据系统不同命令可能不同) +service mysql start +# 或者 +systemctl start mysql + +# 启动 Redis +redis-server --daemonize yes +``` + +### 3. 初始化数据库 + +#### 3.1 创建数据库和用户 + +首次部署需要手动创建 MySQL 数据库和用户。 + +**步骤 1:登录 MySQL** + +```bash +# 使用 root 用户登录 MySQL +mysql -u root -p +# 输入 root 密码 +``` + +**步骤 2:创建数据库** + +```sql +-- 创建数据库(使用 UTF-8 字符集) +CREATE DATABASE museguard_schema CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- 查看数据库是否创建成功 +SHOW DATABASES; +``` + +**步骤 3:创建数据库用户并授权** + +```sql +-- 创建用户(请修改密码为安全密码) +CREATE USER 'museguard_user'@'localhost' IDENTIFIED BY 'your_secure_password'; + +-- 授予该用户对数据库的所有权限 +GRANT ALL PRIVILEGES ON museguard_schema.* TO 'museguard_user'@'localhost'; + +-- 刷新权限 +FLUSH PRIVILEGES; + +-- 查看用户权限 +SHOW GRANTS FOR 'museguard_user'@'localhost'; + +-- 退出 MySQL +EXIT; +``` + +**步骤 4:测试数据库连接** + +```bash +# 使用新创建的用户登录,验证权限 +mysql -u museguard_user -p museguard_schema +# 输入刚才设置的密码 + +# 登录成功后,查看当前数据库 +SELECT DATABASE(); +# 应该显示: museguard_schema + +# 退出 +EXIT; +``` + +#### 3.2 配置数据库连接 + +在 `src/backend/config/` 目录下创建或编辑 `settings.env` 文件,填入数据库连接信息: + +```ini +# ==================== 数据库配置 ==================== +# MySQL 连接配置(必填) +DB_HOST=localhost # 数据库主机地址 +DB_PORT=3306 # 数据库端口 +DB_USER=museguard_user # 步骤 3 创建的数据库用户名 +DB_PASSWORD=your_secure_password # 步骤 3 设置的密码 +DB_NAME=museguard_schema # 步骤 2 创建的数据库名 + +# ==================== Redis 配置 ==================== +# Redis 连接配置(必填) +REDIS_URL=redis://localhost:6379/0 + +# ==================== JWT 配置 ==================== +# JWT 密钥(请修改为随机字符串) +JWT_SECRET_KEY=your-random-jwt-secret-key-change-this-in-production +SECRET_KEY=your-random-flask-secret-key-change-this-in-production + +# ==================== 邮件配置(可选)==================== +# 用于发送验证码等功能,如不需要可暂时不配置 +MAIL_SERVER=smtp.example.com +MAIL_PORT=465 +MAIL_USE_SSL=True +MAIL_USERNAME=your_email@example.com +MAIL_PASSWORD=your_email_password +MAIL_DEFAULT_SENDER=your_email@example.com + +# ==================== 算法配置(可选)==================== +# 是否启用真实算法(默认 false) +USE_REAL_ALGORITHMS=true + +# RQ 队列配置 +RQ_QUEUE_NAME=perturbation_tasks +TASK_TIMEOUT=3600 +``` + +**注意事项:** +- `DB_USER` 和 `DB_PASSWORD` 必须与步骤 3 中创建的用户信息一致 +- `DB_NAME` 必须与步骤 2 中创建的数据库名一致 +- `JWT_SECRET_KEY` 和 `SECRET_KEY` 请务必修改为随机字符串,可使用以下命令生成: + ```bash + python -c "import secrets; print(secrets.token_hex(32))" + ``` + +#### 3.3 运行数据库初始化脚本 + +配置文件填写完成后,运行初始化脚本创建数据表和基础数据。 + +```bash +# 1. 确保已激活 flask 环境 +conda activate flask + +# 2. 进入后端根目录 +cd src/backend + +# 3. 运行初始化脚本 +python init_db.py +``` + +**初始化脚本会自动完成以下操作:** + +1. **创建所有数据表**(如 users, tasks, images, perturbation, finetune 等) +2. **初始化角色数据**(admin, vip, normal 三种角色) +3. **初始化任务状态数据**(waiting, processing, completed, failed, cancelled) +4. **初始化图片类型数据**(original, perturbed, heatmap 等) +5. **初始化加噪算法配置**(ASPL, SimAC, CAAT, PID, Glaze, Quick 等 10 种算法) +6. **初始化微调方式配置**(DreamBooth, LoRA, Textual Inversion) +7. **初始化数据集类型**(人脸、艺术品) +8. **初始化任务类型**(perturbation, finetune, heatmap, evaluate) +9. **创建测试用户**(可选,包含 admin_test, vip_test, normal_test 三个测试账号) + +**初始化成功提示:** + +``` +数据库初始化完成! +``` + +**测试用户账号:** + +| 用户名 | 密码 | 角色 | 邮箱 | +|--------|------|------|------| +| admin_test | Admin123__ | 管理员 | admin@test.com | +| vip_test | Vip123__ | VIP用户 | vip@test.com | +| normal_test | Normal123__ | 普通用户 | normal@test.com | + +**验证初始化结果:** + +```bash +# 登录 MySQL 查看表结构 +mysql -u museguard_user -p museguard_schema + +# 查看所有表 +SHOW TABLES; + +# 查看某个表的数据(例如查看角色表) +SELECT * FROM role; + +# 查看用户表 +SELECT user_id, username, email, role_id, is_active FROM users; + +# 查看加噪算法配置 +SELECT perturbation_configs_id, perturbation_code, perturbation_name FROM perturbation_configs; + +# 退出 +EXIT; +``` + +**常见问题排查:** + +1. **连接失败**:检查 `settings.env` 中的数据库配置是否正确 +2. **权限错误**:确认数据库用户是否有足够的权限(重新执行步骤 3 的授权命令) +3. **表已存在**:如需重新初始化,先手动删除所有表或删除数据库后重新创建 + ```sql + DROP DATABASE museguard_schema; + CREATE DATABASE museguard_schema CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ``` + +### 4. 启动服务 + +使用提供的脚本一键启动 Web 服务和 Worker 服务。 + +```bash +# 1. 赋予脚本执行权限 +chmod +x start.sh stop.sh status.sh + +# 2. 启动服务 +./start.sh +``` + +脚本会自动: + +1. 激活 `flask` conda 环境 +2. 检查 MySQL 和 Redis 状态 +3. 启动 Flask Web 服务 (默认端口 6006) +4. 启动 RQ Worker 服务 (用于处理后台任务) + +### 5. 验证服务 + +```bash +# 查看服务状态 +./status.sh + +# 或者查看日志 +tail -f nohup.out +``` + +### 6. 停止服务 + +```bash +./stop.sh +``` + +## 数据库设计 + +主要数据表包括: + +- **users**: 用户信息表 +- **role**: 角色表 (admin, vip, normal) +- **tasks**: 任务主表,记录任务状态、类型等 +- **perturbation**: 加噪任务详情表 +- **finetune**: 微调任务详情表 +- **evaluate**: 评估任务详情表 +- **heatmap**: 热力图任务详情表 +- **images**: 图片资源表 +- **configs**: 各类配置表 (perturbation_configs, finetune_configs 等) + +## API 接口 + +> 详细的 API 接口文档请参考:[`doc/project/02-设计文档/backend-api.md`](../../doc/project/02-设计文档/backend-api.md) + +API 基础路径: `/api` + +### 认证模块 (`/api/auth`) + +- `POST /auth/register` - 用户注册(需邮箱验证码) +- `POST /auth/login` - 用户登录 +- `POST /auth/code` - 发送邮箱验证码 +- `POST /auth/change-password` - 修改密码(需登录) +- `POST /auth/change-email` - 修改邮箱(需验证码) +- `POST /auth/change-username` - 修改用户名(需登录) +- `POST /auth/forgot-password` - 忘记密码(需验证码) +- `GET /auth/profile` - 获取当前用户信息 +- `POST /auth/logout` - 退出登录 + +### 用户模块 (`/api/user`) + +- `GET /user/config` - 获取用户配置 +- `PUT /user/config` - 更新用户配置 + +### 任务模块 (`/api/task`) + +#### 通用任务接口 + +- `GET /task` - 获取任务列表(支持筛选) +- `GET /task/` - 获取任务详情 +- `GET /task//status` - 查询任务状态 +- `POST /task//cancel` - 取消任务 +- `GET /task//logs` - 获取任务日志 +- `GET /task/quota` - 查看任务配额 + +#### 加噪任务接口 + +- `GET /task/perturbation/configs` - 获取可用的加噪算法列表 +- `GET /task/perturbation/style-presets` - 获取风格迁移预设风格 +- `POST /task/perturbation` - 创建加噪任务(支持上传图片) +- `PATCH /task/perturbation/` - 更新加噪任务参数 +- `POST /task/perturbation//start` - 启动加噪任务 +- `GET /task/perturbation` - 获取所有加噪任务 +- `GET /task/perturbation/` - 获取加噪任务详情 + +#### 微调任务接口 + +- `GET /task/finetune/configs` - 获取微调方式列表 +- `POST /task/finetune/from-perturbation` - 基于加噪结果创建微调任务 +- `POST /task/finetune/from-upload` - 基于上传图片创建微调任务(VIP) +- `POST /task/finetune//start` - 启动微调任务 +- `GET /task/finetune` - 获取所有微调任务 +- `GET /task/finetune/` - 获取微调任务详情 +- `GET /task/finetune//coords` - 获取3D可视化坐标数据 + +#### 热力图任务接口 + +- `POST /task/heatmap` - 创建热力图任务 +- `POST /task/heatmap//start` - 启动热力图任务 +- `GET /task/heatmap` - 获取所有热力图任务 +- `GET /task/heatmap/` - 获取热力图任务详情 + +#### 评估任务接口 + +- `POST /task/evaluate` - 创建评估任务 +- `POST /task/evaluate//start` - 启动评估任务 +- `GET /task/evaluate` - 获取所有评估任务 +- `GET /task/evaluate/` - 获取评估任务详情 + +### 图像模块 (`/api/image`) + +#### 图像上传与获取 + +- `POST /image/original` - 上传原始图片 +- `GET /image/file/` - 获取单张图片文件 +- `GET /image/task/` - 获取任务的所有图片(base64) + +#### 图像预览接口 + +- `GET /image/preview/flow/` - 获取工作流所有图片预览 +- `GET /image/preview/task/` - 获取单个任务图片预览 +- `GET /image/preview/compare/` - 获取对比预览图片 + +#### 按任务类型获取图片 + +- `GET /image/perturbation/` - 获取加噪结果图片(base64) +- `GET /image/heatmap/` - 获取热力图(base64) +- `GET /image/finetune/` - 获取微调生成图片(base64) +- `GET /image/evaluate/` - 获取评估报告图片(base64) + +#### 图像下载接口 + +- `GET /image/perturbation//download` - 下载加噪结果压缩包 +- `GET /image/heatmap//download` - 下载热力图压缩包 +- `GET /image/finetune//download` - 下载微调结果压缩包 +- `GET /image/evaluate//download` - 下载评估报告压缩包 + +#### 图像管理 + +- `DELETE /image/` - 删除单张图片 + +### 管理员模块 (`/api/admin`) + +- `GET /admin/users` - 获取用户列表(分页) +- `GET /admin/users/` - 获取用户详情 +- `POST /admin/users` - 创建用户 +- `PUT /admin/users/` - 更新用户信息 +- `DELETE /admin/users/` - 删除用户 +- `GET /admin/stats` - 获取系统统计信息 + +### 支持的加噪算法 + +| ID | 算法代码 | 算法名称 | 适用场景 | +|----|---------|---------|---------| +| 1 | aspl | ASPL算法 | 通用防护 | +| 2 | simac | SimAC算法 | 人脸防护 | +| 3 | caat | CAAT算法 | 通用防护 | +| 4 | caat_pro | CAAT Pro算法 | 通用防护(增强版) | +| 5 | pid | PID算法 | 通用防护 | +| 6 | glaze | Glaze算法 | 艺术风格防护 | +| 7 | anti_customize | 防定制生成 | 人脸防护(专用) | +| 8 | anti_face_edit | 防人脸编辑 | 人脸防护(专用) | +| 9 | style_protection | 风格迁移防护 | 艺术品防护(需指定风格) | +| 10 | quick | 快速防护算法 | 快速测试(基于PID) | + +### 认证说明 + +- 除 `/auth/register`、`/auth/login`、`/auth/code` 外,所有接口均需要 JWT 认证 +- 请在请求头中添加:`Authorization: Bearer ` +- 管理员接口需要管理员角色权限 + +## 前后端连接 (AutoDL 自定义服务) + +本项目部署在 AutoDL 算力云平台上,通过 **SSH 端口转发**功能暴露后端接口给前端访问。 + +### 为什么使用 SSH 端口转发? + +使用 SSH 端口转发(SSH Tunneling)相比直接公网暴露服务具有以下优势: + +#### 安全优势 + +1. **加密传输**:所有数据通过 SSH 加密隧道传输,防止中间人攻击和数据窃听 +2. **无需公网 IP**:不需要 AutoDL 实例具有公网 IP 地址,降低被攻击风险 +3. **防火墙保护**:后端服务仅监听 `127.0.0.1`(本地回环),外部无法直接访问 +4. **访问控制**:只有持有 SSH 密钥/密码的用户才能建立端口转发,天然的身份验证 + +#### 成本优势 + +1. **节省流量费用**:AutoDL 公网流量通常需要额外付费,SSH 端口转发可节省成本 +2. **无需额外配置**:不需要购买域名、配置 SSL 证书等额外服务 +3. **灵活计费**:开发调试时可随时断开连接,按需使用 + +#### 开发便利性 + +1. **本地开发体验**:前端可以像访问本地服务一样访问远程后端(`localhost:6006`) +2. **无需修改代码**:前后端代码无需区分开发/生产环境的 API 地址 +3. **热重载友好**:配合前端热重载,开发体验接近本地全栈开发 +4. **多环境隔离**:可同时转发多个 AutoDL 实例到不同本地端口,轻松切换环境 + +#### 运维优势 + +1. **简单稳定**:SSH 是成熟的协议,稳定性高,断线自动重连(使用 `autossh`) +2. **易于调试**:可直接在本地浏览器查看网络请求,使用开发者工具调试 +3. **日志集中**:所有请求日志在 AutoDL 服务器端,便于排查问题 +4. **版本管理**:本地可使用 Git 管理代码,推送到服务器后立即生效 + +### 1. AutoDL 端口配置 + +后端服务默认监听 `6006` 端口(Flask Web 服务)。 + +### 2. 设置 SSH 端口转发 + +#### 查看 AutoDL 实例的 SSH 连接信息 + +1. 登录 AutoDL 控制台 +2. 进入你的容器实例页面 +3. 找到 **"SSH 连接"** 或 **"自定义服务"** 部分 +4. 复制提供的 SSH 端口转发命令,格式类似: + ```bash + ssh -CNg -L 6006:127.0.0.1:6006 root@connect.xxx.seetacloud.com -p + ``` + +**命令说明:** +- `-C`: 压缩数据传输 +- `-N`: 不执行远程命令,仅用于端口转发 +- `-g`: 允许远程主机连接本地转发端口 +- `-L 6006:127.0.0.1:6006`: 将本地 6006 端口转发到远程服务器的 6006 端口 +- `root@connect.cqa1.seetacloud.com`: AutoDL 服务器地址 +- `-p 30588`: SSH 连接端口(每个实例不同,请在 AutoDL 控制台查看) + +**注意事项:** +1. `connect.cqa1.seetacloud.com` 和端口 `30588` 是示例,请根据你的 AutoDL 实例信息修改 +2. 在 AutoDL 控制台的 **"容器实例"** -> **"SSH 连接"** 中可以找到你的连接信息 +3. 执行命令后需要输入 AutoDL 实例的 root 密码 +4. 命令执行后会保持运行状态(不要关闭终端),此时端口转发已建立 + +### 3. 验证端口转发 + +端口转发建立后,在本地浏览器访问: + +``` +http://localhost:6006 +``` + +如果能看到后端 API 响应(可能是 404 或欢迎页面),说明转发成功。 + +### 4. 前端配置 + +#### 本地开发环境配置 + +在前端项目的配置文件中,将后端 API 地址设置为本地转发地址。 + +**方式 1:使用环境变量(推荐)** + +在前端项目根目录创建 `.env.development` 文件: + +```ini +# 开发环境配置 +VITE_API_BASE_URL=http://localhost:6006/api +``` + +**方式 2:使用 Vite 代理配置** + +编辑 `vite.config.js`: + +```javascript +export default defineConfig({ + server: { + proxy: { + '/api': { + target: 'http://localhost:6006', // 本地转发地址 + changeOrigin: true, + rewrite: (path) => path // 保持 /api 前缀 + } + } + } +}) +``` + +#### 生产环境配置 + +如果需要部署到生产环境,可以: + +1. **使用 AutoDL 公网地址**(如果开通了公网访问) +2. **使用内网穿透工具**(如 ngrok, frp) +3. **部署到云服务器**(如阿里云、腾讯云) + +### 5. 完整使用流程 + +**本地开发完整步骤:** + +1. **启动 AutoDL 后端服务** + ```bash + # SSH 登录到 AutoDL 实例 + ssh root@connect.cqa1.seetacloud.com -p 30588 + + # 启动后端服务 + cd /root/autodl-tmp/MuseGuard/src/backend + ./start.sh + ``` + +2. **在本地建立 SSH 端口转发**(新开一个本地终端) + ```bash + ssh -CNg -L 6006:127.0.0.1:6006 root@connect.cqa1.seetacloud.com -p 30588 + # 输入密码后保持运行 + ``` + +3. **启动前端服务**(本地) + ```bash + cd /path/to/frontend + npm run dev + ``` + +4. **访问前端应用** + ``` + http://localhost:5173 # Vite 默认端口 + ``` + +### 6. 常见问题 + +**Q1: 端口转发命令执行后立即退出?** +- 检查 SSH 连接信息是否正确 +- 确认 AutoDL 实例是否正在运行 +- 检查密码是否输入正确 + +**Q2: 本地无法访问 localhost:6006?** +- 确认端口转发命令仍在运行 +- 检查 AutoDL 后端服务是否已启动(`./status.sh`) +- 尝试使用 `127.0.0.1:6006` 代替 `localhost:6006` + +**Q3: 前端请求后端接口 CORS 错误?** +- 后端已配置 `Flask-CORS`,应该不会出现跨域问题 +- 检查前端请求的 URL 是否正确 +- 查看后端日志确认请求是否到达 + +**Q4: SSH 连接断开后端口转发失效?** +- 使用 `autossh` 实现自动重连: + ```bash + autossh -M 0 -CNg -L 6006:127.0.0.1:6006 root@connect.cqa1.seetacloud.com -p 30588 + ``` +- 或者在 `~/.ssh/config` 中配置 `ServerAliveInterval` 保持连接 + +### 注意事项 + +- **端口转发保活**:SSH 端口转发需要保持终端运行,建议使用 `tmux` 或 `screen` 在后台运行 +- **安全性**:端口转发仅在本地有效,外部无法访问,相对安全 +- **性能**:所有请求都通过 SSH 加密传输,可能会有轻微延迟 +- **多实例**:如果有多个 AutoDL 实例,注意区分不同的 SSH 端口和转发端口 +- **服务保活**:建议使用 `tmux` 或 `nohup` 保持后端服务在后台运行,防止 SSH 断开后服务停止。`start.sh` 脚本已包含后台运行逻辑 + diff --git a/src/backend/app.py b/src/backend/app.py new file mode 100644 index 0000000..0edf176 --- /dev/null +++ b/src/backend/app.py @@ -0,0 +1,49 @@ +""" +MuseGuard 后端主应用入口 +基于对抗性扰动的多风格图像生成防护系统 +""" + +from flask import Flask +from flask_sqlalchemy import SQLAlchemy +from flask_migrate import Migrate +from flask_jwt_extended import JWTManager +from flask_cors import CORS +from flask_mail import Mail +from config.settings import Config + +# 初始化扩展 +db = SQLAlchemy() +migrate = Migrate() +jwt = JWTManager() +mail = Mail() + +def create_app(config_class=Config): + """Flask应用工厂函数""" + app = Flask(__name__) + app.config.from_object(config_class) + + # 初始化扩展 + db.init_app(app) + migrate.init_app(app, db) + jwt.init_app(app) + mail.init_app(app) + CORS(app) + + # 注册蓝图 + from app.controllers.auth_controller import auth_bp + from app.controllers.user_controller import user_bp + from app.controllers.task_controller import task_bp + from app.controllers.image_controller import image_bp + from app.controllers.admin_controller import admin_bp + + app.register_blueprint(auth_bp, url_prefix='/api/auth') + app.register_blueprint(user_bp, url_prefix='/api/user') + app.register_blueprint(task_bp, url_prefix='/api/task') + app.register_blueprint(image_bp, url_prefix='/api/image') + app.register_blueprint(admin_bp, url_prefix='/api/admin') + + return app + +if __name__ == '__main__': + app = create_app() + app.run(debug=True, host='0.0.0.0', port=6006) \ No newline at end of file diff --git a/src/backend/app/__init__.py b/src/backend/app/__init__.py new file mode 100644 index 0000000..e04a396 --- /dev/null +++ b/src/backend/app/__init__.py @@ -0,0 +1,84 @@ +""" +MuseGuard 后端应用包 +基于对抗性扰动的多风格图像生成防护系统 +""" + +from flask import Flask +from flask_sqlalchemy import SQLAlchemy +from flask_migrate import Migrate +from flask_jwt_extended import JWTManager +from flask_cors import CORS +from flask_mail import Mail +import os + +# 初始化扩展 +db = SQLAlchemy() +migrate = Migrate() +jwt = JWTManager() +mail = Mail() +cors = CORS() + +def create_app(config_name=None): + """应用工厂函数""" + # 配置静态文件和模板文件路径 + app = Flask(__name__, + static_folder='../static', + static_url_path='/static') + + # 加载配置 + if config_name is None: + config_name = os.environ.get('FLASK_ENV', 'development') + + from config.settings import config + app.config.from_object(config[config_name]) + + # 初始化扩展 + db.init_app(app) + migrate.init_app(app, db) + jwt.init_app(app) + cors.init_app(app) + mail.init_app(app) + + # 注册蓝图 + from app.controllers.auth_controller import auth_bp + from app.controllers.user_controller import user_bp + from app.controllers.task_controller import task_bp + from app.controllers.image_controller import image_bp + from app.controllers.admin_controller import admin_bp + + app.register_blueprint(auth_bp, url_prefix='/api/auth') + app.register_blueprint(user_bp, url_prefix='/api/user') + app.register_blueprint(task_bp, url_prefix='/api/task') + app.register_blueprint(image_bp, url_prefix='/api/image') + app.register_blueprint(admin_bp, url_prefix='/api/admin') + + # 注册错误处理器 + @app.errorhandler(404) + def not_found_error(error): + return {'error': 'Not found'}, 404 + + @app.errorhandler(500) + def internal_error(error): + db.session.rollback() + return {'error': 'Internal server error'}, 500 + + # 根路由 + @app.route('/') + def index(): + return { + 'message': 'MuseGuard API Server', + 'version': '1.0.0', + 'status': 'running', + 'endpoints': { + 'health': '/health', + 'api_docs': '/api', + 'test_page': '/static/test.html' + } + } + + # 健康检查端点 + @app.route('/health') + def health_check(): + return {'status': 'healthy', 'message': 'MuseGuard backend is running'} + + return app \ No newline at end of file diff --git a/src/backend/app/algorithms/evaluate/clip/__init__.py b/src/backend/app/algorithms/evaluate/clip/__init__.py new file mode 100644 index 0000000..dcc5619 --- /dev/null +++ b/src/backend/app/algorithms/evaluate/clip/__init__.py @@ -0,0 +1 @@ +from .clip import * diff --git a/src/backend/app/algorithms/evaluate/clip/bpe_simple_vocab_16e6.txt.gz b/src/backend/app/algorithms/evaluate/clip/bpe_simple_vocab_16e6.txt.gz new file mode 100644 index 0000000..7b5088a Binary files /dev/null and b/src/backend/app/algorithms/evaluate/clip/bpe_simple_vocab_16e6.txt.gz differ diff --git a/src/backend/app/algorithms/evaluate/clip/clip.py b/src/backend/app/algorithms/evaluate/clip/clip.py new file mode 100644 index 0000000..f7a5da5 --- /dev/null +++ b/src/backend/app/algorithms/evaluate/clip/clip.py @@ -0,0 +1,245 @@ +import hashlib +import os +import urllib +import warnings +from typing import Any, Union, List +from pkg_resources import packaging + +import torch +from PIL import Image +from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize +from tqdm import tqdm + +from .model import build_model +from .simple_tokenizer import SimpleTokenizer as _Tokenizer + +try: + from torchvision.transforms import InterpolationMode + BICUBIC = InterpolationMode.BICUBIC +except ImportError: + BICUBIC = Image.BICUBIC + + +if packaging.version.parse(torch.__version__) < packaging.version.parse("1.7.1"): + warnings.warn("PyTorch version 1.7.1 or higher is recommended") + + +__all__ = ["available_models", "load", "tokenize"] +_tokenizer = _Tokenizer() + +_MODELS = { + "RN50": "https://openaipublic.azureedge.net/clip/models/afeb0e10f9e5a86da6080e35cf09123aca3b358a0c3e3b6c78a7b63bc04b6762/RN50.pt", + "RN101": "https://openaipublic.azureedge.net/clip/models/8fa8567bab74a42d41c5915025a8e4538c3bdbe8804a470a72f30b0d94fab599/RN101.pt", + "RN50x4": "https://openaipublic.azureedge.net/clip/models/7e526bd135e493cef0776de27d5f42653e6b4c8bf9e0f653bb11773263205fdd/RN50x4.pt", + "RN50x16": "https://openaipublic.azureedge.net/clip/models/52378b407f34354e150460fe41077663dd5b39c54cd0bfd2b27167a4a06ec9aa/RN50x16.pt", + "RN50x64": "https://openaipublic.azureedge.net/clip/models/be1cfb55d75a9666199fb2206c106743da0f6468c9d327f3e0d0a543a9919d9c/RN50x64.pt", + "ViT-B/32": "https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt", + "ViT-B/16": "https://openaipublic.azureedge.net/clip/models/5806e77cd80f8b59890b7e101eabd078d9fb84e6937f9e85e4ecb61988df416f/ViT-B-16.pt", + "ViT-L/14": "https://openaipublic.azureedge.net/clip/models/b8cca3fd41ae0c99ba7e8951adf17d267cdb84cd88be6f7c2e0eca1737a03836/ViT-L-14.pt", + "ViT-L/14@336px": "https://openaipublic.azureedge.net/clip/models/3035c92b350959924f9f00213499208652fc7ea050643e8b385c2dac08641f02/ViT-L-14-336px.pt", +} + + +def _download(url: str, root: str): + os.makedirs(root, exist_ok=True) + filename = os.path.basename(url) + + expected_sha256 = url.split("/")[-2] + download_target = os.path.join(root, filename) + + if os.path.exists(download_target) and not os.path.isfile(download_target): + raise RuntimeError(f"{download_target} exists and is not a regular file") + + if os.path.isfile(download_target): + if hashlib.sha256(open(download_target, "rb").read()).hexdigest() == expected_sha256: + return download_target + else: + warnings.warn(f"{download_target} exists, but the SHA256 checksum does not match; re-downloading the file") + + with urllib.request.urlopen(url) as source, open(download_target, "wb") as output: + with tqdm(total=int(source.info().get("Content-Length")), ncols=80, unit='iB', unit_scale=True, unit_divisor=1024) as loop: + while True: + buffer = source.read(8192) + if not buffer: + break + + output.write(buffer) + loop.update(len(buffer)) + + if hashlib.sha256(open(download_target, "rb").read()).hexdigest() != expected_sha256: + raise RuntimeError("Model has been downloaded but the SHA256 checksum does not not match") + + return download_target + + +def _convert_image_to_rgb(image): + return image.convert("RGB") + + +def _transform(n_px): + return Compose([ + Resize(n_px, interpolation=BICUBIC), + CenterCrop(n_px), + _convert_image_to_rgb, + ToTensor(), + Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)), + ]) + + +def available_models() -> List[str]: + """Returns the names of available CLIP models""" + return list(_MODELS.keys()) + + +def load(name: str, device: Union[str, torch.device] = "cuda" if torch.cuda.is_available() else "cpu", jit: bool = False, download_root: str = None): + """Load a CLIP model + + Parameters + ---------- + name : str + A model name listed by `clip.available_models()`, or the path to a model checkpoint containing the state_dict + + device : Union[str, torch.device] + The device to put the loaded model + + jit : bool + Whether to load the optimized JIT model or more hackable non-JIT model (default). + + download_root: str + path to download the model files; by default, it uses "~/.cache/clip" + + Returns + ------- + model : torch.nn.Module + The CLIP model + + preprocess : Callable[[PIL.Image], torch.Tensor] + A torchvision transform that converts a PIL image into a tensor that the returned model can take as its input + """ + if name in _MODELS: + model_path = _download(_MODELS[name], download_root or os.path.expanduser("~/.cache/clip")) + elif os.path.isfile(name): + model_path = name + else: + raise RuntimeError(f"Model {name} not found; available models = {available_models()}") + + with open(model_path, 'rb') as opened_file: + try: + # loading JIT archive + model = torch.jit.load(opened_file, map_location=device if jit else "cpu").eval() + state_dict = None + except RuntimeError: + # loading saved state dict + if jit: + warnings.warn(f"File {model_path} is not a JIT archive. Loading as a state dict instead") + jit = False + state_dict = torch.load(opened_file, map_location="cpu") + + if not jit: + model = build_model(state_dict or model.state_dict()).to(device) + if str(device) == "cpu": + model.float() + return model, _transform(model.visual.input_resolution) + + # patch the device names + device_holder = torch.jit.trace(lambda: torch.ones([]).to(torch.device(device)), example_inputs=[]) + device_node = [n for n in device_holder.graph.findAllNodes("prim::Constant") if "Device" in repr(n)][-1] + + def _node_get(node: torch._C.Node, key: str): + """Gets attributes of a node which is polymorphic over return type. + + From https://github.com/pytorch/pytorch/pull/82628 + """ + sel = node.kindOf(key) + return getattr(node, sel)(key) + + def patch_device(module): + try: + graphs = [module.graph] if hasattr(module, "graph") else [] + except RuntimeError: + graphs = [] + + if hasattr(module, "forward1"): + graphs.append(module.forward1.graph) + + for graph in graphs: + for node in graph.findAllNodes("prim::Constant"): + if "value" in node.attributeNames() and str(_node_get(node, "value")).startswith("cuda"): + node.copyAttributes(device_node) + + model.apply(patch_device) + patch_device(model.encode_image) + patch_device(model.encode_text) + + # patch dtype to float32 on CPU + if str(device) == "cpu": + float_holder = torch.jit.trace(lambda: torch.ones([]).float(), example_inputs=[]) + float_input = list(float_holder.graph.findNode("aten::to").inputs())[1] + float_node = float_input.node() + + def patch_float(module): + try: + graphs = [module.graph] if hasattr(module, "graph") else [] + except RuntimeError: + graphs = [] + + if hasattr(module, "forward1"): + graphs.append(module.forward1.graph) + + for graph in graphs: + for node in graph.findAllNodes("aten::to"): + inputs = list(node.inputs()) + for i in [1, 2]: # dtype can be the second or third argument to aten::to() + if _node_get(inputs[i].node(), "value") == 5: + inputs[i].node().copyAttributes(float_node) + + model.apply(patch_float) + patch_float(model.encode_image) + patch_float(model.encode_text) + + model.float() + + return model, _transform(model.input_resolution.item()) + + +def tokenize(texts: Union[str, List[str]], context_length: int = 77, truncate: bool = False) -> Union[torch.IntTensor, torch.LongTensor]: + """ + Returns the tokenized representation of given input string(s) + + Parameters + ---------- + texts : Union[str, List[str]] + An input string or a list of input strings to tokenize + + context_length : int + The context length to use; all CLIP models use 77 as the context length + + truncate: bool + Whether to truncate the text in case its encoding is longer than the context length + + Returns + ------- + A two-dimensional tensor containing the resulting tokens, shape = [number of input strings, context_length]. + We return LongTensor when torch version is <1.8.0, since older index_select requires indices to be long. + """ + if isinstance(texts, str): + texts = [texts] + + sot_token = _tokenizer.encoder["<|startoftext|>"] + eot_token = _tokenizer.encoder["<|endoftext|>"] + all_tokens = [[sot_token] + _tokenizer.encode(text) + [eot_token] for text in texts] + if packaging.version.parse(torch.__version__) < packaging.version.parse("1.8.0"): + result = torch.zeros(len(all_tokens), context_length, dtype=torch.long) + else: + result = torch.zeros(len(all_tokens), context_length, dtype=torch.int) + + for i, tokens in enumerate(all_tokens): + if len(tokens) > context_length: + if truncate: + tokens = tokens[:context_length] + tokens[-1] = eot_token + else: + raise RuntimeError(f"Input {texts[i]} is too long for context length {context_length}") + result[i, :len(tokens)] = torch.tensor(tokens) + + return result diff --git a/src/backend/app/algorithms/evaluate/clip/model.py b/src/backend/app/algorithms/evaluate/clip/model.py new file mode 100644 index 0000000..232b779 --- /dev/null +++ b/src/backend/app/algorithms/evaluate/clip/model.py @@ -0,0 +1,436 @@ +from collections import OrderedDict +from typing import Tuple, Union + +import numpy as np +import torch +import torch.nn.functional as F +from torch import nn + + +class Bottleneck(nn.Module): + expansion = 4 + + def __init__(self, inplanes, planes, stride=1): + super().__init__() + + # all conv layers have stride 1. an avgpool is performed after the second convolution when stride > 1 + self.conv1 = nn.Conv2d(inplanes, planes, 1, bias=False) + self.bn1 = nn.BatchNorm2d(planes) + self.relu1 = nn.ReLU(inplace=True) + + self.conv2 = nn.Conv2d(planes, planes, 3, padding=1, bias=False) + self.bn2 = nn.BatchNorm2d(planes) + self.relu2 = nn.ReLU(inplace=True) + + self.avgpool = nn.AvgPool2d(stride) if stride > 1 else nn.Identity() + + self.conv3 = nn.Conv2d(planes, planes * self.expansion, 1, bias=False) + self.bn3 = nn.BatchNorm2d(planes * self.expansion) + self.relu3 = nn.ReLU(inplace=True) + + self.downsample = None + self.stride = stride + + if stride > 1 or inplanes != planes * Bottleneck.expansion: + # downsampling layer is prepended with an avgpool, and the subsequent convolution has stride 1 + self.downsample = nn.Sequential(OrderedDict([ + ("-1", nn.AvgPool2d(stride)), + ("0", nn.Conv2d(inplanes, planes * self.expansion, 1, stride=1, bias=False)), + ("1", nn.BatchNorm2d(planes * self.expansion)) + ])) + + def forward(self, x: torch.Tensor): + identity = x + + out = self.relu1(self.bn1(self.conv1(x))) + out = self.relu2(self.bn2(self.conv2(out))) + out = self.avgpool(out) + out = self.bn3(self.conv3(out)) + + if self.downsample is not None: + identity = self.downsample(x) + + out += identity + out = self.relu3(out) + return out + + +class AttentionPool2d(nn.Module): + def __init__(self, spacial_dim: int, embed_dim: int, num_heads: int, output_dim: int = None): + super().__init__() + self.positional_embedding = nn.Parameter(torch.randn(spacial_dim ** 2 + 1, embed_dim) / embed_dim ** 0.5) + self.k_proj = nn.Linear(embed_dim, embed_dim) + self.q_proj = nn.Linear(embed_dim, embed_dim) + self.v_proj = nn.Linear(embed_dim, embed_dim) + self.c_proj = nn.Linear(embed_dim, output_dim or embed_dim) + self.num_heads = num_heads + + def forward(self, x): + x = x.flatten(start_dim=2).permute(2, 0, 1) # NCHW -> (HW)NC + x = torch.cat([x.mean(dim=0, keepdim=True), x], dim=0) # (HW+1)NC + x = x + self.positional_embedding[:, None, :].to(x.dtype) # (HW+1)NC + x, _ = F.multi_head_attention_forward( + query=x[:1], key=x, value=x, + embed_dim_to_check=x.shape[-1], + num_heads=self.num_heads, + q_proj_weight=self.q_proj.weight, + k_proj_weight=self.k_proj.weight, + v_proj_weight=self.v_proj.weight, + in_proj_weight=None, + in_proj_bias=torch.cat([self.q_proj.bias, self.k_proj.bias, self.v_proj.bias]), + bias_k=None, + bias_v=None, + add_zero_attn=False, + dropout_p=0, + out_proj_weight=self.c_proj.weight, + out_proj_bias=self.c_proj.bias, + use_separate_proj_weight=True, + training=self.training, + need_weights=False + ) + return x.squeeze(0) + + +class ModifiedResNet(nn.Module): + """ + A ResNet class that is similar to torchvision's but contains the following changes: + - There are now 3 "stem" convolutions as opposed to 1, with an average pool instead of a max pool. + - Performs anti-aliasing strided convolutions, where an avgpool is prepended to convolutions with stride > 1 + - The final pooling layer is a QKV attention instead of an average pool + """ + + def __init__(self, layers, output_dim, heads, input_resolution=224, width=64): + super().__init__() + self.output_dim = output_dim + self.input_resolution = input_resolution + + # the 3-layer stem + self.conv1 = nn.Conv2d(3, width // 2, kernel_size=3, stride=2, padding=1, bias=False) + self.bn1 = nn.BatchNorm2d(width // 2) + self.relu1 = nn.ReLU(inplace=True) + self.conv2 = nn.Conv2d(width // 2, width // 2, kernel_size=3, padding=1, bias=False) + self.bn2 = nn.BatchNorm2d(width // 2) + self.relu2 = nn.ReLU(inplace=True) + self.conv3 = nn.Conv2d(width // 2, width, kernel_size=3, padding=1, bias=False) + self.bn3 = nn.BatchNorm2d(width) + self.relu3 = nn.ReLU(inplace=True) + self.avgpool = nn.AvgPool2d(2) + + # residual layers + self._inplanes = width # this is a *mutable* variable used during construction + self.layer1 = self._make_layer(width, layers[0]) + self.layer2 = self._make_layer(width * 2, layers[1], stride=2) + self.layer3 = self._make_layer(width * 4, layers[2], stride=2) + self.layer4 = self._make_layer(width * 8, layers[3], stride=2) + + embed_dim = width * 32 # the ResNet feature dimension + self.attnpool = AttentionPool2d(input_resolution // 32, embed_dim, heads, output_dim) + + def _make_layer(self, planes, blocks, stride=1): + layers = [Bottleneck(self._inplanes, planes, stride)] + + self._inplanes = planes * Bottleneck.expansion + for _ in range(1, blocks): + layers.append(Bottleneck(self._inplanes, planes)) + + return nn.Sequential(*layers) + + def forward(self, x): + def stem(x): + x = self.relu1(self.bn1(self.conv1(x))) + x = self.relu2(self.bn2(self.conv2(x))) + x = self.relu3(self.bn3(self.conv3(x))) + x = self.avgpool(x) + return x + + x = x.type(self.conv1.weight.dtype) + x = stem(x) + x = self.layer1(x) + x = self.layer2(x) + x = self.layer3(x) + x = self.layer4(x) + x = self.attnpool(x) + + return x + + +class LayerNorm(nn.LayerNorm): + """Subclass torch's LayerNorm to handle fp16.""" + + def forward(self, x: torch.Tensor): + orig_type = x.dtype + ret = super().forward(x.type(torch.float32)) + return ret.type(orig_type) + + +class QuickGELU(nn.Module): + def forward(self, x: torch.Tensor): + return x * torch.sigmoid(1.702 * x) + + +class ResidualAttentionBlock(nn.Module): + def __init__(self, d_model: int, n_head: int, attn_mask: torch.Tensor = None): + super().__init__() + + self.attn = nn.MultiheadAttention(d_model, n_head) + self.ln_1 = LayerNorm(d_model) + self.mlp = nn.Sequential(OrderedDict([ + ("c_fc", nn.Linear(d_model, d_model * 4)), + ("gelu", QuickGELU()), + ("c_proj", nn.Linear(d_model * 4, d_model)) + ])) + self.ln_2 = LayerNorm(d_model) + self.attn_mask = attn_mask + + def attention(self, x: torch.Tensor): + self.attn_mask = self.attn_mask.to(dtype=x.dtype, device=x.device) if self.attn_mask is not None else None + return self.attn(x, x, x, need_weights=False, attn_mask=self.attn_mask)[0] + + def forward(self, x: torch.Tensor): + x = x + self.attention(self.ln_1(x)) + x = x + self.mlp(self.ln_2(x)) + return x + + +class Transformer(nn.Module): + def __init__(self, width: int, layers: int, heads: int, attn_mask: torch.Tensor = None): + super().__init__() + self.width = width + self.layers = layers + self.resblocks = nn.Sequential(*[ResidualAttentionBlock(width, heads, attn_mask) for _ in range(layers)]) + + def forward(self, x: torch.Tensor): + return self.resblocks(x) + + +class VisionTransformer(nn.Module): + def __init__(self, input_resolution: int, patch_size: int, width: int, layers: int, heads: int, output_dim: int): + super().__init__() + self.input_resolution = input_resolution + self.output_dim = output_dim + self.conv1 = nn.Conv2d(in_channels=3, out_channels=width, kernel_size=patch_size, stride=patch_size, bias=False) + + scale = width ** -0.5 + self.class_embedding = nn.Parameter(scale * torch.randn(width)) + self.positional_embedding = nn.Parameter(scale * torch.randn((input_resolution // patch_size) ** 2 + 1, width)) + self.ln_pre = LayerNorm(width) + + self.transformer = Transformer(width, layers, heads) + + self.ln_post = LayerNorm(width) + self.proj = nn.Parameter(scale * torch.randn(width, output_dim)) + + def forward(self, x: torch.Tensor): + x = self.conv1(x) # shape = [*, width, grid, grid] + x = x.reshape(x.shape[0], x.shape[1], -1) # shape = [*, width, grid ** 2] + x = x.permute(0, 2, 1) # shape = [*, grid ** 2, width] + x = torch.cat([self.class_embedding.to(x.dtype) + torch.zeros(x.shape[0], 1, x.shape[-1], dtype=x.dtype, device=x.device), x], dim=1) # shape = [*, grid ** 2 + 1, width] + x = x + self.positional_embedding.to(x.dtype) + x = self.ln_pre(x) + + x = x.permute(1, 0, 2) # NLD -> LND + x = self.transformer(x) + x = x.permute(1, 0, 2) # LND -> NLD + + x = self.ln_post(x[:, 0, :]) + + if self.proj is not None: + x = x @ self.proj + + return x + + +class CLIP(nn.Module): + def __init__(self, + embed_dim: int, + # vision + image_resolution: int, + vision_layers: Union[Tuple[int, int, int, int], int], + vision_width: int, + vision_patch_size: int, + # text + context_length: int, + vocab_size: int, + transformer_width: int, + transformer_heads: int, + transformer_layers: int + ): + super().__init__() + + self.context_length = context_length + + if isinstance(vision_layers, (tuple, list)): + vision_heads = vision_width * 32 // 64 + self.visual = ModifiedResNet( + layers=vision_layers, + output_dim=embed_dim, + heads=vision_heads, + input_resolution=image_resolution, + width=vision_width + ) + else: + vision_heads = vision_width // 64 + self.visual = VisionTransformer( + input_resolution=image_resolution, + patch_size=vision_patch_size, + width=vision_width, + layers=vision_layers, + heads=vision_heads, + output_dim=embed_dim + ) + + self.transformer = Transformer( + width=transformer_width, + layers=transformer_layers, + heads=transformer_heads, + attn_mask=self.build_attention_mask() + ) + + self.vocab_size = vocab_size + self.token_embedding = nn.Embedding(vocab_size, transformer_width) + self.positional_embedding = nn.Parameter(torch.empty(self.context_length, transformer_width)) + self.ln_final = LayerNorm(transformer_width) + + self.text_projection = nn.Parameter(torch.empty(transformer_width, embed_dim)) + self.logit_scale = nn.Parameter(torch.ones([]) * np.log(1 / 0.07)) + + self.initialize_parameters() + + def initialize_parameters(self): + nn.init.normal_(self.token_embedding.weight, std=0.02) + nn.init.normal_(self.positional_embedding, std=0.01) + + if isinstance(self.visual, ModifiedResNet): + if self.visual.attnpool is not None: + std = self.visual.attnpool.c_proj.in_features ** -0.5 + nn.init.normal_(self.visual.attnpool.q_proj.weight, std=std) + nn.init.normal_(self.visual.attnpool.k_proj.weight, std=std) + nn.init.normal_(self.visual.attnpool.v_proj.weight, std=std) + nn.init.normal_(self.visual.attnpool.c_proj.weight, std=std) + + for resnet_block in [self.visual.layer1, self.visual.layer2, self.visual.layer3, self.visual.layer4]: + for name, param in resnet_block.named_parameters(): + if name.endswith("bn3.weight"): + nn.init.zeros_(param) + + proj_std = (self.transformer.width ** -0.5) * ((2 * self.transformer.layers) ** -0.5) + attn_std = self.transformer.width ** -0.5 + fc_std = (2 * self.transformer.width) ** -0.5 + for block in self.transformer.resblocks: + nn.init.normal_(block.attn.in_proj_weight, std=attn_std) + nn.init.normal_(block.attn.out_proj.weight, std=proj_std) + nn.init.normal_(block.mlp.c_fc.weight, std=fc_std) + nn.init.normal_(block.mlp.c_proj.weight, std=proj_std) + + if self.text_projection is not None: + nn.init.normal_(self.text_projection, std=self.transformer.width ** -0.5) + + def build_attention_mask(self): + # lazily create causal attention mask, with full attention between the vision tokens + # pytorch uses additive attention mask; fill with -inf + mask = torch.empty(self.context_length, self.context_length) + mask.fill_(float("-inf")) + mask.triu_(1) # zero out the lower diagonal + return mask + + @property + def dtype(self): + return self.visual.conv1.weight.dtype + + def encode_image(self, image): + return self.visual(image.type(self.dtype)) + + def encode_text(self, text): + x = self.token_embedding(text).type(self.dtype) # [batch_size, n_ctx, d_model] + + x = x + self.positional_embedding.type(self.dtype) + x = x.permute(1, 0, 2) # NLD -> LND + x = self.transformer(x) + x = x.permute(1, 0, 2) # LND -> NLD + x = self.ln_final(x).type(self.dtype) + + # x.shape = [batch_size, n_ctx, transformer.width] + # take features from the eot embedding (eot_token is the highest number in each sequence) + x = x[torch.arange(x.shape[0]), text.argmax(dim=-1)] @ self.text_projection + + return x + + def forward(self, image, text): + image_features = self.encode_image(image) + text_features = self.encode_text(text) + + # normalized features + image_features = image_features / image_features.norm(dim=1, keepdim=True) + text_features = text_features / text_features.norm(dim=1, keepdim=True) + + # cosine similarity as logits + logit_scale = self.logit_scale.exp() + logits_per_image = logit_scale * image_features @ text_features.t() + logits_per_text = logits_per_image.t() + + # shape = [global_batch_size, global_batch_size] + return logits_per_image, logits_per_text + + +def convert_weights(model: nn.Module): + """Convert applicable model parameters to fp16""" + + def _convert_weights_to_fp16(l): + if isinstance(l, (nn.Conv1d, nn.Conv2d, nn.Linear)): + l.weight.data = l.weight.data.half() + if l.bias is not None: + l.bias.data = l.bias.data.half() + + if isinstance(l, nn.MultiheadAttention): + for attr in [*[f"{s}_proj_weight" for s in ["in", "q", "k", "v"]], "in_proj_bias", "bias_k", "bias_v"]: + tensor = getattr(l, attr) + if tensor is not None: + tensor.data = tensor.data.half() + + for name in ["text_projection", "proj"]: + if hasattr(l, name): + attr = getattr(l, name) + if attr is not None: + attr.data = attr.data.half() + + model.apply(_convert_weights_to_fp16) + + +def build_model(state_dict: dict): + vit = "visual.proj" in state_dict + + if vit: + vision_width = state_dict["visual.conv1.weight"].shape[0] + vision_layers = len([k for k in state_dict.keys() if k.startswith("visual.") and k.endswith(".attn.in_proj_weight")]) + vision_patch_size = state_dict["visual.conv1.weight"].shape[-1] + grid_size = round((state_dict["visual.positional_embedding"].shape[0] - 1) ** 0.5) + image_resolution = vision_patch_size * grid_size + else: + counts: list = [len(set(k.split(".")[2] for k in state_dict if k.startswith(f"visual.layer{b}"))) for b in [1, 2, 3, 4]] + vision_layers = tuple(counts) + vision_width = state_dict["visual.layer1.0.conv1.weight"].shape[0] + output_width = round((state_dict["visual.attnpool.positional_embedding"].shape[0] - 1) ** 0.5) + vision_patch_size = None + assert output_width ** 2 + 1 == state_dict["visual.attnpool.positional_embedding"].shape[0] + image_resolution = output_width * 32 + + embed_dim = state_dict["text_projection"].shape[1] + context_length = state_dict["positional_embedding"].shape[0] + vocab_size = state_dict["token_embedding.weight"].shape[0] + transformer_width = state_dict["ln_final.weight"].shape[0] + transformer_heads = transformer_width // 64 + transformer_layers = len(set(k.split(".")[2] for k in state_dict if k.startswith("transformer.resblocks"))) + + model = CLIP( + embed_dim, + image_resolution, vision_layers, vision_width, vision_patch_size, + context_length, vocab_size, transformer_width, transformer_heads, transformer_layers + ) + + for key in ["input_resolution", "context_length", "vocab_size"]: + if key in state_dict: + del state_dict[key] + + convert_weights(model) + model.load_state_dict(state_dict) + return model.eval() diff --git a/src/backend/app/algorithms/evaluate/clip/simple_tokenizer.py b/src/backend/app/algorithms/evaluate/clip/simple_tokenizer.py new file mode 100644 index 0000000..0a66286 --- /dev/null +++ b/src/backend/app/algorithms/evaluate/clip/simple_tokenizer.py @@ -0,0 +1,132 @@ +import gzip +import html +import os +from functools import lru_cache + +import ftfy +import regex as re + + +@lru_cache() +def default_bpe(): + return os.path.join(os.path.dirname(os.path.abspath(__file__)), "bpe_simple_vocab_16e6.txt.gz") + + +@lru_cache() +def bytes_to_unicode(): + """ + Returns list of utf-8 byte and a corresponding list of unicode strings. + The reversible bpe codes work on unicode strings. + This means you need a large # of unicode characters in your vocab if you want to avoid UNKs. + When you're at something like a 10B token dataset you end up needing around 5K for decent coverage. + This is a signficant percentage of your normal, say, 32K bpe vocab. + To avoid that, we want lookup tables between utf-8 bytes and unicode strings. + And avoids mapping to whitespace/control characters the bpe code barfs on. + """ + bs = list(range(ord("!"), ord("~")+1))+list(range(ord("¡"), ord("¬")+1))+list(range(ord("®"), ord("ÿ")+1)) + cs = bs[:] + n = 0 + for b in range(2**8): + if b not in bs: + bs.append(b) + cs.append(2**8+n) + n += 1 + cs = [chr(n) for n in cs] + return dict(zip(bs, cs)) + + +def get_pairs(word): + """Return set of symbol pairs in a word. + Word is represented as tuple of symbols (symbols being variable-length strings). + """ + pairs = set() + prev_char = word[0] + for char in word[1:]: + pairs.add((prev_char, char)) + prev_char = char + return pairs + + +def basic_clean(text): + text = ftfy.fix_text(text) + text = html.unescape(html.unescape(text)) + return text.strip() + + +def whitespace_clean(text): + text = re.sub(r'\s+', ' ', text) + text = text.strip() + return text + + +class SimpleTokenizer(object): + def __init__(self, bpe_path: str = default_bpe()): + self.byte_encoder = bytes_to_unicode() + self.byte_decoder = {v: k for k, v in self.byte_encoder.items()} + merges = gzip.open(bpe_path).read().decode("utf-8").split('\n') + merges = merges[1:49152-256-2+1] + merges = [tuple(merge.split()) for merge in merges] + vocab = list(bytes_to_unicode().values()) + vocab = vocab + [v+'' for v in vocab] + for merge in merges: + vocab.append(''.join(merge)) + vocab.extend(['<|startoftext|>', '<|endoftext|>']) + self.encoder = dict(zip(vocab, range(len(vocab)))) + self.decoder = {v: k for k, v in self.encoder.items()} + self.bpe_ranks = dict(zip(merges, range(len(merges)))) + self.cache = {'<|startoftext|>': '<|startoftext|>', '<|endoftext|>': '<|endoftext|>'} + self.pat = re.compile(r"""<\|startoftext\|>|<\|endoftext\|>|'s|'t|'re|'ve|'m|'ll|'d|[\p{L}]+|[\p{N}]|[^\s\p{L}\p{N}]+""", re.IGNORECASE) + + def bpe(self, token): + if token in self.cache: + return self.cache[token] + word = tuple(token[:-1]) + ( token[-1] + '',) + pairs = get_pairs(word) + + if not pairs: + return token+'' + + while True: + bigram = min(pairs, key = lambda pair: self.bpe_ranks.get(pair, float('inf'))) + if bigram not in self.bpe_ranks: + break + first, second = bigram + new_word = [] + i = 0 + while i < len(word): + try: + j = word.index(first, i) + new_word.extend(word[i:j]) + i = j + except: + new_word.extend(word[i:]) + break + + if word[i] == first and i < len(word)-1 and word[i+1] == second: + new_word.append(first+second) + i += 2 + else: + new_word.append(word[i]) + i += 1 + new_word = tuple(new_word) + word = new_word + if len(word) == 1: + break + else: + pairs = get_pairs(word) + word = ' '.join(word) + self.cache[token] = word + return word + + def encode(self, text): + bpe_tokens = [] + text = whitespace_clean(basic_clean(text)).lower() + for token in re.findall(self.pat, text): + token = ''.join(self.byte_encoder[b] for b in token.encode('utf-8')) + bpe_tokens.extend(self.encoder[bpe_token] for bpe_token in self.bpe(token).split(' ')) + return bpe_tokens + + def decode(self, tokens): + text = ''.join([self.decoder[token] for token in tokens]) + text = bytearray([self.byte_decoder[c] for c in text]).decode('utf-8', errors="replace").replace('', ' ') + return text diff --git a/src/backend/app/algorithms/evaluate/eva_gen_heatmap.py b/src/backend/app/algorithms/evaluate/eva_gen_heatmap.py new file mode 100644 index 0000000..7506319 --- /dev/null +++ b/src/backend/app/algorithms/evaluate/eva_gen_heatmap.py @@ -0,0 +1,405 @@ +""" +Stable Diffusion 双模态注意力热力图差异可视化工具。 +""" + +import argparse +import os +from pathlib import Path +from typing import Dict, Any, List, Tuple + +import torch +import torch.nn.functional as F +import numpy as np +import warnings + +import matplotlib.pyplot as plt +import matplotlib.gridspec as gridspec +from matplotlib.colors import TwoSlopeNorm +from mpl_toolkits.axes_grid1 import make_axes_locatable + +from diffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler +from diffusers.models.attention_processor import Attention +from transformers import CLIPTokenizer + +from PIL import Image +from torchvision import transforms + +# 关闭与本脚本输出无关的常见警告,减少控制台干扰 +warnings.filterwarnings("ignore", category=UserWarning) +warnings.filterwarnings("ignore", category=FutureWarning) + + +# 双模态注意力捕获模块:在 U-Net 前向过程中同时收集交叉注意力与自注意力 + +class AttentionMapProcessor: + # 自定义注意力处理器,用于拦截注意力计算并缓存注意力概率图 + def __init__(self, pipeline: StableDiffusionPipeline): + self.cross_attention_maps: Dict[str, List[torch.Tensor]] = {} + self.self_attention_maps: Dict[str, List[torch.Tensor]] = {} + self.pipeline = pipeline + self.original_processors = {} + self.current_layer_name = None + self._set_processors() + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: torch.Tensor = None, + attention_mask: torch.Tensor = None + ) -> torch.Tensor: + # 同时支持 Cross-Attention 与 Self-Attention,区别在于 Key/Value 的来源 + is_cross = encoder_hidden_states is not None + sequence_input = encoder_hidden_states if is_cross else hidden_states + + # 按 diffusers 的注意力实现方式构造 Q/K/V + query = attn.to_q(hidden_states) + key = attn.to_k(sequence_input) + value = attn.to_v(sequence_input) + + # 将多头维度展开到 batch 维,便于矩阵乘 + query = attn.head_to_batch_dim(query) + key = attn.head_to_batch_dim(key) + + # 计算缩放点积注意力分数 + attention_scores = torch.baddbmm( + torch.empty( + query.shape[0], query.shape[1], key.shape[1], + dtype=query.dtype, device=query.device + ), + query, + key.transpose(1, 2), + beta=0, + alpha=attn.scale, + ) + + # softmax 得到注意力概率,并缓存到 CPU 侧用于后续聚合 + attention_probs = attention_scores.softmax(dim=-1) + layer_name = self.current_layer_name + map_to_store = attention_probs.detach().cpu() + + # 按层名分别记录交叉注意力与自注意力,便于之后按层聚合 + if is_cross: + if layer_name not in self.cross_attention_maps: + self.cross_attention_maps[layer_name] = [] + self.cross_attention_maps[layer_name].append(map_to_store) + else: + # 自注意力矩阵在高分辨率层会非常大,这里仅保留较小规模层以避免内存问题 + spatial_size = map_to_store.shape[-2] + if spatial_size <= 1024: + if layer_name not in self.self_attention_maps: + self.self_attention_maps[layer_name] = [] + self.self_attention_maps[layer_name].append(map_to_store) + + # 按注意力权重加权求和并回到原始维度,继续 U-Net 的后续计算 + value = attn.head_to_batch_dim(value) + hidden_states = torch.bmm(attention_probs, value) + hidden_states = attn.batch_to_head_dim(hidden_states) + + # 线性层与 dropout 等输出映射,与原 Attention 模块保持一致 + hidden_states = attn.to_out[0](hidden_states) + hidden_states = attn.to_out[1](hidden_states) + + return hidden_states + + def _set_processors(self): + # 遍历 U-Net 中所有 Attention 模块,将其 processor 替换为可记录层名的包装调用 + for name, module in self.pipeline.unet.named_modules(): + if isinstance(module, Attention): + if 'attn1' in name or 'attn2' in name: + self.original_processors[name] = module.processor + + def set_layer_name(current_name): + def new_call(*args, **kwargs): + self.current_layer_name = current_name + return self.__call__(*args, **kwargs) + return new_call + + module.processor = set_layer_name(name) + + def remove(self): + # 还原所有 Attention 模块的原始 processor,并清空缓存数据 + for name, original_processor in self.original_processors.items(): + module = self.pipeline.unet.get_submodule(name) + module.processor = original_processor + self.cross_attention_maps = {} + self.self_attention_maps = {} + + +# 注意力图聚合模块:将多层、多步的注意力数据统一聚合到固定大小的 2D 热力图 + +def aggregate_cross_attention( + attention_maps: Dict[str, List[torch.Tensor]], + tokenizer: CLIPTokenizer, + target_word: str, + input_ids: torch.Tensor +) -> np.ndarray: + # 将 Prompt 的 token 切分结果与目标词进行匹配,找到目标词对应的 token 索引 + prompt_tokens = tokenizer.convert_ids_to_tokens(input_ids.squeeze().cpu().tolist()) + target_lower = target_word.lower() + target_indices = [] + + for i, token in enumerate(prompt_tokens): + cleaned_token = token.replace('Ġ', '').replace('_', '').lower() + if (input_ids.squeeze()[i] not in tokenizer.all_special_ids and + (target_lower in cleaned_token or cleaned_token.startswith(target_lower))): + target_indices.append(i) + + # 未命中目标词时返回全零图,避免后续流程崩溃 + if not target_indices: + print(f"[WARN] Cross-Attn: 目标词汇 '{target_word}' 未识别。") + return np.zeros((64, 64)) + + all_attention_data = [] + TARGET_SPATIAL_SIZE = 4096 + TARGET_MAP_SIZE = 64 + + # 逐层将注意力概率进行时间步平均,再对目标 token 通道求和得到空间关注强度 + for layer_name, step_maps in attention_maps.items(): + if not step_maps: + continue + avg_map = torch.stack(step_maps).mean(dim=0) + if avg_map.dim() == 4: + avg_map = avg_map.squeeze(0) + target_map = avg_map[:, :, target_indices].sum(dim=-1).mean(dim=0).float() + + # 不同层的空间分辨率不同,统一插值到固定尺寸以便跨层融合 + if target_map.shape[0] != TARGET_SPATIAL_SIZE: + map_size = int(np.sqrt(target_map.shape[0])) + map_2d = target_map.reshape(map_size, map_size).unsqueeze(0).unsqueeze(0) + resized = F.interpolate(map_2d, size=(TARGET_MAP_SIZE, TARGET_MAP_SIZE), mode='bilinear', align_corners=False) + all_attention_data.append(resized.squeeze().flatten()) + else: + all_attention_data.append(target_map) + + if not all_attention_data: + return np.zeros((64, 64)) + + # 跨层求和并归一化到 0-1,便于可视化对比 + final_map_flat = torch.stack(all_attention_data).sum(dim=0).cpu().numpy() + final_map_flat = final_map_flat / (final_map_flat.max() + 1e-6) + return final_map_flat.reshape(TARGET_MAP_SIZE, TARGET_MAP_SIZE) + + +def aggregate_self_attention( + attention_maps: Dict[str, List[torch.Tensor]] +) -> np.ndarray: + # 将自注意力矩阵转为与空间对齐的强度图,这里使用拉普拉斯算子提取高频能量作为纹理强度代理 + all_attention_data = [] + TARGET_MAP_SIZE = 64 + + laplacian_kernel = torch.tensor([ + [0, 1, 0], + [1, -4, 1], + [0, 1, 0] + ], dtype=torch.float32).view(1, 1, 3, 3) + + # 逐层对自注意力矩阵进行时间步与多头平均,再对每个 query 的注意力图做高频响应统计 + for layer_name, step_maps in attention_maps.items(): + if not step_maps: + continue + + avg_matrix = torch.stack(step_maps).mean(dim=0).mean(dim=0).float() + + current_pixels = avg_matrix.shape[0] + map_size = int(np.sqrt(current_pixels)) + + # 极小尺度的注意力图通常缺少有效纹理结构信息,这里直接跳过 + if map_size < 16: + continue + + attn_maps = avg_matrix.reshape(current_pixels, 1, map_size, map_size) + + kernel = laplacian_kernel.to(avg_matrix.device) + + # 对每个 query 的空间注意力图做拉普拉斯卷积,得到高频响应 + high_freq_response = F.conv2d(attn_maps, kernel, padding=1) + + # 用绝对值表示高频强度,并对每个 query 累计其响应作为空间分数 + high_freq_energy = torch.abs(high_freq_response) + spatial_score_flat = high_freq_energy.sum(dim=(2, 3)).squeeze() + + # 层内归一化避免不同层的数值尺度影响跨层融合 + spatial_score_flat = spatial_score_flat / (spatial_score_flat.max() + 1e-6) + + map_2d = spatial_score_flat.reshape(map_size, map_size).unsqueeze(0).unsqueeze(0) + + resized = F.interpolate(map_2d, size=(TARGET_MAP_SIZE, TARGET_MAP_SIZE), mode='bilinear', align_corners=False) + all_attention_data.append(resized.squeeze().flatten()) + + if not all_attention_data: + return np.zeros((64, 64)) + + # 跨层求和并做 0-1 归一化,得到最终纹理强度热力图 + final_map_flat = torch.stack(all_attention_data).sum(dim=0).cpu().numpy() + final_map_flat = (final_map_flat - final_map_flat.min()) / (final_map_flat.max() - final_map_flat.min() + 1e-6) + + return final_map_flat.reshape(TARGET_MAP_SIZE, TARGET_MAP_SIZE) + + +def get_dual_attention_maps( + pipeline: StableDiffusionPipeline, + image_path: str, + prompt_text: str, + target_word: str +) -> Tuple[Image.Image, np.ndarray, np.ndarray]: + # 对输入图像进行编码,并在少量时间步上运行 U-Net 来提取注意力分布 + print(f"\n-> 正在处理图片: {Path(image_path).name}") + image = Image.open(image_path).convert("RGB").resize((512, 512)) + image_tensor = transforms.Compose([ + transforms.ToTensor(), transforms.Normalize([0.5], [0.5]) + ])(image).unsqueeze(0).to(pipeline.device).to(pipeline.unet.dtype) + + with torch.no_grad(): + latent = (pipeline.vae.encode(image_tensor).latent_dist.sample() * pipeline.vae.config.scaling_factor) + + text_input = pipeline.tokenizer( + prompt_text, + padding="max_length", + max_length=pipeline.tokenizer.model_max_length, + truncation=True, + return_tensors="pt" + ) + with torch.no_grad(): + prompt_embeds = pipeline.text_encoder(text_input.input_ids.to(pipeline.device))[0] + + scheduler = pipeline.scheduler + scheduler.set_timesteps(50, device=pipeline.device) + semantic_steps = scheduler.timesteps[:10] + + processor = AttentionMapProcessor(pipeline) + + try: + with torch.no_grad(): + for t in semantic_steps: + pipeline.unet(latent, t, prompt_embeds, return_dict=False) + + cross_map_raw = aggregate_cross_attention( + processor.cross_attention_maps, pipeline.tokenizer, target_word, text_input.input_ids + ) + self_map_raw = aggregate_self_attention(processor.self_attention_maps) + + except Exception as e: + print(f"[ERROR] 注意力聚合失败: {e}") + cross_map_raw = np.zeros((64, 64)) + self_map_raw = np.zeros((64, 64)) + finally: + processor.remove() + + # 将 64x64 热力图上采样到与原图一致的空间大小,便于直接叠加或对比展示 + def upsample(map_np): + pil_img = Image.fromarray((map_np * 255).astype(np.uint8)) + return np.array(pil_img.resize(image.size, resample=Image.Resampling.LANCZOS)) / 255.0 + + return image, upsample(cross_map_raw), upsample(self_map_raw) + + +def main(): + # 解析运行参数并生成对比报告图像 + parser = argparse.ArgumentParser(description="SD 双模态注意力差异分析报告") + parser.add_argument("--model_path", type=str, required=True, help="Stable Diffusion 模型路径") + parser.add_argument("--image_path_a", type=str, required=True, help="Clean Image") + parser.add_argument("--image_path_b", type=str, required=True, help="Noisy Image") + parser.add_argument("--prompt_text", type=str, default="a photo of sks person") + parser.add_argument("--target_word", type=str, default="sks") + parser.add_argument("--output_dir", type=str, default="output") + args = parser.parse_args() + + print(f"--- 正在生成 Museguard 双模态分析报告 (High-Freq Energy Mode) ---") + + device = 'cuda' if torch.cuda.is_available() else 'cpu' + dtype = torch.float16 if device == 'cuda' else torch.float32 + try: + pipe = StableDiffusionPipeline.from_pretrained( + args.model_path, + torch_dtype=dtype, + local_files_only=True, + safety_checker=None, + scheduler=DPMSolverMultistepScheduler.from_pretrained(args.model_path, subfolder="scheduler") + ).to(device) + except Exception as e: + print(f"[ERROR] 模型加载失败: {e}") + return + + img_A, cross_A, self_A = get_dual_attention_maps(pipe, args.image_path_a, args.prompt_text, args.target_word) + img_B, cross_B, self_B = get_dual_attention_maps(pipe, args.image_path_b, args.prompt_text, args.target_word) + + diff_cross = cross_A - cross_B + l2_cross = np.linalg.norm(diff_cross) + + diff_self = self_A - self_B + l2_self = np.linalg.norm(diff_self) + + print(f"\nCross-Attn L2 Diff: {l2_cross:.4f}") + print(f"Self-Attn L2 Diff: {l2_self:.4f}") + + # 使用统一布局展示原图、两类注意力图及其差分图,并输出为单张报告图片 + plt.rcParams.update({'font.family': 'serif', 'mathtext.fontset': 'cm'}) + + fig = plt.figure(figsize=(14, 22), dpi=100) + gs = gridspec.GridSpec(4, 4, figure=fig, height_ratios=[1, 1, 1, 1.2], hspace=0.3, wspace=0.1) + + ax_img_a = fig.add_subplot(gs[0, 0:2]) + ax_img_b = fig.add_subplot(gs[0, 2:4]) + ax_img_a.imshow(img_A) + ax_img_a.set_title("Clean Image ($X$)", fontsize=14) + ax_img_a.axis('off') + ax_img_b.imshow(img_B) + ax_img_b.set_title("Noisy Image ($X'$)", fontsize=14) + ax_img_b.axis('off') + + ax_cA = fig.add_subplot(gs[1, 0:2]) + ax_cB = fig.add_subplot(gs[1, 2:4]) + ax_cA.imshow(cross_A, cmap='jet', vmin=0, vmax=1) + ax_cA.set_title(f"Cross-Attn ($M^{{cross}}_X$)\nTarget: \"{args.target_word}\"", fontsize=14) + ax_cA.axis('off') + im_cB = ax_cB.imshow(cross_B, cmap='jet', vmin=0, vmax=1) + ax_cB.set_title(f"Cross-Attn ($M^{{cross}}_{{X'}}$)", fontsize=14) + ax_cB.axis('off') + + divider = make_axes_locatable(ax_cB) + cax = divider.append_axes("right", size="5%", pad=0.05) + fig.colorbar(im_cB, cax=cax, label='Semantic Alignment') + + ax_sA = fig.add_subplot(gs[2, 0:2]) + ax_sB = fig.add_subplot(gs[2, 2:4]) + + ax_sA.imshow(self_A, cmap='jet', vmin=0, vmax=1) + ax_sA.set_title(f"Self-Attn ($M^{{self}}_X$)\nHigh-Freq Energy (Texture)", fontsize=14) + ax_sA.axis('off') + + im_sB = ax_sB.imshow(self_B, cmap='jet', vmin=0, vmax=1) + ax_sB.set_title(f"Self-Attn ($M^{{self}}_{{X'}}$)", fontsize=14) + ax_sB.axis('off') + + divider = make_axes_locatable(ax_sB) + cax = divider.append_axes("right", size="5%", pad=0.05) + fig.colorbar(im_sB, cax=cax, label='Texture Intensity') + + ax_diff_c = fig.add_subplot(gs[3, 0:2]) + ax_diff_s = fig.add_subplot(gs[3, 2:4]) + + vmax_c = max(np.max(np.abs(diff_cross)), 0.1) + norm_c = TwoSlopeNorm(vmin=-vmax_c, vcenter=0., vmax=vmax_c) + im_dc = ax_diff_c.imshow(diff_cross, cmap='coolwarm', norm=norm_c) + ax_diff_c.set_title(f"Cross Diff ($\\Delta_{{cross}}$)\n$L_2$: {l2_cross:.4f}", fontsize=14) + ax_diff_c.axis('off') + plt.colorbar(im_dc, ax=ax_diff_c, fraction=0.046, pad=0.04) + + vmax_s = max(np.max(np.abs(diff_self)), 0.1) + norm_s = TwoSlopeNorm(vmin=-vmax_s, vcenter=0., vmax=vmax_s) + im_ds = ax_diff_s.imshow(diff_self, cmap='coolwarm', norm=norm_s) + ax_diff_s.set_title(f"Self Diff ($\\Delta_{{self}}$)\n$L_2$: {l2_self:.4f}", fontsize=14) + ax_diff_s.axis('off') + plt.colorbar(im_ds, ax=ax_diff_s, fraction=0.046, pad=0.04) + + fig.suptitle(f"Museguard: Dual-Mode Analysis (High-Freq Energy)", fontsize=20, fontweight='bold', y=0.92) + + out_path = Path(args.output_dir) / "dual_heatmap_report.png" + out_path.parent.mkdir(parents=True, exist_ok=True) + plt.savefig(out_path, bbox_inches='tight', facecolor='white') + print(f"\n报告已保存至: {out_path}") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/backend/app/algorithms/evaluate/eva_gen_nums.py b/src/backend/app/algorithms/evaluate/eva_gen_nums.py new file mode 100644 index 0000000..ddf38f8 --- /dev/null +++ b/src/backend/app/algorithms/evaluate/eva_gen_nums.py @@ -0,0 +1,485 @@ +""" +用于对比评估两组图像(Clean vs Perturbed)的生成质量。 +支持生成包含指标对比表和深度差异分析的 PNG 报告。 +""" + +import os +import time +import subprocess +import tempfile +import warnings +from argparse import ArgumentParser +from pathlib import Path +from typing import Dict, Optional, Tuple, Any + +import torch +import clip +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +import matplotlib.gridspec as gridspec +from PIL import Image +from torchvision import transforms +from facenet_pytorch import MTCNN, InceptionResnetV1 +from piq import ssim, psnr +import torch_fidelity as fid + +# 关闭与评估过程无关的常见警告,避免影响关键信息阅读 +warnings.filterwarnings("ignore", category=UserWarning) +warnings.filterwarnings("ignore", category=FutureWarning) + +# 全局样式配置:统一图表字体、数学公式风格与负号显示效果 +plt.rcParams.update({ + 'font.family': 'serif', + 'font.serif': ['DejaVu Serif', 'Times New Roman', 'serif'], + 'mathtext.fontset': 'cm', + 'axes.unicode_minus': False +}) + +# 指标配置:给出每个指标的优劣方向以及用于分级判断的阈值 +METRIC_ANALYSIS_META = { + 'FID': {'higher_is_better': False, 'th': [2.0, 10.0, 30.0]}, + 'SSIM': {'higher_is_better': True, 'th': [0.01, 0.05, 0.15]}, + 'PSNR': {'higher_is_better': True, 'th': [0.5, 2.0, 5.0]}, + 'FDS': {'higher_is_better': True, 'th': [0.02, 0.05, 0.1]}, + 'CLIP_IQS': {'higher_is_better': True, 'th': [0.01, 0.03, 0.08]}, + 'BRISQUE': {'higher_is_better': False, 'th': [2.0, 5.0, 10.0]}, +} + +# 综合结论中用于累加的权重,用于把分级差异映射成总体降级强度 +ANALYSIS_WEIGHTS = {'Severe': 3, 'Significant': 2, 'Slight': 1, 'Negligible': 0} + + +# 模型加载模块:在脚本启动时尝试预加载 CLIP,失败时自动降级为不计算该项指标 + +try: + CLIP_MODEL, CLIP_PREPROCESS = clip.load('ViT-B/32', 'cuda') + CLIP_MODEL.eval() +except Exception as e: + print(f"[Warning] CLIP 模型加载失败: {e}") + CLIP_MODEL, CLIP_PREPROCESS = None, None + + +def _get_clip_text_features(text: str) -> torch.Tensor: + # 将文本编码为 CLIP 特征并归一化,用于后续与图像特征计算相似度 + if CLIP_MODEL is None: + return None + tokens = clip.tokenize(text).to('cuda') + with torch.no_grad(): + features = CLIP_MODEL.encode_text(tokens) + features /= features.norm(dim=-1, keepdim=True) + return features + + +# 指标计算模块:对两个图像集合计算多项指标,用于后续报告展示与差异分析 + +def calculate_metrics( + ref_dir: str, + gen_dir: str, + image_size: int = 512 +) -> Dict[str, float]: + # 从目录读取图像并在同一设备上计算 FDS、SSIM、PSNR、CLIP_IQS 与 FID + metrics = {} + + def load_images(directory): + # 读取目录下常见格式图像并转换为 RGB,忽略无法打开的文件 + imgs = [] + if os.path.exists(directory): + for f in os.listdir(directory): + if f.lower().endswith(('.png', '.jpg', '.jpeg')): + try: + path = os.path.join(directory, f) + imgs.append(Image.open(path).convert("RGB")) + except Exception: + pass + return imgs + + ref_imgs = load_images(ref_dir) + gen_imgs = load_images(gen_dir) + + # 若任一集合为空则直接返回,避免后续指标计算出错 + if not ref_imgs or not gen_imgs: + print(f"[Error] 图片加载失败或目录为空: \nRef: {ref_dir}\nGen: {gen_dir}") + return {} + + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + + with torch.no_grad(): + # FDS:使用人脸检测与人脸特征模型度量身份相似度 + print(">>> 计算 FDS...") + mtcnn = MTCNN(image_size=image_size, margin=0, device=device) + resnet = InceptionResnetV1(pretrained='vggface2').eval().to(device) + + def get_face_embeds(img_list): + # 对每张图做检测与对齐,成功则提取人脸特征并收集为张量 + embeds = [] + for img in img_list: + face = mtcnn(img) + if face is not None: + embeds.append(resnet(face.unsqueeze(0).to(device))) + return torch.stack(embeds) if embeds else None + + ref_embeds = get_face_embeds(ref_imgs) + gen_embeds = get_face_embeds(gen_imgs) + + if ref_embeds is not None and gen_embeds is not None: + sims = [] + for g_emb in gen_embeds: + sim = torch.cosine_similarity(g_emb, ref_embeds).mean() + sims.append(sim) + metrics['FDS'] = torch.tensor(sims).mean().item() + else: + metrics['FDS'] = 0.0 + + # 释放中间模型并回收显存,避免后续指标计算显存不足 + del mtcnn, resnet + if torch.cuda.is_available(): + torch.cuda.empty_cache() + + # SSIM 与 PSNR:以参考集合为基准,对每张生成图计算与参考集合的平均相似度 + print(">>> 计算 SSIM & PSNR...") + tfm = transforms.Compose([ + transforms.Resize((image_size, image_size)), + transforms.ToTensor() + ]) + + ref_tensor = torch.stack([tfm(img) for img in ref_imgs]).to(device) + + ssim_accum, psnr_accum = 0.0, 0.0 + for img in gen_imgs: + gen_tensor = tfm(img).unsqueeze(0).to(device) + gen_expanded = gen_tensor.expand_as(ref_tensor) + + val_ssim = ssim(gen_expanded, ref_tensor, data_range=1.0) + val_psnr = psnr(gen_expanded, ref_tensor, data_range=1.0) + + ssim_accum += val_ssim.item() + psnr_accum += val_psnr.item() + + metrics['SSIM'] = ssim_accum / len(gen_imgs) + metrics['PSNR'] = psnr_accum / len(gen_imgs) + + # CLIP_IQS:用“good image”作为文本锚点,计算生成图与该文本概念的相似度均值 + print(">>> 计算 CLIP IQS...") + if CLIP_MODEL: + iqs_accum = 0.0 + txt_feat = _get_clip_text_features("good image") + for img in gen_imgs: + img_tensor = CLIP_PREPROCESS(img).unsqueeze(0).to(device) + img_feat = CLIP_MODEL.encode_image(img_tensor) + img_feat /= img_feat.norm(dim=-1, keepdim=True) + iqs_accum += (img_feat @ txt_feat.T).item() + metrics['CLIP_IQS'] = iqs_accum / len(gen_imgs) + else: + metrics['CLIP_IQS'] = np.nan + + # FID:使用 torch_fidelity 计算两个目录的分布距离 + print(">>> 计算 FID...") + try: + fid_res = fid.calculate_metrics( + input1=ref_dir, + input2=gen_dir, + cuda=True, + fid=True, + verbose=False + ) + metrics['FID'] = fid_res['frechet_inception_distance'] + except Exception as e: + print(f"[Error] FID 计算异常: {e}") + metrics['FID'] = np.nan + + return metrics + + +def run_brisque_cleanly(img_dir: str) -> float: + # 通过子进程调用外部 BRISQUE 脚本,并用临时目录承载其输出文件 + print(f">>> 计算 BRISQUE (External)...") + + script_path = Path(__file__).parent / 'libsvm' / 'python' / 'brisquequality.py' + if not script_path.exists(): + print(f"[Error] 找不到 BRISQUE 脚本: {script_path}") + return np.nan + + abs_img_dir = os.path.abspath(img_dir) + + with tempfile.TemporaryDirectory() as temp_dir: + try: + cmd = [ + "python", str(script_path), + abs_img_dir, + temp_dir + ] + + subprocess.run( + cmd, + cwd=script_path.parent, + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + + # 从临时目录读取脚本写出的 log.txt,并解析其中的最终分数 + log_file = Path(temp_dir) / 'log.txt' + if log_file.exists(): + content = log_file.read_text(encoding='utf-8').strip() + try: + return float(content.split()[-1]) + except ValueError: + return float(content) + else: + return np.nan + + except Exception as e: + print(f"[Error] BRISQUE 执行出错: {e}") + return np.nan + + +# 报告生成模块:对指标差异进行分级解释,并渲染成包含样例图与表格的 PNG 报告 + +def analyze_metric_diff( + metric_name: str, + clean_val: float, + pert_val: float +) -> Tuple[str, str, str]: + # 根据指标配置计算差异,并输出用于表格与文本解释的分析结果 + cfg = METRIC_ANALYSIS_META.get(metric_name) + if not cfg: + return "-", "Configuration not found.", "Negligible" + + diff = pert_val - clean_val + abs_diff = abs(diff) + + is_better = (cfg['higher_is_better'] and diff > 0) or (not cfg['higher_is_better'] and diff < 0) + is_worse = not is_better + + th = cfg['th'] + if abs_diff < th[0]: + degree = "Negligible" + elif abs_diff < th[1]: + degree = "Slight" + elif abs_diff < th[2]: + degree = "Significant" + else: + degree = "Severe" + + header_arrow = r"$\uparrow$" if cfg['higher_is_better'] else r"$\downarrow$" + + if degree == "Negligible": + analysis_text = f"Negligible change (diff < {th[0]:.4f})." + elif is_worse: + analysis_text = f"{degree} degradation." + else: + analysis_text = f"Unexpected {degree} change." + + return header_arrow, analysis_text, degree + + +def generate_visual_report( + ref_dir: str, + clean_dir: str, + pert_dir: str, + clean_metrics: Dict, + pert_metrics: Dict, + output_path: str +): + # 从三个目录各取一张样例图,并将指标对比表与差异解释一起绘制到同一张图中 + def get_sample(d): + if not os.path.exists(d): + return None, "N/A" + files = [f for f in os.listdir(d) if f.lower().endswith(('.png', '.jpg'))] + if not files: + return None, "Empty" + return Image.open(os.path.join(d, files[0])).convert("RGB"), files[0] + + img_ref, name_ref = get_sample(ref_dir) + img_clean, name_clean = get_sample(clean_dir) + img_pert, name_pert = get_sample(pert_dir) + + fig = plt.figure(figsize=(12, 16.5), dpi=120) + gs = gridspec.GridSpec(3, 2, height_ratios=[1, 1, 1.5], hspace=0.25, wspace=0.1) + + ax_ref = fig.add_subplot(gs[0, :]) + if img_ref: + ax_ref.imshow(img_ref) + ax_ref.set_title(f"Reference Image ($X$)\n{name_ref}", fontsize=12, fontweight='bold', pad=10) + ax_ref.axis('off') + + ax_c = fig.add_subplot(gs[1, 0]) + if img_clean: + ax_c.imshow(img_clean) + ax_c.set_title(f"Clean Output ($Y$)\n{name_clean}", fontsize=12, fontweight='bold', pad=10) + ax_c.axis('off') + + ax_p = fig.add_subplot(gs[1, 1]) + if img_pert: + ax_p.imshow(img_pert) + ax_p.set_title(f"Perturbed Output ($Y'$)\n{name_pert}", fontsize=12, fontweight='bold', pad=10) + ax_p.axis('off') + + ax_data = fig.add_subplot(gs[2, :]) + ax_data.axis('off') + + metrics_list = ['FID', 'SSIM', 'PSNR', 'FDS', 'CLIP_IQS', 'BRISQUE'] + table_data = [] + analysis_lines = [] + + degradation_score = 0 + + # 为每个指标生成表格行,并收集对应的差异解释文本 + for m in metrics_list: + c_val = clean_metrics.get(m, np.nan) + p_val = pert_metrics.get(m, np.nan) + + c_str = f"{c_val:.4f}" if not np.isnan(c_val) else "N/A" + p_str = f"{p_val:.4f}" if not np.isnan(p_val) else "N/A" + diff_str = "-" + + header_arrow = "" + + if not np.isnan(c_val) and not np.isnan(p_val): + header_arrow, text_desc, degree = analyze_metric_diff(m, c_val, p_val) + + diff = p_val - c_val + diff_arrow = r"$\nearrow$" if diff > 0 else r"$\searrow$" + if abs(diff) < 1e-4: + diff_arrow = r"$\rightarrow$" + + diff_str = f"{diff:+.4f} {diff_arrow}" + + analysis_lines.append(f"• {m}: Change {diff:+.4f}. Analysis: {text_desc}") + + cfg = METRIC_ANALYSIS_META.get(m) + is_worse = (cfg['higher_is_better'] and diff < 0) or (not cfg['higher_is_better'] and diff > 0) + if is_worse: + degradation_score += ANALYSIS_WEIGHTS.get(degree, 0) + + name_with_arrow = f"{m} ({header_arrow})" if header_arrow else m + table_data.append([name_with_arrow, c_str, p_str, diff_str]) + + table = ax_data.table( + cellText=table_data, + colLabels=["Metric (Goal)", "Clean ($Y$)", "Perturbed ($Y'$)", "Diff ($\\Delta$)"], + loc='upper center', + cellLoc='center', + colWidths=[0.25, 0.25, 0.25, 0.25] + ) + table.scale(1, 2.0) + table.set_fontsize(11) + + # 对表头与第一列做基础样式区分,提升可读性 + for (row, col), cell in table.get_celld().items(): + if row == 0: + cell.set_text_props(weight='bold', color='white') + cell.set_facecolor('#404040') + elif col == 0: + cell.set_text_props(weight='bold') + cell.set_facecolor('#f5f5f5') + + # 汇总差异分析文本并给出基于权重的总体结论 + if not analysis_lines: + analysis_lines.append("• All metrics are missing or invalid.") + + full_text = "Quantitative Difference Analysis:\n" + "\n".join(analysis_lines) + + conclusion = "\n\n>>> EXECUTIVE SUMMARY (Holistic Judgment):\n" + + if degradation_score >= 8: + conclusion += "CRITICAL DEGRADATION. Significant quality loss observed. Attack highly effective." + elif degradation_score >= 4: + conclusion += "MODERATE DEGRADATION. Observable quality drop in key metrics. Attack effective." + elif degradation_score > 0: + conclusion += "MINOR DEGRADATION. Slight quality loss detected. Attack partially effective." + else: + conclusion += "INEFFECTIVE ATTACK. No significant or unexpected statistical quality loss observed." + + full_text += conclusion + + # 在报告底部补充指标含义说明,便于非专业读者理解各项指标的侧重点 + metric_definitions = [ + "", + "", + ">>> METRIC DEFINITIONS (Detailed Explanations):", + "", + "1) FID (Frechet Inception Distance) [Goal: LOWER is better]", + " - Meaning: Measures how far the generated image distribution is from the reference image distribution in a deep feature space.", + " - What it represents: Overall realism + diversity at the dataset level; smaller means the generated set is closer to the reference set.", + "", + "2) SSIM (Structural Similarity Index) [Goal: HIGHER is better]", + " - Meaning: Compares two images using luminance, contrast, and structural similarity components.", + " - What it represents: Structural consistency (edges, textures, layouts); closer to 1 means more similar structure.", + "", + "3) PSNR (Peak Signal-to-Noise Ratio) [Goal: HIGHER is better]", + " - Meaning: Pixel-domain signal-to-noise measure derived from MSE, typically reported in dB.", + " - What it represents: Pixel-level closeness to the reference; higher means lower average pixel error.", + "", + "4) FDS (Face Detection Similarity) [Goal: HIGHER is better]", + " - Meaning: Face-identity similarity based on detected face embeddings.", + " - What it represents: Whether the generated faces preserve identity-like characteristics relative to the reference set; higher means more similar identity features.", + "", + "5) CLIP_IQS (CLIP Image Quality Score; text prompt = 'good image') [Goal: HIGHER is better]", + " - Meaning: Similarity between the image embedding and the embedding of the text concept 'good image' in CLIP space.", + " - What it represents: A coarse proxy of \"looks like a good image\" according to CLIP priors (semantic/aesthetic heuristic).", + "", + "6) BRISQUE (Blind/Referenceless Image Spatial Quality Evaluator) [Goal: LOWER is better]", + " - Meaning: A no-reference image quality metric based on natural scene statistics (NSS) features.", + " - What it represents: Distortion level without using a reference image; lower is usually interpreted as better perceptual quality.", + ] + full_text += "\n" + "\n".join(metric_definitions) + + ax_data.text( + 0.05, + 0.30, + full_text, + ha='left', + va='top', + fontsize=12, family='monospace', wrap=True, + transform=ax_data.transAxes + ) + + fig.suptitle("Museguard: Quality Assurance Report", fontsize=18, fontweight='bold', y=0.95) + + plt.savefig(output_path, bbox_inches='tight', facecolor='white') + print(f"\n[Success] 报告已生成: {output_path}") + + +def main(): + # 解析参数,分别评估 Clean 与 Perturbed 两组输出,并生成汇总报告 + parser = ArgumentParser() + parser.add_argument('--clean_output_dir', type=str, required=True) + parser.add_argument('--perturbed_output_dir', type=str, required=True) + parser.add_argument('--clean_ref_dir', type=str, required=True) + parser.add_argument('--png_output_path', type=str, required=True) + parser.add_argument('--size', type=int, default=512) + args = parser.parse_args() + + Path(args.png_output_path).parent.mkdir(parents=True, exist_ok=True) + + print("========================================") + print(" Image Quality Evaluation Toolkit") + print("========================================") + + print(f"\n[1/2] Evaluating Clean Set: {os.path.basename(args.clean_output_dir)}") + c_metrics = calculate_metrics(args.clean_ref_dir, args.clean_output_dir, args.size) + if c_metrics: + c_metrics['BRISQUE'] = run_brisque_cleanly(args.clean_output_dir) + + print(f"\n[2/2] Evaluating Perturbed Set: {os.path.basename(args.perturbed_output_dir)}") + p_metrics = calculate_metrics(args.clean_ref_dir, args.perturbed_output_dir, args.size) + if p_metrics: + p_metrics['BRISQUE'] = run_brisque_cleanly(args.perturbed_output_dir) + + if c_metrics and p_metrics: + generate_visual_report( + args.clean_ref_dir, + args.clean_output_dir, + args.perturbed_output_dir, + c_metrics, + p_metrics, + args.png_output_path + ) + else: + print("\n[Fatal] 评估数据不完整,中止报告生成。") + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/src/backend/app/algorithms/evaluate/libsvm/COPYRIGHT b/src/backend/app/algorithms/evaluate/libsvm/COPYRIGHT new file mode 100644 index 0000000..5fe2f22 --- /dev/null +++ b/src/backend/app/algorithms/evaluate/libsvm/COPYRIGHT @@ -0,0 +1,31 @@ + +Copyright (c) 2000-2014 Chih-Chung Chang and Chih-Jen Lin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +3. Neither name of copyright holders nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/backend/app/algorithms/evaluate/libsvm/FAQ.html b/src/backend/app/algorithms/evaluate/libsvm/FAQ.html new file mode 100644 index 0000000..42a175a --- /dev/null +++ b/src/backend/app/algorithms/evaluate/libsvm/FAQ.html @@ -0,0 +1,2166 @@ + + + + +LIBSVM FAQ + + + +

LIBSVM FAQ

+last modified : +Tue, 20 Oct 2015 13:43:40 GMT + +
  • All Questions(84)
  • + + + + + + +
    +

    + + +Q: Some courses which have used libsvm as a tool +
    +

    +

    +[Go Top] +


    + +Q: Some applications/tools which have used libsvm +
    +(and maybe liblinear). + +

    +[Go Top] +


    + +Q: Where can I find documents/videos of libsvm ? +
    +

    + +

      +
    • +Official implementation document: +
      +C.-C. Chang and +C.-J. Lin. +LIBSVM +: a library for support vector machines. +ACM Transactions on Intelligent +Systems and Technology, 2:27:1--27:27, 2011. +pdf, ps.gz, +ACM digital lib. + + +
    • Instructions for using LIBSVM are in the README files in the main directory and some sub-directories. +
      +README in the main directory: details all options, data format, and library calls. +
      +tools/README: parameter selection and other tools +
    • +A guide for beginners: +
      +C.-W. Hsu, C.-C. Chang, and +C.-J. Lin. + +A practical guide to support vector classification + +
    • An introductory video +for windows users. + +
    +

    +[Go Top] +


    + +Q: Where are change log and earlier versions? +
    +

    See the change log. + +

    You can download earlier versions +here. +

    +[Go Top] +


    + +Q: How to cite LIBSVM? +
    +

    +Please cite the following paper: +

    +Chih-Chung Chang and Chih-Jen Lin, LIBSVM +: a library for support vector machines. +ACM Transactions on Intelligent Systems and Technology, 2:27:1--27:27, 2011. +Software available at http://www.csie.ntu.edu.tw/~cjlin/libsvm +

    +The bibtex format is +

    +@article{CC01a,
    + author = {Chang, Chih-Chung and Lin, Chih-Jen},
    + title = {{LIBSVM}: A library for support vector machines},
    + journal = {ACM Transactions on Intelligent Systems and Technology},
    + volume = {2},
    + issue = {3},
    + year = {2011},
    + pages = {27:1--27:27},
    + note =	 {Software available at \url{http://www.csie.ntu.edu.tw/~cjlin/libsvm}}
    +}
    +
    +

    +[Go Top] +


    + +Q: I would like to use libsvm in my software. Is there any license problem? +
    +

    +We have "the modified BSD license," +so it is very easy to +use libsvm in your software. +Please check the COPYRIGHT file in detail. Basically +you need to +

      +
    1. +Clearly indicate that LIBSVM is used. +
    2. +
    3. +Retain the LIBSVM COPYRIGHT file in your software. +
    4. +
    +It can also be used in commercial products. +

    +[Go Top] +


    + +Q: Is there a repository of additional tools based on libsvm? +
    +

    +Yes, see libsvm +tools +

    +[Go Top] +


    + +Q: On unix machines, I got "error in loading shared libraries" or "cannot open shared object file." What happened ? +
    + +

    +This usually happens if you compile the code +on one machine and run it on another which has incompatible +libraries. +Try to recompile the program on that machine or use static linking. +

    +[Go Top] +


    + +Q: I have modified the source and would like to build the graphic interface "svm-toy" on MS windows. How should I do it ? +
    + +

    +Build it as a project by choosing "Win32 Project." +On the other hand, for "svm-train" and "svm-predict" +you want to choose "Win32 Console Project." +After libsvm 2.5, you can also use the file Makefile.win. +See details in README. + + +

    +If you are not using Makefile.win and see the following +link error +

    +LIBCMTD.lib(wwincrt0.obj) : error LNK2001: unresolved external symbol
    +_wWinMain@16
    +
    +you may have selected a wrong project type. +

    +[Go Top] +


    + +Q: I am an MS windows user but why only one (svm-toy) of those precompiled .exe actually runs ? +
    + +

    +You need to open a command window +and type svmtrain.exe to see all options. +Some examples are in README file. +

    +[Go Top] +


    + +Q: What is the difference between "." and "*" outputed during training? +
    + +

    +"." means every 1,000 iterations (or every #data +iterations is your #data is less than 1,000). +"*" means that after iterations of using +a smaller shrunk problem, +we reset to use the whole set. See the +implementation document for details. +

    +[Go Top] +


    + +Q: Why occasionally the program (including MATLAB or other interfaces) crashes and gives a segmentation fault? +
    + +

    +Very likely the program consumes too much memory than what the +operating system can provide. Try a smaller data and see if the +program still crashes. +

    +[Go Top] +


    + +Q: How to build a dynamic library (.dll file) on MS windows? +
    +

    + +The easiest way is to use Makefile.win. +See details in README. + +Alternatively, you can use Visual C++. Here is +the example using Visual Studio 2013: +

      +
    1. Create a Win32 empty DLL project and set (in Project->$Project_Name +Properties...->Configuration) to "Release." + About how to create a new dynamic link library, please refer to +http://msdn2.microsoft.com/en-us/library/ms235636(VS.80).aspx + +
    2. Add svm.cpp, svm.h to your project. +
    3. Add __WIN32__ and _CRT_SECURE_NO_DEPRECATE to Preprocessor definitions (in +Project->$Project_Name Properties...->C/C++->Preprocessor) +
    4. Set Create/Use Precompiled Header to Not Using Precompiled Headers +(in Project->$Project_Name Properties...->C/C++->Precompiled Headers) +
    5. Set the path for the Modulation Definition File svm.def (in +Project->$Project_Name Properties...->Linker->input +
    6. Build the DLL. +
    7. Rename the dll file to libsvm.dll and move it to the correct path. +
    + + +

    +[Go Top] +


    + +Q: On some systems (e.g., Ubuntu), compiling LIBSVM gives many warning messages. Is this a problem and how to disable the warning message? +
    + +

    +If you are using a version before 3.18, probably you see +a warning message like +

    +svm.cpp:2730: warning: ignoring return value of int fscanf(FILE*, const char*, ...), declared with attribute warn_unused_result
    +
    +This is not a problem; see this page for more +details of ubuntu systems. +To disable the warning message you can replace +
    +CFLAGS = -Wall -Wconversion -O3 -fPIC
    +
    +with +
    +CFLAGS = -Wall -Wconversion -O3 -fPIC -U_FORTIFY_SOURCE
    +
    +in Makefile. +

    After version 3.18, we have a better setting so that such warning messages do not appear. +

    +[Go Top] +


    + +Q: In LIBSVM, why you don't use certain C/C++ library functions to make the code shorter? +
    + +

    +For portability, we use only features defined in ISO C89. Note that features in ISO C99 may not be available everywhere. +Even the newest gcc lacks some features in C99 (see http://gcc.gnu.org/c99status.html for details). +If the situation changes in the future, +we might consider using these newer features. +

    +[Go Top] +


    + +Q: Why sometimes not all attributes of a data appear in the training/model files ? +
    +

    +libsvm uses the so called "sparse" format where zero +values do not need to be stored. Hence a data with attributes +

    +1 0 2 0
    +
    +is represented as +
    +1:1 3:2
    +
    +

    +[Go Top] +


    + +Q: What if my data are non-numerical ? +
    +

    +Currently libsvm supports only numerical data. +You may have to change non-numerical data to +numerical. For example, you can use several +binary attributes to represent a categorical +attribute. +

    +[Go Top] +


    + +Q: Why do you consider sparse format ? Will the training of dense data be much slower ? +
    +

    +This is a controversial issue. The kernel +evaluation (i.e. inner product) of sparse vectors is slower +so the total training time can be at least twice or three times +of that using the dense format. +However, we cannot support only dense format as then we CANNOT +handle extremely sparse cases. Simplicity of the code is another +concern. Right now we decide to support +the sparse format only. +

    +[Go Top] +


    + +Q: Why sometimes the last line of my data is not read by svm-train? +
    + +

    +We assume that you have '\n' in the end of +each line. So please press enter in the end +of your last line. +

    +[Go Top] +


    + +Q: Is there a program to check if my data are in the correct format? +
    + +

    +The svm-train program in libsvm conducts only a simple check of the input data. To do a +detailed check, after libsvm 2.85, you can use the python script tools/checkdata.py. See tools/README for details. +

    +[Go Top] +


    + +Q: May I put comments in data files? +
    + +

    +We don't officially support this. But, currently LIBSVM +is able to process data in the following +format: +

    +1 1:2 2:1 # your comments
    +
    +Note that the character ":" should not appear in your +comments. + +

    +[Go Top] +


    + +Q: How to convert other data formats to LIBSVM format? +
    + +

    +It depends on your data format. A simple way is to use +libsvmwrite in the libsvm matlab/octave interface. + +Take a CSV (comma-separated values) file +in UCI machine learning repository as an example. +We download SPECTF.train. +Labels are in the first column. The following steps produce +a file in the libsvm format. +

    +matlab> SPECTF = csvread('SPECTF.train'); % read a csv file
    +matlab> labels = SPECTF(:, 1); % labels from the 1st column
    +matlab> features = SPECTF(:, 2:end); 
    +matlab> features_sparse = sparse(features); % features must be in a sparse matrix
    +matlab> libsvmwrite('SPECTFlibsvm.train', labels, features_sparse);
    +
    +The tranformed data are stored in SPECTFlibsvm.train. + +

    +Alternatively, you can use convert.c +to convert CSV format to libsvm format. +

    +[Go Top] +


    + +Q: The output of training C-SVM is like the following. What do they mean? +
    +
    optimization finished, #iter = 219 +
    nu = 0.431030 +
    obj = -100.877286, rho = 0.424632 +
    nSV = 132, nBSV = 107 +
    Total nSV = 132 +

    +obj is the optimal objective value of the dual SVM problem. +rho is the bias term in the decision function +sgn(w^Tx - rho). +nSV and nBSV are number of support vectors and bounded support +vectors (i.e., alpha_i = C). nu-svm is a somewhat equivalent +form of C-SVM where C is replaced by nu. nu simply shows the +corresponding parameter. More details are in + +libsvm document. +

    +[Go Top] +


    + +Q: Can you explain more about the model file? +
    + +

    +In the model file, after parameters and other informations such as labels , each line represents a support vector. +Support vectors are listed in the order of "labels" shown earlier. +(i.e., those from the first class in the "labels" list are +grouped first, and so on.) +If k is the total number of classes, +in front of a support vector in class j, there are +k-1 coefficients +y*alpha where alpha are dual solution of the +following two class problems: +
    +1 vs j, 2 vs j, ..., j-1 vs j, j vs j+1, j vs j+2, ..., j vs k +
    +and y=1 in first j-1 coefficients, y=-1 in the remaining +k-j coefficients. + +For example, if there are 4 classes, the file looks like: + +

    ++-+-+-+--------------------+
    +|1|1|1|                    |
    +|v|v|v|  SVs from class 1  |
    +|2|3|4|                    |
    ++-+-+-+--------------------+
    +|1|2|2|                    |
    +|v|v|v|  SVs from class 2  |
    +|2|3|4|                    |
    ++-+-+-+--------------------+
    +|1|2|3|                    |
    +|v|v|v|  SVs from class 3  |
    +|3|3|4|                    |
    ++-+-+-+--------------------+
    +|1|2|3|                    |
    +|v|v|v|  SVs from class 4  |
    +|4|4|4|                    |
    ++-+-+-+--------------------+
    +
    +See also + an illustration using +MATLAB/OCTAVE. +

    +[Go Top] +


    + +Q: Should I use float or double to store numbers in the cache ? +
    + +

    +We have float as the default as you can store more numbers +in the cache. +In general this is good enough but for few difficult +cases (e.g. C very very large) where solutions are huge +numbers, it might be possible that the numerical precision is not +enough using only float. +

    +[Go Top] +


    + +Q: Does libsvm have special treatments for linear SVM? +
    + +

    + +No, libsvm solves linear/nonlinear SVMs by the +same way. +Some tricks may save training/testing time if the +linear kernel is used, +so libsvm is NOT particularly efficient for linear SVM, +especially when +C is large and +the number of data is much larger +than the number of attributes. +You can either +

    + +

    Please also see our SVM guide +on the discussion of using RBF and linear +kernels. +

    +[Go Top] +


    + +Q: The number of free support vectors is large. What should I do? +
    +

    +This usually happens when the data are overfitted. +If attributes of your data are in large ranges, +try to scale them. Then the region +of appropriate parameters may be larger. +Note that there is a scale program +in libsvm. +

    +[Go Top] +


    + +Q: Should I scale training and testing data in a similar way? +
    +

    +Yes, you can do the following: +

    +> svm-scale -s scaling_parameters train_data > scaled_train_data
    +> svm-scale -r scaling_parameters test_data > scaled_test_data
    +
    +

    +[Go Top] +


    + +Q: On windows sometimes svm-scale.exe generates some non-ASCII data not good for training/prediction? +
    +

    +In general this does not happen, but we have observed in some rare +situations, the output of svm-scale.exe directed to a file (by ">") +has wrong encoding. That is, the file is not an ASCII file, so cannot be +used for training/prediction. Please let us know if this happens as at this moment +we don't clearly see how to fix the problem. +

    +[Go Top] +


    + +Q: Does it make a big difference if I scale each attribute to [0,1] instead of [-1,1]? +
    + +

    +For the linear scaling method, if the RBF kernel is +used and parameter selection is conducted, there +is no difference. Assume Mi and mi are +respectively the maximal and minimal values of the +ith attribute. Scaling to [0,1] means +

    +                x'=(x-mi)/(Mi-mi)
    +
    +For [-1,1], +
    +                x''=2(x-mi)/(Mi-mi)-1.
    +
    +In the RBF kernel, +
    +                x'-y'=(x-y)/(Mi-mi), x''-y''=2(x-y)/(Mi-mi).
    +
    +Hence, using (C,g) on the [0,1]-scaled data is the +same as (C,g/2) on the [-1,1]-scaled data. + +

    Though the performance is the same, the computational +time may be different. For data with many zero entries, +[0,1]-scaling keeps the sparsity of input data and hence +may save the time. +

    +[Go Top] +


    + +Q: The prediction rate is low. How could I improve it? +
    +

    +Try to use the model selection tool grid.py in the tools +directory find +out good parameters. To see the importance of model selection, +please +see our guide for beginners: + +A practical guide to support vector +classification + +

    +[Go Top] +


    + +Q: My data are unbalanced. Could libsvm handle such problems? +
    +

    +Yes, there is a -wi options. For example, if you use +

    +> svm-train -s 0 -c 10 -w1 1 -w-1 5 data_file
    +
    +

    +the penalty for class "-1" is larger. +Note that this -w option is for C-SVC only. +

    +[Go Top] +


    + +Q: What is the difference between nu-SVC and C-SVC? +
    +

    +Basically they are the same thing but with different +parameters. The range of C is from zero to infinity +but nu is always between [0,1]. A nice property +of nu is that it is related to the ratio of +support vectors and the ratio of the training +error. +

    +[Go Top] +


    + +Q: The program keeps running (without showing any output). What should I do? +
    +

    +You may want to check your data. Each training/testing +data must be in one line. It cannot be separated. +In addition, you have to remove empty lines. +

    +[Go Top] +


    + +Q: The program keeps running (with output, i.e. many dots). What should I do? +
    +

    +In theory libsvm guarantees to converge. +Therefore, this means you are +handling ill-conditioned situations +(e.g. too large/small parameters) so numerical +difficulties occur. +

    +You may get better numerical stability by replacing +

    +typedef float Qfloat;
    +
    +in svm.cpp with +
    +typedef double Qfloat;
    +
    +That is, elements in the kernel cache are stored +in double instead of single. However, this means fewer elements +can be put in the kernel cache. +

    +[Go Top] +


    + +Q: The training time is too long. What should I do? +
    +

    +For large problems, please specify enough cache size (i.e., +-m). +Slow convergence may happen for some difficult cases (e.g. -c is large). +You can try to use a looser stopping tolerance with -e. +If that still doesn't work, you may train only a subset of the data. +You can use the program subset.py in the directory "tools" +to obtain a random subset. + +

    +If you have extremely large data and face this difficulty, please +contact us. We will be happy to discuss possible solutions. + +

    When using large -e, you may want to check if -h 0 (no shrinking) or -h 1 (shrinking) is faster. +See a related question below. + +

    +[Go Top] +


    + +Q: Does shrinking always help? +
    +

    +If the number of iterations is high, then shrinking +often helps. +However, if the number of iterations is small +(e.g., you specify a large -e), then +probably using -h 0 (no shrinking) is better. +See the +implementation document for details. +

    +[Go Top] +


    + +Q: How do I get the decision value(s)? +
    +

    +We print out decision values for regression. For classification, +we solve several binary SVMs for multi-class cases. You +can obtain values by easily calling the subroutine +svm_predict_values. Their corresponding labels +can be obtained from svm_get_labels. +Details are in +README of libsvm package. + +

    +If you are using MATLAB/OCTAVE interface, svmpredict can directly +give you decision values. Please see matlab/README for details. + +

    +We do not recommend the following. But if you would +like to get values for +TWO-class classification with labels +1 and -1 +(note: +1 and -1 but not things like 5 and 10) +in the easiest way, simply add +

    +		printf("%f\n", dec_values[0]*model->label[0]);
    +
    +after the line +
    +		svm_predict_values(model, x, dec_values);
    +
    +of the file svm.cpp. +Positive (negative) +decision values correspond to data predicted as +1 (-1). + + +

    +[Go Top] +


    + +Q: How do I get the distance between a point and the hyperplane? +
    +

    +The distance is |decision_value| / |w|. +We have |w|^2 = w^Tw = alpha^T Q alpha = 2*(dual_obj + sum alpha_i). +Thus in svm.cpp please find the place +where we calculate the dual objective value +(i.e., the subroutine Solve()) +and add a statement to print w^Tw. + +More precisely, here is what you need to do +

      +
    1. Search for "calculate objective value" in svm.cpp +
    2. +
    3. In that place, si->obj is the variable for the objective value +
    4. +
    5. Add a for loop to calculate the sum of alpha +
    6. +
    7. Calculate 2*(si->obj + sum of alpha) and print the square root of it. You now get |w|. You +need to recompile the code +
    8. +
    9. Check an earlier FAQ on printing decision values. You +need to recompile the code +
    10. +
    11. +Then print decision value divided by the |w| value obtained earlier. +
    12. +
    +

    +[Go Top] +


    + +Q: On 32-bit machines, if I use a large cache (i.e. large -m) on a linux machine, why sometimes I get "segmentation fault ?" +
    +

    + +On 32-bit machines, the maximum addressable +memory is 4GB. The Linux kernel uses 3:1 +split which means user space is 3G and +kernel space is 1G. Although there are +3G user space, the maximum dynamic allocation +memory is 2G. So, if you specify -m near 2G, +the memory will be exhausted. And svm-train +will fail when it asks more memory. +For more details, please read + +this article. +

    +The easiest solution is to switch to a + 64-bit machine. +Otherwise, there are two ways to solve this. If your +machine supports Intel's PAE (Physical Address +Extension), you can turn on the option HIGHMEM64G +in Linux kernel which uses 4G:4G split for +kernel and user space. If you don't, you can +try a software `tub' which can eliminate the 2G +boundary for dynamic allocated memory. The `tub' +is available at +http://www.bitwagon.com/tub.html. + + + +

    +[Go Top] +


    + +Q: How do I disable screen output of svm-train? +
    +

    +For commend-line users, use the -q option: +

    +> ./svm-train -q heart_scale
    +
    +

    +For library users, set the global variable +

    +extern void (*svm_print_string) (const char *);
    +
    +to specify the output format. You can disable the output by the following steps: +
      +
    1. +Declare a function to output nothing: +
      +void print_null(const char *s) {}
      +
      +
    2. +
    3. +Assign the output function of libsvm by +
      +svm_print_string = &print_null;
      +
      +
    4. +
    +Finally, a way used in earlier libsvm +is by updating svm.cpp from +
    +#if 1
    +void info(const char *fmt,...)
    +
    +to +
    +#if 0
    +void info(const char *fmt,...)
    +
    +

    +[Go Top] +


    + +Q: I would like to use my own kernel. Any example? In svm.cpp, there are two subroutines for kernel evaluations: k_function() and kernel_function(). Which one should I modify ? +
    +

    +An example is "LIBSVM for string data" in LIBSVM Tools. +

    +The reason why we have two functions is as follows. +For the RBF kernel exp(-g |xi - xj|^2), if we calculate +xi - xj first and then the norm square, there are 3n operations. +Thus we consider exp(-g (|xi|^2 - 2dot(xi,xj) +|xj|^2)) +and by calculating all |xi|^2 in the beginning, +the number of operations is reduced to 2n. +This is for the training. For prediction we cannot +do this so a regular subroutine using that 3n operations is +needed. + +The easiest way to have your own kernel is +to put the same code in these two +subroutines by replacing any kernel. +

    +[Go Top] +


    + +Q: What method does libsvm use for multi-class SVM ? Why don't you use the "1-against-the rest" method? +
    +

    +It is one-against-one. We chose it after doing the following +comparison: +C.-W. Hsu and C.-J. Lin. + +A comparison of methods +for multi-class support vector machines +, +IEEE Transactions on Neural Networks, 13(2002), 415-425. + +

    +"1-against-the rest" is a good method whose performance +is comparable to "1-against-1." We do the latter +simply because its training time is shorter. +

    +[Go Top] +


    + +Q: I would like to solve L2-loss SVM (i.e., error term is quadratic). How should I modify the code ? +
    +

    +It is extremely easy. Taking c-svc for example, to solve +

    +min_w w^Tw/2 + C \sum max(0, 1- (y_i w^Tx_i+b))^2, +

    +only two +places of svm.cpp have to be changed. +First, modify the following line of +solve_c_svc from +

    +	s.Solve(l, SVC_Q(*prob,*param,y), minus_ones, y,
    +		alpha, Cp, Cn, param->eps, si, param->shrinking);
    +
    +to +
    +	s.Solve(l, SVC_Q(*prob,*param,y), minus_ones, y,
    +		alpha, INF, INF, param->eps, si, param->shrinking);
    +
    +Second, in the class of SVC_Q, declare C as +a private variable: +
    +	double C;
    +
    +In the constructor replace +
    +	for(int i=0;i<prob.l;i++)
    +		QD[i]= (Qfloat)(this->*kernel_function)(i,i);
    +
    +with +
    +        this->C = param.C;
    +	for(int i=0;i<prob.l;i++)
    +		QD[i]= (Qfloat)(this->*kernel_function)(i,i)+0.5/C;
    +
    +Then in the subroutine get_Q, after the for loop, add +
    +        if(i >= start && i < len) 
    +		data[i] += 0.5/C;
    +
    + +

    +For one-class svm, the modification is exactly the same. For SVR, you don't need an if statement like the above. Instead, you only need a simple assignment: +

    +	data[real_i] += 0.5/C;
    +
    + + +

    +For large linear L2-loss SVM, please use +LIBLINEAR. +

    +[Go Top] +


    + +Q: In one-class SVM, parameter nu should be an upper bound of the training error rate. Why sometimes I get a training error rate bigger than nu? +
    + +

    +At optimum, some training instances should satisfy +w^Tx - rho = 0. However, numerically they may be slightly +smaller than zero +Then they are wrongly counted +as training errors. You can use a smaller stopping tolerance +(by the -e option) to make this problem less serious. + +

    +This issue does not occur for nu-SVC for +two-class classification. +We have that +

      +
    1. nu is an upper bound on the ratio of training points +on the wrong side of the hyperplane, and +
    2. therefore, nu is also an upper bound on the training error rate. +
    +Numerical issues occur in calculating the first case +because some training points satisfying y(w^Tx + b) - rho = 0 +become negative. +However, we have no numerical problems for the second case because +we compare y(w^Tx + b) and 0 for counting training errors. +

    +[Go Top] +


    + +Q: Why the code gives NaN (not a number) results? +
    +

    +This rarely happens, but few users reported the problem. +It seems that their +computers for training libsvm have the VPN client +running. The VPN software has some bugs and causes this +problem. Please try to close or disconnect the VPN client. +

    +[Go Top] +


    + +Q: Why the sign of predicted labels and decision values are sometimes reversed? +
    +

    + +This situation may occur before version 3.17. +Nothing is wrong. Very likely you have two labels +1/-1 and the first instance in your data +has -1. We give the following explanation. + +

    +Internally class labels are ordered by their first occurrence in the training set. For a k-class data, internally labels +are 0, ..., k-1, and each two-class SVM considers pair +(i, j) with i < j. Then class i is treated as positive (+1) +and j as negative (-1). +For example, if the data set has labels +5/+10 and +10 appears +first, then internally the +5 versus +10 SVM problem +has +10 as positive (+1) and +5 as negative (-1). + +

    +By this setting, if you have labels +1 and -1, +it's possible that internally they correspond to -1 and +1, +respectively. Some new users have been confused about +this, so after version 3.17, if the data set has only +two labels +1 and -1, +internally we ensure +1 to be before -1. Then class +1 +is always treated as positive in the SVM problem. +Note that this is for two-class data only. +

    +[Go Top] +


    + +Q: I don't know class labels of test data. What should I put in the first column of the test file? +
    +

    Any value is ok. In this situation, what you will use is the output file of svm-predict, which gives predicted class labels. + + +

    +[Go Top] +


    + +Q: How can I use OpenMP to parallelize LIBSVM on a multicore/shared-memory computer? +
    + +

    It is very easy if you are using GCC 4.2 +or after. + +

    In Makefile, add -fopenmp to CFLAGS. + +

    In class SVC_Q of svm.cpp, modify the for loop +of get_Q to: +

    +#pragma omp parallel for private(j) schedule(guided)
    +			for(j=start;j<len;j++)
    +
    +

    In the subroutine svm_predict_values of svm.cpp, add one line to the for loop: +

    +#pragma omp parallel for private(i) schedule(guided) 
    +		for(i=0;i<l;i++)
    +			kvalue[i] = Kernel::k_function(x,model->SV[i],model->param);
    +
    +For regression, you need to modify +class SVR_Q instead. The loop in svm_predict_values +is also different because you need +a reduction clause for the variable sum: +
    +#pragma omp parallel for private(i) reduction(+:sum) schedule(guided)
    +		for(i=0;i<model->l;i++)
    +			sum += sv_coef[i] * Kernel::k_function(x,model->SV[i],model->param);
    +
    + +

    Then rebuild the package. Kernel evaluations in training/testing will be parallelized. An example of running this modification on +an 8-core machine using the data set +real-sim: + +

    8 cores: +

    +%setenv OMP_NUM_THREADS 8
    +%time svm-train -c 8 -g 0.5 -m 1000 real-sim
    +175.90sec
    +
    +1 core: +
    +%setenv OMP_NUM_THREADS 1
    +%time svm-train -c 8 -g 0.5 -m 1000 real-sim
    +588.89sec
    +
    +For this data, kernel evaluations take 91% of training time. In the above example, we assume you use csh. For bash, use +
    +export OMP_NUM_THREADS=8
    +
    +instead. + +

    For Python interface, you need to add the -lgomp link option: +

    +$(CXX) -lgomp -shared -dynamiclib svm.o -o libsvm.so.$(SHVER)
    +
    + +

    For MS Windows, you need to add /openmp in CFLAGS of Makefile.win + +

    +[Go Top] +


    + +Q: How could I know which training instances are support vectors? +
    + +

    +It's very simple. Since version 3.13, you can use the function +

    +void svm_get_sv_indices(const struct svm_model *model, int *sv_indices)
    +
    +to get indices of support vectors. For example, in svm-train.c, after +
    +		model = svm_train(&prob, &param);
    +
    +you can add +
    +		int nr_sv = svm_get_nr_sv(model);
    +		int *sv_indices = Malloc(int, nr_sv);
    +		svm_get_sv_indices(model, sv_indices);
    +		for (int i=0; i<nr_sv; i++)
    +			printf("instance %d is a support vector\n", sv_indices[i]);
    +
    + +

    If you use matlab interface, you can directly check +

    +model.sv_indices
    +
    +

    +[Go Top] +


    + +Q: Why sv_indices (indices of support vectors) are not stored in the saved model file? +
    + +

    +Although sv_indices is a member of the model structure +to +indicate support vectors in the training set, +we do not store its contents in the model file. +The model file is mainly used in the future for +prediction, so it is basically independent +from training data. Thus +storing sv_indices is not necessary. +Users should find support vectors right after +the training process. See the previous FAQ. +

    +[Go Top] +


    + +Q: After doing cross validation, why there is no model file outputted ? +
    +

    +Cross validation is used for selecting good parameters. +After finding them, you want to re-train the whole +data without the -v option. +

    +[Go Top] +


    + +Q: Why my cross-validation results are different from those in the Practical Guide? +
    +

    + +Due to random partitions of +the data, on different systems CV accuracy values +may be different. +

    +[Go Top] +


    + +Q: On some systems CV accuracy is the same in several runs. How could I use different data partitions? In other words, how do I set random seed in LIBSVM? +
    +

    +If you use GNU C library, +the default seed 1 is considered. Thus you always +get the same result of running svm-train -v. +To have different seeds, you can add the following code +in svm-train.c: +

    +#include <time.h>
    +
    +and in the beginning of main(), +
    +srand(time(0));
    +
    +Alternatively, if you are not using GNU C library +and would like to use a fixed seed, you can have +
    +srand(1);
    +
    + +

    +For Java, the random number generator +is initialized using the time information. +So results of two CV runs are different. +To fix the seed, after version 3.1 (released +in mid 2011), you can add +

    +svm.rand.setSeed(0);
    +
    +in the main() function of svm_train.java. + +

    +If you use CV to select parameters, it is recommended to use identical folds +under different parameters. In this case, you can consider fixing the seed. +

    +[Go Top] +


    + +Q: Why on windows sometimes grid.py fails? +
    +

    + +This problem shouldn't happen after version +2.85. If you are using earlier versions, +please download the latest one. + + +

    +[Go Top] +


    + +Q: Why grid.py/easy.py sometimes generates the following warning message? +
    +
    +Warning: empty z range [62.5:62.5], adjusting to [61.875:63.125]
    +Notice: cannot contour non grid data!
    +
    +

    Nothing is wrong and please disregard the +message. It is from gnuplot when drawing +the contour. +

    +[Go Top] +


    + +Q: How do I choose the kernel? +
    + +

    +In general we suggest you to try the RBF kernel first. +A recent result by Keerthi and Lin +( +download paper here) +shows that if RBF is used with model selection, +then there is no need to consider the linear kernel. +The kernel matrix using sigmoid may not be positive definite +and in general it's accuracy is not better than RBF. +(see the paper by Lin and Lin +( +download paper here). +Polynomial kernels are ok but if a high degree is used, +numerical difficulties tend to happen +(thinking about dth power of (<1) goes to 0 +and (>1) goes to infinity). +

    +[Go Top] +


    + +Q: How does LIBSVM perform parameter selection for multi-class problems? +
    + +

    +LIBSVM implements "one-against-one" multi-class method, so there are +k(k-1)/2 binary models, where k is the number of classes. + +

    +We can consider two ways to conduct parameter selection. + +

      +
    1. +For any two classes of data, a parameter selection procedure is conducted. Finally, +each decision function has its own optimal parameters. +
    2. +
    3. +The same parameters are used for all k(k-1)/2 binary classification problems. +We select parameters that achieve the highest overall performance. +
    4. +
    + +Each has its own advantages. A +single parameter set may not be uniformly good for all k(k-1)/2 decision functions. +However, as the overall accuracy is the final consideration, one parameter set +for one decision function may lead to over-fitting. In the paper +

    +Chen, Lin, and Schölkopf, + +A tutorial on nu-support vector machines. + +Applied Stochastic Models in Business and Industry, 21(2005), 111-136, + +

    +they have experimentally +shown that the two methods give similar performance. +Therefore, currently the parameter selection in LIBSVM +takes the second approach by considering the same parameters for +all k(k-1)/2 models. +

    +[Go Top] +


    + +Q: How do I choose parameters for one-class SVM as training data are in only one class? +
    +

    +You have pre-specified true positive rate in mind and then search for +parameters which achieve similar cross-validation accuracy. +

    +[Go Top] +


    + +Q: Instead of grid.py, what if I would like to conduct parameter selection using other programmin languages? +
    +

    +For MATLAB, please see another question in FAQ. + +

    +For using shell scripts, please check the code written by Bjarte Johansen +

    +[Go Top] +


    + +Q: Why training a probability model (i.e., -b 1) takes a longer time? +
    +

    +To construct this probability model, we internally conduct a +cross validation, which is more time consuming than +a regular training. +Hence, in general you do parameter selection first without +-b 1. You only use -b 1 when good parameters have been +selected. In other words, you avoid using -b 1 and -v +together. +

    +[Go Top] +


    + +Q: Why using the -b option does not give me better accuracy? +
    +

    +There is absolutely no reason the probability outputs guarantee +you better accuracy. The main purpose of this option is +to provide you the probability estimates, but not to boost +prediction accuracy. From our experience, +after proper parameter selections, in general with +and without -b have similar accuracy. Occasionally there +are some differences. +It is not recommended to compare the two under +just a fixed parameter +set as more differences will be observed. +

    +[Go Top] +


    + +Q: Why using svm-predict -b 0 and -b 1 gives different accuracy values? +
    +

    +Let's just consider two-class classification here. After probability information is obtained in training, +we do not have +

    +prob > = 0.5 if and only if decision value >= 0. +

    +So predictions may be different with -b 0 and 1. +

    +[Go Top] +


    + +Q: How can I save images drawn by svm-toy? +
    +

    +For Microsoft windows, first press the "print screen" key on the keyboard. +Open "Microsoft Paint" +(included in Windows) +and press "ctrl-v." Then you can clip +the part of picture which you want. +For X windows, you can +use the program "xv" or "import" to grab the picture of the svm-toy window. +

    +[Go Top] +


    + +Q: I press the "load" button to load data points but why svm-toy does not draw them ? +
    +

    +The program svm-toy assumes both attributes (i.e. x-axis and y-axis +values) are in (0,1). Hence you want to scale your +data to between a small positive number and +a number less than but very close to 1. +Moreover, class labels must be 1, 2, or 3 +(not 1.0, 2.0 or anything else). +

    +[Go Top] +


    + +Q: I would like svm-toy to handle more than three classes of data, what should I do ? +
    +

    +Taking windows/svm-toy.cpp as an example, you need to +modify it and the difference +from the original file is as the following: (for five classes of +data) +

    +30,32c30
    +< 	RGB(200,0,200),
    +< 	RGB(0,160,0),
    +< 	RGB(160,0,0)
    +---
    +> 	RGB(200,0,200)
    +39c37
    +< HBRUSH brush1, brush2, brush3, brush4, brush5;
    +---
    +> HBRUSH brush1, brush2, brush3;
    +113,114d110
    +< 	brush4 = CreateSolidBrush(colors[7]);
    +< 	brush5 = CreateSolidBrush(colors[8]);
    +155,157c151
    +< 	else if(v==3) return brush3;
    +< 	else if(v==4) return brush4;
    +< 	else return brush5;
    +---
    +> 	else return brush3;
    +325d318
    +< 	  int colornum = 5;
    +327c320
    +< 		svm_node *x_space = new svm_node[colornum * prob.l];
    +---
    +> 		svm_node *x_space = new svm_node[3 * prob.l];
    +333,338c326,331
    +< 			x_space[colornum * i].index = 1;
    +< 			x_space[colornum * i].value = q->x;
    +< 			x_space[colornum * i + 1].index = 2;
    +< 			x_space[colornum * i + 1].value = q->y;
    +< 			x_space[colornum * i + 2].index = -1;
    +< 			prob.x[i] = &x_space[colornum * i];
    +---
    +> 			x_space[3 * i].index = 1;
    +> 			x_space[3 * i].value = q->x;
    +> 			x_space[3 * i + 1].index = 2;
    +> 			x_space[3 * i + 1].value = q->y;
    +> 			x_space[3 * i + 2].index = -1;
    +> 			prob.x[i] = &x_space[3 * i];
    +397c390
    +< 				if(current_value > 5) current_value = 1;
    +---
    +> 				if(current_value > 3) current_value = 1;
    +
    +

    +[Go Top] +


    + +Q: What is the difference between Java version and C++ version of libsvm? +
    +

    +They are the same thing. We just rewrote the C++ code +in Java. +

    +[Go Top] +


    + +Q: Is the Java version significantly slower than the C++ version? +
    +

    +This depends on the VM you used. We have seen good +VM which leads the Java version to be quite competitive with +the C++ code. (though still slower) +

    +[Go Top] +


    + +Q: While training I get the following error message: java.lang.OutOfMemoryError. What is wrong? +
    +

    +You should try to increase the maximum Java heap size. +For example, +

    +java -Xmx2048m -classpath libsvm.jar svm_train ...
    +
    +sets the maximum heap size to 2048M. +

    +[Go Top] +


    + +Q: Why you have the main source file svm.m4 and then transform it to svm.java? +
    +

    +Unlike C, Java does not have a preprocessor built-in. +However, we need some macros (see first 3 lines of svm.m4). + + +

    +[Go Top] +


    + +Q: Except the python-C++ interface provided, could I use Jython to call libsvm ? +
    +

    Yes, here are some examples: + +

    +$ export CLASSPATH=$CLASSPATH:~/libsvm-2.91/java/libsvm.jar
    +$ ./jython
    +Jython 2.1a3 on java1.3.0 (JIT: jitc)
    +Type "copyright", "credits" or "license" for more information.
    +>>> from libsvm import *
    +>>> dir()
    +['__doc__', '__name__', 'svm', 'svm_model', 'svm_node', 'svm_parameter',
    +'svm_problem']
    +>>> x1 = [svm_node(index=1,value=1)]
    +>>> x2 = [svm_node(index=1,value=-1)]
    +>>> param = svm_parameter(svm_type=0,kernel_type=2,gamma=1,cache_size=40,eps=0.001,C=1,nr_weight=0,shrinking=1)
    +>>> prob = svm_problem(l=2,y=[1,-1],x=[x1,x2])
    +>>> model = svm.svm_train(prob,param)
    +*
    +optimization finished, #iter = 1
    +nu = 1.0
    +obj = -1.018315639346838, rho = 0.0
    +nSV = 2, nBSV = 2
    +Total nSV = 2
    +>>> svm.svm_predict(model,x1)
    +1.0
    +>>> svm.svm_predict(model,x2)
    +-1.0
    +>>> svm.svm_save_model("test.model",model)
    +
    +
    + +

    +[Go Top] +


    + +Q: I compile the MATLAB interface without problem, but why errors occur while running it? +
    +

    +Your compiler version may not be supported/compatible for MATLAB. +Please check this MATLAB page first and then specify the version +number. For example, if g++ X.Y is supported, replace +

    +CXX = g++
    +
    +in the Makefile with +
    +CXX = g++-X.Y
    +
    +

    +[Go Top] +


    + +Q: On 64bit Windows I compile the MATLAB interface without problem, but why errors occur while running it? +
    +

    + + +Please make sure that you use +the -largeArrayDims option in make.m. For example, +

    +mex -largeArrayDims -O -c svm.cpp
    +
    + +Moreover, if you use Microsoft Visual Studio, +probabally it is not properly installed. +See the explanation +here. +

    +[Go Top] +


    + +Q: Does the MATLAB interface provide a function to do scaling? +
    +

    +It is extremely easy to do scaling under MATLAB. +The following one-line code scale each feature to the range +of [0,1]: +

    +(data - repmat(min(data,[],1),size(data,1),1))*spdiags(1./(max(data,[],1)-min(data,[],1))',0,size(data,2),size(data,2))
    +
    +

    +[Go Top] +


    + +Q: How could I use MATLAB interface for parameter selection? +
    +

    +One can do this by a simple loop. +See the following example: +

    +bestcv = 0;
    +for log2c = -1:3,
    +  for log2g = -4:1,
    +    cmd = ['-v 5 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
    +    cv = svmtrain(heart_scale_label, heart_scale_inst, cmd);
    +    if (cv >= bestcv),
    +      bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
    +    end
    +    fprintf('%g %g %g (best c=%g, g=%g, rate=%g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
    +  end
    +end
    +
    +You may adjust the parameter range in the above loops. +

    +[Go Top] +


    + +Q: I use MATLAB parallel programming toolbox on a multi-core environment for parameter selection. Why the program is even slower? +
    +

    +Fabrizio Lacalandra of University of Pisa reported this issue. +It seems the problem is caused by the screen output. +If you disable the info function +using

    #if 0,
    then the problem +may be solved. +

    +[Go Top] +


    + +Q: How to use LIBSVM with OpenMP under MATLAB/Octave? +
    + +

    +First, you must modify svm.cpp. Check the following faq, + +How can I use OpenMP to parallelize LIBSVM on a multicore/shared-memory computer? + +

    +To build the MATLAB/Octave interface, we recommend using make.m. +You must append '-fopenmp' to CXXFLAGS and add '-lgomp' to mex options in make.m. +See details below. + +

    +For MATLAB users, the modified code is: +

    +mex CFLAGS="\$CFLAGS -std=c99" CXXFLAGS="\$CXXFLAGS -fopenmp" -largeArrayDims -I.. -lgomp svmtrain.c ../svm.cpp svm_model_matlab.c
    +mex CFLAGS="\$CFLAGS -std=c99" CXXFLAGS="\$CXXFLAGS -fopenmp" -largeArrayDims -I.. -lgomp svmpredict.c ../svm.cpp svm_model_matlab.c
    +
    + +

    +For Octave users, the modified code is: +

    +setenv('CXXFLAGS', '-fopenmp') 
    +mex -I.. -lgomp svmtrain.c ../svm.cpp svm_model_matlab.c
    +mex -I.. -lgomp svmpredict.c ../svm.cpp svm_model_matlab.c
    +
    + +

    +If make.m fails under matlab and you use Makefile to compile the codes, +you must modify two files: + +

    +You must append '-fopenmp' to CFLAGS in ../Makefile for C/C++ codes: +

    +CFLAGS = -Wall -Wconversion -O3 -fPIC -fopenmp -I$(MATLABDIR)/extern/include -I..
    +
    +and add '-lgomp' to MEX_OPTION in Makefile for the matlab/octave interface: +
    +MEX_OPTION += -lgomp
    +
    + +

    + To run the code, you must specify the number of threads. For + example, before executing matlab/octave, you run +

    +> export OMP_NUM_THREADS=8
    +> matlab
    +
    +Here we assume Bash is used. Unfortunately, we do not know yet +how to specify the number of threads within MATLAB/Octave. Our +experiments show that +
    +>> setenv('OMP_NUM_THREADS', '8');
    +
    +does not work. Please contact us if you +see how to solve this problem. On the other hand, you can +specify the number of threads in the source code (thanks +to comments from Ricardo Santiago-mozos): +
    +#pragma omp parallel  for private(i) num_threads(8)
    +
    +

    +[Go Top] +


    + +Q: How could I generate the primal variable w of linear SVM? +
    +

    +Let's start from the binary class and +assume you have two labels -1 and +1. +After obtaining the model from calling svmtrain, +do the following to have w and b: +

    +w = model.SVs' * model.sv_coef;
    +b = -model.rho;
    +
    +if model.Label(1) == -1
    +  w = -w;
    +  b = -b;
    +end
    +
    +If you do regression or one-class SVM, then the if statement is not needed. + +

    For multi-class SVM, we illustrate the setting +in the following example of running the iris +data, which have 3 classes +

      
    +> [y, x] = libsvmread('../../htdocs/libsvmtools/datasets/multiclass/iris.scale');
    +> m = svmtrain(y, x, '-t 0')
    +
    +m = 
    +
    +    Parameters: [5x1 double]
    +      nr_class: 3
    +       totalSV: 42
    +           rho: [3x1 double]
    +         Label: [3x1 double]
    +         ProbA: []
    +         ProbB: []
    +           nSV: [3x1 double]
    +       sv_coef: [42x2 double]
    +           SVs: [42x4 double]
    +
    +sv_coef is like: +
    ++-+-+--------------------+
    +|1|1|                    |
    +|v|v|  SVs from class 1  |
    +|2|3|                    |
    ++-+-+--------------------+
    +|1|2|                    |
    +|v|v|  SVs from class 2  |
    +|2|3|                    |
    ++-+-+--------------------+
    +|1|2|                    |
    +|v|v|  SVs from class 3  |
    +|3|3|                    |
    ++-+-+--------------------+
    +
    +so we need to see nSV of each classes. +
      
    +> m.nSV
    +
    +ans =
    +
    +     3
    +    21
    +    18
    +
    +Suppose the goal is to find the vector w of classes +1 vs 3. Then +y_i alpha_i of training 1 vs 3 are +
      
    +> coef = [m.sv_coef(1:3,2); m.sv_coef(25:42,1)];
    +
    +and SVs are: +
      
    +> SVs = [m.SVs(1:3,:); m.SVs(25:42,:)];
    +
    +Hence, w is +
    +> w = SVs'*coef;
    +
    +For rho, +
    +> m.rho
    +
    +ans =
    +
    +    1.1465
    +    0.3682
    +   -1.9969
    +> b = -m.rho(2);
    +
    +because rho is arranged by 1vs2 1vs3 2vs3. + + + +

    +[Go Top] +


    + +Q: Is there an OCTAVE interface for libsvm? +
    +

    +Yes, after libsvm 2.86, the matlab interface +works on OCTAVE as well. Please use make.m by typing +

    +>> make 
    +
    +under OCTAVE. +

    +[Go Top] +


    + +Q: How to handle the name conflict between svmtrain in the libsvm matlab interface and that in MATLAB bioinformatics toolbox? +
    +

    +The easiest way is to rename the svmtrain binary +file (e.g., svmtrain.mexw32 on 32-bit windows) +to a different +name (e.g., svmtrain2.mexw32). +

    +[Go Top] +


    + +Q: On Windows I got an error message "Invalid MEX-file: Specific module not found" when running the pre-built MATLAB interface in the windows sub-directory. What should I do? +
    +

    + +The error usually happens +when there are missing runtime components +such as MSVCR100.dll on your Windows platform. +You can use tools such as +Dependency +Walker to find missing library files. + +

    +For example, if the pre-built MEX files are compiled by +Visual C++ 2010, +you must have installed +Microsoft Visual C++ Redistributable Package 2010 +(vcredist_x86.exe). You can easily find the freely +available file from Microsoft's web site. + +

    +For 64bit Windows, the situation is similar. If +the pre-built files are by +Visual C++ 2008, then you must have +Microsoft Visual C++ Redistributable Package 2008 +(vcredist_x64.exe). +

    +[Go Top] +


    + +Q: LIBSVM supports 1-vs-1 multi-class classification. If instead I would like to use 1-vs-rest, how to implement it using MATLAB interface? +
    + +

    +Please use code in the following directory. The following example shows how to +train and test the problem dna (training and testing). + +

    Load, train and predict data: +

    +[trainY trainX] = libsvmread('./dna.scale');
    +[testY testX] = libsvmread('./dna.scale.t');
    +model = ovrtrain(trainY, trainX, '-c 8 -g 4');
    +[pred ac decv] = ovrpredict(testY, testX, model);
    +fprintf('Accuracy = %g%%\n', ac * 100);
    +
    +Conduct CV on a grid of parameters +
    +bestcv = 0;
    +for log2c = -1:2:3,
    +  for log2g = -4:2:1,
    +    cmd = ['-q -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
    +    cv = get_cv_ac(trainY, trainX, cmd, 3);
    +    if (cv >= bestcv),
    +      bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
    +    end
    +    fprintf('%g %g %g (best c=%g, g=%g, rate=%g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
    +  end
    +end
    +
    +

    +[Go Top] +


    + +Q: I tried to install matlab interface on mac, but failed. What should I do? +
    + +

    +We assume that in a matlab command window you change directory to libsvm/matlab and type +

    +>> make
    +
    +We discuss the following situations. + +
      +
    1. An error message like "libsvmread.c:1:19: fatal error: +stdio.h: No such file or directory" appears. + +

      +Reason: "make" looks for a C++ compiler, but +no compiler is found. To get one, you can +

        +
      • Install XCode offered by Apple Inc. +
      • Install XCode Command Line Tools. +
      + +

      +

    2. On OS X with Xcode 4.2+, I got an error message like "llvm-gcc-4.2: +command not found." + +

      +Reason: Since Apple Inc. only ships llsvm-gcc instead of gcc-4.2, +llvm-gcc-4.2 cannot be found. + +

      +If you are using Xcode 4.2-4.6, +a related solution is offered at +http://www.mathworks.com/matlabcentral/answers/94092. + +

      +On the other hand, for Xcode 5 (including Xcode 4.2-4.6), in a Matlab command window, enter +

        +
      • cd (matlabroot) +
      • cd bin +
      • Backup your mexopts.sh first +
      • edit mexopts.sh +
      • Scroll down to "maci64" section. Change +
        +		CC='llvm-gcc-4.2'
        +		CXX='llvm-g++-4.2'
        +
        +to +
        +		CC='llvm-gcc'
        +		CXX='llvm-g++'
        +
        +
      + +Please also ensure that SDKROOT corresponds to the SDK version you are using. + +

      +

    3. Other errors: you may check http://www.mathworks.com/matlabcentral/answers/94092. + +
    +

    +[Go Top] +


    + +Q: I tried to install octave interface on windows, but failed. What should I do? +
    + +

    +This may be due to +that Octave's math.h file does not +refer to the correct location of Visual Studio's math.h. +Please see this nice page for detailed +instructions. +

    +[Go Top] +


    +

    +LIBSVM home page +

    + + diff --git a/src/backend/app/algorithms/evaluate/libsvm/Makefile b/src/backend/app/algorithms/evaluate/libsvm/Makefile new file mode 100644 index 0000000..db6ab34 --- /dev/null +++ b/src/backend/app/algorithms/evaluate/libsvm/Makefile @@ -0,0 +1,25 @@ +CXX ?= g++ +CFLAGS = -Wall -Wconversion -O3 -fPIC +SHVER = 2 +OS = $(shell uname) + +all: svm-train svm-predict svm-scale + +lib: svm.o + if [ "$(OS)" = "Darwin" ]; then \ + SHARED_LIB_FLAG="-dynamiclib -Wl,-install_name,libsvm.so.$(SHVER)"; \ + else \ + SHARED_LIB_FLAG="-shared -Wl,-soname,libsvm.so.$(SHVER)"; \ + fi; \ + $(CXX) $${SHARED_LIB_FLAG} svm.o -o libsvm.so.$(SHVER) + +svm-predict: svm-predict.c svm.o + $(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm +svm-train: svm-train.c svm.o + $(CXX) $(CFLAGS) svm-train.c svm.o -o svm-train -lm +svm-scale: svm-scale.c + $(CXX) $(CFLAGS) svm-scale.c -o svm-scale +svm.o: svm.cpp svm.h + $(CXX) $(CFLAGS) -c svm.cpp +clean: + rm -f *~ svm.o svm-train svm-predict svm-scale libsvm.so.$(SHVER) diff --git a/src/backend/app/algorithms/evaluate/libsvm/Makefile.win b/src/backend/app/algorithms/evaluate/libsvm/Makefile.win new file mode 100644 index 0000000..b1d3570 --- /dev/null +++ b/src/backend/app/algorithms/evaluate/libsvm/Makefile.win @@ -0,0 +1,33 @@ +#You must ensure nmake.exe, cl.exe, link.exe are in system path. +#VCVARS64.bat +#Under dosbox prompt +#nmake -f Makefile.win + +########################################## +CXX = cl.exe +CFLAGS = /nologo /O2 /EHsc /I. /D _WIN64 /D _CRT_SECURE_NO_DEPRECATE +TARGET = windows + +all: $(TARGET)\svm-train.exe $(TARGET)\svm-predict.exe $(TARGET)\svm-scale.exe $(TARGET)\svm-toy.exe lib + +$(TARGET)\svm-predict.exe: svm.h svm-predict.c svm.obj + $(CXX) $(CFLAGS) svm-predict.c svm.obj -Fe$(TARGET)\svm-predict.exe + +$(TARGET)\svm-train.exe: svm.h svm-train.c svm.obj + $(CXX) $(CFLAGS) svm-train.c svm.obj -Fe$(TARGET)\svm-train.exe + +$(TARGET)\svm-scale.exe: svm.h svm-scale.c + $(CXX) $(CFLAGS) svm-scale.c -Fe$(TARGET)\svm-scale.exe + +$(TARGET)\svm-toy.exe: svm.h svm.obj svm-toy\windows\svm-toy.cpp + $(CXX) $(CFLAGS) svm-toy\windows\svm-toy.cpp svm.obj user32.lib gdi32.lib comdlg32.lib -Fe$(TARGET)\svm-toy.exe + +svm.obj: svm.cpp svm.h + $(CXX) $(CFLAGS) -c svm.cpp + +lib: svm.cpp svm.h svm.def + $(CXX) $(CFLAGS) -LD svm.cpp -Fe$(TARGET)\libsvm -link -DEF:svm.def + +clean: + -erase /Q *.obj $(TARGET)\*.exe $(TARGET)\*.dll $(TARGET)\*.exp $(TARGET)\*.lib + diff --git a/src/backend/app/algorithms/evaluate/libsvm/README b/src/backend/app/algorithms/evaluate/libsvm/README new file mode 100644 index 0000000..5b32236 --- /dev/null +++ b/src/backend/app/algorithms/evaluate/libsvm/README @@ -0,0 +1,769 @@ +Libsvm is a simple, easy-to-use, and efficient software for SVM +classification and regression. It solves C-SVM classification, nu-SVM +classification, one-class-SVM, epsilon-SVM regression, and nu-SVM +regression. It also provides an automatic model selection tool for +C-SVM classification. This document explains the use of libsvm. + +Libsvm is available at +http://www.csie.ntu.edu.tw/~cjlin/libsvm +Please read the COPYRIGHT file before using libsvm. + +Table of Contents +================= + +- Quick Start +- Installation and Data Format +- `svm-train' Usage +- `svm-predict' Usage +- `svm-scale' Usage +- Tips on Practical Use +- Examples +- Precomputed Kernels +- Library Usage +- Java Version +- Building Windows Binaries +- Additional Tools: Sub-sampling, Parameter Selection, Format checking, etc. +- MATLAB/OCTAVE Interface +- Python Interface +- Additional Information + +Quick Start +=========== + +If you are new to SVM and if the data is not large, please go to +`tools' directory and use easy.py after installation. It does +everything automatic -- from data scaling to parameter selection. + +Usage: easy.py training_file [testing_file] + +More information about parameter selection can be found in +`tools/README.' + +Installation and Data Format +============================ + +On Unix systems, type `make' to build the `svm-train' and `svm-predict' +programs. Run them without arguments to show the usages of them. + +On other systems, consult `Makefile' to build them (e.g., see +'Building Windows binaries' in this file) or use the pre-built +binaries (Windows binaries are in the directory `windows'). + +The format of training and testing data file is: + +