@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,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pullPage = pullPage;
4
- exports.refuseIfTooLarge = refuseIfTooLarge;
5
- const typeorm_1 = require("typeorm");
6
- const shell_1 = require("@things-factory/shell");
7
- const master_page_1 = require("./master-page");
8
- /**
9
- * 마스터 한 축을 **나눠 읽는다** — 저장소 쪽. 판단은 `master-page` 가 한다.
10
- *
11
- * ═══════════════════════════════════════════════════════════════════════════
12
- * ── 등급은 매 쪽에 통째로 싣는다 ───────────────────────────────────────────
13
- * 이 축들은 구성원이 자기 **등급을 이름으로 가리킨다.** 등급과 구성원을 따로 나눠 보내면 구성원이
14
- * 먼저 도착하고 등급이 나중에 오는 순간이 생기고, 그 순간 받는 쪽은 **없는 등급을 가리키는 구성원**을
15
- * 갖는다. 원래 이 조회들이 「자르지 않는다」고 적어 둔 이유가 그것이다.
16
- *
17
- * 그래서 **구성원만 나누고 등급은 매 쪽에 전부 싣는다.** 등급은 수십 단위라 실어도 크지 않고, 그러면
18
- * 어느 쪽을 먼저 받아도 가리키는 곳이 항상 있다.
19
- *
20
- * ── 이름 다음부터 읽는다 ───────────────────────────────────────────────────
21
- * `skip` 은 규모에서 못 쓴다 — 건너뛴 만큼을 매번 다시 읽는다. 이 축들은 이미 이름으로 정렬해 내므로
22
- * **마지막 이름 다음부터** 읽으면 건너뛸 것이 없다.
23
- * ═══════════════════════════════════════════════════════════════════════════
24
- */
25
- /**
26
- * 한 축을 한 쪽만큼 읽는다.
27
- *
28
- * 이름 칸을 받는 이유: 축마다 다르다(`name` · `operationKey` …). 여기서 알아보려 하면 축이 늘 때마다
29
- * 이 함수를 고쳐야 한다.
30
- */
31
- async function pullPage(entity, domain, request, nameColumn = 'name') {
32
- const where = { domain: { id: domain.id } };
33
- if (request.after) {
34
- where[nameColumn] = (0, typeorm_1.MoreThan)(request.after);
35
- }
36
- const read = (await (0, shell_1.getRepository)(entity).find({
37
- where,
38
- order: { [nameColumn]: 'ASC' },
39
- take: (0, master_page_1.takeFor)(request)
40
- }));
41
- return (0, master_page_1.pageOf)(read, request, row => String(row[nameColumn]));
42
- }
43
- /**
44
- * **통째로 달라고 했는데 너무 크면 던진다.**
45
- *
46
- * 자르고 넘어가지 않는다 — 받는 쪽은 그것이 전부인 줄 알고 트윈을 세우고, 없는 품목이 화면에서 그냥
47
- * 존재하지 않게 된다. 오류가 안 난다. 그래서 **틀린 답 대신 오류**를 준다.
48
- */
49
- function refuseIfTooLarge(axis, request, page) {
50
- const problem = (0, master_page_1.tooLargeToPull)(axis, request, page);
51
- if (problem) {
52
- throw new Error(problem);
53
- }
54
- }
55
- //# sourceMappingURL=master-page-query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"master-page-query.js","sourceRoot":"","sources":["../../server/service/master-page-query.ts"],"names":[],"mappings":";;AA+BA,4BAmBC;AAQD,4CAMC;AAhED,qCAAkC;AAElC,iDAA6D;AAE7D,+CAA+D;AAG/D;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;GAKG;AACI,KAAK,UAAU,QAAQ,CAC5B,MAAW,EACX,MAAc,EACd,OAAoB,EACpB,aAA+B,MAAa;IAE5C,MAAM,KAAK,GAA4B,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAA;IAEpE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,CAAC,UAAU,CAAC,GAAG,IAAA,kBAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QAC7C,KAAK;QACL,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE;QAC9B,IAAI,EAAE,IAAA,qBAAO,EAAC,OAAO,CAAC;KACvB,CAAC,CAAQ,CAAA;IAEV,OAAO,IAAA,oBAAM,EAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAE,GAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AACvE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,IAAY,EAAE,OAAoB,EAAE,IAAmB;IACtF,MAAM,OAAO,GAAG,IAAA,4BAAc,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IAEnD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;AACH,CAAC","sourcesContent":["import { MoreThan } from 'typeorm'\n\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { pageOf, takeFor, tooLargeToPull } from './master-page'\nimport type { Page, PageRequest } from './master-page'\n\n/**\n * 마스터 한 축을 **나눠 읽는다** — 저장소 쪽. 판단은 `master-page` 가 한다.\n *\n * ═══════════════════════════════════════════════════════════════════════════\n * ── 등급은 매 쪽에 통째로 싣는다 ───────────────────────────────────────────\n * 이 축들은 구성원이 자기 **등급을 이름으로 가리킨다.** 등급과 구성원을 따로 나눠 보내면 구성원이\n * 먼저 도착하고 등급이 나중에 오는 순간이 생기고, 그 순간 받는 쪽은 **없는 등급을 가리키는 구성원**을\n * 갖는다. 원래 이 조회들이 「자르지 않는다」고 적어 둔 이유가 그것이다.\n *\n * 그래서 **구성원만 나누고 등급은 매 쪽에 전부 싣는다.** 등급은 수십 단위라 실어도 크지 않고, 그러면\n * 어느 쪽을 먼저 받아도 가리키는 곳이 항상 있다.\n *\n * ── 이름 다음부터 읽는다 ───────────────────────────────────────────────────\n * `skip` 은 규모에서 못 쓴다 — 건너뛴 만큼을 매번 다시 읽는다. 이 축들은 이미 이름으로 정렬해 내므로\n * **마지막 이름 다음부터** 읽으면 건너뛸 것이 없다.\n * ═══════════════════════════════════════════════════════════════════════════\n */\n\n/**\n * 한 축을 한 쪽만큼 읽는다.\n *\n * 이름 칸을 받는 이유: 축마다 다르다(`name` · `operationKey` …). 여기서 알아보려 하면 축이 늘 때마다\n * 이 함수를 고쳐야 한다.\n */\nexport async function pullPage<T>(\n entity: any,\n domain: Domain,\n request: PageRequest,\n nameColumn: keyof T & string = 'name' as any\n): Promise<Page<T>> {\n const where: Record<string, unknown> = { domain: { id: domain.id } }\n\n if (request.after) {\n where[nameColumn] = MoreThan(request.after)\n }\n\n const read = (await getRepository(entity).find({\n where,\n order: { [nameColumn]: 'ASC' },\n take: takeFor(request)\n })) as T[]\n\n return pageOf(read, request, row => String((row as any)[nameColumn]))\n}\n\n/**\n * **통째로 달라고 했는데 너무 크면 던진다.**\n *\n * 자르고 넘어가지 않는다 — 받는 쪽은 그것이 전부인 줄 알고 트윈을 세우고, 없는 품목이 화면에서 그냥\n * 존재하지 않게 된다. 오류가 안 난다. 그래서 **틀린 답 대신 오류**를 준다.\n */\nexport function refuseIfTooLarge(axis: string, request: PageRequest, page: Page<unknown>): void {\n const problem = tooLargeToPull(axis, request, page)\n\n if (problem) {\n throw new Error(problem)\n }\n}\n"]}
@@ -1,85 +0,0 @@
1
- /**
2
- * **마스터를 나눠 내는 규칙** — 순수 판단.
3
- *
4
- * ═══════════════════════════════════════════════════════════════════════════
5
- * ── 무엇이 문제였나 ────────────────────────────────────────────────────────
6
- * 트윈이 당겨 가는 마스터 조회 여덟 축이 **전부 전량 조회**였다. 도메인 조건 하나만 걸고 그 축의 모든
7
- * 행을 읽어 JSON 한 덩어리로 낸다.
8
- *
9
- * 재봤다: 품목 100만에서 **2,219ms · 49MB**. 지금 미라텍은 자재 106개라 안 아프지만, 이 제품의 규모
10
- * 기준은 엔티티 10만 · 품목 100만이다. 그 규모에서 이 조회는 서지 않는다.
11
- *
12
- * ── 왜 「조용히 자르기」가 아니라 「거절」인가 ──────────────────────────────
13
- * 한계를 두고 **말없이 앞부분만 주는 것이 제일 나쁘다.** 받는 쪽은 그것이 전부인 줄 알고 트윈을
14
- * 세우고, 없는 설비·없는 품목이 화면에서 그냥 **존재하지 않게** 된다. 오류가 안 난다.
15
- *
16
- * 오늘 하루 종일 잡은 부류가 그것이라, 여기서는 그렇게 하지 않는다.
17
- *
18
- * 나눠 달라고 하면(`limit`) 그만큼 주고 **더 있는지 말한다**(`hasMore`)
19
- * 통째로 달라고 했는데 크면 **거절하고 나눠 받으라고 말한다**
20
- * 통째로 달라고 했는데 작으면 그냥 준다 — 대부분의 현장이 여기다
21
- *
22
- * 그래서 작은 공장은 지금 그대로 돌고, 큰 공장은 **틀린 답 대신 오류**를 받는다.
23
- *
24
- * ── 왜 이름으로 이어 받나 ──────────────────────────────────────────────────
25
- * `offset` 은 규모에서 못 쓴다 — 뒤로 갈수록 건너뛴 만큼을 매번 다시 읽는다. 이 축들은 이미 이름으로
26
- * 정렬해 내므로(`order: { name: 'ASC' }`), **마지막 이름 다음부터** 읽으면 건너뛸 것이 없다.
27
- *
28
- * 이름이 유일하다는 것에 기댄다. 도메인 안에서 마스터 이름은 유일하다(그 이름으로 실적·사실이 자원을
29
- * 가리킨다 — 유일하지 않으면 그것부터 깨진다).
30
- * ═══════════════════════════════════════════════════════════════════════════
31
- */
32
- /**
33
- * 한 번에 낼 수 있는 **최대**. 이보다 크게 달라고 해도 이만큼만 낸다.
34
- *
35
- * ⚠ **이것은 안전장치이지 권하는 쪽 크기가 아니다.** 받는 쪽이 이 수에 붙여 두면, 우리가 한도를
36
- * 내리는 날 그쪽은 **그날부터** 못 읽는다. 권하는 크기는 `SUGGESTED_PAGE` 다.
37
- *
38
- * 인티그레이션이 붙이면서 스스로 이 구별을 하고 2,000 을 골랐다(2026-09-05) — 「그 수는 거절하는
39
- * 자리이지 권하는 크기가 아니다」. 맞는 판단이고, 여기 적혀 있지 않아서 스스로 알아낸 것이라 적는다.
40
- */
41
- export declare const MAX_PAGE = 5000;
42
- /**
43
- * 권하는 쪽 크기.
44
- *
45
- * [재봤음] 품목 100만이 전량 49MB 였으니 2,000이면 한 쪽이 100KB 안팎이다. 한 쪽에 1.4ms 이고
46
- * 이어받기는 0.1ms 라, 쪽을 더 키워 얻을 것이 없다.
47
- */
48
- export declare const SUGGESTED_PAGE = 2000;
49
- /** `limit` 을 안 주고 나눠 받지도 않을 때, 통째로 내주는 한도. 넘으면 거절한다. */
50
- export declare const WHOLE_LIMIT = 5000;
51
- /** 나눠 달라고 했는데 몇 개인지는 안 말했을 때. */
52
- export declare const DEFAULT_PAGE = 1000;
53
- export interface PageRequest {
54
- /** 이 이름 **다음부터**. 앞 페이지의 `next` 를 그대로 준다. */
55
- after?: string;
56
- /** 몇 개까지. 없으면 통째로 달라는 뜻이다. */
57
- limit?: number;
58
- }
59
- /**
60
- * 실제로 몇 개를 읽을 것인가.
61
- *
62
- * **하나를 더 읽는다.** 더 있는지 알려면 세거나(`COUNT`) 한 개 더 읽어야 하는데, 세는 것은 같은 조건을
63
- * 두 번 훑는 것이라 규모에서 두 배가 된다.
64
- */
65
- export declare function takeFor(request: PageRequest): number;
66
- export interface Page<T> {
67
- rows: T[];
68
- /** 더 있나. **이 값을 안 보고 쓰면 조용히 잘린 자료를 쓰게 된다.** */
69
- hasMore: boolean;
70
- /** 이어 받을 자리 — 다음 요청의 `after`. 더 없으면 없다. */
71
- next?: string;
72
- }
73
- /**
74
- * 하나 더 읽어 온 결과를 페이지로 만든다.
75
- *
76
- * `nameOf` 를 받는 이유: 축마다 이름 칸이 다르다(`name` · `operationKey` …). 그 차이를 여기서 알아보려
77
- * 하면 축이 늘 때마다 이 함수를 고쳐야 한다.
78
- */
79
- export declare function pageOf<T>(read: readonly T[], request: PageRequest, nameOf: (row: T) => string): Page<T>;
80
- /**
81
- * **통째로 달라고 했는데 너무 크다** — 낼 수 없는 이유를 사람 말로.
82
- *
83
- * 자르지 않는다. 자르면 받는 쪽은 그것이 전부인 줄 안다.
84
- */
85
- export declare function tooLargeToPull(axis: string, request: PageRequest, page: Page<unknown>): string | undefined;
@@ -1,104 +0,0 @@
1
- "use strict";
2
- /**
3
- * **마스터를 나눠 내는 규칙** — 순수 판단.
4
- *
5
- * ═══════════════════════════════════════════════════════════════════════════
6
- * ── 무엇이 문제였나 ────────────────────────────────────────────────────────
7
- * 트윈이 당겨 가는 마스터 조회 여덟 축이 **전부 전량 조회**였다. 도메인 조건 하나만 걸고 그 축의 모든
8
- * 행을 읽어 JSON 한 덩어리로 낸다.
9
- *
10
- * 재봤다: 품목 100만에서 **2,219ms · 49MB**. 지금 미라텍은 자재 106개라 안 아프지만, 이 제품의 규모
11
- * 기준은 엔티티 10만 · 품목 100만이다. 그 규모에서 이 조회는 서지 않는다.
12
- *
13
- * ── 왜 「조용히 자르기」가 아니라 「거절」인가 ──────────────────────────────
14
- * 한계를 두고 **말없이 앞부분만 주는 것이 제일 나쁘다.** 받는 쪽은 그것이 전부인 줄 알고 트윈을
15
- * 세우고, 없는 설비·없는 품목이 화면에서 그냥 **존재하지 않게** 된다. 오류가 안 난다.
16
- *
17
- * 오늘 하루 종일 잡은 부류가 그것이라, 여기서는 그렇게 하지 않는다.
18
- *
19
- * 나눠 달라고 하면(`limit`) 그만큼 주고 **더 있는지 말한다**(`hasMore`)
20
- * 통째로 달라고 했는데 크면 **거절하고 나눠 받으라고 말한다**
21
- * 통째로 달라고 했는데 작으면 그냥 준다 — 대부분의 현장이 여기다
22
- *
23
- * 그래서 작은 공장은 지금 그대로 돌고, 큰 공장은 **틀린 답 대신 오류**를 받는다.
24
- *
25
- * ── 왜 이름으로 이어 받나 ──────────────────────────────────────────────────
26
- * `offset` 은 규모에서 못 쓴다 — 뒤로 갈수록 건너뛴 만큼을 매번 다시 읽는다. 이 축들은 이미 이름으로
27
- * 정렬해 내므로(`order: { name: 'ASC' }`), **마지막 이름 다음부터** 읽으면 건너뛸 것이 없다.
28
- *
29
- * 이름이 유일하다는 것에 기댄다. 도메인 안에서 마스터 이름은 유일하다(그 이름으로 실적·사실이 자원을
30
- * 가리킨다 — 유일하지 않으면 그것부터 깨진다).
31
- * ═══════════════════════════════════════════════════════════════════════════
32
- */
33
- Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.DEFAULT_PAGE = exports.WHOLE_LIMIT = exports.SUGGESTED_PAGE = exports.MAX_PAGE = void 0;
35
- exports.takeFor = takeFor;
36
- exports.pageOf = pageOf;
37
- exports.tooLargeToPull = tooLargeToPull;
38
- /**
39
- * 한 번에 낼 수 있는 **최대**. 이보다 크게 달라고 해도 이만큼만 낸다.
40
- *
41
- * ⚠ **이것은 안전장치이지 권하는 쪽 크기가 아니다.** 받는 쪽이 이 수에 붙여 두면, 우리가 한도를
42
- * 내리는 날 그쪽은 **그날부터** 못 읽는다. 권하는 크기는 `SUGGESTED_PAGE` 다.
43
- *
44
- * 인티그레이션이 붙이면서 스스로 이 구별을 하고 2,000 을 골랐다(2026-09-05) — 「그 수는 거절하는
45
- * 자리이지 권하는 크기가 아니다」. 맞는 판단이고, 여기 적혀 있지 않아서 스스로 알아낸 것이라 적는다.
46
- */
47
- exports.MAX_PAGE = 5_000;
48
- /**
49
- * 권하는 쪽 크기.
50
- *
51
- * [재봤음] 품목 100만이 전량 49MB 였으니 2,000이면 한 쪽이 100KB 안팎이다. 한 쪽에 1.4ms 이고
52
- * 이어받기는 0.1ms 라, 쪽을 더 키워 얻을 것이 없다.
53
- */
54
- exports.SUGGESTED_PAGE = 2_000;
55
- /** `limit` 을 안 주고 나눠 받지도 않을 때, 통째로 내주는 한도. 넘으면 거절한다. */
56
- exports.WHOLE_LIMIT = 5_000;
57
- /** 나눠 달라고 했는데 몇 개인지는 안 말했을 때. */
58
- exports.DEFAULT_PAGE = 1_000;
59
- /**
60
- * 실제로 몇 개를 읽을 것인가.
61
- *
62
- * **하나를 더 읽는다.** 더 있는지 알려면 세거나(`COUNT`) 한 개 더 읽어야 하는데, 세는 것은 같은 조건을
63
- * 두 번 훑는 것이라 규모에서 두 배가 된다.
64
- */
65
- function takeFor(request) {
66
- if (request.limit === undefined) {
67
- /* 통째로 달라는 요청이다. 한도를 넘는지 보려면 한도+1 을 읽어 봐야 한다. */
68
- return exports.WHOLE_LIMIT + 1;
69
- }
70
- /* 0 이나 음수를 「전부」로 읽지 않는다 — 그렇게 읽으면 실수 하나가 전량 조회가 된다. */
71
- const asked = Math.floor(request.limit);
72
- const bounded = Number.isFinite(asked) ? Math.min(Math.max(asked, 1), exports.MAX_PAGE) : exports.DEFAULT_PAGE;
73
- return bounded + 1;
74
- }
75
- /**
76
- * 하나 더 읽어 온 결과를 페이지로 만든다.
77
- *
78
- * `nameOf` 를 받는 이유: 축마다 이름 칸이 다르다(`name` · `operationKey` …). 그 차이를 여기서 알아보려
79
- * 하면 축이 늘 때마다 이 함수를 고쳐야 한다.
80
- */
81
- function pageOf(read, request, nameOf) {
82
- const size = takeFor(request) - 1;
83
- const hasMore = read.length > size;
84
- const rows = hasMore ? read.slice(0, size) : [...read];
85
- return {
86
- rows,
87
- hasMore,
88
- ...(hasMore && rows.length ? { next: nameOf(rows[rows.length - 1]) } : {})
89
- };
90
- }
91
- /**
92
- * **통째로 달라고 했는데 너무 크다** — 낼 수 없는 이유를 사람 말로.
93
- *
94
- * 자르지 않는다. 자르면 받는 쪽은 그것이 전부인 줄 안다.
95
- */
96
- function tooLargeToPull(axis, request, page) {
97
- if (request.limit !== undefined || !page.hasMore) {
98
- return undefined;
99
- }
100
- return (`${axis} 축이 한 번에 낼 수 있는 ${exports.WHOLE_LIMIT}건을 넘습니다. ` +
101
- `limit 과 after 로 나눠 받으십시오 — ${exports.SUGGESTED_PAGE}건쯤이 알맞고(최대 ${exports.MAX_PAGE}건), ` +
102
- '응답의 hasMore 가 거짓이 될 때까지 next 를 after 로 넘기면 됩니다.');
103
- }
104
- //# sourceMappingURL=master-page.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"master-page.js","sourceRoot":"","sources":["../../server/service/master-page.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;;;AAwCH,0BAWC;AAgBD,wBAUC;AAOD,wCAUC;AA5FD;;;;;;;;GAQG;AACU,QAAA,QAAQ,GAAG,KAAK,CAAA;AAE7B;;;;;GAKG;AACU,QAAA,cAAc,GAAG,KAAK,CAAA;AAEnC,wDAAwD;AAC3C,QAAA,WAAW,GAAG,KAAK,CAAA;AAEhC,iCAAiC;AACpB,QAAA,YAAY,GAAG,KAAK,CAAA;AASjC;;;;;GAKG;AACH,SAAgB,OAAO,CAAC,OAAoB;IAC1C,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,gDAAgD;QAChD,OAAO,mBAAW,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,uDAAuD;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,gBAAQ,CAAC,CAAC,CAAC,CAAC,oBAAY,CAAA;IAE9F,OAAO,OAAO,GAAG,CAAC,CAAA;AACpB,CAAC;AAUD;;;;;GAKG;AACH,SAAgB,MAAM,CAAI,IAAkB,EAAE,OAAoB,EAAE,MAA0B;IAC5F,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAEtD,OAAO;QACL,IAAI;QACJ,OAAO;QACP,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,IAAY,EAAE,OAAoB,EAAE,IAAmB;IACpF,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,CACL,GAAG,IAAI,mBAAmB,mBAAW,WAAW;QAChD,8BAA8B,sBAAc,cAAc,gBAAQ,MAAM;QACxE,iDAAiD,CAClD,CAAA;AACH,CAAC","sourcesContent":["/**\n * **마스터를 나눠 내는 규칙** — 순수 판단.\n *\n * ═══════════════════════════════════════════════════════════════════════════\n * ── 무엇이 문제였나 ────────────────────────────────────────────────────────\n * 트윈이 당겨 가는 마스터 조회 여덟 축이 **전부 전량 조회**였다. 도메인 조건 하나만 걸고 그 축의 모든\n * 행을 읽어 JSON 한 덩어리로 낸다.\n *\n * 재봤다: 품목 100만에서 **2,219ms · 49MB**. 지금 미라텍은 자재 106개라 안 아프지만, 이 제품의 규모\n * 기준은 엔티티 10만 · 품목 100만이다. 그 규모에서 이 조회는 서지 않는다.\n *\n * ── 왜 「조용히 자르기」가 아니라 「거절」인가 ──────────────────────────────\n * 한계를 두고 **말없이 앞부분만 주는 것이 제일 나쁘다.** 받는 쪽은 그것이 전부인 줄 알고 트윈을\n * 세우고, 없는 설비·없는 품목이 화면에서 그냥 **존재하지 않게** 된다. 오류가 안 난다.\n *\n * 오늘 하루 종일 잡은 부류가 그것이라, 여기서는 그렇게 하지 않는다.\n *\n * 나눠 달라고 하면(`limit`) 그만큼 주고 **더 있는지 말한다**(`hasMore`)\n * 통째로 달라고 했는데 크면 **거절하고 나눠 받으라고 말한다**\n * 통째로 달라고 했는데 작으면 그냥 준다 — 대부분의 현장이 여기다\n *\n * 그래서 작은 공장은 지금 그대로 돌고, 큰 공장은 **틀린 답 대신 오류**를 받는다.\n *\n * ── 왜 이름으로 이어 받나 ──────────────────────────────────────────────────\n * `offset` 은 규모에서 못 쓴다 — 뒤로 갈수록 건너뛴 만큼을 매번 다시 읽는다. 이 축들은 이미 이름으로\n * 정렬해 내므로(`order: { name: 'ASC' }`), **마지막 이름 다음부터** 읽으면 건너뛸 것이 없다.\n *\n * 이름이 유일하다는 것에 기댄다. 도메인 안에서 마스터 이름은 유일하다(그 이름으로 실적·사실이 자원을\n * 가리킨다 — 유일하지 않으면 그것부터 깨진다).\n * ═══════════════════════════════════════════════════════════════════════════\n */\n\n/**\n * 한 번에 낼 수 있는 **최대**. 이보다 크게 달라고 해도 이만큼만 낸다.\n *\n * ⚠ **이것은 안전장치이지 권하는 쪽 크기가 아니다.** 받는 쪽이 이 수에 붙여 두면, 우리가 한도를\n * 내리는 날 그쪽은 **그날부터** 못 읽는다. 권하는 크기는 `SUGGESTED_PAGE` 다.\n *\n * 인티그레이션이 붙이면서 스스로 이 구별을 하고 2,000 을 골랐다(2026-09-05) — 「그 수는 거절하는\n * 자리이지 권하는 크기가 아니다」. 맞는 판단이고, 여기 적혀 있지 않아서 스스로 알아낸 것이라 적는다.\n */\nexport const MAX_PAGE = 5_000\n\n/**\n * 권하는 쪽 크기.\n *\n * [재봤음] 품목 100만이 전량 49MB 였으니 2,000이면 한 쪽이 100KB 안팎이다. 한 쪽에 1.4ms 이고\n * 이어받기는 0.1ms 라, 쪽을 더 키워 얻을 것이 없다.\n */\nexport const SUGGESTED_PAGE = 2_000\n\n/** `limit` 을 안 주고 나눠 받지도 않을 때, 통째로 내주는 한도. 넘으면 거절한다. */\nexport const WHOLE_LIMIT = 5_000\n\n/** 나눠 달라고 했는데 몇 개인지는 안 말했을 때. */\nexport const DEFAULT_PAGE = 1_000\n\nexport interface PageRequest {\n /** 이 이름 **다음부터**. 앞 페이지의 `next` 를 그대로 준다. */\n after?: string\n /** 몇 개까지. 없으면 통째로 달라는 뜻이다. */\n limit?: number\n}\n\n/**\n * 실제로 몇 개를 읽을 것인가.\n *\n * **하나를 더 읽는다.** 더 있는지 알려면 세거나(`COUNT`) 한 개 더 읽어야 하는데, 세는 것은 같은 조건을\n * 두 번 훑는 것이라 규모에서 두 배가 된다.\n */\nexport function takeFor(request: PageRequest): number {\n if (request.limit === undefined) {\n /* 통째로 달라는 요청이다. 한도를 넘는지 보려면 한도+1 을 읽어 봐야 한다. */\n return WHOLE_LIMIT + 1\n }\n\n /* 0 이나 음수를 「전부」로 읽지 않는다 — 그렇게 읽으면 실수 하나가 전량 조회가 된다. */\n const asked = Math.floor(request.limit)\n const bounded = Number.isFinite(asked) ? Math.min(Math.max(asked, 1), MAX_PAGE) : DEFAULT_PAGE\n\n return bounded + 1\n}\n\nexport interface Page<T> {\n rows: T[]\n /** 더 있나. **이 값을 안 보고 쓰면 조용히 잘린 자료를 쓰게 된다.** */\n hasMore: boolean\n /** 이어 받을 자리 — 다음 요청의 `after`. 더 없으면 없다. */\n next?: string\n}\n\n/**\n * 하나 더 읽어 온 결과를 페이지로 만든다.\n *\n * `nameOf` 를 받는 이유: 축마다 이름 칸이 다르다(`name` · `operationKey` …). 그 차이를 여기서 알아보려\n * 하면 축이 늘 때마다 이 함수를 고쳐야 한다.\n */\nexport function pageOf<T>(read: readonly T[], request: PageRequest, nameOf: (row: T) => string): Page<T> {\n const size = takeFor(request) - 1\n const hasMore = read.length > size\n const rows = hasMore ? read.slice(0, size) : [...read]\n\n return {\n rows,\n hasMore,\n ...(hasMore && rows.length ? { next: nameOf(rows[rows.length - 1]) } : {})\n }\n}\n\n/**\n * **통째로 달라고 했는데 너무 크다** — 낼 수 없는 이유를 사람 말로.\n *\n * 자르지 않는다. 자르면 받는 쪽은 그것이 전부인 줄 안다.\n */\nexport function tooLargeToPull(axis: string, request: PageRequest, page: Page<unknown>): string | undefined {\n if (request.limit !== undefined || !page.hasMore) {\n return undefined\n }\n\n return (\n `${axis} 축이 한 번에 낼 수 있는 ${WHOLE_LIMIT}건을 넘습니다. ` +\n `limit 과 after 로 나눠 받으십시오 — ${SUGGESTED_PAGE}건쯤이 알맞고(최대 ${MAX_PAGE}건), ` +\n '응답의 hasMore 가 거짓이 될 때까지 next 를 after 로 넘기면 됩니다.'\n )\n}\n"]}
@@ -1,7 +0,0 @@
1
- import { MaterialClass } from './material-class';
2
- import { MaterialDefinition } from './material-definition';
3
- import { MaterialQuery } from './material-query';
4
- import { MaterialClassResolver, MaterialDefinitionResolver } from './material-master-resolver';
5
- import { MaterialDefinitionRevisionResolver } from './material-revision-resolver';
6
- export declare const entities: (typeof MaterialClass | typeof MaterialDefinition | typeof import("./material-revision").MaterialDefinitionRevision | typeof import("./material-revision").MaterialDefinitionPlan | typeof import("./material-revision").MaterialDefinitionSegment | typeof import("./material-revision").MaterialDefinitionBasis)[];
7
- export declare const resolvers: (typeof MaterialClassResolver | typeof MaterialDefinitionResolver | typeof MaterialDefinitionRevisionResolver | typeof MaterialQuery)[];
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolvers = exports.entities = void 0;
4
- const material_class_1 = require("./material-class");
5
- const material_definition_1 = require("./material-definition");
6
- const material_query_1 = require("./material-query");
7
- const material_master_resolver_1 = require("./material-master-resolver");
8
- const material_revision_1 = require("./material-revision");
9
- const material_revision_resolver_1 = require("./material-revision-resolver");
10
- exports.entities = [material_class_1.MaterialClass, material_definition_1.MaterialDefinition, ...material_revision_1.MATERIAL_REVISION_ENTITIES];
11
- exports.resolvers = [material_query_1.MaterialQuery, material_master_resolver_1.MaterialClassResolver, material_master_resolver_1.MaterialDefinitionResolver, material_revision_resolver_1.MaterialDefinitionRevisionResolver];
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/material/index.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAChD,+DAA0D;AAC1D,qDAAgD;AAChD,yEAA8F;AAC9F,2DAAgE;AAChE,6EAAiF;AAEpE,QAAA,QAAQ,GAAG,CAAC,8BAAa,EAAE,wCAAkB,EAAE,GAAG,8CAA0B,CAAC,CAAA;AAC7E,QAAA,SAAS,GAAG,CAAC,8BAAa,EAAE,gDAAqB,EAAE,qDAA0B,EAAE,+DAAkC,CAAC,CAAA","sourcesContent":["import { MaterialClass } from './material-class'\nimport { MaterialDefinition } from './material-definition'\nimport { MaterialQuery } from './material-query'\nimport { MaterialClassResolver, MaterialDefinitionResolver } from './material-master-resolver'\nimport { MATERIAL_REVISION_ENTITIES } from './material-revision'\nimport { MaterialDefinitionRevisionResolver } from './material-revision-resolver'\n\nexport const entities = [MaterialClass, MaterialDefinition, ...MATERIAL_REVISION_ENTITIES]\nexport const resolvers = [MaterialQuery, MaterialClassResolver, MaterialDefinitionResolver, MaterialDefinitionRevisionResolver]\n"]}
@@ -1,8 +0,0 @@
1
- import { EntityManager } from 'typeorm';
2
- /** Future activation changes the stamp without rewriting identity rows or running a midnight job. */
3
- export declare function materialAxisStatus(manager: EntityManager, domainId: string, at?: Date): Promise<{
4
- changedAt?: Date;
5
- axis: string;
6
- count: number;
7
- stamp: string;
8
- }>;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.materialAxisStatus = materialAxisStatus;
4
- const material_definition_1 = require("./material-definition");
5
- const material_revision_1 = require("./material-revision");
6
- /** Future activation changes the stamp without rewriting identity rows or running a midnight job. */
7
- async function materialAxisStatus(manager, domainId, at = new Date()) {
8
- const row = await manager.createQueryBuilder(material_definition_1.MaterialDefinition, 'm')
9
- .leftJoin(material_revision_1.MaterialDefinitionPlan, 'p', 'p.material_id = m.id AND p.domain_id = m.domain_id AND p.generation = m.plan_generation')
10
- .leftJoin(material_revision_1.MaterialDefinitionSegment, 's', 's.plan_id = p.id AND s.validFrom <= :at AND (s.validTo IS NULL OR s.validTo > :at)', { at })
11
- .leftJoin(material_revision_1.MaterialDefinitionRevision, 'r', 'r.id = s.revision_id')
12
- .select('COUNT(r.id)', 'count').addSelect('SUM(r.revisionNumber)', 'revisionSum')
13
- .addSelect('SUM(m.planGeneration)', 'generationSum').addSelect('MAX(p.recordedAt)', 'changedAt')
14
- .where('m.domain_id = :domainId', { domainId }).getRawOne();
15
- return { axis: 'materialDefinitions', count: Number(row.count),
16
- stamp: JSON.stringify([row.count, row.revisionSum, row.generationSum, row.changedAt]),
17
- ...(row.changedAt ? { changedAt: new Date(row.changedAt) } : {}) };
18
- }
19
- //# sourceMappingURL=material-axis-status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"material-axis-status.js","sourceRoot":"","sources":["../../../server/service/material/material-axis-status.ts"],"names":[],"mappings":";;AAKA,gDAWC;AAfD,+DAA0D;AAC1D,2DAAmH;AAEnH,qGAAqG;AAC9F,KAAK,UAAU,kBAAkB,CAAC,OAAsB,EAAE,QAAgB,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE;IAChG,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,wCAAkB,EAAE,GAAG,CAAC;SAClE,QAAQ,CAAC,0CAAsB,EAAE,GAAG,EAAE,yFAAyF,CAAC;SAChI,QAAQ,CAAC,6CAAyB,EAAE,GAAG,EAAE,oFAAoF,EAAE,EAAE,EAAE,EAAE,CAAC;SACtI,QAAQ,CAAC,8CAA0B,EAAE,GAAG,EAAE,sBAAsB,CAAC;SACjE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,uBAAuB,EAAE,aAAa,CAAC;SAChF,SAAS,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC,SAAS,CAAC,mBAAmB,EAAE,WAAW,CAAC;SAC/F,KAAK,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAA;IAC7D,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACrF,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AACtE,CAAC","sourcesContent":["import { EntityManager } from 'typeorm'\nimport { MaterialDefinition } from './material-definition'\nimport { MaterialDefinitionPlan, MaterialDefinitionRevision, MaterialDefinitionSegment } from './material-revision'\n\n/** Future activation changes the stamp without rewriting identity rows or running a midnight job. */\nexport async function materialAxisStatus(manager: EntityManager, domainId: string, at = new Date()) {\n const row = await manager.createQueryBuilder(MaterialDefinition, 'm')\n .leftJoin(MaterialDefinitionPlan, 'p', 'p.material_id = m.id AND p.domain_id = m.domain_id AND p.generation = m.plan_generation')\n .leftJoin(MaterialDefinitionSegment, 's', 's.plan_id = p.id AND s.validFrom <= :at AND (s.validTo IS NULL OR s.validTo > :at)', { at })\n .leftJoin(MaterialDefinitionRevision, 'r', 'r.id = s.revision_id')\n .select('COUNT(r.id)', 'count').addSelect('SUM(r.revisionNumber)', 'revisionSum')\n .addSelect('SUM(m.planGeneration)', 'generationSum').addSelect('MAX(p.recordedAt)', 'changedAt')\n .where('m.domain_id = :domainId', { domainId }).getRawOne()\n return { axis: 'materialDefinitions', count: Number(row.count),\n stamp: JSON.stringify([row.count, row.revisionSum, row.generationSum, row.changedAt]),\n ...(row.changedAt ? { changedAt: new Date(row.changedAt) } : {}) }\n}\n"]}
@@ -1,34 +0,0 @@
1
- import { Domain } from '@things-factory/shell';
2
- import { User } from '@things-factory/auth-base';
3
- /**
4
- * 품목 등급 — **ISA-95 `MaterialClass`**.
5
- *
6
- * 「원자재」·「완제품」처럼 품목을 묶는 상위 개념이다. 레시피가 특정 품번 대신 등급으로 투입을 적을 수 있고,
7
- * 화면이 재고를 그 단위로 모은다.
8
- *
9
- * 구조는 인원 등급 · 설비 등급과 같다(표준이 넷을 같은 모양으로 정의한다).
10
- */
11
- export declare class MaterialClass {
12
- readonly id: string;
13
- domain?: Domain;
14
- domainId?: string;
15
- /** 표준 `MaterialClassID`. */
16
- name: string;
17
- description?: string;
18
- /** 상위 등급들 — 표준 `MaterialClassBaseID`(복수). 「6축 용접기」가 「용접기」를 상속한다. */
19
- baseIds?: string[];
20
- /** 이 등급의 적격을 정하는 `TestSpecification` 참조들 — 표준 `TestSpecificationID`. */
21
- testSpecificationIds?: string[];
22
- /** 등급 속성 — 표준 `MaterialClassProperty`. */
23
- properties?: Record<string, unknown>[];
24
- /** 언제부터 유효한가 — 표준 `EffectiveStartDate`. */
25
- effectiveStart?: Date;
26
- /** 언제까지 유효한가 — 표준 `EffectiveEndDate`. */
27
- effectiveEnd?: Date;
28
- createdAt?: Date;
29
- updatedAt?: Date;
30
- creator?: User;
31
- creatorId?: string;
32
- updater?: User;
33
- updaterId?: string;
34
- }
@@ -1,104 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MaterialClass = 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 `MaterialClass`**.
11
- *
12
- * 「원자재」·「완제품」처럼 품목을 묶는 상위 개념이다. 레시피가 특정 품번 대신 등급으로 투입을 적을 수 있고,
13
- * 화면이 재고를 그 단위로 모은다.
14
- *
15
- * 구조는 인원 등급 · 설비 등급과 같다(표준이 넷을 같은 모양으로 정의한다).
16
- */
17
- let MaterialClass = class MaterialClass {
18
- };
19
- exports.MaterialClass = MaterialClass;
20
- tslib_1.__decorate([
21
- (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
22
- (0, type_graphql_1.Field)(type => type_graphql_1.ID),
23
- tslib_1.__metadata("design:type", String)
24
- ], MaterialClass.prototype, "id", void 0);
25
- tslib_1.__decorate([
26
- (0, typeorm_1.ManyToOne)(type => shell_1.Domain),
27
- (0, type_graphql_1.Field)(type => shell_1.Domain),
28
- tslib_1.__metadata("design:type", shell_1.Domain)
29
- ], MaterialClass.prototype, "domain", void 0);
30
- tslib_1.__decorate([
31
- (0, typeorm_1.RelationId)((klass) => klass.domain),
32
- tslib_1.__metadata("design:type", String)
33
- ], MaterialClass.prototype, "domainId", void 0);
34
- tslib_1.__decorate([
35
- (0, typeorm_1.Column)(),
36
- (0, type_graphql_1.Field)(),
37
- tslib_1.__metadata("design:type", String)
38
- ], MaterialClass.prototype, "name", void 0);
39
- tslib_1.__decorate([
40
- (0, typeorm_1.Column)({ nullable: true }),
41
- (0, type_graphql_1.Field)({ nullable: true }),
42
- tslib_1.__metadata("design:type", String)
43
- ], MaterialClass.prototype, "description", void 0);
44
- tslib_1.__decorate([
45
- (0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
46
- (0, type_graphql_1.Field)(type => [String], { nullable: true }),
47
- tslib_1.__metadata("design:type", Array)
48
- ], MaterialClass.prototype, "baseIds", void 0);
49
- tslib_1.__decorate([
50
- (0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
51
- (0, type_graphql_1.Field)(type => [String], { nullable: true }),
52
- tslib_1.__metadata("design:type", Array)
53
- ], MaterialClass.prototype, "testSpecificationIds", void 0);
54
- tslib_1.__decorate([
55
- (0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
56
- (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'ResourceProperty[]' }),
57
- tslib_1.__metadata("design:type", Array)
58
- ], MaterialClass.prototype, "properties", void 0);
59
- tslib_1.__decorate([
60
- (0, typeorm_1.Column)({ nullable: true }),
61
- (0, type_graphql_1.Field)({ nullable: true }),
62
- tslib_1.__metadata("design:type", Date
63
- /** 언제까지 유효한가 — 표준 `EffectiveEndDate`. */
64
- )
65
- ], MaterialClass.prototype, "effectiveStart", void 0);
66
- tslib_1.__decorate([
67
- (0, typeorm_1.Column)({ nullable: true }),
68
- (0, type_graphql_1.Field)({ nullable: true }),
69
- tslib_1.__metadata("design:type", Date)
70
- ], MaterialClass.prototype, "effectiveEnd", void 0);
71
- tslib_1.__decorate([
72
- (0, typeorm_1.CreateDateColumn)(),
73
- (0, type_graphql_1.Field)({ nullable: true }),
74
- tslib_1.__metadata("design:type", Date)
75
- ], MaterialClass.prototype, "createdAt", void 0);
76
- tslib_1.__decorate([
77
- (0, typeorm_1.UpdateDateColumn)(),
78
- (0, type_graphql_1.Field)({ nullable: true }),
79
- tslib_1.__metadata("design:type", Date)
80
- ], MaterialClass.prototype, "updatedAt", void 0);
81
- tslib_1.__decorate([
82
- (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
83
- (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
84
- tslib_1.__metadata("design:type", auth_base_1.User)
85
- ], MaterialClass.prototype, "creator", void 0);
86
- tslib_1.__decorate([
87
- (0, typeorm_1.RelationId)((klass) => klass.creator),
88
- tslib_1.__metadata("design:type", String)
89
- ], MaterialClass.prototype, "creatorId", void 0);
90
- tslib_1.__decorate([
91
- (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
92
- (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
93
- tslib_1.__metadata("design:type", auth_base_1.User)
94
- ], MaterialClass.prototype, "updater", void 0);
95
- tslib_1.__decorate([
96
- (0, typeorm_1.RelationId)((klass) => klass.updater),
97
- tslib_1.__metadata("design:type", String)
98
- ], MaterialClass.prototype, "updaterId", void 0);
99
- exports.MaterialClass = MaterialClass = tslib_1.__decorate([
100
- (0, typeorm_1.Entity)({ name: 'ops_material_class' }),
101
- (0, typeorm_1.Index)('ix_ops_material_class_0', (klass) => [klass.domain, klass.name], { unique: true }),
102
- (0, type_graphql_1.ObjectType)({ description: 'ISA-95 MaterialClass — a grouping of material definitions' })
103
- ], MaterialClass);
104
- //# sourceMappingURL=material-class.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"material-class.js","sourceRoot":"","sources":["../../../server/service/material/material-class.ts"],"names":[],"mappings":";;;;AAAA,qCASgB;AAChB,+CAAoD;AAEpD,iDAA4D;AAC5D,yDAAgD;AAEhD;;;;;;;GAOG;AAII,IAAM,aAAa,GAAnB,MAAM,aAAa;CAmEzB,CAAA;AAnEY,sCAAa;AAGf;IAFR,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;yCACC;AAInB;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;sCACb,cAAM;6CAAA;AAGf;IADC,IAAA,oBAAU,EAAC,CAAC,KAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;;+CAClC;AAKjB;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,GAAE;;2CACI;AAIZ;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACN;AAKpB;IAFC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CAC1B;AAKlB;IAFC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DACb;AAK/B;IAFC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;;iDAC7C;AAKtC;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACT,IAAI;IAErB,yCAAyC;;qDAFpB;AAKrB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACX,IAAI;mDAAA;AAInB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;gDAAA;AAIhB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;gDAAA;AAIhB;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC9B,gBAAI;8CAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,KAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;gDAClC;AAIlB;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC9B,gBAAI;8CAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,KAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;gDAClC;wBAlEP,aAAa;IAHzB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;IACtC,IAAA,eAAK,EAAC,yBAAyB,EAAE,CAAC,KAAoB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACxG,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,2DAA2D,EAAE,CAAC;GAC5E,aAAa,CAmEzB","sourcesContent":["import {\n Column,\n CreateDateColumn,\n Entity,\n Index,\n ManyToOne,\n PrimaryGeneratedColumn,\n RelationId,\n UpdateDateColumn\n} from 'typeorm'\nimport { Field, ID, ObjectType } from 'type-graphql'\n\nimport { Domain, ScalarObject } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n/**\n * 품목 등급 — **ISA-95 `MaterialClass`**.\n *\n * 「원자재」·「완제품」처럼 품목을 묶는 상위 개념이다. 레시피가 특정 품번 대신 등급으로 투입을 적을 수 있고,\n * 화면이 재고를 그 단위로 모은다.\n *\n * 구조는 인원 등급 · 설비 등급과 같다(표준이 넷을 같은 모양으로 정의한다).\n */\n@Entity({ name: 'ops_material_class' })\n@Index('ix_ops_material_class_0', (klass: MaterialClass) => [klass.domain, klass.name], { unique: true })\n@ObjectType({ description: 'ISA-95 MaterialClass — a grouping of material definitions' })\nexport class MaterialClass {\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((klass: MaterialClass) => klass.domain)\n domainId?: string\n\n /** 표준 `MaterialClassID`. */\n @Column()\n @Field()\n name: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n /** 상위 등급들 — 표준 `MaterialClassBaseID`(복수). 「6축 용접기」가 「용접기」를 상속한다. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => [String], { nullable: true })\n baseIds?: string[]\n\n /** 이 등급의 적격을 정하는 `TestSpecification` 참조들 — 표준 `TestSpecificationID`. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => [String], { nullable: true })\n testSpecificationIds?: string[]\n\n /** 등급 속성 — 표준 `MaterialClassProperty`. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => ScalarObject, { nullable: true, description: 'ResourceProperty[]' })\n properties?: Record<string, unknown>[]\n\n /** 언제부터 유효한가 — 표준 `EffectiveStartDate`. */\n @Column({ nullable: true })\n @Field({ nullable: true })\n effectiveStart?: Date\n\n /** 언제까지 유효한가 — 표준 `EffectiveEndDate`. */\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((klass: MaterialClass) => klass.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((klass: MaterialClass) => klass.updater)\n updaterId?: string\n}\n"]}
@@ -1,45 +0,0 @@
1
- import { Domain } from '@things-factory/shell';
2
- import { User } from '@things-factory/auth-base';
3
- /**
4
- * 품목 정의 — **ISA-95 `MaterialDefinition`**.
5
- *
6
- * 식별자는 **GTIN** 이다(`urn:epc:idpat:sgtin:…`). 정체성의 기준이 EPCIS 이기 때문이고, 사건과 마스터가
7
- * 같은 이름을 써야 「이 로트가 무엇인가」를 이을 수 있다.
8
- *
9
- * GTIN 이 아직 없는 품목은 비워 두지 않고 사내 코드를 `name` 에 적되, **회사 프리픽스를 지어내
10
- * GTIN 을 만들지 않는다.** 지어낸 식별자는 나중에 진짜 코드가 왔을 때 두 개가 된다.
11
- */
12
- export declare class MaterialDefinition {
13
- revisionNumber?: number;
14
- planGeneration: number;
15
- revisionLock: number;
16
- readonly id: string;
17
- domain?: Domain;
18
- domainId?: string;
19
- /** 표준 `ID` — GTIN 이 있으면 GTIN 이다. 트윈으로 나갈 때 `materialDefinitions[].id` 가 된다. */
20
- name: string;
21
- description?: string;
22
- /** 속한 등급들 — 표준 `MaterialClassID`(복수). */
23
- materialClassIds?: string[];
24
- /**
25
- * 품목 속성 — 표준 `MaterialDefinitionProperty`. **환산 계수가 여기 들어간다.**
26
- *
27
- * 계약이 정한 이름은 `perBaseUnit` 이고, 값은 기준 단위 하나당 그 단위의 양이다.
28
- * 한 개(EA)가 2.5 kg 이면 `{ id: 'perBaseUnit', value: 2.5, uom: 'KGM' }`.
29
- */
30
- properties?: Record<string, unknown>[];
31
- /** 적격을 검증하는 `TestSpecification` 참조들 — 입고 검사가 이 모양에 맞는다. */
32
- testSpecificationIds?: string[];
33
- /** `TestResult` — 참조만 있으면 「무엇으로 검증한다」까지고, 결과가 있어야 적격이 성립한다. */
34
- testResults?: Record<string, unknown>[];
35
- /** 언제부터 이 품목을 쓰나 — 표준 `EffectiveStartDate`. 단종 예정 품목을 미리 적을 수 있다. */
36
- effectiveStart?: Date;
37
- /** 언제까지 — 표준 `EffectiveEndDate`. */
38
- effectiveEnd?: Date;
39
- createdAt?: Date;
40
- updatedAt?: Date;
41
- creator?: User;
42
- creatorId?: string;
43
- updater?: User;
44
- updaterId?: string;
45
- }