fixed AlarmKnowledgeBase issue

This commit is contained in:
Yinyin Liu 2026-02-25 08:09:11 +01:00
parent 2f8eda5e7e
commit 8de43276a0
2 changed files with 23 additions and 1 deletions

View File

@ -26,7 +26,7 @@ public static class AlarmKnowledgeBase
if (GrowattAlarms.TryGetValue(normalized, out var growattDiag)) if (GrowattAlarms.TryGetValue(normalized, out var growattDiag))
return growattDiag; return growattDiag;
// Try case-insensitive match for Sinexcel (alarm names may vary in casing) // Try case-insensitive match for both Sinexcel and Growatt
var lowerDesc = normalized.ToLowerInvariant(); var lowerDesc = normalized.ToLowerInvariant();
foreach (var kvp in SinexcelAlarms) foreach (var kvp in SinexcelAlarms)
{ {
@ -34,6 +34,12 @@ public static class AlarmKnowledgeBase
return kvp.Value; return kvp.Value;
} }
foreach (var kvp in GrowattAlarms)
{
if (kvp.Key.ToLowerInvariant() == lowerDesc)
return kvp.Value;
}
return null; return null;
} }

View File

@ -838,6 +838,22 @@ public static class AlarmReviewService
foreach (var key in GrowattKeys) foreach (var key in GrowattKeys)
AppendEntry(sb, key, improved); AppendEntry(sb, key, improved);
sb.AppendLine(" };"); sb.AppendLine(" };");
sb.AppendLine();
// Emit the lookup method so the generated file is self-contained and can fully replace AlarmKnowledgeBase.cs
sb.AppendLine(" public static DiagnosticResponse? TryGetDiagnosis(string alarmDescription)");
sb.AppendLine(" {");
sb.AppendLine(" if (string.IsNullOrWhiteSpace(alarmDescription)) return null;");
sb.AppendLine(" var normalized = alarmDescription.Trim();");
sb.AppendLine(" if (SinexcelAlarms.TryGetValue(normalized, out var s)) return s;");
sb.AppendLine(" if (GrowattAlarms.TryGetValue(normalized, out var g)) return g;");
sb.AppendLine(" var lower = normalized.ToLowerInvariant();");
sb.AppendLine(" foreach (var kvp in SinexcelAlarms)");
sb.AppendLine(" if (kvp.Key.ToLowerInvariant() == lower) return kvp.Value;");
sb.AppendLine(" foreach (var kvp in GrowattAlarms)");
sb.AppendLine(" if (kvp.Key.ToLowerInvariant() == lower) return kvp.Value;");
sb.AppendLine(" return null;");
sb.AppendLine(" }");
sb.AppendLine("}"); sb.AppendLine("}");
File.WriteAllText(CheckedFilePath, sb.ToString()); File.WriteAllText(CheckedFilePath, sb.ToString());