feat: 添加新的模型,删除后端数据库
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# 移除数据库,纯内存任务表 + 串行生成队列(无恢复功能,无鉴权)
|
||||
|
||||
确认结论:不做"恢复进行中任务"则数据库无不可替代用途 —— 轮询用进程内任务表,历史记录功能不存在,重启时任务本来就会死(数据库只是把提示从"任务中断"换成"生成失败")。多用户并发使用单后端实例不受影响。
|
||||
|
||||
## A. 新增 `server/services/tasks.py` — 内存任务注册表
|
||||
|
||||
- `@dataclass TaskImage`(type_id/name/status/url/error)
|
||||
- `@dataclass Task`:id、status(pending|running|done|partial|failed)、platform/lang/ratio、style_set、style_prompt、requirements、provider、model、total、images、error,以及执行参数 context/plan/ref_images
|
||||
- 模块级 `_TASKS: dict[str, Task]`;asyncio 单事件循环内读写,无并发问题
|
||||
- `total` 语义保持:计划总张数;`images` 逐张追加(前端进度 x/y 依赖)
|
||||
|
||||
## B. 改造 `server/services/generator.py`
|
||||
|
||||
- `run_suite(task: Task)` 接收内存任务,不再查库;每张生成后 `task.images.append(...)`;`storage.write_bytes`(文件系统)不动
|
||||
- **串行生成队列**:模块级 `asyncio.Lock`,拿锁后才置 running;多用户同时提交时后续任务保持 pending(前端已显示"排队中"),避免共享 API key 触发 rightapi 同 key 分钟级冷却
|
||||
- 删除:商品路径分支(product 加载、`_select_ref_images`)、SuiteImage/Suite 读写、`fail_stale_suites`(重启后内存为空,轮询自然 404,前端已有"任务已中断"提示)
|
||||
|
||||
## C. 改造 `server/api/generate.py`
|
||||
|
||||
- `POST /api/generate`:原 Suite 构建逻辑(texts_to_raw、plan 展开、ref_images 排序、模型路由校验)平移到 Task 对象,存入 `_TASKS`,`background.add_task(run_suite, task)`
|
||||
- `POST /api/plan` 不动(本就不碰数据库)
|
||||
|
||||
## D. 改造 `server/api/suites.py`
|
||||
|
||||
- 保留 `GET /api/suites/{id}`(读内存,不存在 404「任务不存在(服务可能已重启)」)、`GET /api/suites/{id}/zip`(从 Task.images 打包成功图)
|
||||
- 删除两个商品挂载端点
|
||||
|
||||
## E. 删除文件与依赖
|
||||
|
||||
- 删除:`server/db.py`、`server/models.py`(4 张表)、`server/api/collection.py`、`server/api/products.py`
|
||||
- `server/main.py`:去掉 lifespan/init_db/fail_stale_suites 与对应路由
|
||||
- `server/schemas.py`:删除商品路径与 materials 类型(SuiteCreateRequest、MaterialsRequest/Response、ProductOut/AssetOut/ProductListOut);保留 TextMaterial、GenerateRequest、SuiteOut 契约(前端零改动)
|
||||
- `server/requirements.txt`:删 `sqlalchemy[asyncio]`、`aiosqlite`
|
||||
- 前端 `client.ts`:删除 materials 死代码(buildMaterialsPayload/uploadMaterials 及类型)
|
||||
|
||||
## F. README
|
||||
|
||||
架构说明更新:进程内任务表、重启即新会话(进行中任务中断,前端有提示)、数据目录只剩 media/;标注接口暂无鉴权,公网暴露前需内网/反代白名单,登录鉴权后续版本补充;将来若需恢复任务/历史记录/多实例,再引入数据库(任务表结构简单,迁移成本低)
|
||||
|
||||
## 不改的部分
|
||||
|
||||
- 前端交互/UI、生图 provider、prompt 逻辑、`data/media/` 图片文件
|
||||
- `data/app.db` 数据文件保留(不再被使用,可自行删除)
|
||||
|
||||
## 验证
|
||||
|
||||
1. `py_compile` 后端改动文件;`tsc --noEmit` + 前端 build
|
||||
2. 零成本链路测试(count=0 的 plan,不实际生图):提交 → 轮询 done/0 张 → 不存在的 id 返回 404
|
||||
3. `start.command` 重启,health 正常
|
||||
Reference in New Issue
Block a user