feat(product-suite): add global generation history
This commit is contained in:
+10
-1
@@ -368,6 +368,7 @@ render_prompt(template_text, task) -> str
|
||||
```python
|
||||
# app/image_studio.py
|
||||
ImageStudioProject / ImageStudioAsset / ImageStudioJob / ImageStudioSelection
|
||||
ImageStudioGenerationRound / ImageStudioHistoryRound
|
||||
create_or_get_project(account_or_fields, item_id, ...) -> ImageStudioProject
|
||||
list_projects(path=None) -> list[ImageStudioProject]
|
||||
update_project_prompt(project_id, draft_prompt, path=None) -> ImageStudioProject
|
||||
@@ -380,6 +381,11 @@ remove_original_assets_if_unused(project_id, asset_ids, path=None) -> list[Image
|
||||
create_job(project_id, source_asset_id=None, job_type="main", prompt="", ...) -> ImageStudioJob
|
||||
list_jobs(project_id, statuses=None, path=None) -> list[ImageStudioJob]
|
||||
list_resumable_jobs(project_id=None, include_failed_downloads=False, path=None) -> list[ImageStudioJob]
|
||||
list_generation_rounds(project_id, limit=None, offset=0, path=None) -> list[ImageStudioGenerationRound]
|
||||
list_global_generation_rounds(account_query="", item_query="", project_id=None,
|
||||
limit=None, offset=0, path=None) -> list[ImageStudioHistoryRound]
|
||||
list_generation_round_current_jobs(project_id, generation_round_key, path=None) -> list[ImageStudioJob]
|
||||
list_generation_round_attempts(project_id, generation_round_key, path=None) -> list[ImageStudioJob]
|
||||
replace_selections(project_id, selection_type, asset_ids, path=None) -> list[ImageStudioSelection]
|
||||
pull_remote_main_image_urls(account_or_alias, item_id, path=None, config=None,
|
||||
should_stop=None) -> dict
|
||||
@@ -406,6 +412,8 @@ resume_image_jobs(project_id=None, aspect_ratio="1:1", ...) -> dict
|
||||
|
||||
# app/image_studio_export.py
|
||||
export_project_selection(project_id, parent_dir, existing_mode="fail", path=None, config=None) -> ExportResult
|
||||
export_generation_round(project_id, generation_round_key, parent_dir, path=None,
|
||||
should_stop=None) -> GenerationRoundExportResult
|
||||
```
|
||||
|
||||
要点:
|
||||
@@ -413,7 +421,7 @@ export_project_selection(project_id, parent_dir, existing_mode="fail", path=None
|
||||
- 项目唯一键为账号别名 + 商品 ID;图片文件默认在 `data/images/pool/<slug>/<item_id>/` 下分 `originals/generated/exports`,删除生成图进入项目内 `.trash` 并可撤销。
|
||||
- `image_studio_projects.suite_settings_json` 保存平台/国家/语言/比例/逐图主图/分类数量;`draft_prompt` 保存商品卖点。有效原图上限16张,missing 历史不占名额。
|
||||
- T-643 后 `image_studio_projects.current_generation_round_key` 记录项目主界面的当前生成轮次;`image_studio_jobs.generation_round_key` 与 `generation_slot_index` 记录整轮归属和稳定展示槽位。`promote_generation_round_if_success()` 只会在同项目、同轮已存在成功 job 时原子切换当前轮;`list_generation_rounds()` 返回轮次摘要,`list_generation_round_current_jobs()` 返回每个槽位最新尝试,`list_generation_round_attempts()` 返回完整尝试历史。旧 job 保持 NULL 并按“旧版历史记录”兼容,不猜测轮次边界。
|
||||
- T-644 后 `ProductSuiteHistoryDialog(project_id, db_path=...)` 只组合上述三类查询,且仅访问传入项目 ID;默认读取最近20轮,可继续加载更早轮次。每轮卡片只展示该槽位最新 job,重试次数由完整尝试历史计算;成功但本地资产缺失时保留状态和占位。该对话框没有写数据库、删除文件、触发 worker 或修改当前轮次的接口,右键操作仅预览、复制本地路径和打开所在文件夹。
|
||||
- T-646 后 `list_global_generation_rounds()` 是⑥跨项目历史的唯一查询入口:仅返回未软删除项目的轮次摘要,按创建时间倒序并支持账号/店铺、商品 ID、项目 ID、`limit`/`offset` 筛选;正常轮次只统计每个稳定槽位的最新有效 job,完整尝试数仅用于计算重试数,NULL 轮次保留“旧版历史记录”语义。`ProductSuiteGlobalHistoryDialog` 组合该查询和 `list_generation_round_current_jobs()`,默认读取30轮,显示受限缩略图并可按轮预览;窗口不写业务数据,也不改变当前轮次。`ProductSuiteHistoryExportWorker` 在后台调用 `export_generation_round()`,只复制该轮成功且存在的输出 asset 到用户选择目录中新建的安全子目录;同名目录追加稳定序号,不覆盖外部文件,部分文件失败只汇总中文结果,源 asset 保持不变。
|
||||
- 拉取蝦皮原主图只读:复用 `editor.open_product(..., bring_to_front=False)` 和 `editor.read_product_image_urls()`,不上传、不拖拽、不点击更新。
|
||||
- 原图下载走 `image_studio_images` 的公网 URL、大小、Content-Type、重定向和 PIL 解码校验;只在用户单击时落盘。
|
||||
- `remove_original_assets_if_unused()` 会先校验整批原图的项目归属、资产类型及 job/终选引用,再在单个事务中删除资产行并连续重排 `source_order`;任一图片不可删除时整批不变,本地源文件和蝦皮线上图片始终保留。
|
||||
@@ -448,6 +456,7 @@ class ImageStudioExportWorker(BaseWorker) # ⑥ 后台导出终选 JPEG
|
||||
class ProductSuiteImportImagesWorker(BaseWorker) # ⑥ 后台校验并复制本地/剪贴板商品原图
|
||||
class ProductSuiteGenerateWorker(BaseWorker) # ⑥ 按套图job规划提交/查询/下载
|
||||
class ProductSuiteAiWriteWorker(BaseWorker) # ⑥ 后台用本地原图调用图片理解,生成商品卖点与画面要求
|
||||
class ProductSuiteHistoryExportWorker(BaseWorker) # ⑥ 后台复制一轮历史成功生成图
|
||||
class TaskTableModel(QAbstractTableModel) # 任务表格模型:账号/别名/商品ID/阶段;未匹配别名显示“略过”
|
||||
class GenerateTaskTableModel(QAbstractTableModel) # ② 任务表格模型:店铺/商品ID/旧标题/新标题/状态;generated/未提交/非运行中新标题可本地编辑
|
||||
class ApplyTaskTableModel(QAbstractTableModel) # ③ 任务表格模型:店铺/商品ID/新标题/新封面/阶段/结果;保持只读,重置更新状态走右键菜单
|
||||
|
||||
Reference in New Issue
Block a user