52 lines
2.0 KiB
Plaintext
52 lines
2.0 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)
|