pipeline-task/wwwroot/api/my_bugs.dspy

57 lines
2.1 KiB
Plaintext

user_id = await get_user()
if not user_id:
return json.dumps([], ensure_ascii=False)
try:
async with get_sor_context(request._run_ns, "pipeline") as sor:
sql = """
SELECT b.id, b.title, b.severity, b.priority, b.status,
b.reporter_type, b.step_name, b.created_at,
i.iteration_name
FROM sd_bugs b
LEFT JOIN sd_iterations i ON b.iteration_id = i.id
WHERE b.reporter_id = ${uid}$ OR b.assignee_id = ${uid}$
ORDER BY
CASE b.status
WHEN 'open' THEN 1
WHEN 'confirmed' THEN 2
WHEN 'in_progress' THEN 3
WHEN 'resolved' THEN 4
WHEN 'closed' THEN 5
ELSE 6
END,
b.created_at DESC
LIMIT 100
"""
recs = await sor.sqlExe(sql, {"uid": user_id})
rows = []
status_labels = {
"open": "待处理",
"confirmed": "已确认",
"in_progress": "处理中",
"resolved": "已解决",
"closed": "已关闭",
}
severity_labels = {
"critical": "致命",
"major": "严重",
"minor": "一般",
"trivial": "轻微",
}
for r in recs:
rows.append({
"id": r.id,
"title": r.title or "",
"severity": severity_labels.get(r.severity, r.severity or ""),
"priority": r.priority or "",
"status": status_labels.get(r.status, r.status or ""),
"status_raw": r.status or "",
"reporter_type": "agent" if r.reporter_type == "agent" else "human",
"step_name": r.step_name or "",
"iteration_name": r.iteration_name or "",
"created_at": str(r.created_at)[:16] if r.created_at else "",
})
return json.dumps(rows, ensure_ascii=False)
except Exception as e:
return json.dumps([], ensure_ascii=False)