atlasbot: merge global metric facts into selection

This commit is contained in:
Brad Stein 2026-02-04 13:36:20 -03:00
parent f5e928fa59
commit 9cb591e469

View File

@ -361,6 +361,17 @@ class AnswerEngine:
) )
metric_facts: list[str] = [] metric_facts: list[str] = []
if classify.get("question_type") in {"metric", "diagnostic"} or force_metric: if classify.get("question_type") in {"metric", "diagnostic"} or force_metric:
global_metric_facts: list[str] = []
if global_facts:
global_metric_facts = await _select_fact_lines(
call_llm,
normalized,
global_facts,
plan,
max_lines=min(2, max(1, plan.max_subquestions)),
)
if global_metric_facts:
key_facts = _merge_fact_lines(global_metric_facts, key_facts)
all_tokens = _merge_tokens(signal_tokens, keyword_tokens, question_tokens) all_tokens = _merge_tokens(signal_tokens, keyword_tokens, question_tokens)
if plan.use_deep_retrieval: if plan.use_deep_retrieval:
if observer: if observer:
@ -439,12 +450,14 @@ class AnswerEngine:
summary_lines, summary_lines,
max_add=plan.max_subquestions, max_add=plan.max_subquestions,
) )
if metric_facts and not _has_keyword_overlap(metric_facts, keyword_tokens): if metric_facts and not _has_keyword_overlap(metric_facts, keyword_tokens):
best_line = _best_keyword_line(summary_lines, keyword_tokens) best_line = _best_keyword_line(summary_lines, keyword_tokens)
if best_line: if best_line:
metric_facts = _merge_fact_lines([best_line], metric_facts) metric_facts = _merge_fact_lines([best_line], metric_facts)
if metric_facts: if metric_facts:
key_facts = _merge_fact_lines(metric_facts, key_facts) key_facts = _merge_fact_lines(metric_facts, key_facts)
if global_metric_facts:
metric_facts = _merge_fact_lines(global_metric_facts, metric_facts)
if (classify.get("question_type") in {"metric", "diagnostic"} or force_metric) and not metric_facts and key_facts: if (classify.get("question_type") in {"metric", "diagnostic"} or force_metric) and not metric_facts and key_facts:
metric_facts = key_facts metric_facts = key_facts
if key_facts: if key_facts: