From 87f674ceceb4fda005ef1bcb3e9cbaa5061daa96 Mon Sep 17 00:00:00 2001 From: bruce Date: Thu, 4 Jun 2026 04:00:44 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E7=BB=9F=E4=B8=80=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=99=BA=E8=83=BD=E4=BD=93=E7=8A=B6=E6=80=81=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=8F=A3=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/chat/models.py | 12 ++++++++ apps/chat/views.py | 64 ++++++++++++++++++++++++++++++++++----- templates/chat/index.html | 2 +- tests/test_chat.py | 10 +++--- 4 files changed, 76 insertions(+), 12 deletions(-) diff --git a/apps/chat/models.py b/apps/chat/models.py index 590a43d..41589fc 100644 --- a/apps/chat/models.py +++ b/apps/chat/models.py @@ -32,3 +32,15 @@ class Conversation(models.Model): def __str__(self) -> str: return self.title + + def get_task_status_display_text(self) -> str: + """返回会话阶段的中文展示文案。""" + return { + self.STATUS_PENDING: "处理中", + self.STATUS_PROCESSING: "处理中", + self.STATUS_COMPLETED: "已完成", + self.STATUS_REVIEW_REQUIRED: "待复核", + self.STATUS_BLOCKED: "已阻断", + self.STATUS_FAILED: "失败", + "success": "已完成", + }.get(self.task_status, self.task_status) diff --git a/apps/chat/views.py b/apps/chat/views.py index 3e19333..91d707e 100644 --- a/apps/chat/views.py +++ b/apps/chat/views.py @@ -15,6 +15,38 @@ from .export_service import generate_registration_export, update_conversation_wi from .forms import ChatForm, ConversationUploadForm from .models import Conversation +RISK_LEVEL_DISPLAY = { + "high": "高", + "medium": "中", + "low": "低", +} + +PASS_STATUS_DISPLAY = { + "blocked": "已阻断", + "failed": "失败", + "review_required": "待复核", + "manual_review": "待复核", + "completed": "已完成", + "passed": "已完成", +} + +EXPORT_STATUS_DISPLAY = { + "completed": "已完成", + "draft_only": "待复核", + "review_required": "待复核", + "manual_review": "待复核", + "blocked": "已阻断", + "failed": "失败", + "processing": "处理中", + "pending": "处理中", +} + +NOTIFY_MESSAGE_STATUS_DISPLAY = { + "sent": "已发送", + "failed": "失败", + "pending": "处理中", +} + def index(request): conversations = Conversation.objects.all() @@ -264,7 +296,7 @@ def _build_conversation_context( "batch_id": conversation.batch_id, "product_name": conversation.product_name, "workflow_type": batch.workflow_type if batch else "registration", - "task_status": conversation.task_status, + "task_status": conversation.get_task_status_display_text(), "highest_risk_level": workspace_summary.get("highest_risk_level", "-"), "export_allowed": workspace_summary.get("export_allowed", "-"), } @@ -327,7 +359,7 @@ def _build_analysis_card(result: AgentResult | None, conversation: Conversation) "kind": "completeness", "title": "完整性检查能力卡", "summary": structured_output.get("summary", ""), - "stats": [{"label": "风险等级", "value": structured_output.get("risk_level", "-")}], + "stats": [{"label": "风险等级", "value": _get_risk_level_display_text(structured_output.get("risk_level", "-"))}], "items": structured_output.get("missing_items") or [], "warnings": structured_output.get("misplaced_items") or [], } @@ -345,7 +377,7 @@ def _build_analysis_card(result: AgentResult | None, conversation: Conversation) "kind": "consistency", "title": "一致性核查能力卡", "summary": structured_output.get("summary", ""), - "stats": [{"label": "风险等级", "value": structured_output.get("risk_level", "-")}], + "stats": [{"label": "风险等级", "value": _get_risk_level_display_text(structured_output.get("risk_level", "-"))}], "items": structured_output.get("conflict_items") or [], "warnings": structured_output.get("mixed_document_risks") or [], } @@ -368,7 +400,7 @@ def _build_export_card(result: AgentResult | None, conversation: Conversation) - return { "template_name": structured_output.get("template_name", ""), "template_version": structured_output.get("template_version", ""), - "export_status": structured_output.get("export_status", ""), + "export_status": _get_export_status_display_text(structured_output.get("export_status", "")), "filled_fields": structured_output.get("filled_fields") or [], "blocked_fields": structured_output.get("blocked_fields") or [], "download_url": structured_output.get("download_url", ""), @@ -385,8 +417,10 @@ def _build_risk_card(result: AgentResult | None, conversation: Conversation) -> return {} return { "summary": structured_output.get("summary", ""), - "highest_risk_level": structured_output.get("highest_risk_level", ""), - "pass_status": structured_output.get("pass_status", ""), + "highest_risk_level": _get_risk_level_display_text( + structured_output.get("highest_risk_level", "") + ), + "pass_status": _get_pass_status_display_text(structured_output.get("pass_status", "")), "manual_review_items": structured_output.get("manual_review_items") or [], "risk_items": structured_output.get("risk_items") or [], "owner_roles": structured_output.get("owner_roles") or [], @@ -418,12 +452,28 @@ def _build_notify_card(result: AgentResult | None, conversation: Conversation) - return { "notify_reason": notify_reason, "mentioned_users": mentioned_users, - "message_status": message_status, + "message_status": _get_notify_message_status_display_text(message_status), "web_detail_url": web_detail_url, "owners": owners, } +def _get_risk_level_display_text(level: str) -> str: + return RISK_LEVEL_DISPLAY.get(level, level) + + +def _get_pass_status_display_text(status: str) -> str: + return PASS_STATUS_DISPLAY.get(status, status) + + +def _get_export_status_display_text(status: str) -> str: + return EXPORT_STATUS_DISPLAY.get(status, status) + + +def _get_notify_message_status_display_text(status: str) -> str: + return NOTIFY_MESSAGE_STATUS_DISPLAY.get(status, status) + + def _apply_agent_result_to_conversation(conversation: Conversation, result: AgentResult) -> None: conversation.task_status = result.status if result.node_results: diff --git a/templates/chat/index.html b/templates/chat/index.html index ea0279a..fc84e9e 100644 --- a/templates/chat/index.html +++ b/templates/chat/index.html @@ -11,7 +11,7 @@
批次:{{ conversation.batch_id }} 产品:{{ conversation.product_name|default:"未识别产品名称" }} - 阶段:{{ conversation.task_status }} + 阶段:{{ conversation_context.task_status }}
{% endif %} diff --git a/tests/test_chat.py b/tests/test_chat.py index 02d7b42..0a66136 100644 --- a/tests/test_chat.py +++ b/tests/test_chat.py @@ -422,7 +422,7 @@ def test_chat_page_shows_top_context_and_recommended_prompts(client, db): assert "当前流程类型" in content assert "registration" in content assert "当前审核阶段" in content - assert "processing" in content + assert "处理中" in content assert "当前最高风险等级" in content assert "推荐提问模板" in content assert "请汇总当前资料包的章节点、页数和目录覆盖情况" in content @@ -486,7 +486,7 @@ def test_chat_page_shows_consistency_card_from_conversation_summary(client, db): assert "一致性核查能力卡" in content assert "申请表与说明书不一致" in content assert "疑似混入其他产品资料" in content - assert "high" in content + assert "高" in content def test_chat_page_shows_completeness_card_from_conversation_summary(client, db): @@ -727,7 +727,9 @@ def test_chat_page_shows_risk_and_notification_cards_from_conversation_summary(c assert response.status_code == 200 assert "风险预警能力卡" in content assert "总风险等级" in content - assert "high" in content + assert "高" in content + assert "是否通过" in content + assert "已阻断" in content assert "注册资料负责人" in content assert "注册事务部" in content assert "字段冲突" in content @@ -738,7 +740,7 @@ def test_chat_page_shows_risk_and_notification_cards_from_conversation_summary(c assert "CH1.11.5 沟通记录缺失" in content assert "飞书通知能力卡" in content assert "task_completed" in content - assert "sent" in content + assert "已发送" in content def test_chat_upload_keeps_existing_conversation_binding_and_adds_documents(client, db):