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