From 18a639919c0ae35570922a46dd0ae7a21df46ba9 Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 17 Jul 2026 23:39:20 +0800 Subject: [PATCH] =?UTF-8?q?v3.2:=20=E9=99=8D=E7=BA=A7=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E5=B7=B2=E5=90=ABcard=5Fdata=E6=97=B6=E8=B7=B3=E8=BF=87?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E5=8C=B9=E9=85=8D=EF=BC=88=E9=81=BF=E5=85=8D?= =?UTF-8?q?approval=5Ftype=3DNone=E8=AF=AF=E6=8A=A5=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/tasks/h5_ai_task.py | 36 ++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/backend/app/tasks/h5_ai_task.py b/backend/app/tasks/h5_ai_task.py index 1ac3ea4..cb13f2f 100644 --- a/backend/app/tasks/h5_ai_task.py +++ b/backend/app/tasks/h5_ai_task.py @@ -442,23 +442,31 @@ async def _persist_and_push_structured( extra_data["options"] = options # 为审批卡片注入标准化 card_data(替换原有的分散匹配逻辑) if action: - approval_type = action.get("approval_type") - title = action.get("title") - - # v3.0 重构:委托 ApprovalMatcher 统一完成模板匹配 + 卡片构建 - from app.services.approval_matcher import get_approval_matcher - matcher = get_approval_matcher() - matched_card = matcher.match_and_build_card(approval_type, title) - - if matched_card: - # 注入 URL 供 approve-direct-card 兼容路径使用 + # v3.2 修复:降级路径已构建好 card_data 时,跳过重复匹配(避免 approval_type=None 误报"匹配失败") + if action.get("card_data"): + matched_card = action["card_data"] options = matched_card.get("options", []) - if options: + if options and not action.get("url"): action["url"] = options[0].get("url", "") - action["card_data"] = matched_card - logger.info(f"[ApprovalMatcher] 匹配成功: {approval_type} -> card_type={matched_card.get('card_type')}") + logger.info(f"[ApprovalMatcher] 使用预构建 card_data: {matched_card.get('title')}") else: - logger.warning(f"[ApprovalMatcher] 匹配失败: approval_type={approval_type}, title={title}") + approval_type = action.get("approval_type") + title = action.get("title") + + # v3.0 重构:委托 ApprovalMatcher 统一完成模板匹配 + 卡片构建 + from app.services.approval_matcher import get_approval_matcher + matcher = get_approval_matcher() + matched_card = matcher.match_and_build_card(approval_type, title) + + if matched_card: + # 注入 URL 供 approve-direct-card 兼容路径使用 + options = matched_card.get("options", []) + if options: + action["url"] = options[0].get("url", "") + action["card_data"] = matched_card + logger.info(f"[ApprovalMatcher] 匹配成功: {approval_type} -> card_type={matched_card.get('card_type')}") + else: + logger.warning(f"[ApprovalMatcher] 匹配失败: approval_type={approval_type}, title={title}") extra_data["action"] = action