# -*- coding: utf-8 -*- """agent_query_common.py — 柱3「智能助手」查询共享核 (assistant farm级 + fleet_query fleet级 共用). 2026-07-09 合并: 此前 assistant._VD_ORDER 与 fleet_query.VERDICT_RANK 各一套 verdict rank、 两套 system 匹配 (substring vs family-prefix) = 并发重复债。抽共享原语于此, 两模块 import, **保留两入口** (farm级 answer / fleet级 flagged·fleet_health — 互补非重复)。 verdict/system 单源: rank 用六枚举 + 复合兜底; system 复用 cases.system_of + 家族前缀匹配。 """ from src.sop.schemas import norm_verdict, VERDICTS # noqa: F401 (VERDICTS 供下游 re-export) # verdict 六枚举 rank 高→低 (docs/SOP.md §0.2 单源) VERDICT_RANK = {'定论': 5, '准定论·预警': 4, '候选': 3, '参考': 2, 'INSUFFICIENT': 1, '撤回': 0} def rank(v): """verdict → rank。严格六枚举优先; 非标复合(如 '候选·预警'/'候选·观察')取 '·' 前段兜底, 防静默丢真候选。仍无匹配 → -1 (真未知)。""" nv = norm_verdict(v) if nv in VERDICT_RANK: return VERDICT_RANK[nv] head = nv.split('·', 1)[0].strip() # '候选·预警' → '候选' return VERDICT_RANK.get(head, -1) def system_family_match(sysk, target): """canonical system key 家族前缀匹配 (single-source w/ cases.system_of 前缀感知): target='gearbox' 匹配 gearbox_oil/gearbox_ims_de 等子系统; 精确名(gen_stator)仍精确/家族匹配。""" if not sysk or not target: return False sysk, target = str(sysk), str(target) return sysk == target or sysk.startswith(target + '_')