feat: release 1.1.0 with responsive task control
This commit is contained in:
1 parent
057f0c3050
commit
bfcd828fa8
37 files changed
+1601
-151
No files matched your search
@@ -164,6 +164,36 @@ class AutomationStore:
|
||||
conn.commit()
|
||||
return batch
|
||||
|
||||
def delete_batch(self, batch_id: str) -> bool:
|
||||
"""Remove a batch record; retain executed job metadata and its reports."""
|
||||
with self.connection() as conn:
|
||||
conn.execute("BEGIN IMMEDIATE")
|
||||
row = conn.execute(
|
||||
"SELECT payload FROM automation_records WHERE kind='batch' AND id=?",
|
||||
(batch_id,),
|
||||
).fetchone()
|
||||
if row is None:
|
||||
return False
|
||||
batch = json.loads(row[0])
|
||||
active = conn.execute(
|
||||
"SELECT 1 FROM automation_jobs WHERE batch_id=? AND status IN "
|
||||
"('queued','running','task_paused','resuming','finalizing') LIMIT 1",
|
||||
(batch_id,),
|
||||
).fetchone()
|
||||
if batch["status"] == "running" or active:
|
||||
raise ValueError("批次仍有任务执行中或排队中,请等待完成后删除")
|
||||
conn.execute(
|
||||
"DELETE FROM automation_jobs WHERE batch_id=? AND status='pending'",
|
||||
(batch_id,),
|
||||
)
|
||||
conn.execute(
|
||||
"DELETE FROM automation_records WHERE kind='batch' AND id=?",
|
||||
(batch_id,),
|
||||
)
|
||||
# Keep the request-id tombstone so deletion cannot replay an old batch.
|
||||
conn.commit()
|
||||
return True
|
||||
|
||||
def delete_history(self, session_id: str | None = None):
|
||||
with self.connection() as conn:
|
||||
if session_id:
|
||||
|
||||
Reference in new issue
Block a user