| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- namespace Admin.NET.Plugin.AiDOP.DataPlatform;
- /// <summary>
- /// 岗位原文 → 中立岗位码。精确值优先于关键字。未命中为 UNKNOWN,不计入在职分母。
- /// </summary>
- 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", "调度"];
- /// <summary>T8 gw 原值精确匹配,优先于关键字。</summary>
- public static readonly IReadOnlyDictionary<string, string> Exact = new Dictionary<string, string>(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;
- }
- }
|