feat: complete T-534 generated reset enhancements

This commit is contained in:
chengma
2026-07-06 20:35:47 +08:00
parent 46995b301d
commit 71f8beae57
9 changed files with 488 additions and 63 deletions
+24 -9
View File
@@ -743,32 +743,45 @@ def set_applied(task_id, committed, error=None, path=None, conn=None) -> None:
)
def reset_generated(task_id, delete_file=False, path=None, conn=None) -> dict:
"""Clear local AI result and move the task back to collected state."""
def reset_generated(
task_id,
reset_title=True,
reset_cover=True,
delete_file=False,
path=None,
conn=None,
) -> dict:
"""Clear selected local AI result components and keep the task generatable."""
if not reset_title and not reset_cover:
raise DbError("至少需要选择重置标题或重置封面")
if delete_file and not reset_cover:
raise DbError("只有重置封面时才允许删除本地新封面文件")
with _connection(conn, path) as database:
before = get_task(task_id, conn=database)
if before is None:
raise DbError(f"任务不存在: {task_id}")
new_cover_path = before.new_cover_path
deleted_file = None
if delete_file:
raise DbError("重置生成结果默认不删除本地新封面文件,请手动确认后清理")
if delete_file and reset_cover and new_cover_path and os.path.isfile(str(new_cover_path)):
os.remove(str(new_cover_path))
deleted_file = new_cover_path
now = _now()
new_title = None if reset_title else before.new_title
new_cover = None if reset_cover else before.new_cover_path
with database:
database.execute(
"""
UPDATE tasks
SET new_title = NULL,
new_cover_path = NULL,
stage = 'collected',
SET new_title = ?,
new_cover_path = ?,
stage = 'generated',
status = 'success',
last_error = NULL,
generated_at = NULL,
updated_at = ?
WHERE id = ?
""",
(now, int(task_id)),
(new_title, new_cover, now, int(task_id)),
)
after = get_task(task_id, conn=database)
return {
@@ -777,6 +790,8 @@ def reset_generated(task_id, delete_file=False, path=None, conn=None) -> dict:
"after": after,
"new_cover_path": new_cover_path,
"deleted_file": deleted_file,
"reset_title": bool(reset_title),
"reset_cover": bool(reset_cover),
}