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