v1.0.3: 回收站功能 - 删除任务进回收站可恢复, 仅可手动彻底删除/清空
This commit is contained in:
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user