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;
}
}