This commit is contained in:
@@ -1457,7 +1457,15 @@ func metadataString(metadata map[string]any, key string) string {
|
||||
if metadata == nil {
|
||||
return ""
|
||||
}
|
||||
return strings.TrimSpace(fmt.Sprint(metadata[key]))
|
||||
value, ok := metadata[key]
|
||||
if !ok || value == nil {
|
||||
return ""
|
||||
}
|
||||
text := strings.TrimSpace(fmt.Sprint(value))
|
||||
if text == "" || strings.EqualFold(text, "<nil>") || strings.EqualFold(text, "null") {
|
||||
return ""
|
||||
}
|
||||
return text
|
||||
}
|
||||
|
||||
func metadataStringSlice(metadata map[string]any, key string) []string {
|
||||
|
||||
@@ -89,3 +89,21 @@ func TestLoadResearchEvidenceCanReuseInMemoryQueuedRecord(t *testing.T) {
|
||||
t.Fatalf("unexpected cached evidence: %+v", loaded)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMetadataStringTreatsMissingAndNilAsEmpty(t *testing.T) {
|
||||
cases := []map[string]any{
|
||||
nil,
|
||||
{},
|
||||
{"evidence_path": nil},
|
||||
{"evidence_path": "<nil>"},
|
||||
{"evidence_path": "null"},
|
||||
}
|
||||
for _, metadata := range cases {
|
||||
if got := metadataString(metadata, "evidence_path"); got != "" {
|
||||
t.Fatalf("expected empty metadata string, got %q from %#v", got, metadata)
|
||||
}
|
||||
}
|
||||
if got := metadataString(map[string]any{"evidence_path": " research-evidence/x.json "}, "evidence_path"); got != "research-evidence/x.json" {
|
||||
t.Fatalf("unexpected normalized metadata string %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -392,13 +392,14 @@ func TestRuntimeSettingsDisableThinkingAndPersist(t *testing.T) {
|
||||
LearningCategories: []string{"Netzwerk"},
|
||||
DisplayCategories: []string{"GLPI KB"},
|
||||
ThinkingCategories: []string{"Netzwerk"},
|
||||
ViewMode: "honeycomb",
|
||||
ViewMode: "constellation",
|
||||
MaxDisplayNodes: 4321,
|
||||
LowPowerMode: true,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if updated.LearningEnabled || updated.ThinkingEnabled || updated.ViewMode != "honeycomb" || updated.MaxDisplayNodes != 4321 {
|
||||
if updated.LearningEnabled || updated.ThinkingEnabled || updated.ViewMode != "constellation" || updated.MaxDisplayNodes != 4321 || !updated.LowPowerMode {
|
||||
t.Fatalf("unexpected runtime settings: %+v", updated)
|
||||
}
|
||||
if e.RequestEnrich("manual") {
|
||||
@@ -417,7 +418,7 @@ func TestRuntimeSettingsDisableThinkingAndPersist(t *testing.T) {
|
||||
}
|
||||
e2 := New(cfg, g2, activity.New(20))
|
||||
loaded := e2.RuntimeSettings()
|
||||
if loaded.LearningEnabled || loaded.ThinkingEnabled || loaded.ViewMode != "honeycomb" || loaded.MaxDisplayNodes != 4321 || len(loaded.DisplayCategories) != 1 {
|
||||
if loaded.LearningEnabled || loaded.ThinkingEnabled || loaded.ViewMode != "constellation" || loaded.MaxDisplayNodes != 4321 || !loaded.LowPowerMode || len(loaded.DisplayCategories) != 1 {
|
||||
t.Fatalf("runtime settings were not restored: %+v", loaded)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ type RuntimeSettings struct {
|
||||
ThinkingCategories []string `json:"thinking_categories"`
|
||||
ViewMode string `json:"view_mode"`
|
||||
MaxDisplayNodes int `json:"max_display_nodes"`
|
||||
LowPowerMode bool `json:"low_power_mode"`
|
||||
}
|
||||
|
||||
type CategoryInfo struct {
|
||||
@@ -36,6 +37,7 @@ func (e *Engine) defaultRuntimeSettings() RuntimeSettings {
|
||||
ThinkingCategories: append([]string(nil), e.Cfg.ThinkingCategories...),
|
||||
ViewMode: e.Cfg.DefaultView,
|
||||
MaxDisplayNodes: e.Cfg.MaxDisplayNodes,
|
||||
LowPowerMode: e.Cfg.LowPowerMode,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -47,7 +49,7 @@ func normalizeRuntimeSettings(in RuntimeSettings) RuntimeSettings {
|
||||
if in.ViewMode == "" {
|
||||
in.ViewMode = "neural"
|
||||
}
|
||||
if in.ViewMode != "neural" && in.ViewMode != "honeycomb" {
|
||||
if in.ViewMode != "neural" && in.ViewMode != "honeycomb" && in.ViewMode != "constellation" {
|
||||
in.ViewMode = "neural"
|
||||
}
|
||||
if in.MaxDisplayNodes < 0 {
|
||||
@@ -149,6 +151,7 @@ func (e *Engine) SetRuntimeSettings(settings RuntimeSettings) (RuntimeSettings,
|
||||
"thinking_categories": len(settings.ThinkingCategories),
|
||||
"view_mode": settings.ViewMode,
|
||||
"max_display_nodes": settings.MaxDisplayNodes,
|
||||
"low_power_mode": settings.LowPowerMode,
|
||||
},
|
||||
})
|
||||
return settings, nil
|
||||
|
||||
Reference in New Issue
Block a user