v3.2: 降级结果已含card_data时跳过重复匹配(避免approval_type=None误报匹配失败)
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user