From 213f06661dd3b48110acbb292317094d966f2c85 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Wed, 26 Aug 2026 10:27:54 +0300 Subject: [PATCH] Keep nearest flight reply focused --- cmd/core-runtime/main.go | 6 ++++++ cmd/core-runtime/main_test.go | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/cmd/core-runtime/main.go b/cmd/core-runtime/main.go index c03e182..1bb7823 100644 --- a/cmd/core-runtime/main.go +++ b/cmd/core-runtime/main.go @@ -1810,6 +1810,12 @@ func renderResearchReply(query string, result epistemics.ResearchResult, researc excerpt = string([]rune(excerpt)[:limit]) + "…" } lines = append(lines, excerpt+"\nИсточник: "+researchSourceLabel(finding)) + // A nearest-flight request needs one route-relevant schedule result. + // Appending weaker matches makes unrelated category pages look like + // alternatives even after the relevance check has accepted the route. + if nearestFlightQuery(query) { + break + } if len(lines) == 2 { break } diff --git a/cmd/core-runtime/main_test.go b/cmd/core-runtime/main_test.go index 3c0fd9d..0e9a954 100644 --- a/cmd/core-runtime/main_test.go +++ b/cmd/core-runtime/main_test.go @@ -47,6 +47,17 @@ func TestNearestFlightReplyFiltersUnrelatedSearchSnippets(t *testing.T) { } } +func TestNearestFlightReplyDoesNotAppendWeakerSecondMatch(t *testing.T) { + result := epistemics.ResearchResult{Findings: []epistemics.ResearchFinding{ + {State: epistemics.FindingSupported, Source: epistemics.Source{Locator: "https://schedule.example", Title: "Рейсы Москва — Казань"}, Excerpt: epistemics.SourceExcerpt{Text: "Расписание авиарейсов Москва — Казань, время вылета и прилёта."}}, + {State: epistemics.FindingSupported, Source: epistemics.Source{Locator: "https://category.example", Title: "Категория направлений"}, Excerpt: epistemics.SourceExcerpt{Text: "Список близлежащих городов и ориентировочные цены."}}, + }} + reply, backed := renderResearchReply("ближайшие авиарейсы Москва Казань сегодня", result, nil) + if !backed || !strings.Contains(reply, "Рейсы Москва") || strings.Contains(reply, "Категория направлений") { + t.Fatalf("weaker second finding leaked into nearest-flight reply: %q", reply) + } +} + func TestNearestFlightEvidenceRequiresBothRouteEndpointsWhenKnown(t *testing.T) { query := "ближайшие авиарейсы Москва Казань сегодня" matched := epistemics.ResearchFinding{Source: epistemics.Source{Title: "Рейсы Москва — Казань"}, Excerpt: epistemics.SourceExcerpt{Text: "Расписание авиарейсов из Москвы в Казань."}} -- 2.54.0