Files
wordcloud/CHANGELOG.md
2026-07-04 02:40:45 +08:00

85 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 更新日志
## 2026-06-13 — 从词云生成器升级为完整创作工作流
> 本次更新在原有「词云生成」核心能力之上,**完整新增了「模板中心」与「画布工作室」两大模块**。系统从一个单纯的词云生成工具,升级为支持「选模板 → 生成词云 → 拖拽排版 → 导出成品」的一站式创作平台。
---
## 🆕 新增:模板中心(TemplateHome
- **模板展示页面**:新增独立的模板中心入口,可浏览、筛选、管理设计模板。
- **模板预览弹窗**:点击模板缩略图弹出预览窗口,并支持在弹窗内**切换多张预览图**查看,而非固定单张大图。
- **异步 SVG 预览生成**:模板弹窗中的预览图改为异步生成,避免阻塞主线程,提升打开速度。
- **模板 CRUD 接口**:后端新增 `/api/design-templates` 相关接口,支持模板的上传、更新、删除。
---
## 🆕 新增:画布工作室(CanvasStudio
- **独立画布编辑器**:新增完整的可视化画布页面,支持多图层自由排版。
- **词云作为贴纸导入**:生成的词云可一键作为贴纸插入画布,支持拖拽移动、缩放、旋转。
- **贴纸库面板**:新增贴纸库,可浏览、上传、删除贴纸资源。
- **组内元素联动缩放**:当调整词云大小时,同组内的底图/背景元素会按相同比例同步缩放,保持整体构图一致。
- **SVG 导出自动内联后端资源**:导出成品 SVG 时,自动从后端拉取贴纸、底图等资源并转为 data URL 内嵌,确保导出的文件独立可用、图片不会缺失。
- **图层导出 ZIP**:支持按图层批量导出资源包。
---
## 🆕 新增:后端贴纸库(完全替代 localStorage
- **贴纸文件全部迁移到后端**:原先贴纸存在浏览器 `localStorage`,容易触发 `QuotaExceededError` 并导致贴纸丢失;现在统一通过 `/api/assets` 接口存取,文件保存在服务器。
- **资源类型体系**:后端 `/api/assets` 支持 `wordcloud` / `upload` / `shape` / `sticker` 等类型。
- **元数据 + 文件分离**:贴纸的元数据存在后端 JSON,文件存在后端磁盘,前端仅保存轻量引用。
---
## 🔧 问题修复
| 问题 | 原因 | 修复方案 |
|------|------|----------|
| 词云导入画布时生成两个重复贴纸 | React StrictMode 双重触发 effectpending 状态未提交就被二次消费 | 增加 `importingStickerRef` 引用锁,防止同一词云重复导入 |
| 调整词云大小时底图不同步缩放 | resize handler 只更新被拖拽的元素 | 记录 `groupId` 与组内元素初始尺寸,按比例同步缩放同组伙伴 |
| 导出的 SVG 图片错误/缺失 | `serializeDocument` 把后端 URL 当作 SVG 文本处理 | 将 `serializeDocument` 改为异步,fetch 后端资源并内联为 data URL |
| 贴纸/词云上传报 413 | Nginx 默认 `client_max_body_size` 仅 1MB | 前端 Nginx 配置 `client_max_body_size 100M` |
| 生成任务进度连接超时断开 | Nginx 默认 60 秒 read timeout | Nginx 配置 `proxy_read_timeout` / `proxy_send_timeout` 3600 秒,关闭 buffering |
| Docker 部署后词云任务失败 | release 包漏掉 `wordcloud_generate_hybrid.py` | 补回脚本并在 `backend/Dockerfile` 中显式复制 |
---
## 🐳 新增:Docker Compose 一键部署
- **新增 `docker-compose.yml`**:编排 frontend + backend 服务,含健康检查与 5 个持久化卷。
- **新增 `frontend/Dockerfile`**Node 多阶段构建 → Nginx 静态服务。
- **新增 `backend/Dockerfile`**Python 3.10 + 编译 `EfficientWordCloud` C++ 扩展,healthcheck 已安装 `curl`
- **新增 `frontend/nginx.conf`**:静态资源服务、`/api` 反向代理、SSE 长连接优化、大文件上传支持。
- **新增 `frontend/.dockerignore``backend/.dockerignore`**:避免构建时带入 `node_modules``.venv``__pycache__` 等。
### 便捷命令
- **新增 `Makefile`**
- `make build` / `make up` / `make down`
- `make logs` / `make logs-backend` / `make logs-frontend`
- `make restart` / `make clean` / `make shell-backend`
### 部署文档
- **新增 `DOCKER.md`**:环境要求、快速开始、数据持久化说明、端口配置、常见问题排查。
### Release 包
- **新增 `release/` 目录与 `release.tar.gz`**:仅包含源代码 + Docker 部署所需文件(已排除 `node_modules``.venv`、编译产物、测试输出等)。
- 包大小约 28 MB(主要为 `backend/assets/fonts/STHeiti Medium.ttc` 字体文件)。
---
## 📦 依赖
- 后端 `requirements.txt` 新增 `fastapi>=0.136.0``uvicorn[standard]>=0.32.0``python-multipart>=0.0.27``pydantic>=2.10.0``pillow>=10.0.0``numpy>=2.0.0``matplotlib>=3.10.0``pandas>=2.0.0``openpyxl>=3.1.0`
- 前端保持 React 18 + Vite 5 技术栈,新增 `xlsx` 用于 Excel 解析。
---
## 📝 其他说明
- **数据持久化**Docker Compose 使用 5 个命名卷保存任务工作区、贴纸资源、项目文件、设计模板、上传字体,容器重建不会丢失用户数据。
- **API 调用**:前端统一使用相对路径 `/api/*`,本地开发由 Vite 代理到 `localhost:8000`,生产环境由 Nginx 代理到后端容器。
- **原有词云生成功能保留**`TestWorkbench` 作为原始生成工作台继续可用,新增强的模板中心与画布工作室与其并行。