using Admin.NET.Plugin.AiDOP.DataPlatform; using Xunit; namespace Admin.NET.Plugin.AiDOP.Tests.DataPlatform; public class EmployeePositionRulesTests { [Theory] [InlineData("计划", "PLANNER")] [InlineData("仓管", "WAREHOUSE")] [InlineData("生产", "PRODUCTION")] [InlineData("成品仓", "WAREHOUSE")] [InlineData("库管员", "WAREHOUSE")] [InlineData("物料员", "WAREHOUSE")] [InlineData("WMS专员", "WAREHOUSE")] [InlineData("装配工", "PRODUCTION")] [InlineData("车间班长", "PRODUCTION")] [InlineData("PMC", "PLANNER")] [InlineData("调度员", "PLANNER")] [InlineData("财务", "UNKNOWN")] [InlineData("", "UNKNOWN")] [InlineData(null, "UNKNOWN")] // 165 的 EmployeeMaster.JobTitle 填的是小写英文,中文关键字一个都匹配不上。 [InlineData("warehouse", "WAREHOUSE")] [InlineData("warehouse1", "WAREHOUSE")] [InlineData("Warehouse Clerk", "WAREHOUSE")] [InlineData("wms专员", "WAREHOUSE")] [InlineData("production", "PRODUCTION")] [InlineData("Assembly Operator", "PRODUCTION")] [InlineData("planner", "PLANNER")] // 已人工确认不属于三类业务岗,归 OTHER 而非 UNKNOWN,不再记 POSITION_UNMAPPED。 [InlineData("quality", "OTHER")] [InlineData("QC检验员", "OTHER")] [InlineData("数据员", "OTHER")] [InlineData("研发工程师", "OTHER")] // OTHER 判定在三类业务岗之后,含「仓」仍归 WAREHOUSE。 [InlineData("质量仓管", "WAREHOUSE")] public void Classify_ExactBeforeKeyword(string? raw, string expected) { Assert.Equal(expected, EmployeePositionRules.Classify(raw)); } }