|
|
@@ -0,0 +1,75 @@
|
|
|
+using Admin.NET.Plugin.AiDOP.Entity.S8;
|
|
|
+
|
|
|
+namespace Admin.NET.Plugin.AiDOP;
|
|
|
+
|
|
|
+/// <summary>
|
|
|
+/// S8-NOTIFICATION-LAYER-BASELINE-1:S1-S7 × FOLLOW/SERIOUS × L1_OPERATOR 最小通知分层 baseline。
|
|
|
+/// 灌入 ado_s8_notification_layer,使 S8NotificationLayerResolver 在任意场景命中后可解析到合法可达 RoleCode。
|
|
|
+///
|
|
|
+/// 设计要点:
|
|
|
+/// - tenant_id=0 / factory_id=0 全局基线:与 S8NotificationLayerResolver baseline fallback 一致(先精确租工厂匹配,
|
|
|
+/// 不命中再退到 0/0),覆盖所有租户/工厂,避免逐工厂复制。
|
|
|
+/// - 仅使用当前可达的 ROLE_* 角色(owner 端 7 角色已全部 SysUser+EmployeeMaster 1:1 可达);
|
|
|
+/// 不使用 S8_01/S8_02/S8_03(当前 0 用户),避免 0 解析。
|
|
|
+/// - level_code 仅 L1_OPERATOR;L2/L3 等真实组织层级待 S8_* 角色绑定 + 业务确认后扩展。
|
|
|
+/// - notify_channel="log":经代码取证 S8NotificationPushAdapter 不存在 Channel="log" 的注册 pusher,
|
|
|
+/// wanted 集合内仅"log" → 无任何外部 pusher 触发;保留 row 让 resolver 可命中、便于后续 channel 切换。
|
|
|
+/// - 不写 enabled/is_deleted(实体与 DB 均无该列,行存在即视为可用)。
|
|
|
+///
|
|
|
+/// 模块→角色映射(基于现有 ROLE_* 业务归属,与 exception_type owner 配置一致):
|
|
|
+/// S1 / S7 → ROLE_ORDER_PLANNER(订单 / 交付)
|
|
|
+/// S2 / S6 → ROLE_PRODUCTION_PLANNER(制造 / 工单)
|
|
|
+/// S3 → ROLE_QC(来料质检)
|
|
|
+/// S4 → ROLE_WH_INBOUND(仓储入库)
|
|
|
+/// S5 → ROLE_PURCHASER(采购)
|
|
|
+///
|
|
|
+/// Id 区间:1329908200001 起(与 exception_type 1329908100000 区段不冲突),稳定可重灌。
|
|
|
+/// </summary>
|
|
|
+[IncreSeed]
|
|
|
+public class S8NotificationLayerSeedData : ISqlSugarEntitySeedData<AdoS8NotificationLayer>
|
|
|
+{
|
|
|
+ public IEnumerable<AdoS8NotificationLayer> HasData()
|
|
|
+ {
|
|
|
+ var ct = DateTime.Parse("2026-05-02 00:00:00");
|
|
|
+ const long baseId = 1329908200000L;
|
|
|
+
|
|
|
+ // (sceneCode, ownerRoleCode)
|
|
|
+ var sceneRoleMap = new (string Scene, string Role)[]
|
|
|
+ {
|
|
|
+ ("S1", "ROLE_ORDER_PLANNER"),
|
|
|
+ ("S2", "ROLE_PRODUCTION_PLANNER"),
|
|
|
+ ("S3", "ROLE_QC"),
|
|
|
+ ("S4", "ROLE_WH_INBOUND"),
|
|
|
+ ("S5", "ROLE_PURCHASER"),
|
|
|
+ ("S6", "ROLE_PRODUCTION_PLANNER"),
|
|
|
+ ("S7", "ROLE_ORDER_PLANNER"),
|
|
|
+ };
|
|
|
+
|
|
|
+ var severities = new[] { "FOLLOW", "SERIOUS" };
|
|
|
+ var levelCode = "L1_OPERATOR";
|
|
|
+ var channel = "log";
|
|
|
+
|
|
|
+ long id = baseId;
|
|
|
+ var list = new List<AdoS8NotificationLayer>();
|
|
|
+ foreach (var (scene, role) in sceneRoleMap)
|
|
|
+ {
|
|
|
+ foreach (var sev in severities)
|
|
|
+ {
|
|
|
+ id++;
|
|
|
+ list.Add(new AdoS8NotificationLayer
|
|
|
+ {
|
|
|
+ Id = id,
|
|
|
+ TenantId = 0,
|
|
|
+ FactoryId = 0,
|
|
|
+ SceneCode = scene,
|
|
|
+ Severity = sev,
|
|
|
+ LevelCode = levelCode,
|
|
|
+ TargetRoleIds = role,
|
|
|
+ NotifyChannel = channel,
|
|
|
+ CreatedAt = ct,
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+}
|