diff --git a/core/task_manager.py b/core/task_manager.py index 45c81c2..7113984 100644 --- a/core/task_manager.py +++ b/core/task_manager.py @@ -484,17 +484,20 @@ class TaskManager: return n def delete_group(self, name): + removed = False if name in self.groups: del self.groups[name] self._save_groups() - # 同上:显式删数据库行,避免删除的分组重启后复活 - with self._db(): - row = GroupRow.query.filter_by(name=name).first() - if row: - db.session.delete(row) - db.session.commit() - return True - return False + removed = True + # 无论内存里有没有都尝试删库行:内存与库不一致时(手工插行、上次异常退出、 + # 上个版本漏删)也能删干净,避免"删不掉的分组" + with self._db(): + row = GroupRow.query.filter_by(name=name).first() + if row: + db.session.delete(row) + db.session.commit() + removed = True + return removed # ---- 任务计划管理 ---- def add_job(self, name, task_type, target, params, schedule, retry, enabled=True): @@ -524,18 +527,20 @@ class TaskManager: def delete_job(self, job_id): self._remove_cron(job_id) + removed = False if job_id in self.jobs: del self.jobs[job_id] self._save_jobs() - # _save_jobs 只做 upsert 不会删行:必须显式删数据库行, - # 否则删除的任务重启后会从数据库重新加载回来 - with self._db(): - row = JobRow.query.get(job_id) - if row: - db.session.delete(row) - db.session.commit() - return True - return False + removed = True + # _save_jobs 只做 upsert 不会删行:必须显式删库行,否则删除的任务重启会复活。 + # 内存里没有(手工插行/上次异常退出)时也要删——否则会出现"删不掉的任务" + with self._db(): + row = JobRow.query.get(job_id) + if row: + db.session.delete(row) + db.session.commit() + removed = True + return removed def toggle_job(self, job_id, enabled): job = self.jobs.get(job_id) diff --git a/static/admin/tools.js b/static/admin/tools.js index 0076d9c..f1adb81 100644 --- a/static/admin/tools.js +++ b/static/admin/tools.js @@ -109,7 +109,7 @@ function loadDiscovery(){ +'