using Furion.ConfigurableOptions; namespace Admin.NET.Plugin.AiDOP; /// /// S8 Stage-3 采购完成态数据源绑定。配置节 AiDOP:PoCompletion。 /// /// 承担的角色是 S8_PO_COMPLETION_SOURCE:接收 Ai-DOP 推送的采购单、执行收货、 /// 并维护 PurOrdDetail.Status'C'=收完关闭)。该角色由 WMS/MES 承担, /// 与建单方(本库)是两个系统。 /// /// 为什么源编码必须留在配置里:仓库现有代码把 DOPDEMORQ_SQLSERVER /// 硬编码进了 9+ 处业务服务,导致换环境必须改代码。本选项沿用 /// 已在生产使用的配置驱动绑定模式, /// 业务 Service 内不出现任何具体源编码字面量。 /// /// 非开发环境必须显式绑定真实 WMS 源:默认值指向开发/UAT 实例, /// 中的编码在非开发环境会被 fail-closed 拒绝, /// 绝不静默使用。 /// [OptionsSettings("AiDOP:PoCompletion")] public sealed class AidopPoCompletionOptions : IConfigurableOptions { /// 承担 S8_PO_COMPLETION_SOURCE 角色的 mdp_source.source_code public string SourceCode { get; set; } = "DOPDEMORQ_SQLSERVER"; /// /// 仅限开发/UAT 使用的源编码。非开发环境命中其中任意一个即拒绝运行(fail-closed), /// 防止把测试库的执行态当成生产采购完成事实。 /// public string[] DevOnlySourceCodes { get; set; } = new[] { "DOPDEMORQ_SQLSERVER" }; /// /// 入账范围:只消费该 Potype 的采购行。与 PurOrdWmsPushService 的自建单推送口径 /// (Potype='po')对齐 —— 没被推过去的单据,WMS 侧的状态不属于本角色。 /// public string SourcePotype { get; set; } = "po"; /// 单轮从源侧读取的行数上限,防止异常配置下拉爆内存。 public int MaxSourceRows { get; set; } = 50000; /// UPSERT 分片大小。 public int UpsertBatchSize { get; set; } = 200; }