agent_query_common.py 1.6 KB

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