v1.0.3: 回收站功能 - 删除任务进回收站可恢复, 仅可手动彻底删除/清空

This commit is contained in:
2026-08-11 13:25:28 +08:00
parent 1de2a0af54
commit e70a3a877f
6 changed files with 236 additions and 8 deletions
+64
View File
@@ -67,6 +67,7 @@ def upsert_task(task):
def delete_task(task_id):
"""彻底删除任务 (任务 + 运行记录)"""
with _lock:
tasks = _load(TASKS_FILE, [])
tasks = [t for t in tasks if t["id"] != task_id]
@@ -76,6 +77,69 @@ def delete_task(task_id):
_save(RUNS_FILE, runs)
# ---------------- 回收站 ----------------
def soft_delete_task(task_id, ts):
"""删除任务 -> 移入回收站 (软删除, 记录保留可恢复)"""
with _lock:
tasks = _load(TASKS_FILE, [])
for t in tasks:
if t["id"] == task_id:
t["deleted_at"] = ts
break
_save(TASKS_FILE, tasks)
def restore_task(task_id):
"""从回收站恢复任务"""
with _lock:
tasks = _load(TASKS_FILE, [])
for t in tasks:
if t["id"] == task_id:
t.pop("deleted_at", None)
break
_save(TASKS_FILE, tasks)
def list_trash():
"""回收站任务列表 (按删除时间倒序)"""
with _lock:
tasks = _load(TASKS_FILE, [])
return sorted(
[t for t in tasks if t.get("deleted_at")],
key=lambda x: x.get("deleted_at", ""), reverse=True,
)
def purge_task(task_id):
"""从回收站彻底删除单个任务 (任务 + 运行记录)"""
with _lock:
tasks = _load(TASKS_FILE, [])
tasks = [t for t in tasks if t["id"] != task_id]
_save(TASKS_FILE, tasks)
runs = _load(RUNS_FILE, {})
runs.pop(task_id, None)
_save(RUNS_FILE, runs)
def purge_trash():
"""清空回收站, 返回被清空的任务 id 列表"""
with _lock:
tasks = _load(TASKS_FILE, [])
kept, purged = [], []
for t in tasks:
if t.get("deleted_at"):
purged.append(t["id"])
else:
kept.append(t)
_save(TASKS_FILE, kept)
runs = _load(RUNS_FILE, {})
for tid in purged:
runs.pop(tid, None)
_save(RUNS_FILE, runs)
return purged
# ---------------- 运行记录 ----------------
def load_runs_map():