namespace Admin.NET.Plugin.AiDOP.DataPlatform; /// /// 岗位原文 → 中立岗位码。精确值优先于关键字。未命中为 UNKNOWN,不计入在职分母。 /// public static class EmployeePositionRules { public const string Warehouse = "WAREHOUSE"; public const string Production = "PRODUCTION"; public const string Planner = "PLANNER"; public const string Other = "OTHER"; public const string Unknown = "UNKNOWN"; public static readonly string[] WarehouseKeywords = ["仓", "库管", "保管", "物料员", "WMS"]; public static readonly string[] ProductionKeywords = ["生产", "操作", "装配", "车间", "班组", "产线", "工段"]; public static readonly string[] PlannerKeywords = ["计划", "PMC", "调度"]; /// T8 gw 原值精确匹配,优先于关键字。 public static readonly IReadOnlyDictionary Exact = new Dictionary(StringComparer.Ordinal) { ["计划"] = Planner, ["仓管"] = Warehouse, ["生产"] = Production }; public static string Classify(string? raw) { if (string.IsNullOrWhiteSpace(raw)) return Unknown; var text = raw.Trim(); if (Exact.TryGetValue(text, out var exact)) return exact; if (WarehouseKeywords.Any(text.Contains)) return Warehouse; if (ProductionKeywords.Any(text.Contains)) return Production; if (PlannerKeywords.Any(text.Contains)) return Planner; return Unknown; } }