
显式映射 vs 自动判据template 强制路由与禁用开关的取舍两条路到同一个插件用什么插件解析一份 PDF有两条路自动判据遍历所有插件跑recognizes谁命中用谁。显式映射HTTP 请求带template业务标识或配置里写p_template直接按 ID 锁死指定插件。两条路都能到插件但语义完全不同。显式映射的代码# 优先 config.json 的 p_template为空回退 HTTP 的 templatetemplate(json_data.get(p_template)or).strip()ifnottemplate:template(item.get(template)or).strip()iftemplate:pluginmanager.by_id(template)# 显式按IDelse:pluginmanager.auto_route(pdf)# 自动按recognizes两者的取舍自动判据省事不用配置但遇到相似格式可能选错。显式映射确定指哪打哪但要多传一个参数。关键矛盾禁用开关在两条路上不同我们设计的规则禁用只拦自动判据不拦显式映射。# 自动路由过滤掉禁用的pluginmanager.auto_route(pdf,enabled_onlyTrue)# 显式路由直接按ID不过滤禁用pluginmanager.by_id(template)为什么因为禁用是自动识别时别选它更偏向防误判。而显式指定是用户明确点名用户的意图不该被一个自动开关挡住。硬挡反而违背用户操作。比如某个模板暂时被禁用防误判但用户就是要手动解析它没理由拦。一句话自动判据追求省事显式映射追求确定禁用只管自动不管显式既防误判又不妨碍用户明确意图。