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
|
extra_data["options"] = options
|
||||||
# 为审批卡片注入标准化 card_data(替换原有的分散匹配逻辑)
|
# 为审批卡片注入标准化 card_data(替换原有的分散匹配逻辑)
|
||||||
if action:
|
if action:
|
||||||
approval_type = action.get("approval_type")
|
# v3.2 修复:降级路径已构建好 card_data 时,跳过重复匹配(避免 approval_type=None 误报"匹配失败")
|
||||||
title = action.get("title")
|
if action.get("card_data"):
|
||||||
|
matched_card = action["card_data"]
|
||||||
# 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", [])
|
options = matched_card.get("options", [])
|
||||||
if options:
|
if options and not action.get("url"):
|
||||||
action["url"] = options[0].get("url", "")
|
action["url"] = options[0].get("url", "")
|
||||||
action["card_data"] = matched_card
|
logger.info(f"[ApprovalMatcher] 使用预构建 card_data: {matched_card.get('title')}")
|
||||||
logger.info(f"[ApprovalMatcher] 匹配成功: {approval_type} -> card_type={matched_card.get('card_type')}")
|
|
||||||
else:
|
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
|
extra_data["action"] = action
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user