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