style: 统一处理历史状态展示口径
This commit is contained in:
@@ -99,3 +99,11 @@ class NotificationRecord(models.Model):
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"{self.notify_reason}:{self.batch_id}"
|
||||
|
||||
def get_message_status_display_text(self) -> str:
|
||||
"""返回通知状态的中文展示文案。"""
|
||||
return {
|
||||
self.STATUS_PENDING: "处理中",
|
||||
self.STATUS_SENT: "已发送",
|
||||
self.STATUS_FAILED: "失败",
|
||||
}.get(self.message_status, self.message_status)
|
||||
|
||||
@@ -7,6 +7,36 @@ from .models import AgentAuditLog, NotificationRecord
|
||||
|
||||
SUPPORTED_NOTIFY_REASONS = {"task_completed", "task_failed"}
|
||||
|
||||
RISK_STATUS_DISPLAY = {
|
||||
"high": "已阻断",
|
||||
"medium": "待复核",
|
||||
"low": "已完成",
|
||||
"failed": "失败",
|
||||
"processing": "处理中",
|
||||
"pending": "处理中",
|
||||
}
|
||||
|
||||
EXPORT_STATUS_DISPLAY = {
|
||||
"completed": "已完成",
|
||||
"draft_only": "待复核",
|
||||
"review_required": "待复核",
|
||||
"manual_review": "待复核",
|
||||
"blocked": "已阻断",
|
||||
"failed": "失败",
|
||||
"processing": "处理中",
|
||||
"pending": "处理中",
|
||||
}
|
||||
|
||||
CONVERSATION_STATUS_DISPLAY = {
|
||||
"success": "已完成",
|
||||
"completed": "已完成",
|
||||
"review_required": "待复核",
|
||||
"blocked": "已阻断",
|
||||
"failed": "失败",
|
||||
"processing": "处理中",
|
||||
"pending": "处理中",
|
||||
}
|
||||
|
||||
|
||||
def create_audit_log(
|
||||
scenario_id: str,
|
||||
@@ -138,11 +168,15 @@ def build_history_rows(logs) -> list[dict]:
|
||||
"conversation": conversation,
|
||||
"batch_scale": f"{batch.file_count} 份 / {batch.page_count} 页" if batch else "-",
|
||||
"batch_status": batch.get_import_status_display_text() if batch else "-",
|
||||
"conversation_status": conversation.task_status if conversation else "-",
|
||||
"risk_status": structured_output.get("highest_risk_level")
|
||||
or structured_output.get("risk_level")
|
||||
or "-",
|
||||
"notify_status": notification.message_status if notification else "-",
|
||||
"conversation_status": _get_conversation_status_display_text(
|
||||
conversation.task_status if conversation else "-"
|
||||
),
|
||||
"risk_status": _get_risk_status_display_text(
|
||||
structured_output.get("highest_risk_level")
|
||||
or structured_output.get("risk_level")
|
||||
or "-"
|
||||
),
|
||||
"notify_status": notification.get_message_status_display_text() if notification else "-",
|
||||
"notify_reason": notification.notify_reason if notification else "-",
|
||||
}
|
||||
)
|
||||
@@ -161,13 +195,13 @@ def build_history_metrics(history_rows: list[dict]) -> list[dict]:
|
||||
"""
|
||||
total_count = len(history_rows)
|
||||
success_count = sum(1 for row in history_rows if row["log"].status == "success")
|
||||
notify_sent_count = sum(1 for row in history_rows if row.get("notify_status") == "sent")
|
||||
blocked_count = sum(1 for row in history_rows if row.get("risk_status") == "high")
|
||||
notify_sent_count = sum(1 for row in history_rows if row.get("notify_status") == "已发送")
|
||||
blocked_count = sum(1 for row in history_rows if row.get("risk_status") == "已阻断")
|
||||
return [
|
||||
{"label": "处理任务数", "value": total_count, "note": "按当前筛选条件回看执行留痕。"},
|
||||
{"label": "成功执行", "value": success_count, "note": "执行完成并写入审计快照。"},
|
||||
{"label": "通知已发送", "value": notify_sent_count, "note": "已生成 sent 状态的通知留痕。"},
|
||||
{"label": "高风险阻断", "value": blocked_count, "note": "风险等级为 high 的处理记录。"},
|
||||
{"label": "通知已发送", "value": notify_sent_count, "note": "已生成已发送状态的通知留痕。"},
|
||||
{"label": "高风险阻断", "value": blocked_count, "note": "当前风险状态为已阻断的处理记录。"},
|
||||
]
|
||||
|
||||
|
||||
@@ -187,15 +221,33 @@ def build_detail_summary(log: AgentAuditLog, conversation, notifications) -> dic
|
||||
)
|
||||
latest_notification = notifications.first() if hasattr(notifications, "first") else None
|
||||
return {
|
||||
"export_status": structured_output.get("export_status") or (export_node or {}).get("status", "-"),
|
||||
"export_status": _get_export_status_display_text(
|
||||
structured_output.get("export_status") or (export_node or {}).get("status", "-")
|
||||
),
|
||||
"download_url": structured_output.get("download_url", ""),
|
||||
"output_file_name": output_file.get("file_name", ""),
|
||||
"output_file_relative_path": output_file.get("relative_path", ""),
|
||||
"export_mode": output_file.get("export_mode", ""),
|
||||
"template_name": structured_output.get("template_name", ""),
|
||||
"template_version": structured_output.get("template_version", ""),
|
||||
"draft_export_status": structured_output.get("draft_export_status", ""),
|
||||
"formal_export_status": structured_output.get("formal_export_status", ""),
|
||||
"draft_export_status": _get_export_status_display_text(
|
||||
structured_output.get("draft_export_status", "")
|
||||
),
|
||||
"formal_export_status": _get_export_status_display_text(
|
||||
structured_output.get("formal_export_status", "")
|
||||
),
|
||||
"blocked_items": structured_output.get("blocked_items") or [],
|
||||
"notification_receipt": latest_notification.receipt if latest_notification else {},
|
||||
}
|
||||
|
||||
|
||||
def _get_risk_status_display_text(status: str) -> str:
|
||||
return RISK_STATUS_DISPLAY.get(status, status or "-")
|
||||
|
||||
|
||||
def _get_export_status_display_text(status: str) -> str:
|
||||
return EXPORT_STATUS_DISPLAY.get(status, status or "-")
|
||||
|
||||
|
||||
def _get_conversation_status_display_text(status: str) -> str:
|
||||
return CONVERSATION_STATUS_DISPLAY.get(status, status or "-")
|
||||
|
||||
Reference in New Issue
Block a user