mirror of
https://github.com/zhouxiaoka/autoclip.git
synced 2026-05-06 14:04:32 +08:00
修复项目删除失败问题
- 改进项目删除逻辑,允许删除已完成项目的所有任务 - 对于已完成或失败的项目,即使有标记为运行中的任务也允许删除 - 解决数据不一致导致的删除失败问题 - 保持对正在处理项目的保护机制
This commit is contained in:
@@ -233,15 +233,25 @@ class ProjectService(BaseService[Project, ProjectCreate, ProjectUpdate, ProjectR
|
||||
|
||||
logger.info(f"开始删除项目 {project_id}: {project.name}")
|
||||
|
||||
# 检查是否有正在运行的任务
|
||||
running_tasks = self.db.query(Task).filter(
|
||||
Task.project_id == project_id,
|
||||
Task.status == TaskStatus.RUNNING
|
||||
).count()
|
||||
|
||||
if running_tasks > 0:
|
||||
logger.warning(f"项目 {project_id} 有 {running_tasks} 个正在运行的任务,无法删除")
|
||||
return False
|
||||
# 检查是否有正在运行的任务(只对非完成状态的项目进行检查)
|
||||
if project.status not in ["completed", "failed"]:
|
||||
running_tasks = self.db.query(Task).filter(
|
||||
Task.project_id == project_id,
|
||||
Task.status == TaskStatus.RUNNING
|
||||
).count()
|
||||
|
||||
if running_tasks > 0:
|
||||
logger.warning(f"项目 {project_id} 有 {running_tasks} 个正在运行的任务,无法删除")
|
||||
return False
|
||||
else:
|
||||
# 对于已完成或失败的项目,记录任务状态但不阻止删除
|
||||
running_tasks = self.db.query(Task).filter(
|
||||
Task.project_id == project_id,
|
||||
Task.status == TaskStatus.RUNNING
|
||||
).count()
|
||||
|
||||
if running_tasks > 0:
|
||||
logger.info(f"项目 {project_id} 已完成,但仍有 {running_tasks} 个标记为运行中的任务,将一并删除")
|
||||
|
||||
# 开始事务(如果还没有开始的话)
|
||||
if not self.db.in_transaction():
|
||||
|
||||
Reference in New Issue
Block a user