tingwu_new
All checks were successful
Deploy to Server / deploy (push) Successful in 17s

This commit is contained in:
jeremygan2021
2026-03-11 22:25:58 +08:00
parent cb10c42d11
commit c1fadf1344
2 changed files with 26 additions and 5 deletions

View File

@@ -323,14 +323,30 @@ class AliyunTingwuService:
# 4. 自动触发 AI 评估 (如果任务首次成功且有启用的模板)
if previous_status != 'SUCCEEDED' and task.status == 'SUCCEEDED' and task.transcription:
# 同样改为异步触发
# 同样改为异步触发,传递 task.id 以避免线程中的对象状态问题
import threading
threading.Thread(target=self.trigger_ai_evaluations, args=(task,)).start()
threading.Thread(target=self.trigger_ai_evaluations, args=(task.id,)).start()
def trigger_ai_evaluations(self, task):
def trigger_ai_evaluations(self, task_id):
"""
根据启用的模板自动触发 AI 评估
"""
try:
# 在线程中重新获取 task 对象,并预加载 project避免懒加载导致的线程数据库连接问题
from .models import TranscriptionTask
task = TranscriptionTask.objects.select_related('project').get(id=task_id)
except Exception as e:
# 兼容处理:如果 task_id 其实是 task 对象(虽然我们上面改了,但防止其他地方调用传错)
if hasattr(task_id, 'id'):
try:
from .models import TranscriptionTask
task = TranscriptionTask.objects.select_related('project').get(id=task_id.id)
except:
task = task_id
else:
logger.error(f"Failed to retrieve task {task_id}: {e}")
return
active_templates = AIEvaluationTemplate.objects.filter(is_active=True)
if not active_templates.exists():
logger.info("No active AI evaluation templates found.")
@@ -340,6 +356,11 @@ class AliyunTingwuService:
service = BailianService()
for template in active_templates:
# 检查是否已经存在相同的评估,避免重复创建
if AIEvaluation.objects.filter(task=task, template=template).exists():
logger.info(f"Evaluation for task {task.id} and template {template.name} already exists.")
continue
# 创建评估记录
evaluation = AIEvaluation.objects.create(
task=task,
@@ -349,8 +370,7 @@ class AliyunTingwuService:
status=AIEvaluation.Status.PENDING
)
# 触发评估 (同步执行,或者放入 Celery 任务)
# 这里为了简单直接调用,生产环境建议使用 Celery
# 触发评估
try:
service.evaluate_task(evaluation)
logger.info(f"Triggered evaluation {evaluation.id} for template {template.name}")

View File

@@ -116,6 +116,7 @@ class TranscriptionTaskViewSet(viewsets.ModelViewSet):
pass # Ignore invalid project_id
task_record = TranscriptionTask.objects.create(**task_data)
logger.info(f"Created TranscriptionTask {task_record.id} with project_id={project_id}")
# 3. 调用听悟接口创建任务
try: