namespace OrpaonVision.Model.Security;
///
/// 机种权限模型。
///
public sealed class ProductPermissionModel
{
///
/// 权限ID。
///
public Guid Id { get; set; }
///
/// 机种ID。
///
public Guid ProductTypeId { get; set; }
///
/// 用户ID。
///
public Guid UserId { get; set; }
///
/// 角色ID。
///
public Guid RoleId { get; set; }
///
/// 权限类型。
///
public ProductPermissionType PermissionType { get; set; }
///
/// 是否启用。
///
public bool IsEnabled { get; set; }
///
/// 授权时间(UTC)。
///
public DateTime GrantedAtUtc { get; set; }
///
/// 授权人。
///
public string GrantedBy { get; set; } = string.Empty;
///
/// 过期时间(UTC)。
///
public DateTime? ExpiresAtUtc { get; set; }
///
/// 备注。
///
public string? Remark { get; set; }
///
/// 创建时间(UTC)。
///
public DateTime CreatedAtUtc { get; set; }
///
/// 创建人。
///
public string CreatedBy { get; set; } = string.Empty;
///
/// 更新时间(UTC)。
///
public DateTime UpdatedAtUtc { get; set; }
///
/// 更新人。
///
public string UpdatedBy { get; set; } = string.Empty;
}
///
/// 机种权限类型枚举。
///
public enum ProductPermissionType
{
///
/// 查看权限。
///
View = 0,
///
/// 编辑权限。
///
Edit = 1,
///
/// 发布权限。
///
Publish = 2,
///
/// 切换权限。
///
Switch = 3,
///
/// 强制切换权限(班组长专用)。
///
ForceSwitch = 4,
///
/// 管理权限。
///
Manage = 5
}
///
/// 机种锁定记录模型。
///
public sealed class ProductLockRecordModel
{
///
/// 记录ID。
///
public Guid Id { get; set; }
///
/// 机种ID。
///
public Guid ProductTypeId { get; set; }
///
/// 锁定类型。
///
public ProductLockType LockType { get; set; }
///
/// 锁定原因。
///
public string LockReason { get; set; } = string.Empty;
///
/// 锁定人ID。
///
public Guid LockedByUserId { get; set; }
///
/// 锁定人姓名。
///
public string LockedByName { get; set; } = string.Empty;
///
/// 锁定时间(UTC)。
///
public DateTime LockedAtUtc { get; set; }
///
/// 预计解锁时间(UTC)。
///
public DateTime? ExpectedUnlockAtUtc { get; set; }
///
/// 实际解锁时间(UTC)。
///
public DateTime? UnlockedAtUtc { get; set; }
///
/// 解锁人ID。
///
public Guid? UnlockedByUserId { get; set; }
///
/// 解锁人姓名。
///
public string? UnlockedByName { get; set; }
///
/// 解锁原因。
///
public string? UnlockReason { get; set; }
///
/// 是否已解锁。
///
public bool IsUnlocked { get; set; }
///
/// 创建时间(UTC)。
///
public DateTime CreatedAtUtc { get; set; }
///
/// 创建人。
///
public string CreatedBy { get; set; } = string.Empty;
}
///
/// 机种锁定类型枚举。
///
public enum ProductLockType
{
///
/// 权限锁定。
///
Permission = 0,
///
/// 配置锁定。
///
Configuration = 1,
///
/// 运行锁定。
///
Runtime = 2,
///
/// 维护锁定。
///
Maintenance = 3,
///
/// 审计锁定。
///
Audit = 4,
///
/// 紧急锁定。
///
Emergency = 5
}
///
/// 机种切换记录模型。
///
public sealed class ProductSwitchRecordModel
{
///
/// 记录ID。
///
public Guid Id { get; set; }
///
/// 源机种ID。
///
public Guid? SourceProductTypeId { get; set; }
///
/// 源机种编码。
///
public string? SourceProductTypeCode { get; set; }
///
/// 目标机种ID。
///
public Guid TargetProductTypeId { get; set; }
///
/// 目标机种编码。
///
public string TargetProductTypeCode { get; set; } = string.Empty;
///
/// 切换类型。
///
public ProductSwitchType SwitchType { get; set; }
///
/// 切换原因。
///
public string SwitchReason { get; set; } = string.Empty;
///
/// 切换人ID。
///
public Guid SwitchedByUserId { get; set; }
///
/// 切换人姓名。
///
public string SwitchedByName { get; set; } = string.Empty;
///
/// 切换人角色。
///
public string SwitchedByRole { get; set; } = string.Empty;
///
/// 切换时间(UTC)。
///
public DateTime SwitchedAtUtc { get; set; }
///
/// 是否强制切换。
///
public bool IsForced { get; set; }
///
/// 强制切换原因。
///
public string? ForcedReason { get; set; }
///
/// 审批人ID(强制切换时需要)。
///
public Guid? ApprovedByUserId { get; set; }
///
/// 审批人姓名。
///
public string? ApprovedByName { get; set; }
///
/// 审批时间(UTC)。
///
public DateTime? ApprovedAtUtc { get; set; }
///
/// 审批意见。
///
public string? ApprovalComment { get; set; }
///
/// 切换前状态。
///
public string? PreviousStateJson { get; set; }
///
/// 切换后状态。
///
public string? NewStateJson { get; set; }
///
/// 创建时间(UTC)。
///
public DateTime CreatedAtUtc { get; set; }
///
/// 创建人。
///
public string CreatedBy { get; set; } = string.Empty;
}
///
/// 机种切换类型枚举。
///
public enum ProductSwitchType
{
///
/// 正常切换。
///
Normal = 0,
///
/// 强制切换。
///
Forced = 1,
///
/// 紧急切换。
///
Emergency = 2,
///
/// 计划切换。
///
Planned = 3,
///
/// 回滚切换。
///
Rollback = 4
}