namespace WiDAL.DTOs; public enum WiStatus : byte { Draft=0, InReview=1, Approved=2, Published=3, Archived=4 } public enum ActivityType : byte { Cycle=0, Setup=1, Teardown=2, Cleaning=3, Inspection=4, FirstArticle=5, FirstLot=6, PMaintenance=7, CMaintenance=8, Safety=9, Changeover=10, Rework=11 } public enum TriggerEvent : byte { JobStart=0, PerUnit=1, BatchStart=2, JobEnd=3, EveryNUnits=4, EveryNHours=5, ModelChangeover=6, FirstUnitOfBatch=7, OnDemand=8, Manual=9 } public enum DisplayContext : byte { All=0, TwinMonitor=1, Tablet=2, Mobile=3, Kiosk=4 } public enum StepAdvanceMode : byte { Manual=0, BarcodeScan=1, TimerAuto=2, Spacebar=3, Configurable=4 } public enum WarningLevel : byte { None=0, Caution=1, Warning=2, Danger=3 } public enum ContentType : byte { RichText=0, Image=1, Video=2, PDF=3, Checklist=4, Warning=5, DecisionBranch=6, File=7, QRCode=8, DataTable=9 } public enum WiContainerType : byte { Single=0, TwoColumn=1, Banner=2, Accordion=3, Tab=4 } public enum ContentSource : byte { Inline=0, CMS=1, FileStore=2, ExternalURL=3 } public enum ExecStatus : byte { InProgress=0, Completed=1, Abandoned=2, FlaggedIssue=3 } public enum StepStatus : byte { Pending=0, InProgress=1, Completed=2, Skipped=3, Flagged=4 } public enum Enforcement : byte { Log=0, Warn=1, Block=2 } public enum FontScale : byte { Normal=0, Large=1, XLarge=2 } public enum DisplayMode : byte { SingleScreen=0, TwinMonitor=1, Tablet=2, Kiosk=3 } // Supplementary — workstation, line roster, staffing public enum WorkstationType : byte { Assembly=0, Smt=1, Inspection=2, Maintenance=3, Packaging=4, Testing=5, Kiosk=6, General=7 } public enum RosterType : byte { Planned=0, Actual=1 } public enum RosterStatus : byte { Draft=0, Confirmed=1, Closed=2 } public enum StaffingRole : byte { Operator=0, Inspector=1, Helper=2, Trainee=3 } // Why a resolve returned zero matches — filled in only on the zero-match path (see // WiAssignmentQB.DIAGNOSE_*, WiExecutionBLL.AnnotateMatches's caller). public enum WiResolveReasonCode : byte { NoAssignmentExistsForEntity = 0, // no MWIASSIGNMENT row matches these dimensions at all NoScheduleForTriggerEvent = 1, // a dimension+date match exists, but no active MWIACTIVITYSCHEDULE for this TriggerEvent OutsideEffectiveDateWindow = 2 // a dimension match exists, but every match is outside [EffectiveFrom,EffectiveTo] } // Distinguishes "genuinely nothing to check" from "checked, and it's trivially eligible" — // EvaluateEligibility previously returned IsEligible=true for both a WI with zero requirements // AND a WiId that doesn't exist at all, indistinguishably. public enum EligibilityEvaluationStatus : byte { Evaluated = 0, // WI exists and had requirements to check NoRequirements = 1, // WI exists but has no skill/competency requirements — trivially eligible WiNotFound = 2 // WiId does not exist for this tenant } // Generic (EntityType, EntityId) registry for attaching a WI to any business entity outside // manufacturing's Routing/WorkCenter/Workstation dimensions. Each consuming module registers // its own constant here — WI never needs to know that module's schema, only this ID. public static class WiEntityTypes { public const int None = -1; // wildcard / not applicable public const int IndentDetail = 1; // MM/Production — TINDENTDETAIL.INDENTDETAILID }