Improve degraded household replies and route tests #343

Merged
m merged 1 commits from codex/household-scenario-audit into main 2026-08-25 09:11:58 +00:00
3 changed files with 40 additions and 3 deletions
@@ -0,0 +1,37 @@
package main
import (
"testing"
"time"
"git.cin.su/m/Assistant/contracts/capability"
interactiondomain "git.cin.su/m/Assistant/modules/interaction/domain"
)
func TestHouseholdResearchAndActionRoutesRemainIndependent(t *testing.T) {
candidate := interactiondomain.BuildDeterministicCandidate("проверь погоду в Казани, найди кафе рядом и напомни вечером позвонить", "", time.Unix(10, 0).UnixMilli())
planned := buildChatRoutePlan(interactiondomain.SemanticResult{NeedsCognition: candidate.NeedsCognition, CapabilityHints: candidate.CapabilityHints})
want := map[chatRouteKind]bool{chatRouteResearch: false, chatRouteConversation: false, chatRouteAction: false}
for _, route := range planned {
if _, ok := want[route.Kind]; ok {
want[route.Kind] = true
}
}
for kind, present := range want {
if !present {
t.Fatalf("route %s missing for mixed household request: candidate=%+v routes=%+v", kind, candidate, planned)
}
}
}
func TestHouseholdCreativeRouteDoesNotUseResearch(t *testing.T) {
candidate := interactiondomain.BuildDeterministicCandidate("расскажи сказку о Колобке", "", time.Unix(10, 0).UnixMilli())
for _, hint := range candidate.CapabilityHints {
if capability.CapabilityKind(hint) == capability.CapabilityKindWebResearch {
t.Fatalf("creative request selected web research: %+v", candidate)
}
}
if !interactiondomain.IsCreativeRequest("расскажи сказку о Колобке") {
t.Fatal("creative request was not recognized")
}
}
+2 -2
View File
@@ -1924,9 +1924,9 @@ func humanCognitiveChannelReply(kind interaction.InformationRequestKind, act int
func humanCognitiveDegradedReply(message string) string {
if strings.TrimSpace(message) == "" {
return "Сейчас когнитивный канал недоступен; Домовой остаётся на связи."
return "Сейчас не удалось обработать запрос."
}
return "Сейчас когнитивный канал недоступен. Повторю запрос через доступный маршрут, когда он восстановится."
return "Не удалось получить проверяемые данные. Ответ не выдумываю."
}
func humanCapabilityList(kinds []capability.CapabilityKind) string {
+1 -1
View File
@@ -73,7 +73,7 @@ func TestCognitiveConfigurationRequestDoesNotPretendToMutate(t *testing.T) {
func TestCognitiveDegradedReplyKeepsDomovoyAlive(t *testing.T) {
reply := humanCognitiveDegradedReply("Помоги настроить локальную модель")
if !strings.Contains(reply, "когнитивный канал") || !strings.Contains(reply, "Повторю") {
if strings.Contains(reply, "когнитивный канал") || strings.Contains(reply, "Повторю") || !strings.Contains(reply, "не выдумываю") {
t.Fatalf("unexpected degraded reply: %q", reply)
}
}