auto-sync: 2026-05-18 23:24:52
This commit is contained in:
@@ -616,3 +616,69 @@ class Blackboard:
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
# ===================================================================
|
||||
# Archive (v2.8)
|
||||
# ===================================================================
|
||||
|
||||
def archive_task(self, task_id: str) -> bool:
|
||||
"""归档单个任务"""
|
||||
conn = self._conn()
|
||||
try:
|
||||
conn.execute("BEGIN IMMEDIATE")
|
||||
conn.execute(
|
||||
"UPDATE tasks SET archived=1, archived_at=datetime('now'), "
|
||||
"updated_at=datetime('now') WHERE id=?",
|
||||
(task_id,),
|
||||
)
|
||||
conn.execute(
|
||||
"INSERT INTO events (task_id, agent, event_type, detail) VALUES (?,?,?,?)",
|
||||
(task_id, "daemon", "task_archived",
|
||||
json.dumps({"action": "archive"})),
|
||||
)
|
||||
conn.commit()
|
||||
return True
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
def unarchive_task(self, task_id: str) -> bool:
|
||||
"""取消归档"""
|
||||
conn = self._conn()
|
||||
try:
|
||||
conn.execute("BEGIN IMMEDIATE")
|
||||
conn.execute(
|
||||
"UPDATE tasks SET archived=0, archived_at=NULL, "
|
||||
"updated_at=datetime('now') WHERE id=?",
|
||||
(task_id,),
|
||||
)
|
||||
conn.execute(
|
||||
"INSERT INTO events (task_id, agent, event_type, detail) VALUES (?,?,?,?)",
|
||||
(task_id, "daemon", "task_unarchived",
|
||||
json.dumps({"action": "unarchive"})),
|
||||
)
|
||||
conn.commit()
|
||||
return True
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
def archive_done_tasks(self) -> int:
|
||||
"""一键归档所有 done 状态的任务"""
|
||||
conn = self._conn()
|
||||
try:
|
||||
conn.execute("BEGIN IMMEDIATE")
|
||||
cursor = conn.execute(
|
||||
"UPDATE tasks SET archived=1, archived_at=datetime('now'), "
|
||||
"updated_at=datetime('now') "
|
||||
"WHERE status='done' AND archived=0"
|
||||
)
|
||||
count = cursor.rowcount
|
||||
if count > 0:
|
||||
conn.execute(
|
||||
"INSERT INTO events (task_id, agent, event_type, detail) VALUES (?,?,?,?)",
|
||||
(None, "daemon", "task_archived",
|
||||
json.dumps({"action": "archive_done_batch", "count": count})),
|
||||
)
|
||||
conn.commit()
|
||||
return count
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user