@things-factory/ops-master 10.1.246 → 10.1.248

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 (429) hide show
  1. package/package.json +5 -5
  2. package/dist-client/bootstrap.d.ts +0 -19
  3. package/dist-client/bootstrap.js +0 -66
  4. package/dist-client/bootstrap.js.map +0 -1
  5. package/dist-client/index.d.ts +0 -17
  6. package/dist-client/index.js +0 -21
  7. package/dist-client/index.js.map +0 -1
  8. package/dist-client/master-change-approval.d.ts +0 -14
  9. package/dist-client/master-change-approval.js +0 -36
  10. package/dist-client/master-change-approval.js.map +0 -1
  11. package/dist-client/master-change-policy-axes.d.ts +0 -37
  12. package/dist-client/master-change-policy-axes.js +0 -29
  13. package/dist-client/master-change-policy-axes.js.map +0 -1
  14. package/dist-client/master-change-policy-panel.d.ts +0 -59
  15. package/dist-client/master-change-policy-panel.js +0 -454
  16. package/dist-client/master-change-policy-panel.js.map +0 -1
  17. package/dist-client/master-change-providers.d.ts +0 -4
  18. package/dist-client/master-change-providers.js +0 -91
  19. package/dist-client/master-change-providers.js.map +0 -1
  20. package/dist-client/pages/master/applied-when-dialog.d.ts +0 -48
  21. package/dist-client/pages/master/applied-when-dialog.js +0 -137
  22. package/dist-client/pages/master/applied-when-dialog.js.map +0 -1
  23. package/dist-client/pages/master/assignment-fields.d.ts +0 -27
  24. package/dist-client/pages/master/assignment-fields.js +0 -62
  25. package/dist-client/pages/master/assignment-fields.js.map +0 -1
  26. package/dist-client/pages/master/equipment-class.d.ts +0 -12
  27. package/dist-client/pages/master/equipment-class.js +0 -42
  28. package/dist-client/pages/master/equipment-class.js.map +0 -1
  29. package/dist-client/pages/master/equipment.d.ts +0 -12
  30. package/dist-client/pages/master/equipment.js +0 -58
  31. package/dist-client/pages/master/equipment.js.map +0 -1
  32. package/dist-client/pages/master/grist-iso-duration.d.ts +0 -20
  33. package/dist-client/pages/master/grist-iso-duration.js +0 -70
  34. package/dist-client/pages/master/grist-iso-duration.js.map +0 -1
  35. package/dist-client/pages/master/grist-reference.d.ts +0 -91
  36. package/dist-client/pages/master/grist-reference.js +0 -419
  37. package/dist-client/pages/master/grist-reference.js.map +0 -1
  38. package/dist-client/pages/master/import-rows.d.ts +0 -35
  39. package/dist-client/pages/master/import-rows.js +0 -66
  40. package/dist-client/pages/master/import-rows.js.map +0 -1
  41. package/dist-client/pages/master/iso-duration.d.ts +0 -34
  42. package/dist-client/pages/master/iso-duration.js +0 -76
  43. package/dist-client/pages/master/iso-duration.js.map +0 -1
  44. package/dist-client/pages/master/master-options.d.ts +0 -40
  45. package/dist-client/pages/master/master-options.js +0 -54
  46. package/dist-client/pages/master/master-options.js.map +0 -1
  47. package/dist-client/pages/master/master-page-base.d.ts +0 -369
  48. package/dist-client/pages/master/master-page-base.js +0 -657
  49. package/dist-client/pages/master/master-page-base.js.map +0 -1
  50. package/dist-client/pages/master/material-class.d.ts +0 -12
  51. package/dist-client/pages/master/material-class.js +0 -42
  52. package/dist-client/pages/master/material-class.js.map +0 -1
  53. package/dist-client/pages/master/material-definition.d.ts +0 -5
  54. package/dist-client/pages/master/material-definition.js +0 -14
  55. package/dist-client/pages/master/material-definition.js.map +0 -1
  56. package/dist-client/pages/master/material-revision-fields.d.ts +0 -2
  57. package/dist-client/pages/master/material-revision-fields.js +0 -43
  58. package/dist-client/pages/master/material-revision-fields.js.map +0 -1
  59. package/dist-client/pages/master/operation-definition.d.ts +0 -12
  60. package/dist-client/pages/master/operation-definition.js +0 -49
  61. package/dist-client/pages/master/operation-definition.js.map +0 -1
  62. package/dist-client/pages/master/operational-location.d.ts +0 -84
  63. package/dist-client/pages/master/operational-location.js +0 -432
  64. package/dist-client/pages/master/operational-location.js.map +0 -1
  65. package/dist-client/pages/master/person.d.ts +0 -12
  66. package/dist-client/pages/master/person.js +0 -41
  67. package/dist-client/pages/master/person.js.map +0 -1
  68. package/dist-client/pages/master/personnel-class.d.ts +0 -12
  69. package/dist-client/pages/master/personnel-class.js +0 -43
  70. package/dist-client/pages/master/personnel-class.js.map +0 -1
  71. package/dist-client/pages/master/physical-asset-class.d.ts +0 -12
  72. package/dist-client/pages/master/physical-asset-class.js +0 -40
  73. package/dist-client/pages/master/physical-asset-class.js.map +0 -1
  74. package/dist-client/pages/master/physical-asset.d.ts +0 -12
  75. package/dist-client/pages/master/physical-asset.js +0 -41
  76. package/dist-client/pages/master/physical-asset.js.map +0 -1
  77. package/dist-client/pages/master/recipe-definition.d.ts +0 -5
  78. package/dist-client/pages/master/recipe-definition.js +0 -14
  79. package/dist-client/pages/master/recipe-definition.js.map +0 -1
  80. package/dist-client/pages/master/reference-targets.d.ts +0 -42
  81. package/dist-client/pages/master/reference-targets.js +0 -82
  82. package/dist-client/pages/master/reference-targets.js.map +0 -1
  83. package/dist-client/pages/master/revision-comparison.d.ts +0 -49
  84. package/dist-client/pages/master/revision-comparison.js +0 -560
  85. package/dist-client/pages/master/revision-comparison.js.map +0 -1
  86. package/dist-client/pages/master/revision-view.d.ts +0 -34
  87. package/dist-client/pages/master/revision-view.js +0 -145
  88. package/dist-client/pages/master/revision-view.js.map +0 -1
  89. package/dist-client/pages/master/revision-workspace.d.ts +0 -50
  90. package/dist-client/pages/master/revision-workspace.js +0 -763
  91. package/dist-client/pages/master/revision-workspace.js.map +0 -1
  92. package/dist-client/pages/master/route-definition.d.ts +0 -19
  93. package/dist-client/pages/master/route-definition.js +0 -40
  94. package/dist-client/pages/master/route-definition.js.map +0 -1
  95. package/dist-client/pages/master/stop-reason.d.ts +0 -12
  96. package/dist-client/pages/master/stop-reason.js +0 -48
  97. package/dist-client/pages/master/stop-reason.js.map +0 -1
  98. package/dist-client/pages/master/test-specification.d.ts +0 -5
  99. package/dist-client/pages/master/test-specification.js +0 -14
  100. package/dist-client/pages/master/test-specification.js.map +0 -1
  101. package/dist-client/pages/master-axes.d.ts +0 -24
  102. package/dist-client/pages/master-axes.js +0 -39
  103. package/dist-client/pages/master-axes.js.map +0 -1
  104. package/dist-client/route.d.ts +0 -1
  105. package/dist-client/route.js +0 -81
  106. package/dist-client/route.js.map +0 -1
  107. package/dist-client/tsconfig.tsbuildinfo +0 -1
  108. package/dist-server/index.d.ts +0 -1
  109. package/dist-server/index.js +0 -19
  110. package/dist-server/index.js.map +0 -1
  111. package/dist-server/service/ai-entry/master-entry-rules.d.ts +0 -175
  112. package/dist-server/service/ai-entry/master-entry-rules.js +0 -302
  113. package/dist-server/service/ai-entry/master-entry-rules.js.map +0 -1
  114. package/dist-server/service/ai-entry/master-entry-targets.d.ts +0 -23
  115. package/dist-server/service/ai-entry/master-entry-targets.js +0 -293
  116. package/dist-server/service/ai-entry/master-entry-targets.js.map +0 -1
  117. package/dist-server/service/approval-route.d.ts +0 -37
  118. package/dist-server/service/approval-route.js +0 -34
  119. package/dist-server/service/approval-route.js.map +0 -1
  120. package/dist-server/service/asset/asset-lifecycle.d.ts +0 -106
  121. package/dist-server/service/asset/asset-lifecycle.js +0 -126
  122. package/dist-server/service/asset/asset-lifecycle.js.map +0 -1
  123. package/dist-server/service/asset/asset-master-resolver.d.ts +0 -53
  124. package/dist-server/service/asset/asset-master-resolver.js +0 -185
  125. package/dist-server/service/asset/asset-master-resolver.js.map +0 -1
  126. package/dist-server/service/asset/asset-master.d.ts +0 -21
  127. package/dist-server/service/asset/asset-master.js +0 -25
  128. package/dist-server/service/asset/asset-master.js.map +0 -1
  129. package/dist-server/service/asset/asset-query.d.ts +0 -16
  130. package/dist-server/service/asset/asset-query.js +0 -72
  131. package/dist-server/service/asset/asset-query.js.map +0 -1
  132. package/dist-server/service/asset/index.d.ts +0 -6
  133. package/dist-server/service/asset/index.js +0 -10
  134. package/dist-server/service/asset/index.js.map +0 -1
  135. package/dist-server/service/asset/physical-asset-class.d.ts +0 -34
  136. package/dist-server/service/asset/physical-asset-class.js +0 -104
  137. package/dist-server/service/asset/physical-asset-class.js.map +0 -1
  138. package/dist-server/service/asset/physical-asset.d.ts +0 -66
  139. package/dist-server/service/asset/physical-asset.js +0 -123
  140. package/dist-server/service/asset/physical-asset.js.map +0 -1
  141. package/dist-server/service/assignment/applied-when.d.ts +0 -24
  142. package/dist-server/service/assignment/applied-when.js +0 -16
  143. package/dist-server/service/assignment/applied-when.js.map +0 -1
  144. package/dist-server/service/assignment/assignment-history.d.ts +0 -92
  145. package/dist-server/service/assignment/assignment-history.js +0 -289
  146. package/dist-server/service/assignment/assignment-history.js.map +0 -1
  147. package/dist-server/service/assignment/assignment-write.d.ts +0 -42
  148. package/dist-server/service/assignment/assignment-write.js +0 -101
  149. package/dist-server/service/assignment/assignment-write.js.map +0 -1
  150. package/dist-server/service/assignment/master-value-claim.d.ts +0 -135
  151. package/dist-server/service/assignment/master-value-claim.js +0 -174
  152. package/dist-server/service/assignment/master-value-claim.js.map +0 -1
  153. package/dist-server/service/equipment/equipment-class.d.ts +0 -34
  154. package/dist-server/service/equipment/equipment-class.js +0 -104
  155. package/dist-server/service/equipment/equipment-class.js.map +0 -1
  156. package/dist-server/service/equipment/equipment-master-resolver.d.ts +0 -77
  157. package/dist-server/service/equipment/equipment-master-resolver.js +0 -266
  158. package/dist-server/service/equipment/equipment-master-resolver.js.map +0 -1
  159. package/dist-server/service/equipment/equipment-master.d.ts +0 -30
  160. package/dist-server/service/equipment/equipment-master.js +0 -53
  161. package/dist-server/service/equipment/equipment-master.js.map +0 -1
  162. package/dist-server/service/equipment/equipment-query.d.ts +0 -16
  163. package/dist-server/service/equipment/equipment-query.js +0 -72
  164. package/dist-server/service/equipment/equipment-query.js.map +0 -1
  165. package/dist-server/service/equipment/equipment.d.ts +0 -71
  166. package/dist-server/service/equipment/equipment.js +0 -138
  167. package/dist-server/service/equipment/equipment.js.map +0 -1
  168. package/dist-server/service/equipment/index.d.ts +0 -8
  169. package/dist-server/service/equipment/index.js +0 -12
  170. package/dist-server/service/equipment/index.js.map +0 -1
  171. package/dist-server/service/equipment/state-period-rules.d.ts +0 -95
  172. package/dist-server/service/equipment/state-period-rules.js +0 -122
  173. package/dist-server/service/equipment/state-period-rules.js.map +0 -1
  174. package/dist-server/service/equipment/stop-reason-query.d.ts +0 -11
  175. package/dist-server/service/equipment/stop-reason-query.js +0 -39
  176. package/dist-server/service/equipment/stop-reason-query.js.map +0 -1
  177. package/dist-server/service/equipment/stop-reason.d.ts +0 -58
  178. package/dist-server/service/equipment/stop-reason.js +0 -114
  179. package/dist-server/service/equipment/stop-reason.js.map +0 -1
  180. package/dist-server/service/index.d.ts +0 -82
  181. package/dist-server/service/index.js +0 -145
  182. package/dist-server/service/index.js.map +0 -1
  183. package/dist-server/service/location/index.d.ts +0 -5
  184. package/dist-server/service/location/index.js +0 -9
  185. package/dist-server/service/location/index.js.map +0 -1
  186. package/dist-server/service/location/location-master-resolver.d.ts +0 -60
  187. package/dist-server/service/location/location-master-resolver.js +0 -313
  188. package/dist-server/service/location/location-master-resolver.js.map +0 -1
  189. package/dist-server/service/location/location-master.d.ts +0 -26
  190. package/dist-server/service/location/location-master.js +0 -28
  191. package/dist-server/service/location/location-master.js.map +0 -1
  192. package/dist-server/service/location/location-query.d.ts +0 -15
  193. package/dist-server/service/location/location-query.js +0 -56
  194. package/dist-server/service/location/location-query.js.map +0 -1
  195. package/dist-server/service/location/operational-location.d.ts +0 -116
  196. package/dist-server/service/location/operational-location.js +0 -157
  197. package/dist-server/service/location/operational-location.js.map +0 -1
  198. package/dist-server/service/master-axis.d.ts +0 -40
  199. package/dist-server/service/master-axis.js +0 -57
  200. package/dist-server/service/master-axis.js.map +0 -1
  201. package/dist-server/service/master-change-approval/approval-input.d.ts +0 -17
  202. package/dist-server/service/master-change-approval/approval-input.js +0 -35
  203. package/dist-server/service/master-change-approval/approval-input.js.map +0 -1
  204. package/dist-server/service/master-change-approval/builtin-axes.d.ts +0 -4
  205. package/dist-server/service/master-change-approval/builtin-axes.js +0 -96
  206. package/dist-server/service/master-change-approval/builtin-axes.js.map +0 -1
  207. package/dist-server/service/master-change-approval/index.d.ts +0 -14
  208. package/dist-server/service/master-change-approval/index.js +0 -37
  209. package/dist-server/service/master-change-approval/index.js.map +0 -1
  210. package/dist-server/service/master-change-approval/master-change-axis.d.ts +0 -54
  211. package/dist-server/service/master-change-approval/master-change-axis.js +0 -17
  212. package/dist-server/service/master-change-approval/master-change-axis.js.map +0 -1
  213. package/dist-server/service/master-change-approval/master-change-flow.d.ts +0 -65
  214. package/dist-server/service/master-change-approval/master-change-flow.js +0 -125
  215. package/dist-server/service/master-change-approval/master-change-flow.js.map +0 -1
  216. package/dist-server/service/master-change-approval/master-change-resolver.d.ts +0 -18
  217. package/dist-server/service/master-change-approval/master-change-resolver.js +0 -58
  218. package/dist-server/service/master-change-approval/master-change-resolver.js.map +0 -1
  219. package/dist-server/service/master-change-policy.d.ts +0 -122
  220. package/dist-server/service/master-change-policy.js +0 -304
  221. package/dist-server/service/master-change-policy.js.map +0 -1
  222. package/dist-server/service/master-conformance-resolver.d.ts +0 -34
  223. package/dist-server/service/master-conformance-resolver.js +0 -153
  224. package/dist-server/service/master-conformance-resolver.js.map +0 -1
  225. package/dist-server/service/master-conformance.d.ts +0 -80
  226. package/dist-server/service/master-conformance.js +0 -266
  227. package/dist-server/service/master-conformance.js.map +0 -1
  228. package/dist-server/service/master-crud.d.ts +0 -55
  229. package/dist-server/service/master-crud.js +0 -93
  230. package/dist-server/service/master-crud.js.map +0 -1
  231. package/dist-server/service/master-list.d.ts +0 -12
  232. package/dist-server/service/master-list.js +0 -30
  233. package/dist-server/service/master-list.js.map +0 -1
  234. package/dist-server/service/master-page-query.d.ts +0 -33
  235. package/dist-server/service/master-page-query.js +0 -55
  236. package/dist-server/service/master-page-query.js.map +0 -1
  237. package/dist-server/service/master-page.d.ts +0 -85
  238. package/dist-server/service/master-page.js +0 -104
  239. package/dist-server/service/master-page.js.map +0 -1
  240. package/dist-server/service/material/index.d.ts +0 -7
  241. package/dist-server/service/material/index.js +0 -12
  242. package/dist-server/service/material/index.js.map +0 -1
  243. package/dist-server/service/material/material-axis-status.d.ts +0 -8
  244. package/dist-server/service/material/material-axis-status.js +0 -19
  245. package/dist-server/service/material/material-axis-status.js.map +0 -1
  246. package/dist-server/service/material/material-class.d.ts +0 -34
  247. package/dist-server/service/material/material-class.js +0 -104
  248. package/dist-server/service/material/material-class.js.map +0 -1
  249. package/dist-server/service/material/material-definition.d.ts +0 -45
  250. package/dist-server/service/material/material-definition.js +0 -125
  251. package/dist-server/service/material/material-definition.js.map +0 -1
  252. package/dist-server/service/material/material-effective-list.d.ts +0 -39
  253. package/dist-server/service/material/material-effective-list.js +0 -54
  254. package/dist-server/service/material/material-effective-list.js.map +0 -1
  255. package/dist-server/service/material/material-master-resolver.d.ts +0 -106
  256. package/dist-server/service/material/material-master-resolver.js +0 -351
  257. package/dist-server/service/material/material-master-resolver.js.map +0 -1
  258. package/dist-server/service/material/material-master.d.ts +0 -9
  259. package/dist-server/service/material/material-master.js +0 -24
  260. package/dist-server/service/material/material-master.js.map +0 -1
  261. package/dist-server/service/material/material-query.d.ts +0 -16
  262. package/dist-server/service/material/material-query.js +0 -79
  263. package/dist-server/service/material/material-query.js.map +0 -1
  264. package/dist-server/service/material/material-revision-content.d.ts +0 -10
  265. package/dist-server/service/material/material-revision-content.js +0 -92
  266. package/dist-server/service/material/material-revision-content.js.map +0 -1
  267. package/dist-server/service/material/material-revision-resolver.d.ts +0 -60
  268. package/dist-server/service/material/material-revision-resolver.js +0 -96
  269. package/dist-server/service/material/material-revision-resolver.js.map +0 -1
  270. package/dist-server/service/material/material-revision-service.d.ts +0 -179
  271. package/dist-server/service/material/material-revision-service.js +0 -687
  272. package/dist-server/service/material/material-revision-service.js.map +0 -1
  273. package/dist-server/service/material/material-revision.d.ts +0 -86
  274. package/dist-server/service/material/material-revision.js +0 -339
  275. package/dist-server/service/material/material-revision.js.map +0 -1
  276. package/dist-server/service/material/recipe-index.d.ts +0 -23
  277. package/dist-server/service/material/recipe-index.js +0 -44
  278. package/dist-server/service/material/recipe-index.js.map +0 -1
  279. package/dist-server/service/operation/index.d.ts +0 -6
  280. package/dist-server/service/operation/index.js +0 -10
  281. package/dist-server/service/operation/index.js.map +0 -1
  282. package/dist-server/service/operation/operation-definition.d.ts +0 -52
  283. package/dist-server/service/operation/operation-definition.js +0 -143
  284. package/dist-server/service/operation/operation-definition.js.map +0 -1
  285. package/dist-server/service/operation/operation-master-resolver.d.ts +0 -52
  286. package/dist-server/service/operation/operation-master-resolver.js +0 -187
  287. package/dist-server/service/operation/operation-master-resolver.js.map +0 -1
  288. package/dist-server/service/operation/operation-master.d.ts +0 -21
  289. package/dist-server/service/operation/operation-master.js +0 -28
  290. package/dist-server/service/operation/operation-master.js.map +0 -1
  291. package/dist-server/service/operation/operation-query.d.ts +0 -15
  292. package/dist-server/service/operation/operation-query.js +0 -56
  293. package/dist-server/service/operation/operation-query.js.map +0 -1
  294. package/dist-server/service/operation/operation-readiness-resolver.d.ts +0 -39
  295. package/dist-server/service/operation/operation-readiness-resolver.js +0 -111
  296. package/dist-server/service/operation/operation-readiness-resolver.js.map +0 -1
  297. package/dist-server/service/operation/operation-readiness.d.ts +0 -34
  298. package/dist-server/service/operation/operation-readiness.js +0 -133
  299. package/dist-server/service/operation/operation-readiness.js.map +0 -1
  300. package/dist-server/service/personnel/index.d.ts +0 -6
  301. package/dist-server/service/personnel/index.js +0 -10
  302. package/dist-server/service/personnel/index.js.map +0 -1
  303. package/dist-server/service/personnel/person.d.ts +0 -51
  304. package/dist-server/service/personnel/person.js +0 -119
  305. package/dist-server/service/personnel/person.js.map +0 -1
  306. package/dist-server/service/personnel/personnel-class-readiness.d.ts +0 -22
  307. package/dist-server/service/personnel/personnel-class-readiness.js +0 -98
  308. package/dist-server/service/personnel/personnel-class-readiness.js.map +0 -1
  309. package/dist-server/service/personnel/personnel-class.d.ts +0 -54
  310. package/dist-server/service/personnel/personnel-class.js +0 -114
  311. package/dist-server/service/personnel/personnel-class.js.map +0 -1
  312. package/dist-server/service/personnel/personnel-master-resolver.d.ts +0 -53
  313. package/dist-server/service/personnel/personnel-master-resolver.js +0 -187
  314. package/dist-server/service/personnel/personnel-master-resolver.js.map +0 -1
  315. package/dist-server/service/personnel/personnel-master.d.ts +0 -39
  316. package/dist-server/service/personnel/personnel-master.js +0 -34
  317. package/dist-server/service/personnel/personnel-master.js.map +0 -1
  318. package/dist-server/service/personnel/personnel-query.d.ts +0 -29
  319. package/dist-server/service/personnel/personnel-query.js +0 -79
  320. package/dist-server/service/personnel/personnel-query.js.map +0 -1
  321. package/dist-server/service/personnel/qualification.d.ts +0 -104
  322. package/dist-server/service/personnel/qualification.js +0 -147
  323. package/dist-server/service/personnel/qualification.js.map +0 -1
  324. package/dist-server/service/quality/index.d.ts +0 -4
  325. package/dist-server/service/quality/index.js +0 -8
  326. package/dist-server/service/quality/index.js.map +0 -1
  327. package/dist-server/service/quality/nonconformance-cause-resolver.d.ts +0 -12
  328. package/dist-server/service/quality/nonconformance-cause-resolver.js +0 -60
  329. package/dist-server/service/quality/nonconformance-cause-resolver.js.map +0 -1
  330. package/dist-server/service/quality/nonconformance-cause.d.ts +0 -20
  331. package/dist-server/service/quality/nonconformance-cause.js +0 -90
  332. package/dist-server/service/quality/nonconformance-cause.js.map +0 -1
  333. package/dist-server/service/recipe/index.d.ts +0 -10
  334. package/dist-server/service/recipe/index.js +0 -16
  335. package/dist-server/service/recipe/index.js.map +0 -1
  336. package/dist-server/service/recipe/recipe-definition.d.ts +0 -75
  337. package/dist-server/service/recipe/recipe-definition.js +0 -143
  338. package/dist-server/service/recipe/recipe-definition.js.map +0 -1
  339. package/dist-server/service/recipe/recipe-effective-list.d.ts +0 -49
  340. package/dist-server/service/recipe/recipe-effective-list.js +0 -96
  341. package/dist-server/service/recipe/recipe-effective-list.js.map +0 -1
  342. package/dist-server/service/recipe/recipe-master-resolver.d.ts +0 -28
  343. package/dist-server/service/recipe/recipe-master-resolver.js +0 -128
  344. package/dist-server/service/recipe/recipe-master-resolver.js.map +0 -1
  345. package/dist-server/service/recipe/recipe-master.d.ts +0 -37
  346. package/dist-server/service/recipe/recipe-master.js +0 -47
  347. package/dist-server/service/recipe/recipe-master.js.map +0 -1
  348. package/dist-server/service/recipe/recipe-query.d.ts +0 -21
  349. package/dist-server/service/recipe/recipe-query.js +0 -82
  350. package/dist-server/service/recipe/recipe-query.js.map +0 -1
  351. package/dist-server/service/recipe/recipe-revision-content.d.ts +0 -32
  352. package/dist-server/service/recipe/recipe-revision-content.js +0 -70
  353. package/dist-server/service/recipe/recipe-revision-content.js.map +0 -1
  354. package/dist-server/service/recipe/recipe-revision-line.d.ts +0 -30
  355. package/dist-server/service/recipe/recipe-revision-line.js +0 -95
  356. package/dist-server/service/recipe/recipe-revision-line.js.map +0 -1
  357. package/dist-server/service/recipe/recipe-revision-resolver.d.ts +0 -65
  358. package/dist-server/service/recipe/recipe-revision-resolver.js +0 -96
  359. package/dist-server/service/recipe/recipe-revision-resolver.js.map +0 -1
  360. package/dist-server/service/recipe/recipe-revision-service.d.ts +0 -183
  361. package/dist-server/service/recipe/recipe-revision-service.js +0 -754
  362. package/dist-server/service/recipe/recipe-revision-service.js.map +0 -1
  363. package/dist-server/service/recipe/recipe-revision.d.ts +0 -102
  364. package/dist-server/service/recipe/recipe-revision.js +0 -373
  365. package/dist-server/service/recipe/recipe-revision.js.map +0 -1
  366. package/dist-server/service/recipe/route-definition.d.ts +0 -51
  367. package/dist-server/service/recipe/route-definition.js +0 -114
  368. package/dist-server/service/recipe/route-definition.js.map +0 -1
  369. package/dist-server/service/resource/class-lineage.d.ts +0 -46
  370. package/dist-server/service/resource/class-lineage.js +0 -80
  371. package/dist-server/service/resource/class-lineage.js.map +0 -1
  372. package/dist-server/service/resource/class-members.d.ts +0 -36
  373. package/dist-server/service/resource/class-members.js +0 -59
  374. package/dist-server/service/resource/class-members.js.map +0 -1
  375. package/dist-server/service/resource/referrers.d.ts +0 -54
  376. package/dist-server/service/resource/referrers.js +0 -99
  377. package/dist-server/service/resource/referrers.js.map +0 -1
  378. package/dist-server/service/resource/resource-class.d.ts +0 -25
  379. package/dist-server/service/resource/resource-class.js +0 -29
  380. package/dist-server/service/resource/resource-class.js.map +0 -1
  381. package/dist-server/service/revision-baseline.d.ts +0 -71
  382. package/dist-server/service/revision-baseline.js +0 -87
  383. package/dist-server/service/revision-baseline.js.map +0 -1
  384. package/dist-server/service/row-lock.d.ts +0 -22
  385. package/dist-server/service/row-lock.js +0 -31
  386. package/dist-server/service/row-lock.js.map +0 -1
  387. package/dist-server/service/status/axis-stamp.d.ts +0 -16
  388. package/dist-server/service/status/axis-stamp.js +0 -22
  389. package/dist-server/service/status/axis-stamp.js.map +0 -1
  390. package/dist-server/service/status/index.d.ts +0 -3
  391. package/dist-server/service/status/index.js +0 -7
  392. package/dist-server/service/status/index.js.map +0 -1
  393. package/dist-server/service/status/master-status.d.ts +0 -38
  394. package/dist-server/service/status/master-status.js +0 -129
  395. package/dist-server/service/status/master-status.js.map +0 -1
  396. package/dist-server/service/test-spec/criteria-check.d.ts +0 -53
  397. package/dist-server/service/test-spec/criteria-check.js +0 -142
  398. package/dist-server/service/test-spec/criteria-check.js.map +0 -1
  399. package/dist-server/service/test-spec/criteria-rows.d.ts +0 -89
  400. package/dist-server/service/test-spec/criteria-rows.js +0 -139
  401. package/dist-server/service/test-spec/criteria-rows.js.map +0 -1
  402. package/dist-server/service/test-spec/index.d.ts +0 -6
  403. package/dist-server/service/test-spec/index.js +0 -11
  404. package/dist-server/service/test-spec/index.js.map +0 -1
  405. package/dist-server/service/test-spec/test-spec-effective-list.d.ts +0 -34
  406. package/dist-server/service/test-spec/test-spec-effective-list.js +0 -42
  407. package/dist-server/service/test-spec/test-spec-effective-list.js.map +0 -1
  408. package/dist-server/service/test-spec/test-spec-master-resolver.d.ts +0 -44
  409. package/dist-server/service/test-spec/test-spec-master-resolver.js +0 -144
  410. package/dist-server/service/test-spec/test-spec-master-resolver.js.map +0 -1
  411. package/dist-server/service/test-spec/test-spec-master.d.ts +0 -6
  412. package/dist-server/service/test-spec/test-spec-master.js +0 -18
  413. package/dist-server/service/test-spec/test-spec-master.js.map +0 -1
  414. package/dist-server/service/test-spec/test-spec-query.d.ts +0 -15
  415. package/dist-server/service/test-spec/test-spec-query.js +0 -61
  416. package/dist-server/service/test-spec/test-spec-query.js.map +0 -1
  417. package/dist-server/service/test-spec/test-spec-revision-resolver.d.ts +0 -59
  418. package/dist-server/service/test-spec/test-spec-revision-resolver.js +0 -96
  419. package/dist-server/service/test-spec/test-spec-revision-resolver.js.map +0 -1
  420. package/dist-server/service/test-spec/test-spec-revision-service.d.ts +0 -178
  421. package/dist-server/service/test-spec/test-spec-revision-service.js +0 -685
  422. package/dist-server/service/test-spec/test-spec-revision-service.js.map +0 -1
  423. package/dist-server/service/test-spec/test-spec-revision.d.ts +0 -86
  424. package/dist-server/service/test-spec/test-spec-revision.js +0 -334
  425. package/dist-server/service/test-spec/test-spec-revision.js.map +0 -1
  426. package/dist-server/service/test-spec/test-specification.d.ts +0 -47
  427. package/dist-server/service/test-spec/test-specification.js +0 -119
  428. package/dist-server/service/test-spec/test-specification.js.map +0 -1
  429. package/dist-server/tsconfig.tsbuildinfo +0 -1
@@ -1,138 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Equipment = void 0;
4
- const tslib_1 = require("tslib");
5
- const typeorm_1 = require("typeorm");
6
- const type_graphql_1 = require("type-graphql");
7
- const shell_1 = require("@things-factory/shell");
8
- const auth_base_1 = require("@things-factory/auth-base");
9
- /**
10
- * 설비 — **ISA-95 `Equipment`**.
11
- *
12
- * 설비는 작업을 수행하는 자원이다. 배정을 받고, 가동률로 평가받고, 능력으로 찾힌다. **계측기는 설비가
13
- * 아니다** — 저울과 센서는 그 어느 것도 하지 않고, 그것은 관측의 원천이다. 계측기를 설비로 세우면
14
- * 가동률 화면이 저울을 기계로 세고 「설비가 논다」가 나온다.
15
- */
16
- let Equipment = class Equipment {
17
- };
18
- exports.Equipment = Equipment;
19
- tslib_1.__decorate([
20
- (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
21
- (0, type_graphql_1.Field)(type => type_graphql_1.ID),
22
- tslib_1.__metadata("design:type", String)
23
- ], Equipment.prototype, "id", void 0);
24
- tslib_1.__decorate([
25
- (0, typeorm_1.ManyToOne)(type => shell_1.Domain),
26
- (0, type_graphql_1.Field)(type => shell_1.Domain),
27
- tslib_1.__metadata("design:type", shell_1.Domain)
28
- ], Equipment.prototype, "domain", void 0);
29
- tslib_1.__decorate([
30
- (0, typeorm_1.RelationId)((equipment) => equipment.domain),
31
- tslib_1.__metadata("design:type", String)
32
- ], Equipment.prototype, "domainId", void 0);
33
- tslib_1.__decorate([
34
- (0, typeorm_1.Column)(),
35
- (0, type_graphql_1.Field)(),
36
- tslib_1.__metadata("design:type", String)
37
- ], Equipment.prototype, "name", void 0);
38
- tslib_1.__decorate([
39
- (0, typeorm_1.Column)({ nullable: true }),
40
- (0, type_graphql_1.Field)({ nullable: true }),
41
- tslib_1.__metadata("design:type", String)
42
- ], Equipment.prototype, "description", void 0);
43
- tslib_1.__decorate([
44
- (0, typeorm_1.Column)(),
45
- (0, type_graphql_1.Field)(),
46
- tslib_1.__metadata("design:type", String)
47
- ], Equipment.prototype, "kind", void 0);
48
- tslib_1.__decorate([
49
- (0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
50
- (0, type_graphql_1.Field)(type => [String], { nullable: true }),
51
- tslib_1.__metadata("design:type", Array)
52
- ], Equipment.prototype, "equipmentClassIds", void 0);
53
- tslib_1.__decorate([
54
- (0, typeorm_1.Column)(),
55
- (0, type_graphql_1.Field)(),
56
- tslib_1.__metadata("design:type", String)
57
- ], Equipment.prototype, "homeLocation", void 0);
58
- tslib_1.__decorate([
59
- (0, typeorm_1.Column)({ nullable: true }),
60
- (0, type_graphql_1.Field)({ nullable: true }),
61
- tslib_1.__metadata("design:type", String)
62
- ], Equipment.prototype, "identity", void 0);
63
- tslib_1.__decorate([
64
- (0, typeorm_1.Column)({ type: 'bigint', nullable: true }),
65
- (0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
66
- tslib_1.__metadata("design:type", Number)
67
- ], Equipment.prototype, "mtbfMs", void 0);
68
- tslib_1.__decorate([
69
- (0, typeorm_1.Column)({ type: 'bigint', nullable: true }),
70
- (0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
71
- tslib_1.__metadata("design:type", Number)
72
- ], Equipment.prototype, "mttrMs", void 0);
73
- tslib_1.__decorate([
74
- (0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
75
- (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'WorkCalendarEntry[]' }),
76
- tslib_1.__metadata("design:type", Array)
77
- ], Equipment.prototype, "workCalendar", void 0);
78
- tslib_1.__decorate([
79
- (0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
80
- (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'ResourceProperty[]' }),
81
- tslib_1.__metadata("design:type", Array)
82
- ], Equipment.prototype, "properties", void 0);
83
- tslib_1.__decorate([
84
- (0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
85
- (0, type_graphql_1.Field)(type => [String], { nullable: true }),
86
- tslib_1.__metadata("design:type", Array)
87
- ], Equipment.prototype, "testSpecificationIds", void 0);
88
- tslib_1.__decorate([
89
- (0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
90
- (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'TestResult[]' }),
91
- tslib_1.__metadata("design:type", Array)
92
- ], Equipment.prototype, "testResults", void 0);
93
- tslib_1.__decorate([
94
- (0, typeorm_1.Column)({ nullable: true }),
95
- (0, type_graphql_1.Field)({ nullable: true }),
96
- tslib_1.__metadata("design:type", Date
97
- /** 언제까지 — 폐기한 설비가 영원히 배정 대상으로 남지 않게 한다. */
98
- )
99
- ], Equipment.prototype, "effectiveStart", void 0);
100
- tslib_1.__decorate([
101
- (0, typeorm_1.Column)({ nullable: true }),
102
- (0, type_graphql_1.Field)({ nullable: true }),
103
- tslib_1.__metadata("design:type", Date)
104
- ], Equipment.prototype, "effectiveEnd", void 0);
105
- tslib_1.__decorate([
106
- (0, typeorm_1.CreateDateColumn)(),
107
- (0, type_graphql_1.Field)({ nullable: true }),
108
- tslib_1.__metadata("design:type", Date)
109
- ], Equipment.prototype, "createdAt", void 0);
110
- tslib_1.__decorate([
111
- (0, typeorm_1.UpdateDateColumn)(),
112
- (0, type_graphql_1.Field)({ nullable: true }),
113
- tslib_1.__metadata("design:type", Date)
114
- ], Equipment.prototype, "updatedAt", void 0);
115
- tslib_1.__decorate([
116
- (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
117
- (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
118
- tslib_1.__metadata("design:type", auth_base_1.User)
119
- ], Equipment.prototype, "creator", void 0);
120
- tslib_1.__decorate([
121
- (0, typeorm_1.RelationId)((equipment) => equipment.creator),
122
- tslib_1.__metadata("design:type", String)
123
- ], Equipment.prototype, "creatorId", void 0);
124
- tslib_1.__decorate([
125
- (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
126
- (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
127
- tslib_1.__metadata("design:type", auth_base_1.User)
128
- ], Equipment.prototype, "updater", void 0);
129
- tslib_1.__decorate([
130
- (0, typeorm_1.RelationId)((equipment) => equipment.updater),
131
- tslib_1.__metadata("design:type", String)
132
- ], Equipment.prototype, "updaterId", void 0);
133
- exports.Equipment = Equipment = tslib_1.__decorate([
134
- (0, typeorm_1.Entity)({ name: 'ops_equipment' }),
135
- (0, typeorm_1.Index)('ix_ops_equipment_0', (equipment) => [equipment.domain, equipment.name], { unique: true }),
136
- (0, type_graphql_1.ObjectType)({ description: 'ISA-95 Equipment — a resource that performs work' })
137
- ], Equipment);
138
- //# sourceMappingURL=equipment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"equipment.js","sourceRoot":"","sources":["../../../server/service/equipment/equipment.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Column,\n CreateDateColumn,\n Entity,\n Index,\n ManyToOne,\n PrimaryGeneratedColumn,\n RelationId,\n UpdateDateColumn\n} from 'typeorm'\nimport { Field, ID, Int, ObjectType } from 'type-graphql'\n\nimport { Domain, ScalarObject } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n/**\n * 설비 — **ISA-95 `Equipment`**.\n *\n * 설비는 작업을 수행하는 자원이다. 배정을 받고, 가동률로 평가받고, 능력으로 찾힌다. **계측기는 설비가\n * 아니다** — 저울과 센서는 그 어느 것도 하지 않고, 그것은 관측의 원천이다. 계측기를 설비로 세우면\n * 가동률 화면이 저울을 기계로 세고 「설비가 논다」가 나온다.\n */\n@Entity({ name: 'ops_equipment' })\n@Index('ix_ops_equipment_0', (equipment: Equipment) => [equipment.domain, equipment.name], { unique: true })\n@ObjectType({ description: 'ISA-95 Equipment — a resource that performs work' })\nexport class Equipment {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain)\n domain?: Domain\n\n @RelationId((equipment: Equipment) => equipment.domain)\n domainId?: string\n\n /** 표준 `EquipmentID` — 트윈으로 나갈 때 `equipment[].id` 가 된다. */\n @Column()\n @Field()\n name: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n /**\n * 종류 — 계약의 `kind` 자리다.\n *\n * **등급이기도 하고 종류이기도 한 칸이다.** 등급을 담을 칸이 따로 없던 동안 이 한 낱말이 둘을\n * 다 했고, 지금도 하중을 받고 있다 — 설비를 이름으로 부르는 공정들이 이 값을 가리킨다. 그래서\n * 아래에 `equipmentClassIds` 를 열면서도 이 칸을 빼지 않았다.\n *\n * 커널은 소속을 `equipmentClassIds ∪ {kind}` 로 본다(계약의 `equipmentClassMembership`).\n */\n @Column()\n @Field()\n kind: string\n\n /**\n * 속한 등급들 — 표준 `EquipmentClassID`(복수).\n *\n * ── 왜 복수인가 ──────────────────────────────────────────────────────────\n * 인원과 자산이 이미 복수다(`personnelClassIds` · `assetClassIds`). 설비만 없어서 판정이\n * `kind` 하나를 소속으로 썼고, 그래서 표준 요구가 **종류와 이름이 같을 때만** 채워졌다.\n *\n * ```\n * equipmentSpecification: { equipmentClass: 'welding-equipment', quantity: 2 }\n * → kind 가 'welding-equipment' 인 설비만 세어졌다\n * → 6축 로봇과 수동 용접기를 「용접설비 2대」로 함께 세는 것이 불가능했다\n * ```\n *\n * 요구가 조용히 안 채워지고 작업이 서 있었다. 오류는 나지 않았다.\n *\n * 비워 두면 예전과 똑같이 돈다 — `kind` 만으로 소속이 정해진다.\n */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => [String], { nullable: true })\n equipmentClassIds?: string[]\n\n /** 이 설비가 있는 자리 — 표준 `OperationalLocation`. */\n @Column()\n @Field()\n homeLocation: string\n\n /** GS1 GIAI. 없으면 비워 둔다 — 회사 프리픽스를 지어내지 않는다. */\n @Column({ nullable: true })\n @Field({ nullable: true })\n identity?: string\n\n /** 평균 고장 간격(밀리초) — 없으면 고장이 없는 설비로 예측된다. */\n @Column({ type: 'bigint', nullable: true })\n @Field(type => Int, { nullable: true })\n mtbfMs?: number\n\n /** 평균 수리 시간(밀리초). */\n @Column({ type: 'bigint', nullable: true })\n @Field(type => Int, { nullable: true })\n mttrMs?: number\n\n /** 근무 캘린더 — 표준 `WorkCalendar`. 교대 이름과 구간. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => ScalarObject, { nullable: true, description: 'WorkCalendarEntry[]' })\n workCalendar?: Record<string, unknown>[]\n\n /** 개체 속성 — 표준 `EquipmentProperty`. 속도처럼 계산에 들어가는 속성이 여기 온다. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => ScalarObject, { nullable: true, description: 'ResourceProperty[]' })\n properties?: Record<string, unknown>[]\n\n /** 이 설비에 요구되는 `TestSpecification` 참조들 — 검정·교정이 이 모양에 맞는다. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => [String], { nullable: true })\n testSpecificationIds?: string[]\n\n /** `TestResult` — 만료되었거나 떨어졌으면 그 설비에 작업이 가지 않는다. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => ScalarObject, { nullable: true, description: 'TestResult[]' })\n testResults?: Record<string, unknown>[]\n\n /** 언제부터 이 설비가 현장에 있나 — 도입 예정 설비를 미리 등록할 수 있다. */\n @Column({ nullable: true })\n @Field({ nullable: true })\n effectiveStart?: Date\n\n /** 언제까지 — 폐기한 설비가 영원히 배정 대상으로 남지 않게 한다. */\n @Column({ nullable: true })\n @Field({ nullable: true })\n effectiveEnd?: Date\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((equipment: Equipment) => equipment.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((equipment: Equipment) => equipment.updater)\n updaterId?: string\n}\n"]}
@@ -1,8 +0,0 @@
1
- import { Equipment } from './equipment';
2
- import { EquipmentClass } from './equipment-class';
3
- import { EquipmentQuery } from './equipment-query';
4
- import { StopReason } from './stop-reason';
5
- import { StopReasonQuery } from './stop-reason-query';
6
- import { EquipmentClassResolver, EquipmentResolver, StopReasonResolver } from './equipment-master-resolver';
7
- export declare const entities: (typeof EquipmentClass | typeof Equipment | typeof StopReason)[];
8
- export declare const resolvers: (typeof EquipmentClassResolver | typeof EquipmentResolver | typeof StopReasonResolver | typeof EquipmentQuery | typeof StopReasonQuery)[];
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolvers = exports.entities = void 0;
4
- const equipment_1 = require("./equipment");
5
- const equipment_class_1 = require("./equipment-class");
6
- const equipment_query_1 = require("./equipment-query");
7
- const stop_reason_1 = require("./stop-reason");
8
- const stop_reason_query_1 = require("./stop-reason-query");
9
- const equipment_master_resolver_1 = require("./equipment-master-resolver");
10
- exports.entities = [equipment_class_1.EquipmentClass, equipment_1.Equipment, stop_reason_1.StopReason];
11
- exports.resolvers = [equipment_query_1.EquipmentQuery, stop_reason_query_1.StopReasonQuery, equipment_master_resolver_1.EquipmentClassResolver, equipment_master_resolver_1.EquipmentResolver, equipment_master_resolver_1.StopReasonResolver];
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/equipment/index.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AACvC,uDAAkD;AAClD,uDAAkD;AAClD,+CAA0C;AAC1C,2DAAqD;AACrD,2EAA2G;AAE9F,QAAA,QAAQ,GAAG,CAAC,gCAAc,EAAE,qBAAS,EAAE,wBAAU,CAAC,CAAA;AAClD,QAAA,SAAS,GAAG,CAAC,gCAAc,EAAE,mCAAe,EAAE,kDAAsB,EAAE,6CAAiB,EAAE,8CAAkB,CAAC,CAAA","sourcesContent":["import { Equipment } from './equipment'\nimport { EquipmentClass } from './equipment-class'\nimport { EquipmentQuery } from './equipment-query'\nimport { StopReason } from './stop-reason'\nimport { StopReasonQuery } from './stop-reason-query'\nimport { EquipmentClassResolver, EquipmentResolver, StopReasonResolver } from './equipment-master-resolver'\n\nexport const entities = [EquipmentClass, Equipment, StopReason]\nexport const resolvers = [EquipmentQuery, StopReasonQuery, EquipmentClassResolver, EquipmentResolver, StopReasonResolver]\n"]}
@@ -1,95 +0,0 @@
1
- /**
2
- * 상태 구간을 받아도 되나 — **순수 판단.**
3
- *
4
- * ── 왜 규칙이 필요한가 ──────────────────────────────────────────────────────
5
- * 구간은 사람이 되돌아가 적는다. 그래서 겹치고, 거꾸로 되고, 미래로 간다. 그대로 받으면 가동률의
6
- * 분자가 분모보다 커지는 날이 온다. 그때는 이미 잘못된 구간이 수백 개 쌓여 있다.
7
- *
8
- * ── 왜 사유와 상태를 맞춰 보나 ──────────────────────────────────────────────
9
- * ISO 22400 에서 가동률을 깎느냐 마느냐는 **상태**가 정한다. 「점심시간」을 `down` 으로 적으면 가동률이
10
- * 오류 보고 없이 낮아지고, 「고장」을 `planned-stop` 으로 적으면 오류 보고 없이 높아진다. 둘 다 조용한
11
- * 거짓이라 나중에 찾을 방법이 없다.
12
- */
13
- /** 계약의 `EQUIPMENT_STATUS` 와 같은 어휘. 여기서 새로 만들지 않는다. */
14
- export declare const EQUIPMENT_PERIOD_STATUS: readonly ["idle", "busy", "down", "setup", "planned-stop"];
15
- export type EquipmentPeriodStatus = (typeof EQUIPMENT_PERIOD_STATUS)[number];
16
- /**
17
- * 정지 사유가 붙을 수 있는 상태 — **`busy` 는 빠진다.**
18
- *
19
- * 돌고 있는 것에는 사유가 없다(§`StopReason.status` 주석). 그래서 구간이 가질 수 있는 상태는 다섯인데
20
- * 사유가 가질 수 있는 상태는 넷이다.
21
- */
22
- export declare const STOP_REASON_STATUS: ("idle" | "down" | "setup" | "planned-stop")[];
23
- /**
24
- * 이 사유를 마스터에 적을 수 있나 — **적을 수 없으면 왜인지, 그리고 무엇이 되는지.**
25
- *
26
- * ── 왜 마스터에서 막나 (2026-09-03) ────────────────────────────────────────
27
- * 사유의 `status` 가 자유 문자열이라 `broken` 이 그대로 저장됐다. 그러면 **그 사유를 쓴 모든 구간이**
28
- * 「사유와 상태가 어긋난다」로 걸린다(§`reasonIssues`). 잘못은 마스터 한 줄에서 났는데 불은 구간
29
- * 수백 개에서 켜지고, 그 문장은 마스터를 가리키지 않는다.
30
- *
31
- * 그래서 틀린 자리에서 막는다. 구간 쪽 검사는 그대로 둔다 — 마스터를 채우기 전에 쓰인 지난 줄과,
32
- * 사유를 나중에 고친 경우가 거기서 걸린다.
33
- */
34
- export declare function stopReasonStatusGap(status: unknown): string | undefined;
35
- export type PeriodProblem =
36
- /** 끝이 시작보다 앞이거나 같다 — 길이가 없는 구간은 셀 것이 없다. */
37
- 'not-a-period'
38
- /** 아직 오지 않은 시각이다. */
39
- | 'in-the-future'
40
- /** 같은 설비의 다른 구간과 겹친다 — 한 설비가 같은 시각에 두 상태일 수 없다. */
41
- | 'overlaps'
42
- /** 계약이 모르는 상태다. */
43
- | 'unknown-status'
44
- /** 사유가 사유 마스터에 없다. */
45
- | 'unknown-reason'
46
- /** 사유가 이 상태의 사유가 아니다 — 가동률이 오류 보고 없이 틀어진다. */
47
- | 'reason-status-mismatch'
48
- /** 이 사유는 상세를 함께 적어야 한다. */
49
- | 'detail-required';
50
- export interface PeriodIssue {
51
- problem: PeriodProblem;
52
- /** 겹치는 것이면 어느 구간과 겹치나(시작 시각, ISO). */
53
- conflictsWith?: string;
54
- /** 사유 문제이면 어느 사유인가. */
55
- reasonCode?: string;
56
- /** 사유가 속한 상태와 적힌 상태. */
57
- reasonStatus?: string;
58
- status?: string;
59
- }
60
- export interface JudgeablePeriod {
61
- status: string;
62
- startTime: Date | string;
63
- endTime: Date | string;
64
- reasonCode?: string;
65
- reasonDetail?: string;
66
- }
67
- /** 사유 마스터에서 필요한 것만. */
68
- export interface StopReasonFact {
69
- name: string;
70
- status: string;
71
- detailRequired?: boolean;
72
- }
73
- /** 이미 적혀 있는 구간 — 겹침을 볼 때만 쓴다. */
74
- export interface ExistingPeriod {
75
- startTime: Date | string;
76
- endTime: Date | string;
77
- }
78
- /**
79
- * 이 구간을 받아도 되나.
80
- *
81
- * `now` 를 부르는 쪽이 준다 — 이 함수가 시계를 읽으면 테스트가 시각에 흔들린다.
82
- */
83
- export declare function judgePeriod(period: JudgeablePeriod, context: {
84
- now: Date | string;
85
- /** 같은 설비의 이미 적힌 구간들. 부르는 쪽이 시각으로 좁혀서 준다. */
86
- existing?: readonly ExistingPeriod[];
87
- /**
88
- * 사유 마스터에서 읽은 것.
89
- *
90
- * **`undefined` 와 빈 배열의 뜻이 다르다.** `undefined` 는 「마스터를 아직 채우지 않았다」이고
91
- * 확인하지 않는다. 빈 배열은 「채웠는데 이 사유가 없다」이고 막는다. 둘을 섞으면 오타로 적은
92
- * 사유가 오류 보고 없이 통과한다.
93
- */
94
- reasons?: readonly StopReasonFact[];
95
- }): PeriodIssue[];
@@ -1,122 +0,0 @@
1
- "use strict";
2
- /**
3
- * 상태 구간을 받아도 되나 — **순수 판단.**
4
- *
5
- * ── 왜 규칙이 필요한가 ──────────────────────────────────────────────────────
6
- * 구간은 사람이 되돌아가 적는다. 그래서 겹치고, 거꾸로 되고, 미래로 간다. 그대로 받으면 가동률의
7
- * 분자가 분모보다 커지는 날이 온다. 그때는 이미 잘못된 구간이 수백 개 쌓여 있다.
8
- *
9
- * ── 왜 사유와 상태를 맞춰 보나 ──────────────────────────────────────────────
10
- * ISO 22400 에서 가동률을 깎느냐 마느냐는 **상태**가 정한다. 「점심시간」을 `down` 으로 적으면 가동률이
11
- * 오류 보고 없이 낮아지고, 「고장」을 `planned-stop` 으로 적으면 오류 보고 없이 높아진다. 둘 다 조용한
12
- * 거짓이라 나중에 찾을 방법이 없다.
13
- */
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.STOP_REASON_STATUS = exports.EQUIPMENT_PERIOD_STATUS = void 0;
16
- exports.stopReasonStatusGap = stopReasonStatusGap;
17
- exports.judgePeriod = judgePeriod;
18
- /** 계약의 `EQUIPMENT_STATUS` 와 같은 어휘. 여기서 새로 만들지 않는다. */
19
- exports.EQUIPMENT_PERIOD_STATUS = ['idle', 'busy', 'down', 'setup', 'planned-stop'];
20
- /**
21
- * 정지 사유가 붙을 수 있는 상태 — **`busy` 는 빠진다.**
22
- *
23
- * 돌고 있는 것에는 사유가 없다(§`StopReason.status` 주석). 그래서 구간이 가질 수 있는 상태는 다섯인데
24
- * 사유가 가질 수 있는 상태는 넷이다.
25
- */
26
- exports.STOP_REASON_STATUS = exports.EQUIPMENT_PERIOD_STATUS.filter(status => status !== 'busy');
27
- /**
28
- * 이 사유를 마스터에 적을 수 있나 — **적을 수 없으면 왜인지, 그리고 무엇이 되는지.**
29
- *
30
- * ── 왜 마스터에서 막나 (2026-09-03) ────────────────────────────────────────
31
- * 사유의 `status` 가 자유 문자열이라 `broken` 이 그대로 저장됐다. 그러면 **그 사유를 쓴 모든 구간이**
32
- * 「사유와 상태가 어긋난다」로 걸린다(§`reasonIssues`). 잘못은 마스터 한 줄에서 났는데 불은 구간
33
- * 수백 개에서 켜지고, 그 문장은 마스터를 가리키지 않는다.
34
- *
35
- * 그래서 틀린 자리에서 막는다. 구간 쪽 검사는 그대로 둔다 — 마스터를 채우기 전에 쓰인 지난 줄과,
36
- * 사유를 나중에 고친 경우가 거기서 걸린다.
37
- */
38
- function stopReasonStatusGap(status) {
39
- const said = typeof status === 'string' ? status.trim() : '';
40
- if (!said) {
41
- return ('정지 사유에는 어느 상태에 쓰이는지가 있어야 합니다 — 가동률을 깎느냐 마느냐를 그 값이 정합니다 ' +
42
- `(쓸 수 있는 것: ${exports.STOP_REASON_STATUS.join(' · ')})`);
43
- }
44
- if (said === 'busy') {
45
- return '돌고 있는 상태에는 정지 사유가 없습니다 — busy 는 정지가 아닙니다';
46
- }
47
- if (!exports.STOP_REASON_STATUS.includes(said)) {
48
- return (`모르는 상태입니다: "${said}" — 이 값으로 저장하면 그 사유를 쓴 모든 구간이 어긋남으로 걸립니다 ` +
49
- `(쓸 수 있는 것: ${exports.STOP_REASON_STATUS.join(' · ')})`);
50
- }
51
- return undefined;
52
- }
53
- /**
54
- * 이 구간을 받아도 되나.
55
- *
56
- * `now` 를 부르는 쪽이 준다 — 이 함수가 시계를 읽으면 테스트가 시각에 흔들린다.
57
- */
58
- function judgePeriod(period, context) {
59
- const issues = [];
60
- const start = ms(period.startTime);
61
- const end = ms(period.endTime);
62
- if (!(end > start)) {
63
- issues.push({ problem: 'not-a-period' });
64
- }
65
- if (end > ms(context.now)) {
66
- issues.push({ problem: 'in-the-future' });
67
- }
68
- if (!exports.EQUIPMENT_PERIOD_STATUS.includes(period.status)) {
69
- issues.push({ problem: 'unknown-status', status: period.status });
70
- }
71
- for (const other of context.existing ?? []) {
72
- const otherStart = ms(other.startTime);
73
- const otherEnd = ms(other.endTime);
74
- /* 끝과 시작이 맞닿는 것은 겹침이 아니다 — 한 구간이 끝나는 순간 다음이 시작한다. */
75
- if (start < otherEnd && otherStart < end) {
76
- issues.push({ problem: 'overlaps', conflictsWith: isoOf(other.startTime) });
77
- }
78
- }
79
- issues.push(...reasonIssues(period, context.reasons));
80
- return issues;
81
- }
82
- function reasonIssues(period, reasons) {
83
- /*
84
- * 사유를 적지 않은 것은 흠이 아니다. 정지는 일단 적고 사유는 나중에 정하는 것이 현장의 순서이고,
85
- * 사유를 요구하면 그 순서를 막게 된다.
86
- */
87
- if (!period.reasonCode) {
88
- return [];
89
- }
90
- /*
91
- * 마스터를 아직 채우지 않은 현장은 확인하지 않는다 — 선언한 것만 걸린다.
92
- *
93
- * 빈 배열은 여기서 걸러지지 않는다. 채웠는데 이 사유가 없는 것이고, 아래에서 「모르는 사유」가 된다.
94
- */
95
- if (!reasons) {
96
- return [];
97
- }
98
- const found = reasons.find(reason => reason.name === period.reasonCode);
99
- if (!found) {
100
- return [{ problem: 'unknown-reason', reasonCode: period.reasonCode }];
101
- }
102
- const issues = [];
103
- if (found.status !== period.status) {
104
- issues.push({
105
- problem: 'reason-status-mismatch',
106
- reasonCode: found.name,
107
- reasonStatus: found.status,
108
- status: period.status
109
- });
110
- }
111
- if (found.detailRequired && !period.reasonDetail) {
112
- issues.push({ problem: 'detail-required', reasonCode: found.name });
113
- }
114
- return issues;
115
- }
116
- function ms(at) {
117
- return typeof at === 'string' ? Date.parse(at) : at.getTime();
118
- }
119
- function isoOf(at) {
120
- return typeof at === 'string' ? at : at.toISOString();
121
- }
122
- //# sourceMappingURL=state-period-rules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-period-rules.js","sourceRoot":"","sources":["../../../server/service/equipment/state-period-rules.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 상태 구간을 받아도 되나 — **순수 판단.**\n *\n * ── 왜 규칙이 필요한가 ──────────────────────────────────────────────────────\n * 구간은 사람이 되돌아가 적는다. 그래서 겹치고, 거꾸로 되고, 미래로 간다. 그대로 받으면 가동률의\n * 분자가 분모보다 커지는 날이 온다. 그때는 이미 잘못된 구간이 수백 개 쌓여 있다.\n *\n * ── 왜 사유와 상태를 맞춰 보나 ──────────────────────────────────────────────\n * ISO 22400 에서 가동률을 깎느냐 마느냐는 **상태**가 정한다. 「점심시간」을 `down` 으로 적으면 가동률이\n * 오류 보고 없이 낮아지고, 「고장」을 `planned-stop` 으로 적으면 오류 보고 없이 높아진다. 둘 다 조용한\n * 거짓이라 나중에 찾을 방법이 없다.\n */\n\n/** 계약의 `EQUIPMENT_STATUS` 와 같은 어휘. 여기서 새로 만들지 않는다. */\nexport const EQUIPMENT_PERIOD_STATUS = ['idle', 'busy', 'down', 'setup', 'planned-stop'] as const\n\nexport type EquipmentPeriodStatus = (typeof EQUIPMENT_PERIOD_STATUS)[number]\n\n/**\n * 정지 사유가 붙을 수 있는 상태 — **`busy` 는 빠진다.**\n *\n * 돌고 있는 것에는 사유가 없다(§`StopReason.status` 주석). 그래서 구간이 가질 수 있는 상태는 다섯인데\n * 사유가 가질 수 있는 상태는 넷이다.\n */\nexport const STOP_REASON_STATUS = EQUIPMENT_PERIOD_STATUS.filter(status => status !== 'busy')\n\n/**\n * 이 사유를 마스터에 적을 수 있나 — **적을 수 없으면 왜인지, 그리고 무엇이 되는지.**\n *\n * ── 왜 마스터에서 막나 (2026-09-03) ────────────────────────────────────────\n * 사유의 `status` 가 자유 문자열이라 `broken` 이 그대로 저장됐다. 그러면 **그 사유를 쓴 모든 구간이**\n * 「사유와 상태가 어긋난다」로 걸린다(§`reasonIssues`). 잘못은 마스터 한 줄에서 났는데 불은 구간\n * 수백 개에서 켜지고, 그 문장은 마스터를 가리키지 않는다.\n *\n * 그래서 틀린 자리에서 막는다. 구간 쪽 검사는 그대로 둔다 — 마스터를 채우기 전에 쓰인 지난 줄과,\n * 사유를 나중에 고친 경우가 거기서 걸린다.\n */\nexport function stopReasonStatusGap(status: unknown): string | undefined {\n const said = typeof status === 'string' ? status.trim() : ''\n\n if (!said) {\n return (\n '정지 사유에는 어느 상태에 쓰이는지가 있어야 합니다 — 가동률을 깎느냐 마느냐를 그 값이 정합니다 ' +\n `(쓸 수 있는 것: ${STOP_REASON_STATUS.join(' · ')})`\n )\n }\n\n if (said === 'busy') {\n return '돌고 있는 상태에는 정지 사유가 없습니다 — busy 는 정지가 아닙니다'\n }\n\n if (!(STOP_REASON_STATUS as readonly string[]).includes(said)) {\n return (\n `모르는 상태입니다: \"${said}\" — 이 값으로 저장하면 그 사유를 쓴 모든 구간이 어긋남으로 걸립니다 ` +\n `(쓸 수 있는 것: ${STOP_REASON_STATUS.join(' · ')})`\n )\n }\n\n return undefined\n}\n\nexport type PeriodProblem =\n /** 끝이 시작보다 앞이거나 같다 — 길이가 없는 구간은 셀 것이 없다. */\n | 'not-a-period'\n /** 아직 오지 않은 시각이다. */\n | 'in-the-future'\n /** 같은 설비의 다른 구간과 겹친다 — 한 설비가 같은 시각에 두 상태일 수 없다. */\n | 'overlaps'\n /** 계약이 모르는 상태다. */\n | 'unknown-status'\n /** 사유가 사유 마스터에 없다. */\n | 'unknown-reason'\n /** 사유가 이 상태의 사유가 아니다 — 가동률이 오류 보고 없이 틀어진다. */\n | 'reason-status-mismatch'\n /** 이 사유는 상세를 함께 적어야 한다. */\n | 'detail-required'\n\nexport interface PeriodIssue {\n problem: PeriodProblem\n /** 겹치는 것이면 어느 구간과 겹치나(시작 시각, ISO). */\n conflictsWith?: string\n /** 사유 문제이면 어느 사유인가. */\n reasonCode?: string\n /** 사유가 속한 상태와 적힌 상태. */\n reasonStatus?: string\n status?: string\n}\n\nexport interface JudgeablePeriod {\n status: string\n startTime: Date | string\n endTime: Date | string\n reasonCode?: string\n reasonDetail?: string\n}\n\n/** 사유 마스터에서 필요한 것만. */\nexport interface StopReasonFact {\n name: string\n status: string\n detailRequired?: boolean\n}\n\n/** 이미 적혀 있는 구간 — 겹침을 볼 때만 쓴다. */\nexport interface ExistingPeriod {\n startTime: Date | string\n endTime: Date | string\n}\n\n/**\n * 이 구간을 받아도 되나.\n *\n * `now` 를 부르는 쪽이 준다 — 이 함수가 시계를 읽으면 테스트가 시각에 흔들린다.\n */\nexport function judgePeriod(\n period: JudgeablePeriod,\n context: {\n now: Date | string\n /** 같은 설비의 이미 적힌 구간들. 부르는 쪽이 시각으로 좁혀서 준다. */\n existing?: readonly ExistingPeriod[]\n /**\n * 사유 마스터에서 읽은 것.\n *\n * **`undefined` 와 빈 배열의 뜻이 다르다.** `undefined` 는 「마스터를 아직 채우지 않았다」이고\n * 확인하지 않는다. 빈 배열은 「채웠는데 이 사유가 없다」이고 막는다. 둘을 섞으면 오타로 적은\n * 사유가 오류 보고 없이 통과한다.\n */\n reasons?: readonly StopReasonFact[]\n }\n): PeriodIssue[] {\n const issues: PeriodIssue[] = []\n\n const start = ms(period.startTime)\n const end = ms(period.endTime)\n\n if (!(end > start)) {\n issues.push({ problem: 'not-a-period' })\n }\n\n if (end > ms(context.now)) {\n issues.push({ problem: 'in-the-future' })\n }\n\n if (!(EQUIPMENT_PERIOD_STATUS as readonly string[]).includes(period.status)) {\n issues.push({ problem: 'unknown-status', status: period.status })\n }\n\n for (const other of context.existing ?? []) {\n const otherStart = ms(other.startTime)\n const otherEnd = ms(other.endTime)\n\n /* 끝과 시작이 맞닿는 것은 겹침이 아니다 — 한 구간이 끝나는 순간 다음이 시작한다. */\n if (start < otherEnd && otherStart < end) {\n issues.push({ problem: 'overlaps', conflictsWith: isoOf(other.startTime) })\n }\n }\n\n issues.push(...reasonIssues(period, context.reasons))\n\n return issues\n}\n\nfunction reasonIssues(period: JudgeablePeriod, reasons: readonly StopReasonFact[] | undefined): PeriodIssue[] {\n /*\n * 사유를 적지 않은 것은 흠이 아니다. 정지는 일단 적고 사유는 나중에 정하는 것이 현장의 순서이고,\n * 사유를 요구하면 그 순서를 막게 된다.\n */\n if (!period.reasonCode) {\n return []\n }\n\n /*\n * 마스터를 아직 채우지 않은 현장은 확인하지 않는다 — 선언한 것만 걸린다.\n *\n * 빈 배열은 여기서 걸러지지 않는다. 채웠는데 이 사유가 없는 것이고, 아래에서 「모르는 사유」가 된다.\n */\n if (!reasons) {\n return []\n }\n\n const found = reasons.find(reason => reason.name === period.reasonCode)\n\n if (!found) {\n return [{ problem: 'unknown-reason', reasonCode: period.reasonCode }]\n }\n\n const issues: PeriodIssue[] = []\n\n if (found.status !== period.status) {\n issues.push({\n problem: 'reason-status-mismatch',\n reasonCode: found.name,\n reasonStatus: found.status,\n status: period.status\n })\n }\n\n if (found.detailRequired && !period.reasonDetail) {\n issues.push({ problem: 'detail-required', reasonCode: found.name })\n }\n\n return issues\n}\n\nfunction ms(at: Date | string): number {\n return typeof at === 'string' ? Date.parse(at) : at.getTime()\n}\n\nfunction isoOf(at: Date | string): string {\n return typeof at === 'string' ? at : at.toISOString()\n}\n"]}
@@ -1,11 +0,0 @@
1
- import { ListParam } from '@things-factory/shell';
2
- import { StopReason } from './stop-reason';
3
- /**
4
- * 정지 사유 목록.
5
- *
6
- * 트윈으로 내보내는 마스터에 넣지 않는다 — 사유는 **MES 가 사실을 적을 때 쓰는 분류**이고, 트윈은
7
- * 상태 구간에 실려 오는 사유 코드를 그대로 받는다. 목록을 두 곳에 두면 한쪽만 늘어나는 날이 온다.
8
- */
9
- export declare class StopReasonQuery {
10
- stopReasons(params: ListParam, context: ResolverContext): Promise<StopReason[]>;
11
- }
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StopReasonQuery = void 0;
4
- const tslib_1 = require("tslib");
5
- const type_graphql_1 = require("type-graphql");
6
- const shell_1 = require("@things-factory/shell");
7
- const stop_reason_1 = require("./stop-reason");
8
- /**
9
- * 정지 사유 목록.
10
- *
11
- * 트윈으로 내보내는 마스터에 넣지 않는다 — 사유는 **MES 가 사실을 적을 때 쓰는 분류**이고, 트윈은
12
- * 상태 구간에 실려 오는 사유 코드를 그대로 받는다. 목록을 두 곳에 두면 한쪽만 늘어나는 날이 온다.
13
- */
14
- let StopReasonQuery = class StopReasonQuery {
15
- async stopReasons(params, context) {
16
- const { domain } = context.state;
17
- const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
18
- repository: (0, shell_1.getRepository)(stop_reason_1.StopReason),
19
- params,
20
- domain,
21
- searchables: ['name', 'description'],
22
- alias: 'sr'
23
- });
24
- return queryBuilder.getMany();
25
- }
26
- };
27
- exports.StopReasonQuery = StopReasonQuery;
28
- tslib_1.__decorate([
29
- (0, type_graphql_1.Query)(returns => [stop_reason_1.StopReason], { description: 'To fetch the classified reasons an equipment stops' }),
30
- tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
31
- tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
32
- tslib_1.__metadata("design:type", Function),
33
- tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
34
- tslib_1.__metadata("design:returntype", Promise)
35
- ], StopReasonQuery.prototype, "stopReasons", null);
36
- exports.StopReasonQuery = StopReasonQuery = tslib_1.__decorate([
37
- (0, type_graphql_1.Resolver)(stop_reason_1.StopReason)
38
- ], StopReasonQuery);
39
- //# sourceMappingURL=stop-reason-query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stop-reason-query.js","sourceRoot":"","sources":["../../../server/service/equipment/stop-reason-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAyD;AAEzD,iDAA+F;AAE/F,+CAA0C;AAE1C;;;;;GAKG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IAEpB,AAAN,KAAK,CAAC,WAAW,CAA0B,MAAiB,EAAS,OAAwB;QAC3F,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC;YACjD,UAAU,EAAE,IAAA,qBAAa,EAAC,wBAAU,CAAC;YACrC,MAAM;YACN,MAAM;YACN,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;YACpC,KAAK,EAAE,IAAI;SACZ,CAAC,CAAA;QAEF,OAAO,YAAY,CAAC,OAAO,EAAE,CAAA;IAC/B,CAAC;CACF,CAAA;AAfY,0CAAe;AAEpB;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,wBAAU,CAAC,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC;IACnF,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;kDAY3D;0BAdU,eAAe;IAD3B,IAAA,uBAAQ,EAAC,wBAAU,CAAC;GACR,eAAe,CAe3B","sourcesContent":["import { Args, Ctx, Query, Resolver } from 'type-graphql'\n\nimport { ListParam, getQueryBuilderFromListParams, getRepository } from '@things-factory/shell'\n\nimport { StopReason } from './stop-reason'\n\n/**\n * 정지 사유 목록.\n *\n * 트윈으로 내보내는 마스터에 넣지 않는다 — 사유는 **MES 가 사실을 적을 때 쓰는 분류**이고, 트윈은\n * 상태 구간에 실려 오는 사유 코드를 그대로 받는다. 목록을 두 곳에 두면 한쪽만 늘어나는 날이 온다.\n */\n@Resolver(StopReason)\nexport class StopReasonQuery {\n @Query(returns => [StopReason], { description: 'To fetch the classified reasons an equipment stops' })\n async stopReasons(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<StopReason[]> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(StopReason),\n params,\n domain,\n searchables: ['name', 'description'],\n alias: 'sr'\n })\n\n return queryBuilder.getMany()\n }\n}\n"]}
@@ -1,58 +0,0 @@
1
- import { Domain } from '@things-factory/shell';
2
- import { User } from '@things-factory/auth-base';
3
- /**
4
- * 설비가 왜 섰나 — **사유의 목록.**
5
- *
6
- * ── 왜 마스터로 두나 ────────────────────────────────────────────────────────
7
- * 사유를 자유 문장으로 받으면 「금형교체」 · 「금형 교체」 · 「몰드교환」이 서로 다른 사유가 된다. 그러면
8
- * 「무엇 때문에 가장 많이 멈추나」에 답할 수 없다 — 그 답이 정지 사유를 적는 유일한 이유다.
9
- *
10
- * ── `status` 가 가동률을 정하고, 사유는 무엇을 고칠지 정한다 ────────────────
11
- * ISO 22400 에서 가동률을 깎느냐 마느냐는 **상태**가 정한다(`down` · `idle` 은 깎고 `planned-stop` 은
12
- * 깎지 않는다). 사유는 그 상태 안에서 **무엇을 고쳐야 하나**를 말한다.
13
- *
14
- * 그래서 사유마다 어느 상태에 쓰이는지 적어 둔다. 「점심시간」을 `down` 으로 적으면 가동률이 알리지
15
- * 않고 낮아지고, 「고장」을 `planned-stop` 으로 적으면 알리지 않고 높아진다. 둘 다 조용한 거짓이다.
16
- */
17
- export declare class StopReason {
18
- readonly id: string;
19
- domain?: Domain;
20
- domainId?: string;
21
- /** 사유 코드 — 상태 구간이 이 값을 가리킨다. */
22
- name: string;
23
- description?: string;
24
- /**
25
- * 이 사유가 쓰이는 상태 — `down` · `idle` · `setup` · `planned-stop`.
26
- *
27
- * 어휘는 계약의 `EQUIPMENT_STATUS` 다. `busy` 는 여기 오지 않는다 — 돌고 있는 것에는 사유가 없다.
28
- */
29
- status: string;
30
- /**
31
- * 상위 사유 — 사유는 나무다.
32
- *
33
- * 「설비 고장」 아래 「금형 파손」 · 「모터 과열」이 온다. 위로 모아 보면 「고장으로 몇 시간」이 나오고,
34
- * 아래로 내려가면 「무엇을 고칠까」가 나온다. 한 단으로만 두면 둘 중 하나를 잃는다.
35
- */
36
- parentName?: string;
37
- /**
38
- * 이 사유를 적을 때 상세를 함께 받나.
39
- *
40
- * 「기타」로만 적히는 사유가 목록의 절반을 차지하면 분류가 없는 것과 같다. 상세를 요구하는 사유를
41
- * 표시해 두어 화면이 그때만 묻게 한다.
42
- */
43
- detailRequired?: boolean;
44
- /** 언제부터 — 표준 `EffectiveStartDate`. */
45
- effectiveStart?: Date;
46
- /**
47
- * 언제까지 — 표준 `EffectiveEndDate`.
48
- *
49
- * 쓰지 않는 사유는 지우지 않고 이 칸을 채운다. 지우면 그 사유로 적힌 지난 구간이 가리킬 것을 잃는다.
50
- */
51
- effectiveEnd?: Date;
52
- createdAt?: Date;
53
- updatedAt?: Date;
54
- creator?: User;
55
- creatorId?: string;
56
- updater?: User;
57
- updaterId?: string;
58
- }