namespace Admin.NET.Plugin.AiDOP.Entity.S8; /// /// S8-UAT-APPROVAL-REPAIR-1:S8 审批流审批人配置修复留证。 /// /// 为什么必须留证:这次改的是用户可见的流程配置。明天有人问 /// 「我的审批人怎么变了」,必须能当场答出改前是什么、为什么改、依据是哪条权限事实。 /// 没有这张表,这就是一次无法解释的静默改写。 /// [SugarTable("ado_s8_approval_flow_repair_log", "S8 审批流审批人修复留证")] public class AdoS8ApprovalFlowRepairLog { [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true, ColumnDataType = "bigint")] public long Id { get; set; } [SugarColumn(ColumnName = "tenant_id", ColumnDataType = "bigint")] public long TenantId { get; set; } [SugarColumn(ColumnName = "flow_id", ColumnDataType = "bigint")] public long FlowId { get; set; } [SugarColumn(ColumnName = "biz_type", Length = 64)] public string BizType { get; set; } = string.Empty; [SugarColumn(ColumnName = "node_name", Length = 128)] public string NodeName { get; set; } = string.Empty; /// 改前的 approverType。 [SugarColumn(ColumnName = "before_type", Length = 32, IsNullable = true)] public string? BeforeType { get; set; } /// 改前的 approverIds,逐字保留。 [SugarColumn(ColumnName = "before_ids", Length = 512, IsNullable = true)] public string? BeforeIds { get; set; } [SugarColumn(ColumnName = "after_type", Length = 32, IsNullable = true)] public string? AfterType { get; set; } [SugarColumn(ColumnName = "after_ids", Length = 512, IsNullable = true)] public string? AfterIds { get; set; } /// 为什么改:判据 + 派生依据。 [SugarColumn(ColumnName = "reason", Length = 512, IsNullable = true)] public string? Reason { get; set; } /// REPAIRED / SKIPPED_ALREADY_OK / BLOCKED_NO_ROLE。 [SugarColumn(ColumnName = "outcome", Length = 32)] public string Outcome { get; set; } = string.Empty; [SugarColumn(ColumnName = "repaired_at")] public DateTime RepairedAt { get; set; } = DateTime.Now; }