namespace Admin.NET.Plugin.AiDOP.Service.S8.OrderFlow;
///
/// ORDER-FLOW-S8-INTEGRATED-DOMAIN-RESET-1 t3b:ORDER_FLOW 5 项常量 + 派生映射。
/// 5 阶段顺序由 SortNo 隐含(同 ORDER_FLOW_ALL 数组顺序);S_STAGE 与 OrderFlowName 字典为只读引用。
/// 不在此文件硬编码任何业务真值(KPI 天数 / 行数 / 真值矩阵)。
///
public static class OrderFlowConstants
{
public const string ORDER_REVIEW_PLAN_CALC = "ORDER_REVIEW_PLAN_CALC";
public const string PRODUCT_DESIGN = "PRODUCT_DESIGN";
public const string MATERIAL_PURCHASE = "MATERIAL_PURCHASE";
public const string BODY_PRODUCTION = "BODY_PRODUCTION";
public const string FINAL_ASSEMBLY_DELIVERY = "FINAL_ASSEMBLY_DELIVERY";
/// 5 阶段固定顺序(与 ado_s8_order_flow_stage.sort_no 1~5 对齐)。
public static readonly IReadOnlyList All = new[]
{
ORDER_REVIEW_PLAN_CALC,
PRODUCT_DESIGN,
MATERIAL_PURCHASE,
BODY_PRODUCTION,
FINAL_ASSEMBLY_DELIVERY,
};
/// ORDER_FLOW → S 阶段编码(演示协议固定)。
public static readonly IReadOnlyDictionary SStageMap = new Dictionary
{
[ORDER_REVIEW_PLAN_CALC] = "S1",
[PRODUCT_DESIGN] = "S2",
[MATERIAL_PURCHASE] = "S3",
[BODY_PRODUCTION] = "S6",
[FINAL_ASSEMBLY_DELIVERY] = "S7",
};
/// ORDER_FLOW → 展示中文名(与 t2a stage seed FlowDef 一致)。
public static readonly IReadOnlyDictionary OrderFlowName = new Dictionary
{
[ORDER_REVIEW_PLAN_CALC] = "评审/排产/测算",
[PRODUCT_DESIGN] = "产品设计",
[MATERIAL_PURCHASE] = "材料采购",
[BODY_PRODUCTION] = "本体生产",
[FINAL_ASSEMBLY_DELIVERY] = "总装发货",
};
/// 未识别 code 时的 fallback 名称(直接回显 code)。
public static string ResolveName(string? orderFlowCode)
=> !string.IsNullOrEmpty(orderFlowCode) && OrderFlowName.TryGetValue(orderFlowCode, out var n)
? n
: (orderFlowCode ?? string.Empty);
/// 未识别 code 时回退为空字符串(service 调用方决定是否升级为异常)。
public static string ResolveSStage(string? orderFlowCode)
=> !string.IsNullOrEmpty(orderFlowCode) && SStageMap.TryGetValue(orderFlowCode, out var s)
? s
: string.Empty;
}