{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://seedtactics.com/schemas/flexplan", "title": "SeedTactic FlexPlan JSON", "type": "object", "oneOf": [{ "$ref": "#/$defs/FlexProject" }], "$defs": { "FlexPlan": { "type": "object", "required": [ "Parts", "LaborTeams", "CellEfficiency", "ExpectedCartTravelTime", "ExpectedRotarySwapTime" ], "properties": { "Parts": { "type": "array", "items": { "$ref": "#/$defs/FlexPart" } }, "LaborTeams": { "type": "array", "items": { "$ref": "#/$defs/FlexLaborTeam" } }, "Kanbans": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, "NumLoadStations": { "type": "integer", "format": "int32" }, "MachineNumbers": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "integer", "format": "int32" } } }, "MachineRouting": { "type": "array", "items": { "type": "string" } }, "CellEfficiency": { "type": "number", "format": "double" }, "ExpectedCartTravelTime": { "type": "string", "format": "time-span" }, "ExpectedRotarySwapTime": { "type": "string", "format": "time-span" }, "SeedtacticPlanningToken": { "type": "string" }, "OriginalMastModelFileName": { "type": "string" } } }, "FlexProject": { "allOf": [ { "$ref": "#/$defs/FlexPlan" }, { "type": "object", "properties": { "OrderSnapshots": { "type": "array", "items": { "$ref": "#/$defs/FlexOrderSnapshot" } }, "ForecastDemand": { "$ref": "#/$defs/FlexForecastDemand" }, "CostInputs": { "$ref": "#/$defs/FlexCostInputs" }, "AllocationAlgorithm": { "type": "string" } } } ] }, "FlexPart": { "type": "object", "required": ["Name", "Readiness", "Processes", "Wash"], "properties": { "Name": { "type": "string" }, "Readiness": { "$ref": "#/$defs/PartReadiness" }, "Processes": { "type": "array", "items": { "$ref": "#/$defs/FlexProcess" } }, "Wash": { "type": "boolean" }, "ExpectedWashTime": { "type": "string", "format": "time-span" }, "GroupColor": { "type": "string" } } }, "PartReadiness": { "type": "string", "enum": ["ProductionReady", "ProveOutOnly"] }, "FlexProcess": { "type": "object", "required": ["ProcessNumber", "Paths"], "properties": { "ProcessNumber": { "type": "integer", "format": "int32" }, "Paths": { "type": "array", "items": { "$ref": "#/$defs/FlexPath" } } } }, "FlexPath": { "type": "object", "required": [ "LoadStations", "ExpectedLoadTime", "Stops", "UnloadStations", "ExpectedUnloadTime", "Pallets", "Face", "QuantityOnFace" ], "properties": { "LoadStations": { "type": "array", "items": { "type": "integer", "format": "int32" } }, "ExpectedLoadTime": { "type": "string", "format": "time-span" }, "Stops": { "type": "array", "items": { "$ref": "#/$defs/FlexRouteStop" } }, "UnloadStations": { "type": "array", "items": { "type": "integer", "format": "int32" } }, "ExpectedUnloadTime": { "type": "string", "format": "time-span" }, "Pallets": { "type": "array", "items": { "type": "integer", "format": "int32" } }, "Fixture": { "type": "string" }, "Face": { "type": "integer", "format": "int32" }, "QuantityOnFace": { "type": "integer", "format": "int32" }, "InputQueue": { "type": "string" }, "OutputQueue": { "type": "string" }, "Casting": { "type": "string" }, "Inspections": { "type": "array", "items": { "$ref": "#/$defs/FlexInspection" } } } }, "FlexRouteStop": { "type": "object", "required": ["MachineGroup", "Program", "Machines"], "properties": { "MachineGroup": { "type": "string" }, "Program": { "type": "string" }, "Revision": { "type": "integer", "format": "int64" }, "Machines": { "type": "array", "items": { "type": "integer", "format": "int32" } }, "ExpectedCycleTime": { "type": "string", "format": "time-span" } } }, "FlexInspection": { "type": "object", "required": ["InspectionType", "CounterIdTemplate", "MaxVal"], "properties": { "InspectionType": { "type": "string" }, "CounterIdTemplate": { "type": "string" }, "MaxVal": { "type": "integer", "format": "int32" }, "TimeInterval": { "type": "string", "format": "time-span" }, "RandomFreq": { "type": "number", "format": "double" }, "ExpectedInspectionTime": { "type": "string", "format": "time-span" } } }, "FlexLaborTeam": { "type": "object", "required": ["TeamName", "NumberOfOperators", "LoadStations"], "properties": { "TeamName": { "type": "string" }, "NumberOfOperators": { "type": "integer", "format": "int32" }, "LoadStations": { "type": "array", "items": { "type": "integer", "format": "int32" } } } }, "FlexOrderSnapshot": { "type": "object", "required": ["SnapshotDate", "Description", "Orders"], "properties": { "SnapshotDate": { "type": "string", "format": "date-time" }, "Description": { "type": "string" }, "Orders": { "type": "array", "items": { "$ref": "#/$defs/FlexOrder" } } } }, "FlexOrder": { "type": "object", "required": ["Part", "Quantity", "Priority", "DueDate"], "properties": { "Part": { "type": "string" }, "Quantity": { "type": "integer", "format": "int32" }, "Priority": { "type": "integer", "format": "int32" }, "DueDate": { "type": "string", "format": "date-time" } } }, "FlexForecastDemand": { "type": "object", "required": ["Horizon", "Parts"], "properties": { "Horizon": { "$ref": "#/$defs/FlexForecastHorizon" }, "Parts": { "type": "object", "additionalProperties": { "$ref": "#/$defs/FlexForecastPartDemand" } } } }, "FlexForecastHorizon": { "type": "object", "required": ["HoursPerDay", "DaysPerWeek", "Length"], "properties": { "HoursPerDay": { "type": "integer", "format": "int32" }, "DaysPerWeek": { "type": "integer", "format": "int32" }, "Length": { "$ref": "#/$defs/FlexForecastHorizonLength" } } }, "FlexForecastHorizonLength": { "type": "string", "enum": ["FourWeeks", "TwentySixWeeks", "FiftyTwoWeeks"] }, "FlexForecastPartDemand": { "type": "object", "required": ["Quantity"], "properties": { "Quantity": { "type": "integer", "format": "int32" }, "Priority": { "type": "integer", "format": "int32" } } }, "FlexCostInputs": { "type": "object", "required": ["machineCostPerYear"], "properties": { "automationCostPerYear": { "type": "number", "format": "decimal" }, "laborCostPerYear": { "type": "number", "format": "decimal" }, "machineCostPerYear": { "type": "object", "additionalProperties": { "type": "number", "format": "decimal" } } } } } }