fix: scope transactional locks to primary records

This commit is contained in:
hailin
2026-07-27 20:31:35 +08:00
parent 6a4239e7bb
commit 8296f3c96f
6 changed files with 21 additions and 13 deletions

View File

@@ -508,7 +508,7 @@ def process_support_analysis_result(run: AgentRun) -> TicketSupportAnalysis | No
if run.definition.code != SUPPORT_AGENT_CODE or run.status != "succeeded":
return None
analysis = (
TicketSupportAnalysis.objects.select_for_update()
TicketSupportAnalysis.objects.select_for_update(of=("self",))
.select_related(
"ticket__category",
"ticket__resolution",
@@ -583,7 +583,11 @@ def process_support_analysis_result(run: AgentRun) -> TicketSupportAnalysis | No
def start_ticket_support_analysis(ticket: Ticket, *, created_by=None) -> TicketSupportAnalysis:
"""为工单创建唯一活动分析并投递绑定正式 Agent 版本的运行。"""
ticket = Ticket.objects.select_for_update().select_related("category").get(id=ticket.id)
ticket = (
Ticket.objects.select_for_update(of=("self",))
.select_related("category")
.get(id=ticket.id)
)
if ticket.archived_at is not None:
raise SupportAnalysisError("已归档工单不能启动支持分析")
if ticket.status in {"resolved", "closed"}: