P1-4b: Matcher优先级修正 - title匹配提到category之前(title是Dify判断的具体意图,比大类更精确,真实场景: approval_type=账号权限申请+title=VPN账号申请应输出单卡)
This commit is contained in:
@@ -5,9 +5,9 @@
|
||||
#
|
||||
# 匹配优先级:
|
||||
# 1. approval_type 精确匹配模板 ID(如 "zero_trust_vpn")
|
||||
# 2. approval_type 关键词匹配模板 keywords(如 "VPN账号申请" 含 "VPN")
|
||||
# 3. approval_type 匹配 category(如 "账号权限申请" → 返回该分类下所有模板)
|
||||
# 4. title 匹配模板 name(如 "VPN账号申请" → zero_trust_vpn)
|
||||
# 2. title 匹配(关键词 + 名称)— title 是 Dify 判断的具体意图,比大类更精确
|
||||
# 3. approval_type 关键词匹配模板 keywords(如 "VPN账号申请" 含 "VPN")
|
||||
# 4. approval_type 匹配 category(如 "账号权限申请" → 返回该分类下所有模板)
|
||||
# 5. 兜底:全部失败时返回全量 18 项卡片(v4.0 P1-4,不再返回 None)
|
||||
#
|
||||
# 输出:标准化卡片数据 card_data,前端纯渲染
|
||||
@@ -48,22 +48,24 @@ class ApprovalMatcher:
|
||||
if template:
|
||||
return self._build_single_card(template)
|
||||
|
||||
# 优先级 2:关键词匹配
|
||||
template = self._match_by_keyword(approval_type)
|
||||
if template:
|
||||
return self._build_single_card(template)
|
||||
|
||||
# 优先级 3:category 匹配
|
||||
options = self._match_by_category(approval_type)
|
||||
if options:
|
||||
return self._build_multi_card(approval_type, options)
|
||||
|
||||
# 优先级 4:title 匹配(先关键词后名称,title 是具体名称如"VPN账号申请")
|
||||
# 优先级 2:title 匹配(先关键词后名称)
|
||||
# v4.0 P1-4b:title 是 Dify 判断的具体意图(如"VPN账号申请"),
|
||||
# 比 approval_type 大类(如"账号权限申请")更精确,应优先输出单卡
|
||||
if title:
|
||||
template = self._match_by_keyword(title) or self._match_by_name(title)
|
||||
if template:
|
||||
return self._build_single_card(template)
|
||||
|
||||
# 优先级 3:approval_type 关键词匹配
|
||||
template = self._match_by_keyword(approval_type)
|
||||
if template:
|
||||
return self._build_single_card(template)
|
||||
|
||||
# 优先级 4:category 匹配(大类兜底,返回该分类多选项)
|
||||
options = self._match_by_category(approval_type)
|
||||
if options:
|
||||
return self._build_multi_card(approval_type, options)
|
||||
|
||||
# 优先级 5(v4.0 P1-4):兜底返回全量卡片
|
||||
# 原死分支(重复调用 _match_by_keyword)已删除——与优先级 2 数学上等价不可达
|
||||
logger.info(
|
||||
|
||||
Reference in New Issue
Block a user