wip deepseek

This commit is contained in:
2026-07-07 16:42:42 +02:00
parent 00c67dd66a
commit 9555423f51
12 changed files with 2871 additions and 13 deletions
+27 -6
View File
@@ -540,12 +540,7 @@ namespace AnotherReplayReader.Utils
// Check 3: UnitId used as builder vs claim
var isBuilderInReplay = factIndex.BuilderUnitIds.Contains(unitId);
var claimLooksLikeBuilder = claim.Claim.IndexOf("MCV", StringComparison.OrdinalIgnoreCase) >= 0
|| claim.Claim.IndexOf("基地车", StringComparison.OrdinalIgnoreCase) >= 0
|| claim.Claim.IndexOf("Nanocore", StringComparison.OrdinalIgnoreCase) >= 0
|| claim.Claim.IndexOf("纳米核心", StringComparison.OrdinalIgnoreCase) >= 0
|| claim.Claim.IndexOf("builder", StringComparison.OrdinalIgnoreCase) >= 0
|| claim.Claim.IndexOf("建造者", StringComparison.OrdinalIgnoreCase) >= 0;
var claimLooksLikeBuilder = ClaimLooksLikeBuilder(claim.Claim);
if (claimLooksLikeBuilder && !isBuilderInReplay)
{
issues.Add(new AIValidationIssue(
@@ -651,5 +646,31 @@ namespace AnotherReplayReader.Utils
}
return result.ToImmutableArray();
}
/// <summary>
/// Check if a claim text describes a builder unit (MCV, Nanocore, etc.).
/// Uses structured knowledge (knowledge_units.json) when available, falls
/// back to heuristic string matching for backward compatibility.
/// </summary>
private static bool ClaimLooksLikeBuilder(string claimText)
{
// Primary: structured knowledge lookup
var structured = StructuredKnowledge.Instance;
if (structured is not null)
{
foreach (var entity in structured.AllEntities)
{
if (entity.HasTag(KnowledgeTag.Builder) &&
claimText.IndexOf(entity.AssetName, StringComparison.OrdinalIgnoreCase) >= 0)
{
return true;
}
}
}
// Fallback: heuristic string matching
var keywords = new[] { "MCV", "基地车", "Nanocore", "纳米核心", "builder", "建造者" };
return keywords.Any(kw => claimText.IndexOf(kw, StringComparison.OrdinalIgnoreCase) >= 0);
}
}
}