@seedtactics/insight-client 16.7.2 → 16.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +23 -29
  2. package/dist/assets/index-BGjv3-QV.js +388 -0
  3. package/dist/cell-status/current-status.js +4 -1
  4. package/dist/cell-status/estimated-cycle-times.js +2 -1
  5. package/dist/cell-status/inspections.js +1 -1
  6. package/dist/cell-status/loading.js +1 -1
  7. package/dist/cell-status/material-summary.js +4 -2
  8. package/dist/cell-status/names.js +1 -1
  9. package/dist/cell-status/rebookings.js +3 -1
  10. package/dist/cell-status/scheduled-jobs.js +1 -1
  11. package/dist/cell-status/sim-production.js +6 -2
  12. package/dist/cell-status/station-cycles.js +3 -1
  13. package/dist/cell-status/tool-replacements.js +21 -7
  14. package/dist/cell-status/tool-usage.js +7 -2
  15. package/dist/components/App.d.ts +2 -2
  16. package/dist/components/App.js +13 -5
  17. package/dist/components/AxisAndGrid.d.ts +6 -6
  18. package/dist/components/BarcodeScanning.d.ts +2 -2
  19. package/dist/components/BarcodeScanning.js +8 -2
  20. package/dist/components/ChartTooltip.d.ts +2 -2
  21. package/dist/components/ChooseMode.js +6 -1
  22. package/dist/components/ChooseOperator.d.ts +1 -1
  23. package/dist/components/ErrorsAndLoading.d.ts +3 -3
  24. package/dist/components/LoadingIcon.d.ts +1 -1
  25. package/dist/components/LoadingIcon.js +1 -1
  26. package/dist/components/LogEntry.d.ts +2 -2
  27. package/dist/components/LogEntry.js +10 -8
  28. package/dist/components/ManualSerialEntry.d.ts +2 -2
  29. package/dist/components/MonthSelect.d.ts +1 -1
  30. package/dist/components/MonthSelect.js +3 -1
  31. package/dist/components/Navigation.d.ts +2 -2
  32. package/dist/components/Navigation.js +1 -1
  33. package/dist/components/VerboseLogging.d.ts +1 -1
  34. package/dist/components/analysis/AnalysisSelectToolbar.d.ts +1 -1
  35. package/dist/components/analysis/BasketCycleCards.d.ts +1 -1
  36. package/dist/components/analysis/BasketCycleCards.js +1 -1
  37. package/dist/components/analysis/BufferChart.d.ts +1 -1
  38. package/dist/components/analysis/BufferChart.js +23 -4
  39. package/dist/components/analysis/CostPerPiece.d.ts +2 -2
  40. package/dist/components/analysis/CostPerPiece.js +2 -2
  41. package/dist/components/analysis/CycleChart.d.ts +1 -1
  42. package/dist/components/analysis/CycleChart.js +17 -4
  43. package/dist/components/analysis/DataTable.js +4 -2
  44. package/dist/components/analysis/EfficiencyPage.d.ts +2 -2
  45. package/dist/components/analysis/EfficiencyPage.js +1 -1
  46. package/dist/components/analysis/HeatChart.d.ts +1 -1
  47. package/dist/components/analysis/HeatChart.js +12 -3
  48. package/dist/components/analysis/InspectionDataTable.d.ts +1 -1
  49. package/dist/components/analysis/InspectionDataTable.js +6 -1
  50. package/dist/components/analysis/InspectionSankey.d.ts +1 -1
  51. package/dist/components/analysis/InspectionSankey.js +16 -6
  52. package/dist/components/analysis/PalletCycleCards.d.ts +1 -1
  53. package/dist/components/analysis/PalletCycleCards.js +5 -3
  54. package/dist/components/analysis/PartCycleCards.d.ts +2 -2
  55. package/dist/components/analysis/PartCycleCards.js +16 -6
  56. package/dist/components/analysis/QualityPage.d.ts +1 -1
  57. package/dist/components/analysis/ScheduleHistory.d.ts +1 -1
  58. package/dist/components/analysis/ScheduleHistory.js +1 -1
  59. package/dist/components/analysis/StationDataTable.d.ts +1 -1
  60. package/dist/components/analysis/ToolReplacements.d.ts +1 -1
  61. package/dist/components/analysis/ToolReplacements.js +7 -3
  62. package/dist/components/operations/AllMaterial.d.ts +1 -1
  63. package/dist/components/operations/ChartRangeEdit.d.ts +1 -1
  64. package/dist/components/operations/ChartRangeEdit.js +13 -4
  65. package/dist/components/operations/CloseoutReport.js +1 -1
  66. package/dist/components/operations/CompletedParts.js +2 -2
  67. package/dist/components/operations/CurrentWorkorders.js +2 -2
  68. package/dist/components/operations/Dashboard.d.ts +2 -2
  69. package/dist/components/operations/OEEChart.d.ts +4 -4
  70. package/dist/components/operations/OEEChart.js +7 -2
  71. package/dist/components/operations/Outliers.d.ts +1 -1
  72. package/dist/components/operations/Programs.js +9 -4
  73. package/dist/components/operations/Rebookings.d.ts +1 -1
  74. package/dist/components/operations/Rebookings.js +3 -1
  75. package/dist/components/operations/RecentCycleChart.d.ts +1 -1
  76. package/dist/components/operations/RecentCycleChart.js +2 -2
  77. package/dist/components/operations/RecentProduction.js +3 -3
  78. package/dist/components/operations/RecentSchedules.js +3 -1
  79. package/dist/components/operations/RecentStationCycles.d.ts +1 -1
  80. package/dist/components/operations/RecentStationCycles.js +1 -1
  81. package/dist/components/operations/ShiftSettings.d.ts +1 -1
  82. package/dist/components/operations/SimDayUsage.d.ts +1 -1
  83. package/dist/components/operations/ToolReport.js +17 -6
  84. package/dist/components/operations/WorkorderGantt.d.ts +1 -1
  85. package/dist/components/quality/QualityMaterial.d.ts +2 -2
  86. package/dist/components/quality/QualityMaterial.js +1 -1
  87. package/dist/components/quality/QualityPaths.d.ts +1 -1
  88. package/dist/components/quality/RecentFailedInspections.d.ts +1 -1
  89. package/dist/components/routes.d.ts +1 -1
  90. package/dist/components/routes.js +1 -1
  91. package/dist/components/station-monitor/BulkRawMaterial.d.ts +2 -2
  92. package/dist/components/station-monitor/BulkRawMaterial.js +11 -5
  93. package/dist/components/station-monitor/Closeout.js +6 -2
  94. package/dist/components/station-monitor/Inspection.js +3 -1
  95. package/dist/components/station-monitor/InvalidateCycle.d.ts +3 -3
  96. package/dist/components/station-monitor/InvalidateCycle.js +10 -3
  97. package/dist/components/station-monitor/JobDetails.js +4 -2
  98. package/dist/components/station-monitor/LoadStation.d.ts +1 -1
  99. package/dist/components/station-monitor/LoadStation.js +6 -3
  100. package/dist/components/station-monitor/Material.d.ts +10 -10
  101. package/dist/components/station-monitor/Material.js +28 -20
  102. package/dist/components/station-monitor/Material.test.js +1 -1
  103. package/dist/components/station-monitor/MoveMaterialArrows.d.ts +2 -2
  104. package/dist/components/station-monitor/PrintedLabel.d.ts +3 -3
  105. package/dist/components/station-monitor/PrintedLabel.js +9 -4
  106. package/dist/components/station-monitor/QuarantineButton.d.ts +1 -1
  107. package/dist/components/station-monitor/QuarantineButton.js +4 -2
  108. package/dist/components/station-monitor/Queues.d.ts +2 -2
  109. package/dist/components/station-monitor/Queues.js +6 -4
  110. package/dist/components/station-monitor/QueuesAddMaterial.d.ts +3 -3
  111. package/dist/components/station-monitor/QueuesAddMaterial.js +20 -7
  112. package/dist/components/station-monitor/SelectInspType.d.ts +2 -2
  113. package/dist/components/station-monitor/SelectWorkorder.d.ts +1 -1
  114. package/dist/components/station-monitor/StationToolbar.d.ts +1 -1
  115. package/dist/components/station-monitor/StationToolbar.js +13 -3
  116. package/dist/components/station-monitor/SystemOverview.d.ts +4 -4
  117. package/dist/components/station-monitor/SystemOverview.js +36 -16
  118. package/dist/components/station-monitor/Whiteboard.d.ts +1 -1
  119. package/dist/data/all-material-bins.js +2 -1
  120. package/dist/data/cost-per-piece.js +3 -1
  121. package/dist/data/move-arrows.js +3 -1
  122. package/dist/data/part-summary.js +1 -1
  123. package/dist/data/results.cycles.js +13 -4
  124. package/dist/data/tools-programs.js +3 -2
  125. package/dist/index.html +1 -1
  126. package/dist/network/api.d.ts +18 -0
  127. package/dist/network/api.js +502 -371
  128. package/dist/util/chart-colors.js +12 -1
  129. package/docs/client-efficiency.md +226 -263
  130. package/docs/client-engineering.md +27 -28
  131. package/docs/client-launch.md +32 -33
  132. package/docs/client-operations.md +50 -53
  133. package/docs/client-quality.md +39 -43
  134. package/docs/client-sales.md +36 -40
  135. package/docs/client-scanners.md +27 -27
  136. package/docs/client-station-monitor.md +86 -96
  137. package/docs/client-tools-programs.md +47 -44
  138. package/docs/improve-fms.md +73 -78
  139. package/docs/makino.md +21 -25
  140. package/docs/material-quarantine.md +50 -64
  141. package/docs/material-tracking.md +162 -195
  142. package/docs/mazak.md +78 -91
  143. package/docs/niigata.md +145 -168
  144. package/docs/operator-procedures.md +72 -76
  145. package/docs/part-instructions.md +36 -36
  146. package/docs/security.md +87 -81
  147. package/docs/server-config.md +36 -45
  148. package/docs/server-errors.md +21 -22
  149. package/package.json +25 -24
  150. package/dist/assets/index-BwbaiELK.js +0 -364
@@ -2,105 +2,101 @@
2
2
  title: Load/Unload Procedures
3
3
  nav: Procedures > Operator Load/Unload
4
4
  description: >-
5
- Implement continuous improvement of a flexible machining system by reviewing
6
- targeted metrics which expose cell efficiency and cost per piece.
5
+ Implement continuous improvement of a flexible machining system by reviewing targeted metrics
6
+ which expose cell efficiency and cost per piece.
7
7
  ---
8
8
 
9
9
  # Load/Unload Procedures
10
10
 
11
- FMS Insight provides [targeted pages](client-station-monitor) for operators on the factory floor:
12
- a page for each load station which shows the material to load or unload, a page for each inspection stand
13
- showing details about the material to be inspected, a page for the wash station, and finally a page
14
- for in-process material queue management. These pages use the [whiteboard metaphor](material-tracking)
15
- for material tracking. We suggest that each station has a dedicated display or tablet with the relevant page
16
- bookmarked or made the homepage; these pages are designed to work on a touchscreen. In addition, each station
17
- should have an attached barcode scanner.
18
-
19
- FMS Insight's load station page will display what the cell controller
20
- is expecting to happen at the load station. Specifically, the page will display the material
21
- to load, the material to unload, and the material to transfer between faces (if the pallet has
22
- multiple faces). If the operator performs all the tasks as specified, the operator presses
23
- the load button to signal to the cell controller that the load is complete. FMS Insight monitors
24
- the cell controller and will update the page.
11
+ FMS Insight provides [targeted pages](client-station-monitor) for operators on the factory floor: a
12
+ page for each load station which shows the material to load or unload, a page for each inspection
13
+ stand showing details about the material to be inspected, a page for the wash station, and finally a
14
+ page for in-process material queue management. These pages use the
15
+ [whiteboard metaphor](material-tracking) for material tracking. We suggest that each station has a
16
+ dedicated display or tablet with the relevant page bookmarked or made the homepage; these pages are
17
+ designed to work on a touchscreen. In addition, each station should have an attached barcode
18
+ scanner.
19
+
20
+ FMS Insight's load station page will display what the cell controller is expecting to happen at the
21
+ load station. Specifically, the page will display the material to load, the material to unload, and
22
+ the material to transfer between faces (if the pallet has multiple faces). If the operator performs
23
+ all the tasks as specified, the operator presses the load button to signal to the cell controller
24
+ that the load is complete. FMS Insight monitors the cell controller and will update the page.
25
25
 
26
26
  ![Screenshot of Load Station screen](screenshots/insight-load-station.png)
27
27
 
28
28
  If queues are used for managing material, the load station screen also can show the queues on the
29
29
  right hand side. The specific material that is marked as loaded is the first material in the queue
30
30
  which matches the job and route details. The material in the queue can be re-ordered by dragging,
31
- which allows the operator to control which serial is loaded onto the pallet. Note that because
32
- the cell controller has already assigned a job to the pallet at the load station, the material
33
- at the front of the queue will not always be the material that is loaded; the first material which
34
- matches the job is loaded.
31
+ which allows the operator to control which serial is loaded onto the pallet. Note that because the
32
+ cell controller has already assigned a job to the pallet at the load station, the material at the
33
+ front of the queue will not always be the material that is loaded; the first material which matches
34
+ the job is loaded.
35
35
 
36
36
  ## Introducing Raw Material
37
37
 
38
- The jobs control how raw material is introduced. If no raw
39
- material queue is set on the job, the cell controller will assume that raw material is
40
- always available and bring a pallet to be loaded as soon as it is empty. FMS Insight is watching
41
- the cell controller and will create new material once the load is complete.
38
+ The jobs control how raw material is introduced. If no raw material queue is set on the job, the
39
+ cell controller will assume that raw material is always available and bring a pallet to be loaded as
40
+ soon as it is empty. FMS Insight is watching the cell controller and will create new material once
41
+ the load is complete.
42
42
 
43
- Alternatively, the job can be configured with an input queue on the first process. In this case,
44
- the contents of the queue control when the cell controller will bring a pallet to the load
45
- station to be loaded. The Queues webpage shows the contents of the queue and allows the operator
46
- to scan or enter new material into the queue. The page also shows a table of scheduled jobs and
47
- shows the quantity of parts that still must be loaded.
43
+ Alternatively, the job can be configured with an input queue on the first process. In this case, the
44
+ contents of the queue control when the cell controller will bring a pallet to the load station to be
45
+ loaded. The Queues webpage shows the contents of the queue and allows the operator to scan or enter
46
+ new material into the queue. The page also shows a table of scheduled jobs and shows the quantity of
47
+ parts that still must be loaded.
48
48
 
49
49
  ![Screenshot of queues page](screenshots/insight-queues-jobs-table.png)
50
50
 
51
- The operator should physically bring the casting/raw material to the cell and place it in
52
- a designated area nearby the load station. Once the material has arrived, the operator
53
- can click a button on the queues webpage (or scan a barcode) to add the material to the queue.
54
- FMS Insight supports a variety of techniques controlled by [config settings](server-config):
55
- adding raw material assigned to a specific job, adding raw material with or without a serial,
56
- or bulk adding a large quantity of material.
51
+ The operator should physically bring the casting/raw material to the cell and place it in a
52
+ designated area nearby the load station. Once the material has arrived, the operator can click a
53
+ button on the queues webpage (or scan a barcode) to add the material to the queue. FMS Insight
54
+ supports a variety of techniques controlled by [config settings](server-config): adding raw material
55
+ assigned to a specific job, adding raw material with or without a serial, or bulk adding a large
56
+ quantity of material.
57
57
 
58
- Each physical location on the shop floor which holds material should correspond to a queue
59
- in FMS Insight. In addition, each queue should have a dedicated display or tablet mounted
60
- on the shop floor right next to the queue. This display should have the queues page
61
- bookmarked or set as the homepage and only show the queues page. This allows the operators
62
- and supervisors to quickly check at a glance that the material on the shop floor matches
63
- the material FMS Insight records as in the queue.
58
+ Each physical location on the shop floor which holds material should correspond to a queue in FMS
59
+ Insight. In addition, each queue should have a dedicated display or tablet mounted on the shop floor
60
+ right next to the queue. This display should have the queues page bookmarked or set as the homepage
61
+ and only show the queues page. This allows the operators and supervisors to quickly check at a
62
+ glance that the material on the shop floor matches the material FMS Insight records as in the queue.
64
63
 
65
64
  ## Quarantine Material
66
65
 
67
66
  FMS Insight optionally supports the ability to [quarantine material](material-quarantine).
68
- Quarantined material is material that is temporarily removed from the cell for re-machining,
69
- more detailed inspection, or some other rework. Material can be quarantined on the queues
70
- page by opening the material dialog and clicking a button. This moves the material to
71
- the quarantine queue where it is visible on the supervisor's material page.
67
+ Quarantined material is material that is temporarily removed from the cell for re-machining, more
68
+ detailed inspection, or some other rework. Material can be quarantined on the queues page by opening
69
+ the material dialog and clicking a button. This moves the material to the quarantine queue where it
70
+ is visible on the supervisor's material page.
72
71
 
73
- Once the material is ready to be re-introduced into the cell, the operator should bring it
74
- back to the shop floor. Once the material has arrived, the operator can click a button on
75
- the queues webpage (or scan the barcode) to add the material into the queue. Once it is
76
- back in the queue, the cell controller will activate a pallet to load the material.
72
+ Once the material is ready to be re-introduced into the cell, the operator should bring it back to
73
+ the shop floor. Once the material has arrived, the operator can click a button on the queues webpage
74
+ (or scan the barcode) to add the material into the queue. Once it is back in the queue, the cell
75
+ controller will activate a pallet to load the material.
77
76
 
78
77
  ## Recovering From Misload
79
78
 
80
- The load station page displays the load, unload, or reclamp steps that the cell
81
- controller is expecting the operator to preform. When the operator presses the ready button,
82
- both the cell controller and FMS Insight (which is watching the cell controller) assumes
83
- that these instructions took place. FMS Insight will take the material from the input queue
84
- and record it as loaded onto the pallet. The cell controller will begin moving the pallet
85
- to the machine.
86
-
87
- If for whatever reason the load instructions can not be followed, ideally the operator should
88
- edit the cell controller **before** the load is completed. FMS Insight will adjust itself
89
- based on whatever the cell controller expects to happen and only at the time that the load
90
- is completed is anything finalized and recorded.
91
-
92
- If the load button is pressed, the first step is to adjust the status in the cell controller
93
- to match what actually happened. FMS Insight is watching the cell controller and when
94
- the pallet status is adjusted, FMS Insight will move any material that was thought to
95
- be loaded on the pallet to the quarantine queue. That material can then be re-introduced
96
- back into the queue so that the queue in FMS Insight matches the material on the shop floor.
97
- In addition, FMS Insight allows the ability to invalidate the inadvertent load events that
98
- were created.
99
-
100
- Finally, in certain situations depending on the specific configuration of the jobs and queues,
101
- FMS Insight supports a serial swap. FMS Insight assumes the material that is loaded is the
102
- first material in the queue which matches the job the cell controller expects.
103
- If the serial actually loaded is different but the job and details match, the supervisor can
104
- swap the two serials on the supervisor's material page. This is a data-only change and no
105
- change is made to the cell controller. If a swap cannot be performed, the material must be
106
- quarantined and invalidated as described above.
79
+ The load station page displays the load, unload, or reclamp steps that the cell controller is
80
+ expecting the operator to preform. When the operator presses the ready button, both the cell
81
+ controller and FMS Insight (which is watching the cell controller) assumes that these instructions
82
+ took place. FMS Insight will take the material from the input queue and record it as loaded onto the
83
+ pallet. The cell controller will begin moving the pallet to the machine.
84
+
85
+ If for whatever reason the load instructions can not be followed, ideally the operator should edit
86
+ the cell controller **before** the load is completed. FMS Insight will adjust itself based on
87
+ whatever the cell controller expects to happen and only at the time that the load is completed is
88
+ anything finalized and recorded.
89
+
90
+ If the load button is pressed, the first step is to adjust the status in the cell controller to
91
+ match what actually happened. FMS Insight is watching the cell controller and when the pallet status
92
+ is adjusted, FMS Insight will move any material that was thought to be loaded on the pallet to the
93
+ quarantine queue. That material can then be re-introduced back into the queue so that the queue in
94
+ FMS Insight matches the material on the shop floor. In addition, FMS Insight allows the ability to
95
+ invalidate the inadvertent load events that were created.
96
+
97
+ Finally, in certain situations depending on the specific configuration of the jobs and queues, FMS
98
+ Insight supports a serial swap. FMS Insight assumes the material that is loaded is the first
99
+ material in the queue which matches the job the cell controller expects. If the serial actually
100
+ loaded is different but the job and details match, the supervisor can swap the two serials on the
101
+ supervisor's material page. This is a data-only change and no change is made to the cell controller.
102
+ If a swap cannot be performed, the material must be quarantined and invalidated as described above.
@@ -2,25 +2,23 @@
2
2
  title: Operator Instructions
3
3
  nav: FMS Insight Server > Instructions
4
4
  description: >-
5
- The FMS Insight server can be configured to display arbitrary load, unload, wash
6
- and inspection instructions to the operator.
5
+ The FMS Insight server can be configured to display arbitrary load, unload, wash and inspection
6
+ instructions to the operator.
7
7
  ---
8
8
 
9
9
  # FMS Insight Operator Instructions
10
10
 
11
- FMS Insight can display load, wash, and inspection instructions to the operator.
12
- The instructions are documents (typically PDF files) stored on the FMS Insight server,
13
- and when the user clicks a button in the client the instructions are shown in a new
14
- browser tab.
11
+ FMS Insight can display load, wash, and inspection instructions to the operator. The instructions
12
+ are documents (typically PDF files) stored on the FMS Insight server, and when the user clicks a
13
+ button in the client the instructions are shown in a new browser tab.
15
14
 
16
15
  ### Configuration
17
16
 
18
- The instruction files are kept on the FMS Insight server in a single directory. The
19
- directory is configured via a [configuration option](server-config) `InstructionFilePath`
20
- within the `FMS` section. Once configured, this directory should be filled with files
21
- that can be displayed in a browser (PDF is a good choice). When the user requests an
22
- instruction file, the FMS Insight server will search the filename of all files inside this
23
- directory
17
+ The instruction files are kept on the FMS Insight server in a single directory. The directory is
18
+ configured via a [configuration option](server-config) `InstructionFilePath` within the `FMS`
19
+ section. Once configured, this directory should be filled with files that can be displayed in a
20
+ browser (PDF is a good choice). When the user requests an instruction file, the FMS Insight server
21
+ will search the filename of all files inside this directory
24
22
 
25
23
  ### Instruction Types
26
24
 
@@ -29,35 +27,37 @@ search for a different file depending on the page on the
29
27
  [station monitor screen](client-station-monitor) and the currently selected part. To create
30
28
  instruction files for all possibilities, you should create files as follows:
31
29
 
32
- - For each part, create a file with the partname and `load` in the filename. Inside this
33
- file, add pictures and text to explain how to load and optionally unload the part from the pallet.
34
- For example, for a part named `ABC123`, you could create a file `ABC123-load.pdf` which contains
35
- the instructions. When the user is on the Load Station page in FMS Insight, FMS Insight
36
- will search for a file with the partname and `load` in the filename, find `ABC123-load.pdf`,
37
- and display it to the user.
30
+ - For each part, create a file with the partname and `load` in the filename. Inside this file, add
31
+ pictures and text to explain how to load and optionally unload the part from the pallet. For
32
+ example, for a part named `ABC123`, you could create a file `ABC123-load.pdf` which contains the
33
+ instructions. When the user is on the Load Station page in FMS Insight, FMS Insight will search
34
+ for a file with the partname and `load` in the filename, find `ABC123-load.pdf`, and display it to
35
+ the user.
38
36
 
39
- - For each part, optionally create a file with the partname and `unload` in the filename. If no
40
- file exists with the partname and `unload` in the filename, FMS Insight will fall back to searching
41
- for a file with the partname and `load` in the filename. Thus you could just create a single file
37
+ - For each part, optionally create a file with the partname and `unload` in the filename. If no file
38
+ exists with the partname and `unload` in the filename, FMS Insight will fall back to searching for
39
+ a file with the partname and `load` in the filename. Thus you could just create a single file
42
40
  (e.g. `ABC123-load.pdf`) which contains both the load and unload instructions, or you could create
43
41
  two separate files (e.g. `ABC123-load.pdf` and `ABC123-unload.pdf`).
44
42
 
45
- - For each part, create a file with the partname and `wash` in the filename. Inside this
46
- file, add pictures and text to explain how to wash and perhaps other tasks at the wash station.
47
- For example, for a part named `ABC123`, you could create a file `ABC123-wash.pdf`.
48
- Similar to before, when the user is on the Wash page in FMS Insight, this instruction file
49
- will be displayed.
50
-
51
- - For each part and each inspection type, create a file with the partname and the inspection type
52
- in the filename. For example, for a part named `ABC123` and inspection types `CMM` and `3DScan`,
53
- you should create two files: `ABC123-CMM.pdf` and `ABC123-3DScan.pdf`. Each file should contain
54
- pictures and text to explain how to perform the inspection on this part. When the user is on
55
- the Inspection page, FMS Insight will find the file based on the currently selected part and
43
+ - For each part, create a file with the partname and `wash` in the filename. Inside this file, add
44
+ pictures and text to explain how to wash and perhaps other tasks at the wash station. For example,
45
+ for a part named `ABC123`, you could create a file `ABC123-wash.pdf`. Similar to before, when the
46
+ user is on the Wash page in FMS Insight, this instruction file will be displayed.
47
+
48
+ - For each part and each inspection type, create a file with the partname and the inspection type in
49
+ the filename. For example, for a part named `ABC123` and inspection types `CMM` and `3DScan`, you
50
+ should create two files: `ABC123-CMM.pdf` and `ABC123-3DScan.pdf`. Each file should contain
51
+ pictures and text to explain how to perform the inspection on this part. When the user is on the
52
+ Inspection page, FMS Insight will find the file based on the currently selected part and
56
53
  inspection type.
57
54
 
58
55
  ### Opening the instructions
59
56
 
60
- To open the instructions, click on any material card in the [station monitor page](client-station-monitor). When clicked, a dialog will appear with details about the
61
- material. On the bottom of the dialog, there is a button "Instructions". When clicked,
62
- FMS Insight will search for a file matching the current partname and page (load, wash, or inspection) as described above. The instruction file will then be displayed in a new tab. When subsequent instructions are requested, the tab will be re-used. Thus the tab does not need to be
63
- manually closed after each operation.
57
+ To open the instructions, click on any material card in the
58
+ [station monitor page](client-station-monitor). When clicked, a dialog will appear with details
59
+ about the material. On the bottom of the dialog, there is a button "Instructions". When clicked, FMS
60
+ Insight will search for a file matching the current partname and page (load, wash, or inspection) as
61
+ described above. The instruction file will then be displayed in a new tab. When subsequent
62
+ instructions are requested, the tab will be re-used. Thus the tab does not need to be manually
63
+ closed after each operation.
package/docs/security.md CHANGED
@@ -2,82 +2,82 @@
2
2
  title: FMS Insight Security
3
3
  nav: FMS Insight Server > Security
4
4
  description: >-
5
- The FMS Insight server runs on the cell controller and uses TLS and OpenID
6
- Connect.
5
+ The FMS Insight server runs on the cell controller and uses TLS and OpenID Connect.
7
6
  ---
8
7
 
9
8
  # FMS Insight Security
10
9
 
11
- FMS Insight implements a JSON+REST-based HTTP server and runs on the cell
12
- controller. By default, FMS Insight listens on port 5000 with no TLS and no
13
- authentication; any computer which can connect to the port can view data and
14
- download jobs.
10
+ FMS Insight implements a JSON+REST-based HTTP server and runs on the cell controller. By default,
11
+ FMS Insight listens on port 5000 with no TLS and no authentication; any computer which can connect
12
+ to the port can view data and download jobs.
15
13
 
16
14
  To implement security, we recommend one of two possible variants.
17
15
 
18
16
  - FMS Insight can be configured to require TLS and require OpenID connect authentication for
19
- single-sign-on. This requires the cell controller computer (running FMS Insight) to be directly connected
20
- to the existing factory network, but a firewall can be used to only allow access on the specific
21
- port running FMS Insight.
17
+ single-sign-on. This requires the cell controller computer (running FMS Insight) to be directly
18
+ connected to the existing factory network, but a firewall can be used to only allow access on the
19
+ specific port running FMS Insight.
22
20
  - A cell-local private network containing the machines, cell-controller, and FMS Insight is created.
23
21
  A reverse HTTP proxy connects the cell-local private network to the factory network.
24
22
 
25
23
  ## FMS Insight HTTPS, Authentication, and Firewall
26
24
 
27
- In this design, FMS Insight is configured to require TLS/HTTPS and implements
28
- authentication using OpenID Connect. We have tested with AzureAD, Okta, and
29
- Keycloak, but any OpenID/OAuth2 compliant identity provider should work. An
30
- external firewall is placed between the cell-controller and the factory
31
- network and is configured to only allow traffic on the FMS Insight port.
25
+ In this design, FMS Insight is configured to require TLS/HTTPS and implements authentication using
26
+ OpenID Connect. We have tested with AzureAD, Okta, and Keycloak, but any OpenID/OAuth2 compliant
27
+ identity provider should work. An external firewall is placed between the cell-controller and the
28
+ factory network and is configured to only allow traffic on the FMS Insight port.
32
29
 
33
- To enable HTTPS, a server certificate must be created and stored in a pfx file. This
34
- should be signed by the enterprise domain, but could also be a self-signed certificate.
35
- Once created, within the FMS Insight [config.ini](server-config) file, enable the
36
- `TLSCertFile` setting with the path to the certificate.
30
+ To enable HTTPS, a server certificate must be created and stored in a pfx file. This should be
31
+ signed by the enterprise domain, but could also be a self-signed certificate. Once created, within
32
+ the FMS Insight [config.ini](server-config) file, enable the `TLSCertFile` setting with the path to
33
+ the certificate.
37
34
 
38
- Within your identity provider, create an application for FMS Insight and create a client.
39
- The client must require implicit grant flow with no client secret. The Redirect URI for the client
40
- must be set to the common name from the TLS certificate with a root path.
41
- Finally, most identity providers allow the administrator to restrict an
42
- application to a set of users (e.g. Azure Active Directory allows assigning specific users
43
- or groups to the application).
35
+ Within your identity provider, create an application for FMS Insight and create a client. The client
36
+ must require implicit grant flow with no client secret. The Redirect URI for the client must be set
37
+ to the common name from the TLS certificate with a root path. Finally, most identity providers allow
38
+ the administrator to restrict an application to a set of users (e.g. Azure Active Directory allows
39
+ assigning specific users or groups to the application).
44
40
 
45
41
  Once the client has been created, there are four settings in the [config.ini](server-config).
46
42
 
47
- - `OpenIDConnectAuthority`: This setting is the path to the well-known configuration document for the identity provider.
48
- For example, for AzureAD, this is `https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
49
- - `OpenIDConnectClientID`: This should be the ClientID for the implicit grant flow client. This ClientID is passed
50
- to the FMS Insight webpage which then performs the implicit flow grant to obtain a token.
43
+ - `OpenIDConnectAuthority`: This setting is the path to the well-known configuration document for
44
+ the identity provider. For example, for AzureAD, this is
45
+ `https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
46
+ - `OpenIDConnectClientID`: This should be the ClientID for the implicit grant flow client. This
47
+ ClientID is passed to the FMS Insight webpage which then performs the implicit flow grant to
48
+ obtain a token.
51
49
  - `AuthAuthority`: This must be identical to the `OpenIDConnectAuthority`.
52
- - `AuthTokenAudiences`: This is a list of audiences which the server uses to validate the identity tokens. In almost all
53
- cases, the audience matches the ClientID. Multiple audiences are separated by semi-colons.
50
+ - `AuthTokenAudiences`: This is a list of audiences which the server uses to validate the identity
51
+ tokens. In almost all cases, the audience matches the ClientID. Multiple audiences are separated
52
+ by semi-colons.
54
53
 
55
54
  ## Cell-Local Private Network With Proxy
56
55
 
57
- In this design, a cell-local private network is created with a proxy computer to the factory network.
58
- The design is based on a networking DMZ-setup.
56
+ In this design, a cell-local private network is created with a proxy computer to the factory
57
+ network. The design is based on a networking DMZ-setup.
59
58
 
60
- - The machines and cell controller are placed on a private network. This network has no DNS,
61
- no DHCP, and no route or access to any other network. IP Addresses are statically assigned.
59
+ - The machines and cell controller are placed on a private network. This network has no DNS, no
60
+ DHCP, and no route or access to any other network. IP Addresses are statically assigned.
62
61
 
63
62
  - The cell controller computer runs FMS Insight with no TLS, listening on port 5000.
64
63
 
65
- - The factory provides a computer with two network cards. One network card connects
66
- to the cell-local private network and is statically assigned an IP address.
67
- The second network card connects to the existing factory network. This computer can join the domain,
68
- enable Windows Updates, and use all the typical configuration of the Factory's IT.
69
- This computer should deny ALL network traffic to be routed between the cell-local network and the
70
- factory network. All communication is proxied (a networking DMZ setup). The factory provides this
71
- computer, allowing you to use your preferred supplier and configuration.
64
+ - The factory provides a computer with two network cards. One network card connects to the
65
+ cell-local private network and is statically assigned an IP address. The second network card
66
+ connects to the existing factory network. This computer can join the domain, enable Windows
67
+ Updates, and use all the typical configuration of the Factory's IT. This computer should deny ALL
68
+ network traffic to be routed between the cell-local network and the factory network. All
69
+ communication is proxied (a networking DMZ setup). The factory provides this computer, allowing
70
+ you to use your preferred supplier and configuration.
72
71
 
73
- - The proxy computer runs a reverse-HTTP-proxy. This can be Nginx, IIS, or something else. We
74
- also provide the source code for a small C# reverse-proxy server built using ASP.NET Core and Kestrel
75
- (~250 lines of code) which you can use if you wish it. The reverse-proxy implements TLS and requires connections over HTTPS.
72
+ - The proxy computer runs a reverse-HTTP-proxy. This can be Nginx, IIS, or something else. We also
73
+ provide the source code for a small C# reverse-proxy server built using ASP.NET Core and Kestrel
74
+ (~250 lines of code) which you can use if you wish it. The reverse-proxy implements TLS and
75
+ requires connections over HTTPS.
76
76
 
77
- - Either the reverse-proxy or FMS Insight itself is configured to require OpenID Connect/OAuth2 Authentication.
78
- This allows single-sign-on and only authenticated users will then be able to view data and create jobs.
79
- FMS Insight has been tested with AzureAD, Okta, and Keycloak, but any OpenID Connect compliant
80
- identity provider should work.
77
+ - Either the reverse-proxy or FMS Insight itself is configured to require OpenID Connect/OAuth2
78
+ Authentication. This allows single-sign-on and only authenticated users will then be able to view
79
+ data and create jobs. FMS Insight has been tested with AzureAD, Okta, and Keycloak, but any OpenID
80
+ Connect compliant identity provider should work.
81
81
 
82
82
  - Software running on the factory network connects and authenticates with the reverse-proxy, which
83
83
  passes the requests along to FMS Insight running on the cell controller.
@@ -85,47 +85,53 @@ The design is based on a networking DMZ-setup.
85
85
  #### Reverse-Proxy Implemented Authentication
86
86
 
87
87
  One option for authentication is for the reverse-proxy to require authentication. The reverse-proxy
88
- should require OpenID Connect authentication for all routes starting with `/api` except for `/api/v1/fms/fms-information`.
89
- Our small C# reverse-proxy implements OpenID Connect authentication and has been tested with AzureAD, Okta,
90
- and Keycloak. Alternatively, Nginx+ or IIS can be configured to require authentication.
88
+ should require OpenID Connect authentication for all routes starting with `/api` except for
89
+ `/api/v1/fms/fms-information`. Our small C# reverse-proxy implements OpenID Connect authentication
90
+ and has been tested with AzureAD, Okta, and Keycloak. Alternatively, Nginx+ or IIS can be configured
91
+ to require authentication.
91
92
 
92
93
  In this scenario, two settings are needed in FMS Insight's [config.ini](server-config):
93
94
 
94
- - `OpenIDConnectAuthority`: This setting is the path to the well-known configuration document for the identity provider.
95
- For example, for AzureAD, this is `https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
96
- - `OpenIDConnectClientID`: This is the ClientID for an implicit grant flow client. This ClientID is passed
97
- to the FMS Insight webpage which then performs the implicit flow grant to authenticate the user and obtain a token.
95
+ - `OpenIDConnectAuthority`: This setting is the path to the well-known configuration document for
96
+ the identity provider. For example, for AzureAD, this is
97
+ `https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
98
+ - `OpenIDConnectClientID`: This is the ClientID for an implicit grant flow client. This ClientID is
99
+ passed to the FMS Insight webpage which then performs the implicit flow grant to authenticate the
100
+ user and obtain a token.
98
101
 
99
- These settings are just returned to clients in the `/api/v1/fms/fms-information` route, FMS Insight itself does not
100
- check the request for a proper JWT token.
102
+ These settings are just returned to clients in the `/api/v1/fms/fms-information` route, FMS Insight
103
+ itself does not check the request for a proper JWT token.
101
104
 
102
- Next, the reverse-proxy is configured with TLS certificates and authentication. For our small C# reverse-proxy,
103
- this is done in the appsettings.json file.
105
+ Next, the reverse-proxy is configured with TLS certificates and authentication. For our small C#
106
+ reverse-proxy, this is done in the appsettings.json file.
104
107
 
105
108
  #### FMS Insight Implemented Authentication
106
109
 
107
- If the reverse-proxy does not implement authentication, FMS Insight itself can verify the tokens. The main challenge
108
- is that the FMS Insight server requires access to the OpenID Connect Authority well-known configuration document
109
- to be able to obtain the signing keys. For example, in AzureAD, the well-known document
110
- is `https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration` where tenant is your tenant GUID.
111
- This document is required to be accessible by the FMS Insight server to obtain the rotating signing keys of the
112
- identity provider. Since FMS Insight is running on the cell-controller on the cell-local private network and the proxy
113
- computer denies all routed traffic, FMS Insight has no direct access to the well-known configuration document.
114
-
115
- Thus, the reverse-proxy must also proxy the well-known configuration document. That is, the reverse-proxy is
116
- configured to first proxy all connections from the factory network to FMS Insight. In addition, the reverse-proxy
117
- is then also configured to proxy the request from FMS Insight to the OpenID Connect configuration document to
118
- the real identity provider.
110
+ If the reverse-proxy does not implement authentication, FMS Insight itself can verify the tokens.
111
+ The main challenge is that the FMS Insight server requires access to the OpenID Connect Authority
112
+ well-known configuration document to be able to obtain the signing keys. For example, in AzureAD,
113
+ the well-known document is
114
+ `https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration` where tenant is
115
+ your tenant GUID. This document is required to be accessible by the FMS Insight server to obtain the
116
+ rotating signing keys of the identity provider. Since FMS Insight is running on the cell-controller
117
+ on the cell-local private network and the proxy computer denies all routed traffic, FMS Insight has
118
+ no direct access to the well-known configuration document.
119
+
120
+ Thus, the reverse-proxy must also proxy the well-known configuration document. That is, the
121
+ reverse-proxy is configured to first proxy all connections from the factory network to FMS Insight.
122
+ In addition, the reverse-proxy is then also configured to proxy the request from FMS Insight to the
123
+ OpenID Connect configuration document to the real identity provider.
119
124
 
120
125
  The configuration in FMS Insight's [config.ini](server-config) are as follows:
121
126
 
122
- - `OpenIDConnectAuthority`: The real identity-provided authority URL.
123
- For example, for AzureAD, this is `https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
124
- - `OpenIDConnectClientID`: This is the ClientID for an implicit grant flow client. This ClientID is passed
125
- to the FMS Insight webpage which then performs the implicit flow grant to authenticate the user and obtain a token.
126
- - `AuthAuthority`: The path to the reverse-proxy to obtain the OpenID configuration. For example, it could be
127
- `http://{reverse-proxy-ip-address}/openid-authority`. The reverse-proxy should then be configured to proxy all
128
- paths starting with `/openid-authority/*` to the real identity provider.
129
- - `AuthTokenAudiences`: This is a list of audiences which the server uses to validate the identity tokens. In almost all
130
- cases, the audience matches the ClientID. Multiple audiences are separated by semi-colons. Thus this setting should
131
- be all the ClientIDs created separated by semi-colons.
127
+ - `OpenIDConnectAuthority`: The real identity-provided authority URL. For example, for AzureAD, this
128
+ is `https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
129
+ - `OpenIDConnectClientID`: This is the ClientID for an implicit grant flow client. This ClientID is
130
+ passed to the FMS Insight webpage which then performs the implicit flow grant to authenticate the
131
+ user and obtain a token.
132
+ - `AuthAuthority`: The path to the reverse-proxy to obtain the OpenID configuration. For example, it
133
+ could be `http://{reverse-proxy-ip-address}/openid-authority`. The reverse-proxy should then be
134
+ configured to proxy all paths starting with `/openid-authority/*` to the real identity provider.
135
+ - `AuthTokenAudiences`: This is a list of audiences which the server uses to validate the identity
136
+ tokens. In almost all cases, the audience matches the ClientID. Multiple audiences are separated
137
+ by semi-colons. Thus this setting should be all the ClientIDs created separated by semi-colons.