@things-factory/ops-master 10.1.248 → 10.1.250

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/dist-client/bootstrap.d.ts +19 -0
  2. package/dist-client/bootstrap.js +66 -0
  3. package/dist-client/bootstrap.js.map +1 -0
  4. package/dist-client/index.d.ts +17 -0
  5. package/dist-client/index.js +21 -0
  6. package/dist-client/index.js.map +1 -0
  7. package/dist-client/master-change-approval.d.ts +14 -0
  8. package/dist-client/master-change-approval.js +36 -0
  9. package/dist-client/master-change-approval.js.map +1 -0
  10. package/dist-client/master-change-policy-axes.d.ts +37 -0
  11. package/dist-client/master-change-policy-axes.js +29 -0
  12. package/dist-client/master-change-policy-axes.js.map +1 -0
  13. package/dist-client/master-change-policy-panel.d.ts +59 -0
  14. package/dist-client/master-change-policy-panel.js +454 -0
  15. package/dist-client/master-change-policy-panel.js.map +1 -0
  16. package/dist-client/master-change-providers.d.ts +4 -0
  17. package/dist-client/master-change-providers.js +91 -0
  18. package/dist-client/master-change-providers.js.map +1 -0
  19. package/dist-client/pages/master/applied-when-dialog.d.ts +48 -0
  20. package/dist-client/pages/master/applied-when-dialog.js +137 -0
  21. package/dist-client/pages/master/applied-when-dialog.js.map +1 -0
  22. package/dist-client/pages/master/assignment-fields.d.ts +27 -0
  23. package/dist-client/pages/master/assignment-fields.js +62 -0
  24. package/dist-client/pages/master/assignment-fields.js.map +1 -0
  25. package/dist-client/pages/master/equipment-class.d.ts +12 -0
  26. package/dist-client/pages/master/equipment-class.js +42 -0
  27. package/dist-client/pages/master/equipment-class.js.map +1 -0
  28. package/dist-client/pages/master/equipment.d.ts +12 -0
  29. package/dist-client/pages/master/equipment.js +58 -0
  30. package/dist-client/pages/master/equipment.js.map +1 -0
  31. package/dist-client/pages/master/grist-iso-duration.d.ts +20 -0
  32. package/dist-client/pages/master/grist-iso-duration.js +70 -0
  33. package/dist-client/pages/master/grist-iso-duration.js.map +1 -0
  34. package/dist-client/pages/master/grist-reference.d.ts +91 -0
  35. package/dist-client/pages/master/grist-reference.js +419 -0
  36. package/dist-client/pages/master/grist-reference.js.map +1 -0
  37. package/dist-client/pages/master/import-rows.d.ts +35 -0
  38. package/dist-client/pages/master/import-rows.js +66 -0
  39. package/dist-client/pages/master/import-rows.js.map +1 -0
  40. package/dist-client/pages/master/iso-duration.d.ts +34 -0
  41. package/dist-client/pages/master/iso-duration.js +76 -0
  42. package/dist-client/pages/master/iso-duration.js.map +1 -0
  43. package/dist-client/pages/master/master-options.d.ts +40 -0
  44. package/dist-client/pages/master/master-options.js +54 -0
  45. package/dist-client/pages/master/master-options.js.map +1 -0
  46. package/dist-client/pages/master/master-page-base.d.ts +369 -0
  47. package/dist-client/pages/master/master-page-base.js +657 -0
  48. package/dist-client/pages/master/master-page-base.js.map +1 -0
  49. package/dist-client/pages/master/material-class.d.ts +12 -0
  50. package/dist-client/pages/master/material-class.js +42 -0
  51. package/dist-client/pages/master/material-class.js.map +1 -0
  52. package/dist-client/pages/master/material-definition.d.ts +5 -0
  53. package/dist-client/pages/master/material-definition.js +14 -0
  54. package/dist-client/pages/master/material-definition.js.map +1 -0
  55. package/dist-client/pages/master/material-revision-fields.d.ts +2 -0
  56. package/dist-client/pages/master/material-revision-fields.js +43 -0
  57. package/dist-client/pages/master/material-revision-fields.js.map +1 -0
  58. package/dist-client/pages/master/operation-definition.d.ts +12 -0
  59. package/dist-client/pages/master/operation-definition.js +49 -0
  60. package/dist-client/pages/master/operation-definition.js.map +1 -0
  61. package/dist-client/pages/master/operational-location.d.ts +84 -0
  62. package/dist-client/pages/master/operational-location.js +432 -0
  63. package/dist-client/pages/master/operational-location.js.map +1 -0
  64. package/dist-client/pages/master/person.d.ts +12 -0
  65. package/dist-client/pages/master/person.js +41 -0
  66. package/dist-client/pages/master/person.js.map +1 -0
  67. package/dist-client/pages/master/personnel-class.d.ts +12 -0
  68. package/dist-client/pages/master/personnel-class.js +43 -0
  69. package/dist-client/pages/master/personnel-class.js.map +1 -0
  70. package/dist-client/pages/master/physical-asset-class.d.ts +12 -0
  71. package/dist-client/pages/master/physical-asset-class.js +40 -0
  72. package/dist-client/pages/master/physical-asset-class.js.map +1 -0
  73. package/dist-client/pages/master/physical-asset.d.ts +12 -0
  74. package/dist-client/pages/master/physical-asset.js +41 -0
  75. package/dist-client/pages/master/physical-asset.js.map +1 -0
  76. package/dist-client/pages/master/recipe-definition.d.ts +5 -0
  77. package/dist-client/pages/master/recipe-definition.js +14 -0
  78. package/dist-client/pages/master/recipe-definition.js.map +1 -0
  79. package/dist-client/pages/master/reference-targets.d.ts +42 -0
  80. package/dist-client/pages/master/reference-targets.js +82 -0
  81. package/dist-client/pages/master/reference-targets.js.map +1 -0
  82. package/dist-client/pages/master/revision-comparison.d.ts +49 -0
  83. package/dist-client/pages/master/revision-comparison.js +560 -0
  84. package/dist-client/pages/master/revision-comparison.js.map +1 -0
  85. package/dist-client/pages/master/revision-view.d.ts +34 -0
  86. package/dist-client/pages/master/revision-view.js +145 -0
  87. package/dist-client/pages/master/revision-view.js.map +1 -0
  88. package/dist-client/pages/master/revision-workspace.d.ts +50 -0
  89. package/dist-client/pages/master/revision-workspace.js +763 -0
  90. package/dist-client/pages/master/revision-workspace.js.map +1 -0
  91. package/dist-client/pages/master/route-definition.d.ts +19 -0
  92. package/dist-client/pages/master/route-definition.js +40 -0
  93. package/dist-client/pages/master/route-definition.js.map +1 -0
  94. package/dist-client/pages/master/stop-reason.d.ts +12 -0
  95. package/dist-client/pages/master/stop-reason.js +48 -0
  96. package/dist-client/pages/master/stop-reason.js.map +1 -0
  97. package/dist-client/pages/master/test-specification.d.ts +5 -0
  98. package/dist-client/pages/master/test-specification.js +14 -0
  99. package/dist-client/pages/master/test-specification.js.map +1 -0
  100. package/dist-client/pages/master-axes.d.ts +24 -0
  101. package/dist-client/pages/master-axes.js +39 -0
  102. package/dist-client/pages/master-axes.js.map +1 -0
  103. package/dist-client/route.d.ts +1 -0
  104. package/dist-client/route.js +81 -0
  105. package/dist-client/route.js.map +1 -0
  106. package/dist-client/tsconfig.tsbuildinfo +1 -0
  107. package/dist-server/index.d.ts +1 -0
  108. package/dist-server/index.js +19 -0
  109. package/dist-server/index.js.map +1 -0
  110. package/dist-server/service/ai-entry/master-entry-rules.d.ts +175 -0
  111. package/dist-server/service/ai-entry/master-entry-rules.js +302 -0
  112. package/dist-server/service/ai-entry/master-entry-rules.js.map +1 -0
  113. package/dist-server/service/ai-entry/master-entry-targets.d.ts +23 -0
  114. package/dist-server/service/ai-entry/master-entry-targets.js +293 -0
  115. package/dist-server/service/ai-entry/master-entry-targets.js.map +1 -0
  116. package/dist-server/service/approval-route.d.ts +37 -0
  117. package/dist-server/service/approval-route.js +34 -0
  118. package/dist-server/service/approval-route.js.map +1 -0
  119. package/dist-server/service/asset/asset-lifecycle.d.ts +106 -0
  120. package/dist-server/service/asset/asset-lifecycle.js +126 -0
  121. package/dist-server/service/asset/asset-lifecycle.js.map +1 -0
  122. package/dist-server/service/asset/asset-master-resolver.d.ts +53 -0
  123. package/dist-server/service/asset/asset-master-resolver.js +185 -0
  124. package/dist-server/service/asset/asset-master-resolver.js.map +1 -0
  125. package/dist-server/service/asset/asset-master.d.ts +21 -0
  126. package/dist-server/service/asset/asset-master.js +25 -0
  127. package/dist-server/service/asset/asset-master.js.map +1 -0
  128. package/dist-server/service/asset/asset-query.d.ts +16 -0
  129. package/dist-server/service/asset/asset-query.js +72 -0
  130. package/dist-server/service/asset/asset-query.js.map +1 -0
  131. package/dist-server/service/asset/index.d.ts +6 -0
  132. package/dist-server/service/asset/index.js +10 -0
  133. package/dist-server/service/asset/index.js.map +1 -0
  134. package/dist-server/service/asset/physical-asset-class.d.ts +34 -0
  135. package/dist-server/service/asset/physical-asset-class.js +104 -0
  136. package/dist-server/service/asset/physical-asset-class.js.map +1 -0
  137. package/dist-server/service/asset/physical-asset.d.ts +66 -0
  138. package/dist-server/service/asset/physical-asset.js +123 -0
  139. package/dist-server/service/asset/physical-asset.js.map +1 -0
  140. package/dist-server/service/assignment/applied-when.d.ts +24 -0
  141. package/dist-server/service/assignment/applied-when.js +16 -0
  142. package/dist-server/service/assignment/applied-when.js.map +1 -0
  143. package/dist-server/service/assignment/assignment-history.d.ts +92 -0
  144. package/dist-server/service/assignment/assignment-history.js +289 -0
  145. package/dist-server/service/assignment/assignment-history.js.map +1 -0
  146. package/dist-server/service/assignment/assignment-write.d.ts +42 -0
  147. package/dist-server/service/assignment/assignment-write.js +101 -0
  148. package/dist-server/service/assignment/assignment-write.js.map +1 -0
  149. package/dist-server/service/assignment/master-value-claim.d.ts +135 -0
  150. package/dist-server/service/assignment/master-value-claim.js +174 -0
  151. package/dist-server/service/assignment/master-value-claim.js.map +1 -0
  152. package/dist-server/service/equipment/equipment-class.d.ts +34 -0
  153. package/dist-server/service/equipment/equipment-class.js +104 -0
  154. package/dist-server/service/equipment/equipment-class.js.map +1 -0
  155. package/dist-server/service/equipment/equipment-master-resolver.d.ts +77 -0
  156. package/dist-server/service/equipment/equipment-master-resolver.js +266 -0
  157. package/dist-server/service/equipment/equipment-master-resolver.js.map +1 -0
  158. package/dist-server/service/equipment/equipment-master.d.ts +30 -0
  159. package/dist-server/service/equipment/equipment-master.js +53 -0
  160. package/dist-server/service/equipment/equipment-master.js.map +1 -0
  161. package/dist-server/service/equipment/equipment-query.d.ts +16 -0
  162. package/dist-server/service/equipment/equipment-query.js +72 -0
  163. package/dist-server/service/equipment/equipment-query.js.map +1 -0
  164. package/dist-server/service/equipment/equipment.d.ts +71 -0
  165. package/dist-server/service/equipment/equipment.js +138 -0
  166. package/dist-server/service/equipment/equipment.js.map +1 -0
  167. package/dist-server/service/equipment/index.d.ts +8 -0
  168. package/dist-server/service/equipment/index.js +12 -0
  169. package/dist-server/service/equipment/index.js.map +1 -0
  170. package/dist-server/service/equipment/state-period-rules.d.ts +95 -0
  171. package/dist-server/service/equipment/state-period-rules.js +122 -0
  172. package/dist-server/service/equipment/state-period-rules.js.map +1 -0
  173. package/dist-server/service/equipment/stop-reason-query.d.ts +11 -0
  174. package/dist-server/service/equipment/stop-reason-query.js +39 -0
  175. package/dist-server/service/equipment/stop-reason-query.js.map +1 -0
  176. package/dist-server/service/equipment/stop-reason.d.ts +58 -0
  177. package/dist-server/service/equipment/stop-reason.js +114 -0
  178. package/dist-server/service/equipment/stop-reason.js.map +1 -0
  179. package/dist-server/service/index.d.ts +82 -0
  180. package/dist-server/service/index.js +145 -0
  181. package/dist-server/service/index.js.map +1 -0
  182. package/dist-server/service/location/index.d.ts +5 -0
  183. package/dist-server/service/location/index.js +9 -0
  184. package/dist-server/service/location/index.js.map +1 -0
  185. package/dist-server/service/location/location-master-resolver.d.ts +60 -0
  186. package/dist-server/service/location/location-master-resolver.js +313 -0
  187. package/dist-server/service/location/location-master-resolver.js.map +1 -0
  188. package/dist-server/service/location/location-master.d.ts +26 -0
  189. package/dist-server/service/location/location-master.js +28 -0
  190. package/dist-server/service/location/location-master.js.map +1 -0
  191. package/dist-server/service/location/location-query.d.ts +15 -0
  192. package/dist-server/service/location/location-query.js +56 -0
  193. package/dist-server/service/location/location-query.js.map +1 -0
  194. package/dist-server/service/location/operational-location.d.ts +116 -0
  195. package/dist-server/service/location/operational-location.js +157 -0
  196. package/dist-server/service/location/operational-location.js.map +1 -0
  197. package/dist-server/service/master-axis.d.ts +40 -0
  198. package/dist-server/service/master-axis.js +57 -0
  199. package/dist-server/service/master-axis.js.map +1 -0
  200. package/dist-server/service/master-change-approval/approval-input.d.ts +17 -0
  201. package/dist-server/service/master-change-approval/approval-input.js +35 -0
  202. package/dist-server/service/master-change-approval/approval-input.js.map +1 -0
  203. package/dist-server/service/master-change-approval/builtin-axes.d.ts +4 -0
  204. package/dist-server/service/master-change-approval/builtin-axes.js +96 -0
  205. package/dist-server/service/master-change-approval/builtin-axes.js.map +1 -0
  206. package/dist-server/service/master-change-approval/index.d.ts +14 -0
  207. package/dist-server/service/master-change-approval/index.js +37 -0
  208. package/dist-server/service/master-change-approval/index.js.map +1 -0
  209. package/dist-server/service/master-change-approval/master-change-axis.d.ts +54 -0
  210. package/dist-server/service/master-change-approval/master-change-axis.js +17 -0
  211. package/dist-server/service/master-change-approval/master-change-axis.js.map +1 -0
  212. package/dist-server/service/master-change-approval/master-change-flow.d.ts +65 -0
  213. package/dist-server/service/master-change-approval/master-change-flow.js +125 -0
  214. package/dist-server/service/master-change-approval/master-change-flow.js.map +1 -0
  215. package/dist-server/service/master-change-approval/master-change-resolver.d.ts +18 -0
  216. package/dist-server/service/master-change-approval/master-change-resolver.js +58 -0
  217. package/dist-server/service/master-change-approval/master-change-resolver.js.map +1 -0
  218. package/dist-server/service/master-change-policy.d.ts +122 -0
  219. package/dist-server/service/master-change-policy.js +304 -0
  220. package/dist-server/service/master-change-policy.js.map +1 -0
  221. package/dist-server/service/master-conformance-resolver.d.ts +34 -0
  222. package/dist-server/service/master-conformance-resolver.js +153 -0
  223. package/dist-server/service/master-conformance-resolver.js.map +1 -0
  224. package/dist-server/service/master-conformance.d.ts +80 -0
  225. package/dist-server/service/master-conformance.js +266 -0
  226. package/dist-server/service/master-conformance.js.map +1 -0
  227. package/dist-server/service/master-crud.d.ts +55 -0
  228. package/dist-server/service/master-crud.js +93 -0
  229. package/dist-server/service/master-crud.js.map +1 -0
  230. package/dist-server/service/master-list.d.ts +12 -0
  231. package/dist-server/service/master-list.js +30 -0
  232. package/dist-server/service/master-list.js.map +1 -0
  233. package/dist-server/service/master-page-query.d.ts +33 -0
  234. package/dist-server/service/master-page-query.js +55 -0
  235. package/dist-server/service/master-page-query.js.map +1 -0
  236. package/dist-server/service/master-page.d.ts +85 -0
  237. package/dist-server/service/master-page.js +104 -0
  238. package/dist-server/service/master-page.js.map +1 -0
  239. package/dist-server/service/material/index.d.ts +7 -0
  240. package/dist-server/service/material/index.js +12 -0
  241. package/dist-server/service/material/index.js.map +1 -0
  242. package/dist-server/service/material/material-axis-status.d.ts +8 -0
  243. package/dist-server/service/material/material-axis-status.js +19 -0
  244. package/dist-server/service/material/material-axis-status.js.map +1 -0
  245. package/dist-server/service/material/material-class.d.ts +34 -0
  246. package/dist-server/service/material/material-class.js +104 -0
  247. package/dist-server/service/material/material-class.js.map +1 -0
  248. package/dist-server/service/material/material-definition.d.ts +45 -0
  249. package/dist-server/service/material/material-definition.js +125 -0
  250. package/dist-server/service/material/material-definition.js.map +1 -0
  251. package/dist-server/service/material/material-effective-list.d.ts +39 -0
  252. package/dist-server/service/material/material-effective-list.js +54 -0
  253. package/dist-server/service/material/material-effective-list.js.map +1 -0
  254. package/dist-server/service/material/material-master-resolver.d.ts +106 -0
  255. package/dist-server/service/material/material-master-resolver.js +351 -0
  256. package/dist-server/service/material/material-master-resolver.js.map +1 -0
  257. package/dist-server/service/material/material-master.d.ts +9 -0
  258. package/dist-server/service/material/material-master.js +24 -0
  259. package/dist-server/service/material/material-master.js.map +1 -0
  260. package/dist-server/service/material/material-query.d.ts +16 -0
  261. package/dist-server/service/material/material-query.js +79 -0
  262. package/dist-server/service/material/material-query.js.map +1 -0
  263. package/dist-server/service/material/material-revision-content.d.ts +10 -0
  264. package/dist-server/service/material/material-revision-content.js +92 -0
  265. package/dist-server/service/material/material-revision-content.js.map +1 -0
  266. package/dist-server/service/material/material-revision-resolver.d.ts +60 -0
  267. package/dist-server/service/material/material-revision-resolver.js +96 -0
  268. package/dist-server/service/material/material-revision-resolver.js.map +1 -0
  269. package/dist-server/service/material/material-revision-service.d.ts +179 -0
  270. package/dist-server/service/material/material-revision-service.js +687 -0
  271. package/dist-server/service/material/material-revision-service.js.map +1 -0
  272. package/dist-server/service/material/material-revision.d.ts +86 -0
  273. package/dist-server/service/material/material-revision.js +339 -0
  274. package/dist-server/service/material/material-revision.js.map +1 -0
  275. package/dist-server/service/material/recipe-index.d.ts +23 -0
  276. package/dist-server/service/material/recipe-index.js +44 -0
  277. package/dist-server/service/material/recipe-index.js.map +1 -0
  278. package/dist-server/service/operation/index.d.ts +6 -0
  279. package/dist-server/service/operation/index.js +10 -0
  280. package/dist-server/service/operation/index.js.map +1 -0
  281. package/dist-server/service/operation/operation-definition.d.ts +52 -0
  282. package/dist-server/service/operation/operation-definition.js +143 -0
  283. package/dist-server/service/operation/operation-definition.js.map +1 -0
  284. package/dist-server/service/operation/operation-master-resolver.d.ts +52 -0
  285. package/dist-server/service/operation/operation-master-resolver.js +187 -0
  286. package/dist-server/service/operation/operation-master-resolver.js.map +1 -0
  287. package/dist-server/service/operation/operation-master.d.ts +21 -0
  288. package/dist-server/service/operation/operation-master.js +28 -0
  289. package/dist-server/service/operation/operation-master.js.map +1 -0
  290. package/dist-server/service/operation/operation-query.d.ts +15 -0
  291. package/dist-server/service/operation/operation-query.js +56 -0
  292. package/dist-server/service/operation/operation-query.js.map +1 -0
  293. package/dist-server/service/operation/operation-readiness-resolver.d.ts +39 -0
  294. package/dist-server/service/operation/operation-readiness-resolver.js +111 -0
  295. package/dist-server/service/operation/operation-readiness-resolver.js.map +1 -0
  296. package/dist-server/service/operation/operation-readiness.d.ts +34 -0
  297. package/dist-server/service/operation/operation-readiness.js +133 -0
  298. package/dist-server/service/operation/operation-readiness.js.map +1 -0
  299. package/dist-server/service/personnel/index.d.ts +6 -0
  300. package/dist-server/service/personnel/index.js +10 -0
  301. package/dist-server/service/personnel/index.js.map +1 -0
  302. package/dist-server/service/personnel/person.d.ts +51 -0
  303. package/dist-server/service/personnel/person.js +119 -0
  304. package/dist-server/service/personnel/person.js.map +1 -0
  305. package/dist-server/service/personnel/personnel-class-readiness.d.ts +22 -0
  306. package/dist-server/service/personnel/personnel-class-readiness.js +98 -0
  307. package/dist-server/service/personnel/personnel-class-readiness.js.map +1 -0
  308. package/dist-server/service/personnel/personnel-class.d.ts +54 -0
  309. package/dist-server/service/personnel/personnel-class.js +114 -0
  310. package/dist-server/service/personnel/personnel-class.js.map +1 -0
  311. package/dist-server/service/personnel/personnel-master-resolver.d.ts +53 -0
  312. package/dist-server/service/personnel/personnel-master-resolver.js +187 -0
  313. package/dist-server/service/personnel/personnel-master-resolver.js.map +1 -0
  314. package/dist-server/service/personnel/personnel-master.d.ts +39 -0
  315. package/dist-server/service/personnel/personnel-master.js +34 -0
  316. package/dist-server/service/personnel/personnel-master.js.map +1 -0
  317. package/dist-server/service/personnel/personnel-query.d.ts +29 -0
  318. package/dist-server/service/personnel/personnel-query.js +79 -0
  319. package/dist-server/service/personnel/personnel-query.js.map +1 -0
  320. package/dist-server/service/personnel/qualification.d.ts +104 -0
  321. package/dist-server/service/personnel/qualification.js +147 -0
  322. package/dist-server/service/personnel/qualification.js.map +1 -0
  323. package/dist-server/service/quality/index.d.ts +4 -0
  324. package/dist-server/service/quality/index.js +8 -0
  325. package/dist-server/service/quality/index.js.map +1 -0
  326. package/dist-server/service/quality/nonconformance-cause-resolver.d.ts +12 -0
  327. package/dist-server/service/quality/nonconformance-cause-resolver.js +60 -0
  328. package/dist-server/service/quality/nonconformance-cause-resolver.js.map +1 -0
  329. package/dist-server/service/quality/nonconformance-cause.d.ts +20 -0
  330. package/dist-server/service/quality/nonconformance-cause.js +90 -0
  331. package/dist-server/service/quality/nonconformance-cause.js.map +1 -0
  332. package/dist-server/service/recipe/index.d.ts +10 -0
  333. package/dist-server/service/recipe/index.js +16 -0
  334. package/dist-server/service/recipe/index.js.map +1 -0
  335. package/dist-server/service/recipe/recipe-definition.d.ts +75 -0
  336. package/dist-server/service/recipe/recipe-definition.js +143 -0
  337. package/dist-server/service/recipe/recipe-definition.js.map +1 -0
  338. package/dist-server/service/recipe/recipe-effective-list.d.ts +49 -0
  339. package/dist-server/service/recipe/recipe-effective-list.js +96 -0
  340. package/dist-server/service/recipe/recipe-effective-list.js.map +1 -0
  341. package/dist-server/service/recipe/recipe-master-resolver.d.ts +28 -0
  342. package/dist-server/service/recipe/recipe-master-resolver.js +128 -0
  343. package/dist-server/service/recipe/recipe-master-resolver.js.map +1 -0
  344. package/dist-server/service/recipe/recipe-master.d.ts +37 -0
  345. package/dist-server/service/recipe/recipe-master.js +47 -0
  346. package/dist-server/service/recipe/recipe-master.js.map +1 -0
  347. package/dist-server/service/recipe/recipe-query.d.ts +21 -0
  348. package/dist-server/service/recipe/recipe-query.js +82 -0
  349. package/dist-server/service/recipe/recipe-query.js.map +1 -0
  350. package/dist-server/service/recipe/recipe-revision-content.d.ts +32 -0
  351. package/dist-server/service/recipe/recipe-revision-content.js +70 -0
  352. package/dist-server/service/recipe/recipe-revision-content.js.map +1 -0
  353. package/dist-server/service/recipe/recipe-revision-line.d.ts +30 -0
  354. package/dist-server/service/recipe/recipe-revision-line.js +95 -0
  355. package/dist-server/service/recipe/recipe-revision-line.js.map +1 -0
  356. package/dist-server/service/recipe/recipe-revision-resolver.d.ts +65 -0
  357. package/dist-server/service/recipe/recipe-revision-resolver.js +96 -0
  358. package/dist-server/service/recipe/recipe-revision-resolver.js.map +1 -0
  359. package/dist-server/service/recipe/recipe-revision-service.d.ts +183 -0
  360. package/dist-server/service/recipe/recipe-revision-service.js +754 -0
  361. package/dist-server/service/recipe/recipe-revision-service.js.map +1 -0
  362. package/dist-server/service/recipe/recipe-revision.d.ts +102 -0
  363. package/dist-server/service/recipe/recipe-revision.js +373 -0
  364. package/dist-server/service/recipe/recipe-revision.js.map +1 -0
  365. package/dist-server/service/recipe/route-definition.d.ts +51 -0
  366. package/dist-server/service/recipe/route-definition.js +114 -0
  367. package/dist-server/service/recipe/route-definition.js.map +1 -0
  368. package/dist-server/service/resource/class-lineage.d.ts +46 -0
  369. package/dist-server/service/resource/class-lineage.js +80 -0
  370. package/dist-server/service/resource/class-lineage.js.map +1 -0
  371. package/dist-server/service/resource/class-members.d.ts +36 -0
  372. package/dist-server/service/resource/class-members.js +59 -0
  373. package/dist-server/service/resource/class-members.js.map +1 -0
  374. package/dist-server/service/resource/referrers.d.ts +54 -0
  375. package/dist-server/service/resource/referrers.js +99 -0
  376. package/dist-server/service/resource/referrers.js.map +1 -0
  377. package/dist-server/service/resource/resource-class.d.ts +25 -0
  378. package/dist-server/service/resource/resource-class.js +29 -0
  379. package/dist-server/service/resource/resource-class.js.map +1 -0
  380. package/dist-server/service/revision-baseline.d.ts +71 -0
  381. package/dist-server/service/revision-baseline.js +87 -0
  382. package/dist-server/service/revision-baseline.js.map +1 -0
  383. package/dist-server/service/row-lock.d.ts +22 -0
  384. package/dist-server/service/row-lock.js +31 -0
  385. package/dist-server/service/row-lock.js.map +1 -0
  386. package/dist-server/service/status/axis-stamp.d.ts +16 -0
  387. package/dist-server/service/status/axis-stamp.js +22 -0
  388. package/dist-server/service/status/axis-stamp.js.map +1 -0
  389. package/dist-server/service/status/index.d.ts +3 -0
  390. package/dist-server/service/status/index.js +7 -0
  391. package/dist-server/service/status/index.js.map +1 -0
  392. package/dist-server/service/status/master-status.d.ts +38 -0
  393. package/dist-server/service/status/master-status.js +129 -0
  394. package/dist-server/service/status/master-status.js.map +1 -0
  395. package/dist-server/service/test-spec/criteria-check.d.ts +53 -0
  396. package/dist-server/service/test-spec/criteria-check.js +142 -0
  397. package/dist-server/service/test-spec/criteria-check.js.map +1 -0
  398. package/dist-server/service/test-spec/criteria-rows.d.ts +89 -0
  399. package/dist-server/service/test-spec/criteria-rows.js +139 -0
  400. package/dist-server/service/test-spec/criteria-rows.js.map +1 -0
  401. package/dist-server/service/test-spec/index.d.ts +6 -0
  402. package/dist-server/service/test-spec/index.js +11 -0
  403. package/dist-server/service/test-spec/index.js.map +1 -0
  404. package/dist-server/service/test-spec/test-spec-effective-list.d.ts +34 -0
  405. package/dist-server/service/test-spec/test-spec-effective-list.js +42 -0
  406. package/dist-server/service/test-spec/test-spec-effective-list.js.map +1 -0
  407. package/dist-server/service/test-spec/test-spec-master-resolver.d.ts +44 -0
  408. package/dist-server/service/test-spec/test-spec-master-resolver.js +144 -0
  409. package/dist-server/service/test-spec/test-spec-master-resolver.js.map +1 -0
  410. package/dist-server/service/test-spec/test-spec-master.d.ts +6 -0
  411. package/dist-server/service/test-spec/test-spec-master.js +18 -0
  412. package/dist-server/service/test-spec/test-spec-master.js.map +1 -0
  413. package/dist-server/service/test-spec/test-spec-query.d.ts +15 -0
  414. package/dist-server/service/test-spec/test-spec-query.js +61 -0
  415. package/dist-server/service/test-spec/test-spec-query.js.map +1 -0
  416. package/dist-server/service/test-spec/test-spec-revision-resolver.d.ts +59 -0
  417. package/dist-server/service/test-spec/test-spec-revision-resolver.js +96 -0
  418. package/dist-server/service/test-spec/test-spec-revision-resolver.js.map +1 -0
  419. package/dist-server/service/test-spec/test-spec-revision-service.d.ts +178 -0
  420. package/dist-server/service/test-spec/test-spec-revision-service.js +685 -0
  421. package/dist-server/service/test-spec/test-spec-revision-service.js.map +1 -0
  422. package/dist-server/service/test-spec/test-spec-revision.d.ts +86 -0
  423. package/dist-server/service/test-spec/test-spec-revision.js +334 -0
  424. package/dist-server/service/test-spec/test-spec-revision.js.map +1 -0
  425. package/dist-server/service/test-spec/test-specification.d.ts +47 -0
  426. package/dist-server/service/test-spec/test-specification.js +119 -0
  427. package/dist-server/service/test-spec/test-specification.js.map +1 -0
  428. package/dist-server/tsconfig.tsbuildinfo +1 -0
  429. package/package.json +4 -4
@@ -0,0 +1,135 @@
1
+ import { Domain } from '@things-factory/shell';
2
+ import { User } from '@things-factory/auth-base';
3
+ /**
4
+ * **언제부터 그러했고, 언제 그렇게 적었나** — 배정과 선언의 주장 한 줄.
5
+ *
6
+ * ═══════════════════════════════════════════════════════════════════════════
7
+ * ── 무엇이 없었나 ──────────────────────────────────────────────────────────
8
+ * 가동률의 분모는 **설비가 어느 자리에 있었나 · 그 자리가 어느 근무조로 돌았나 · 그 자리가 어디에
9
+ * 속했나**로 정해진다. 셋 다 칸 하나였다. 그래서 설비를 옮기면 **지난달 가동률이 바뀌었고**, 아무도
10
+ * 아무것도 정정하지 않았는데 숫자가 달라진 까닭을 말할 수 없었다.
11
+ *
12
+ * ── 시각이 둘인 까닭 ───────────────────────────────────────────────────────
13
+ * 「언제부터 그렇게 하기로 했나」와 「언제 그렇게 적었나」는 다르다.
14
+ *
15
+ * ```
16
+ * validFrom · validTo 적용 시각 — 업무의 시간. 분모를 나누는 경계가 이것이다
17
+ * recordedAt 기록 시각 — 우리가 그것을 안 시각
18
+ * supersededAt 이 주장이 물러난 시각. 덮어쓰지 않고 물러나게 한다
19
+ * ```
20
+ *
21
+ * 사흘 전에 옮긴 것을 오늘 적으면 둘이 갈라진다. **이틀 전 기록시점으로 물으면 옛 자리가 나와야
22
+ * 한다** — 그때 우리가 알던 것이 그것이기 때문이다(ADR-0088 결정 2 ③).
23
+ *
24
+ * ── 정정은 덮지 않고 조각을 남긴다 ─────────────────────────────────────────
25
+ * ```
26
+ * 지금까지 A [1일, ∞)
27
+ * 오늘 정정 「10~15일은 B 였다」
28
+ * 최신 A [1일, 10일) · B [10일, 15일) · A [15일, ∞)
29
+ * 정정 전 시점 A [1일, ∞) ← 조각은 그때 아직 기록되지 않았다
30
+ * ```
31
+ *
32
+ * ── 이 표가 기준이 되는 원본이고, 마스터 행은 투영이다 ─────────────────────
33
+ * 미래 주장은 마스터 행을 **안 건드린다.** 다음 달 이동을 지금 적었다고 다른 제품이 오늘부터 새
34
+ * 자리를 읽으면 안 된다. 도래하면 투영이 행을 맞춘다(§`projectDueClaims`).
35
+ *
36
+ * ── 이름이 아니라 식별자로 가리킨다 ────────────────────────────────────────
37
+ * `value.ref` 가 안정된 식별자이고 `value.label` 은 **그때 뭐라고 불렀나**다. 이름을 담으면 이름을
38
+ * 바꾼 날 과거 관계가 끊긴다(적용 가이드 §0-1 의 그 부류).
39
+ * ═══════════════════════════════════════════════════════════════════════════
40
+ */
41
+ export declare class MasterValueClaim {
42
+ readonly id: string;
43
+ domain?: Domain;
44
+ domainId?: string;
45
+ /** 어느 축의 무엇인가 — `equipment` · `operationalLocation`. */
46
+ axis: string;
47
+ /** 그 축의 어느 행인가. UUID 다. */
48
+ rowId: string;
49
+ /** 어느 칸인가 — 선언한 셋만 온다(§`CLAIMED_FIELDS`). */
50
+ field: string;
51
+ /**
52
+ * 그때의 값.
53
+ *
54
+ * ```
55
+ * { ref, label } 관계를 가리키는 칸 — 식별자와 그때의 표시값
56
+ * { names: [...] } 이름 목록을 드는 칸 — 근무조 선언
57
+ * null **선언 없음.** 「그때부터 부모가 없다」는 정상 값이고 결측이 아니다
58
+ * ```
59
+ */
60
+ value?: Record<string, unknown> | null;
61
+ /**
62
+ * 언제부터 그러했나 — 업무의 시간.
63
+ *
64
+ * **비어 있으면 「그때까지 쭉」이다.** 어느 칸이 처음 바뀔 때, 바뀌기 전 값도 같이 적는데 그 값이
65
+ * 언제부터였는지는 아무도 안 적었다. 1970 년 같은 시각을 넣으면 적은 적 없는 것을 적은 것이 되므로
66
+ * 비워 둔다(2026-09-23).
67
+ */
68
+ validFrom?: Date;
69
+ /** 언제까지. 비면 아직 끝나지 않았다. */
70
+ validTo?: Date;
71
+ /** 언제 그렇게 적었나. 서버가 붙인다 — 사람이 넣지 않는다. */
72
+ recordedAt: Date;
73
+ /** 언제 물러났나. 비면 지금도 서 있는 주장이다. */
74
+ supersededAt?: Date;
75
+ /**
76
+ * 왜 이 주장이 섰나 — 읽는 사람이 「지연 기록인가 정정인가」를 알아야 한다.
77
+ *
78
+ * ```
79
+ * initial 도입 시각에 확인된 초기 상태
80
+ * change 바꾼다는 선언
81
+ * correction 이미 적은 것을 고친다
82
+ * remainder 정정이 남긴 앞뒤 조각
83
+ * ```
84
+ */
85
+ reason: string;
86
+ recorder?: User;
87
+ recorderId?: string;
88
+ createdAt?: Date;
89
+ }
90
+ /**
91
+ * **이력을 받는 칸은 여기 적힌 것뿐이다.**
92
+ *
93
+ * 임의의 축·칸을 받는 범용 쓰기 문을 열지 않는다(설계 점검 2026-09-22). 칸마다 값의 모양과 검증이
94
+ * 다르고, 아무 칸이나 받는 문은 그 검증을 못 한다.
95
+ *
96
+ * ── 셋에서 넷이 됐다 (2026-09-23) ─────────────────────────────────────────
97
+ * 앞의 셋은 **배정**이다 — 무엇이 어디에 속하나. 넷째는 아니다. 공정의 표준시간은 값 자체이고,
98
+ * 실적의 성능률이 그것을 나눈다. 지금은 **오늘 마스터를 다시 읽어서 지난달 성능이 움직인다**
99
+ * (`operation-effectivity-db.test.cjs` 가 그 거동을 적어 두고 있다).
100
+ *
101
+ * 그래서 이 표의 이름이 「배정」이 아니라 「마스터 값의 주장」이다. 기전은 같다 — 두 시각, 정정은
102
+ * 물리고 앞뒤를 다시 주장, 주장이 없으면 한 번도 안 바뀐 것.
103
+ */
104
+ export declare const CLAIMED_FIELDS: ({
105
+ axis: string;
106
+ field: string;
107
+ kind: "relation";
108
+ target: string;
109
+ } | {
110
+ axis: string;
111
+ field: string;
112
+ kind: "names";
113
+ target?: undefined;
114
+ } | {
115
+ axis: string;
116
+ field: string;
117
+ kind: "literal";
118
+ target?: undefined;
119
+ })[];
120
+ export declare function claimedField(axis: string, field: string): {
121
+ axis: string;
122
+ field: string;
123
+ kind: "relation";
124
+ target: string;
125
+ } | {
126
+ axis: string;
127
+ field: string;
128
+ kind: "names";
129
+ target?: undefined;
130
+ } | {
131
+ axis: string;
132
+ field: string;
133
+ kind: "literal";
134
+ target?: undefined;
135
+ };
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CLAIMED_FIELDS = exports.MasterValueClaim = void 0;
4
+ exports.claimedField = claimedField;
5
+ const tslib_1 = require("tslib");
6
+ const typeorm_1 = require("typeorm");
7
+ const type_graphql_1 = require("type-graphql");
8
+ const shell_1 = require("@things-factory/shell");
9
+ const auth_base_1 = require("@things-factory/auth-base");
10
+ /**
11
+ * **언제부터 그러했고, 언제 그렇게 적었나** — 배정과 선언의 주장 한 줄.
12
+ *
13
+ * ═══════════════════════════════════════════════════════════════════════════
14
+ * ── 무엇이 없었나 ──────────────────────────────────────────────────────────
15
+ * 가동률의 분모는 **설비가 어느 자리에 있었나 · 그 자리가 어느 근무조로 돌았나 · 그 자리가 어디에
16
+ * 속했나**로 정해진다. 셋 다 칸 하나였다. 그래서 설비를 옮기면 **지난달 가동률이 바뀌었고**, 아무도
17
+ * 아무것도 정정하지 않았는데 숫자가 달라진 까닭을 말할 수 없었다.
18
+ *
19
+ * ── 시각이 둘인 까닭 ───────────────────────────────────────────────────────
20
+ * 「언제부터 그렇게 하기로 했나」와 「언제 그렇게 적었나」는 다르다.
21
+ *
22
+ * ```
23
+ * validFrom · validTo 적용 시각 — 업무의 시간. 분모를 나누는 경계가 이것이다
24
+ * recordedAt 기록 시각 — 우리가 그것을 안 시각
25
+ * supersededAt 이 주장이 물러난 시각. 덮어쓰지 않고 물러나게 한다
26
+ * ```
27
+ *
28
+ * 사흘 전에 옮긴 것을 오늘 적으면 둘이 갈라진다. **이틀 전 기록시점으로 물으면 옛 자리가 나와야
29
+ * 한다** — 그때 우리가 알던 것이 그것이기 때문이다(ADR-0088 결정 2 ③).
30
+ *
31
+ * ── 정정은 덮지 않고 조각을 남긴다 ─────────────────────────────────────────
32
+ * ```
33
+ * 지금까지 A [1일, ∞)
34
+ * 오늘 정정 「10~15일은 B 였다」
35
+ * 최신 A [1일, 10일) · B [10일, 15일) · A [15일, ∞)
36
+ * 정정 전 시점 A [1일, ∞) ← 조각은 그때 아직 기록되지 않았다
37
+ * ```
38
+ *
39
+ * ── 이 표가 기준이 되는 원본이고, 마스터 행은 투영이다 ─────────────────────
40
+ * 미래 주장은 마스터 행을 **안 건드린다.** 다음 달 이동을 지금 적었다고 다른 제품이 오늘부터 새
41
+ * 자리를 읽으면 안 된다. 도래하면 투영이 행을 맞춘다(§`projectDueClaims`).
42
+ *
43
+ * ── 이름이 아니라 식별자로 가리킨다 ────────────────────────────────────────
44
+ * `value.ref` 가 안정된 식별자이고 `value.label` 은 **그때 뭐라고 불렀나**다. 이름을 담으면 이름을
45
+ * 바꾼 날 과거 관계가 끊긴다(적용 가이드 §0-1 의 그 부류).
46
+ * ═══════════════════════════════════════════════════════════════════════════
47
+ */
48
+ let MasterValueClaim = class MasterValueClaim {
49
+ };
50
+ exports.MasterValueClaim = MasterValueClaim;
51
+ tslib_1.__decorate([
52
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
53
+ (0, type_graphql_1.Field)(type => type_graphql_1.ID),
54
+ tslib_1.__metadata("design:type", String)
55
+ ], MasterValueClaim.prototype, "id", void 0);
56
+ tslib_1.__decorate([
57
+ (0, typeorm_1.ManyToOne)(type => shell_1.Domain),
58
+ (0, type_graphql_1.Field)(type => shell_1.Domain),
59
+ tslib_1.__metadata("design:type", shell_1.Domain)
60
+ ], MasterValueClaim.prototype, "domain", void 0);
61
+ tslib_1.__decorate([
62
+ (0, typeorm_1.RelationId)((claim) => claim.domain),
63
+ tslib_1.__metadata("design:type", String)
64
+ ], MasterValueClaim.prototype, "domainId", void 0);
65
+ tslib_1.__decorate([
66
+ (0, typeorm_1.Column)(),
67
+ (0, type_graphql_1.Field)(),
68
+ tslib_1.__metadata("design:type", String)
69
+ ], MasterValueClaim.prototype, "axis", void 0);
70
+ tslib_1.__decorate([
71
+ (0, typeorm_1.Column)(),
72
+ (0, type_graphql_1.Field)(),
73
+ tslib_1.__metadata("design:type", String)
74
+ ], MasterValueClaim.prototype, "rowId", void 0);
75
+ tslib_1.__decorate([
76
+ (0, typeorm_1.Column)(),
77
+ (0, type_graphql_1.Field)(),
78
+ tslib_1.__metadata("design:type", String)
79
+ ], MasterValueClaim.prototype, "field", void 0);
80
+ tslib_1.__decorate([
81
+ (0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
82
+ (0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
83
+ tslib_1.__metadata("design:type", Object)
84
+ ], MasterValueClaim.prototype, "value", void 0);
85
+ tslib_1.__decorate([
86
+ (0, typeorm_1.Column)({ nullable: true }),
87
+ (0, type_graphql_1.Field)({ nullable: true }),
88
+ tslib_1.__metadata("design:type", Date
89
+ /** 언제까지. 비면 아직 끝나지 않았다. */
90
+ )
91
+ ], MasterValueClaim.prototype, "validFrom", void 0);
92
+ tslib_1.__decorate([
93
+ (0, typeorm_1.Column)({ nullable: true }),
94
+ (0, type_graphql_1.Field)({ nullable: true }),
95
+ tslib_1.__metadata("design:type", Date
96
+ /** 언제 그렇게 적었나. 서버가 붙인다 — 사람이 넣지 않는다. */
97
+ )
98
+ ], MasterValueClaim.prototype, "validTo", void 0);
99
+ tslib_1.__decorate([
100
+ (0, typeorm_1.Column)(),
101
+ (0, type_graphql_1.Field)(),
102
+ tslib_1.__metadata("design:type", Date
103
+ /** 언제 물러났나. 비면 지금도 서 있는 주장이다. */
104
+ )
105
+ ], MasterValueClaim.prototype, "recordedAt", void 0);
106
+ tslib_1.__decorate([
107
+ (0, typeorm_1.Column)({ nullable: true }),
108
+ (0, type_graphql_1.Field)({ nullable: true }),
109
+ tslib_1.__metadata("design:type", Date
110
+ /**
111
+ * 왜 이 주장이 섰나 — 읽는 사람이 「지연 기록인가 정정인가」를 알아야 한다.
112
+ *
113
+ * ```
114
+ * initial 도입 시각에 확인된 초기 상태
115
+ * change 바꾼다는 선언
116
+ * correction 이미 적은 것을 고친다
117
+ * remainder 정정이 남긴 앞뒤 조각
118
+ * ```
119
+ */
120
+ )
121
+ ], MasterValueClaim.prototype, "supersededAt", void 0);
122
+ tslib_1.__decorate([
123
+ (0, typeorm_1.Column)(),
124
+ (0, type_graphql_1.Field)(),
125
+ tslib_1.__metadata("design:type", String)
126
+ ], MasterValueClaim.prototype, "reason", void 0);
127
+ tslib_1.__decorate([
128
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
129
+ (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
130
+ tslib_1.__metadata("design:type", auth_base_1.User)
131
+ ], MasterValueClaim.prototype, "recorder", void 0);
132
+ tslib_1.__decorate([
133
+ (0, typeorm_1.RelationId)((claim) => claim.recorder),
134
+ tslib_1.__metadata("design:type", String)
135
+ ], MasterValueClaim.prototype, "recorderId", void 0);
136
+ tslib_1.__decorate([
137
+ (0, typeorm_1.CreateDateColumn)(),
138
+ (0, type_graphql_1.Field)({ nullable: true }),
139
+ tslib_1.__metadata("design:type", Date)
140
+ ], MasterValueClaim.prototype, "createdAt", void 0);
141
+ exports.MasterValueClaim = MasterValueClaim = tslib_1.__decorate([
142
+ (0, typeorm_1.Entity)({ name: 'ops_master_value_claim' }),
143
+ (0, typeorm_1.Index)('ix_ops_master_value_claim_0', (claim) => [claim.domain, claim.axis, claim.rowId, claim.field]),
144
+ (0, type_graphql_1.ObjectType)({ description: 'what an assignment or declaration was, from when, as recorded when' })
145
+ ], MasterValueClaim);
146
+ /**
147
+ * **이력을 받는 칸은 여기 적힌 것뿐이다.**
148
+ *
149
+ * 임의의 축·칸을 받는 범용 쓰기 문을 열지 않는다(설계 점검 2026-09-22). 칸마다 값의 모양과 검증이
150
+ * 다르고, 아무 칸이나 받는 문은 그 검증을 못 한다.
151
+ *
152
+ * ── 셋에서 넷이 됐다 (2026-09-23) ─────────────────────────────────────────
153
+ * 앞의 셋은 **배정**이다 — 무엇이 어디에 속하나. 넷째는 아니다. 공정의 표준시간은 값 자체이고,
154
+ * 실적의 성능률이 그것을 나눈다. 지금은 **오늘 마스터를 다시 읽어서 지난달 성능이 움직인다**
155
+ * (`operation-effectivity-db.test.cjs` 가 그 거동을 적어 두고 있다).
156
+ *
157
+ * 그래서 이 표의 이름이 「배정」이 아니라 「마스터 값의 주장」이다. 기전은 같다 — 두 시각, 정정은
158
+ * 물리고 앞뒤를 다시 주장, 주장이 없으면 한 번도 안 바뀐 것.
159
+ */
160
+ exports.CLAIMED_FIELDS = [
161
+ { axis: 'equipment', field: 'homeLocation', kind: 'relation', target: 'operationalLocation' },
162
+ { axis: 'operationalLocation', field: 'workShiftNames', kind: 'names' },
163
+ { axis: 'operationalLocation', field: 'parentId', kind: 'relation', target: 'operationalLocation' },
164
+ /*
165
+ * ISO 8601 기간 문자열 그대로 담는다(`PT1M`). ms 로 바꿔 담으면 사람이 읽을 때 원문이 없고,
166
+ * 원문만 담으면 파싱 규칙이 바뀌는 날 값이 달라진다 — **읽는 쪽이 둘 다 내도록** 원문을 담고
167
+ * 부르는 쪽이 파싱한다(착수 카드 §3-1).
168
+ */
169
+ { axis: 'operationDefinition', field: 'duration', kind: 'literal' }
170
+ ];
171
+ function claimedField(axis, field) {
172
+ return exports.CLAIMED_FIELDS.find(one => one.axis === axis && one.field === field);
173
+ }
174
+ //# sourceMappingURL=master-value-claim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"master-value-claim.js","sourceRoot":"","sources":["../../../server/service/assignment/master-value-claim.ts"],"names":[],"mappings":"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","sourcesContent":["import { Column, CreateDateColumn, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'\nimport { Field, ID, ObjectType } from 'type-graphql'\nimport { Domain, ScalarObject } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n/**\n * **언제부터 그러했고, 언제 그렇게 적었나** — 배정과 선언의 주장 한 줄.\n *\n * ═══════════════════════════════════════════════════════════════════════════\n * ── 무엇이 없었나 ──────────────────────────────────────────────────────────\n * 가동률의 분모는 **설비가 어느 자리에 있었나 · 그 자리가 어느 근무조로 돌았나 · 그 자리가 어디에\n * 속했나**로 정해진다. 셋 다 칸 하나였다. 그래서 설비를 옮기면 **지난달 가동률이 바뀌었고**, 아무도\n * 아무것도 정정하지 않았는데 숫자가 달라진 까닭을 말할 수 없었다.\n *\n * ── 시각이 둘인 까닭 ───────────────────────────────────────────────────────\n * 「언제부터 그렇게 하기로 했나」와 「언제 그렇게 적었나」는 다르다.\n *\n * ```\n * validFrom · validTo 적용 시각 — 업무의 시간. 분모를 나누는 경계가 이것이다\n * recordedAt 기록 시각 — 우리가 그것을 안 시각\n * supersededAt 이 주장이 물러난 시각. 덮어쓰지 않고 물러나게 한다\n * ```\n *\n * 사흘 전에 옮긴 것을 오늘 적으면 둘이 갈라진다. **이틀 전 기록시점으로 물으면 옛 자리가 나와야\n * 한다** — 그때 우리가 알던 것이 그것이기 때문이다(ADR-0088 결정 2 ③).\n *\n * ── 정정은 덮지 않고 조각을 남긴다 ─────────────────────────────────────────\n * ```\n * 지금까지 A [1일, ∞)\n * 오늘 정정 「10~15일은 B 였다」\n * 최신 A [1일, 10일) · B [10일, 15일) · A [15일, ∞)\n * 정정 전 시점 A [1일, ∞) ← 조각은 그때 아직 기록되지 않았다\n * ```\n *\n * ── 이 표가 기준이 되는 원본이고, 마스터 행은 투영이다 ─────────────────────\n * 미래 주장은 마스터 행을 **안 건드린다.** 다음 달 이동을 지금 적었다고 다른 제품이 오늘부터 새\n * 자리를 읽으면 안 된다. 도래하면 투영이 행을 맞춘다(§`projectDueClaims`).\n *\n * ── 이름이 아니라 식별자로 가리킨다 ────────────────────────────────────────\n * `value.ref` 가 안정된 식별자이고 `value.label` 은 **그때 뭐라고 불렀나**다. 이름을 담으면 이름을\n * 바꾼 날 과거 관계가 끊긴다(적용 가이드 §0-1 의 그 부류).\n * ═══════════════════════════════════════════════════════════════════════════\n */\n@Entity({ name: 'ops_master_value_claim' })\n@Index('ix_ops_master_value_claim_0', (claim: MasterValueClaim) => [claim.domain, claim.axis, claim.rowId, claim.field])\n@ObjectType({ description: 'what an assignment or declaration was, from when, as recorded when' })\nexport class MasterValueClaim {\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((claim: MasterValueClaim) => claim.domain)\n domainId?: string\n\n /** 어느 축의 무엇인가 — `equipment` · `operationalLocation`. */\n @Column()\n @Field()\n axis: string\n\n /** 그 축의 어느 행인가. UUID 다. */\n @Column()\n @Field()\n rowId: string\n\n /** 어느 칸인가 — 선언한 셋만 온다(§`CLAIMED_FIELDS`). */\n @Column()\n @Field()\n field: string\n\n /**\n * 그때의 값.\n *\n * ```\n * { ref, label } 관계를 가리키는 칸 — 식별자와 그때의 표시값\n * { names: [...] } 이름 목록을 드는 칸 — 근무조 선언\n * null **선언 없음.** 「그때부터 부모가 없다」는 정상 값이고 결측이 아니다\n * ```\n */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => ScalarObject, { nullable: true })\n value?: Record<string, unknown> | null\n\n /**\n * 언제부터 그러했나 — 업무의 시간.\n *\n * **비어 있으면 「그때까지 쭉」이다.** 어느 칸이 처음 바뀔 때, 바뀌기 전 값도 같이 적는데 그 값이\n * 언제부터였는지는 아무도 안 적었다. 1970 년 같은 시각을 넣으면 적은 적 없는 것을 적은 것이 되므로\n * 비워 둔다(2026-09-23).\n */\n @Column({ nullable: true })\n @Field({ nullable: true })\n validFrom?: Date\n\n /** 언제까지. 비면 아직 끝나지 않았다. */\n @Column({ nullable: true })\n @Field({ nullable: true })\n validTo?: Date\n\n /** 언제 그렇게 적었나. 서버가 붙인다 — 사람이 넣지 않는다. */\n @Column()\n @Field()\n recordedAt: Date\n\n /** 언제 물러났나. 비면 지금도 서 있는 주장이다. */\n @Column({ nullable: true })\n @Field({ nullable: true })\n supersededAt?: Date\n\n /**\n * 왜 이 주장이 섰나 — 읽는 사람이 「지연 기록인가 정정인가」를 알아야 한다.\n *\n * ```\n * initial 도입 시각에 확인된 초기 상태\n * change 바꾼다는 선언\n * correction 이미 적은 것을 고친다\n * remainder 정정이 남긴 앞뒤 조각\n * ```\n */\n @Column()\n @Field()\n reason: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n recorder?: User\n\n @RelationId((claim: MasterValueClaim) => claim.recorder)\n recorderId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n}\n\n/**\n * **이력을 받는 칸은 여기 적힌 것뿐이다.**\n *\n * 임의의 축·칸을 받는 범용 쓰기 문을 열지 않는다(설계 점검 2026-09-22). 칸마다 값의 모양과 검증이\n * 다르고, 아무 칸이나 받는 문은 그 검증을 못 한다.\n *\n * ── 셋에서 넷이 됐다 (2026-09-23) ─────────────────────────────────────────\n * 앞의 셋은 **배정**이다 — 무엇이 어디에 속하나. 넷째는 아니다. 공정의 표준시간은 값 자체이고,\n * 실적의 성능률이 그것을 나눈다. 지금은 **오늘 마스터를 다시 읽어서 지난달 성능이 움직인다**\n * (`operation-effectivity-db.test.cjs` 가 그 거동을 적어 두고 있다).\n *\n * 그래서 이 표의 이름이 「배정」이 아니라 「마스터 값의 주장」이다. 기전은 같다 — 두 시각, 정정은\n * 물리고 앞뒤를 다시 주장, 주장이 없으면 한 번도 안 바뀐 것.\n */\nexport const CLAIMED_FIELDS = [\n { axis: 'equipment', field: 'homeLocation', kind: 'relation' as const, target: 'operationalLocation' },\n { axis: 'operationalLocation', field: 'workShiftNames', kind: 'names' as const },\n { axis: 'operationalLocation', field: 'parentId', kind: 'relation' as const, target: 'operationalLocation' },\n /*\n * ISO 8601 기간 문자열 그대로 담는다(`PT1M`). ms 로 바꿔 담으면 사람이 읽을 때 원문이 없고,\n * 원문만 담으면 파싱 규칙이 바뀌는 날 값이 달라진다 — **읽는 쪽이 둘 다 내도록** 원문을 담고\n * 부르는 쪽이 파싱한다(착수 카드 §3-1).\n */\n { axis: 'operationDefinition', field: 'duration', kind: 'literal' as const }\n]\n\nexport function claimedField(axis: string, field: string) {\n return CLAIMED_FIELDS.find(one => one.axis === axis && one.field === field)\n}\n"]}
@@ -0,0 +1,34 @@
1
+ import { Domain } from '@things-factory/shell';
2
+ import { User } from '@things-factory/auth-base';
3
+ /**
4
+ * 설비 등급 — **ISA-95 `EquipmentClass`**.
5
+ *
6
+ * 공정은 특정 설비를 지목하지 않고 등급으로 요구한다 — 「용접기 1대」. 등급이 없으면 그 요구를 적을 수
7
+ * 없고, 대체 설비를 찾을 수도 없다.
8
+ *
9
+ * 구조는 인원 등급과 같다(표준이 셋을 같은 모양으로 정의한다). 옮기는 함수도 같은 것을 쓴다.
10
+ */
11
+ export declare class EquipmentClass {
12
+ readonly id: string;
13
+ domain?: Domain;
14
+ domainId?: string;
15
+ /** 표준 `EquipmentClassID`. */
16
+ name: string;
17
+ description?: string;
18
+ /** 상위 등급들 — 표준 `EquipmentClassBaseID`(복수). 「6축 용접기」가 「용접기」를 상속한다. */
19
+ baseIds?: string[];
20
+ /** 이 등급의 적격을 정하는 `TestSpecification` 참조들 — 표준 `TestSpecificationID`. */
21
+ testSpecificationIds?: string[];
22
+ /** 등급 속성 — 표준 `EquipmentClassProperty`. */
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
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EquipmentClass = 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 `EquipmentClass`**.
11
+ *
12
+ * 공정은 특정 설비를 지목하지 않고 등급으로 요구한다 — 「용접기 1대」. 등급이 없으면 그 요구를 적을 수
13
+ * 없고, 대체 설비를 찾을 수도 없다.
14
+ *
15
+ * 구조는 인원 등급과 같다(표준이 셋을 같은 모양으로 정의한다). 옮기는 함수도 같은 것을 쓴다.
16
+ */
17
+ let EquipmentClass = class EquipmentClass {
18
+ };
19
+ exports.EquipmentClass = EquipmentClass;
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
+ ], EquipmentClass.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
+ ], EquipmentClass.prototype, "domain", void 0);
30
+ tslib_1.__decorate([
31
+ (0, typeorm_1.RelationId)((klass) => klass.domain),
32
+ tslib_1.__metadata("design:type", String)
33
+ ], EquipmentClass.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
+ ], EquipmentClass.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
+ ], EquipmentClass.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
+ ], EquipmentClass.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
+ ], EquipmentClass.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
+ ], EquipmentClass.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
+ ], EquipmentClass.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
+ ], EquipmentClass.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
+ ], EquipmentClass.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
+ ], EquipmentClass.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
+ ], EquipmentClass.prototype, "creator", void 0);
86
+ tslib_1.__decorate([
87
+ (0, typeorm_1.RelationId)((klass) => klass.creator),
88
+ tslib_1.__metadata("design:type", String)
89
+ ], EquipmentClass.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
+ ], EquipmentClass.prototype, "updater", void 0);
95
+ tslib_1.__decorate([
96
+ (0, typeorm_1.RelationId)((klass) => klass.updater),
97
+ tslib_1.__metadata("design:type", String)
98
+ ], EquipmentClass.prototype, "updaterId", void 0);
99
+ exports.EquipmentClass = EquipmentClass = tslib_1.__decorate([
100
+ (0, typeorm_1.Entity)({ name: 'ops_equipment_class' }),
101
+ (0, typeorm_1.Index)('ix_ops_equipment_class_0', (klass) => [klass.domain, klass.name], { unique: true }),
102
+ (0, type_graphql_1.ObjectType)({ description: 'ISA-95 EquipmentClass — a kind of equipment that operations require' })
103
+ ], EquipmentClass);
104
+ //# sourceMappingURL=equipment-class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equipment-class.js","sourceRoot":"","sources":["../../../server/service/equipment/equipment-class.ts"],"names":[],"mappings":";;;;AAAA,qCASgB;AAChB,+CAAoD;AAEpD,iDAA4D;AAC5D,yDAAgD;AAEhD;;;;;;;GAOG;AAII,IAAM,cAAc,GAApB,MAAM,cAAc;CAmE1B,CAAA;AAnEY,wCAAc;AAGhB;IAFR,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;0CACC;AAInB;IAFC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;sCACb,cAAM;8CAAA;AAGf;IADC,IAAA,oBAAU,EAAC,CAAC,KAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;;gDACnC;AAKjB;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,GAAE;;4CACI;AAIZ;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACN;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;;+CAC1B;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;;4DACb;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;;kDAC7C;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;;sDAFpB;AAKrB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACX,IAAI;oDAAA;AAInB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;iDAAA;AAIhB;IAFC,IAAA,0BAAgB,GAAE;IAClB,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;iDAAA;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;+CAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,KAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;iDACnC;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;+CAAA;AAGd;IADC,IAAA,oBAAU,EAAC,CAAC,KAAqB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;iDACnC;yBAlEP,cAAc;IAH1B,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;IACvC,IAAA,eAAK,EAAC,0BAA0B,EAAE,CAAC,KAAqB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1G,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,qEAAqE,EAAE,CAAC;GACtF,cAAc,CAmE1B","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 `EquipmentClass`**.\n *\n * 공정은 특정 설비를 지목하지 않고 등급으로 요구한다 — 「용접기 1대」. 등급이 없으면 그 요구를 적을 수\n * 없고, 대체 설비를 찾을 수도 없다.\n *\n * 구조는 인원 등급과 같다(표준이 셋을 같은 모양으로 정의한다). 옮기는 함수도 같은 것을 쓴다.\n */\n@Entity({ name: 'ops_equipment_class' })\n@Index('ix_ops_equipment_class_0', (klass: EquipmentClass) => [klass.domain, klass.name], { unique: true })\n@ObjectType({ description: 'ISA-95 EquipmentClass — a kind of equipment that operations require' })\nexport class EquipmentClass {\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: EquipmentClass) => klass.domain)\n domainId?: string\n\n /** 표준 `EquipmentClassID`. */\n @Column()\n @Field()\n name: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n /** 상위 등급들 — 표준 `EquipmentClassBaseID`(복수). 「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 /** 등급 속성 — 표준 `EquipmentClassProperty`. */\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: EquipmentClass) => 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: EquipmentClass) => klass.updater)\n updaterId?: string\n}\n"]}
@@ -0,0 +1,77 @@
1
+ import { AppliedWhen } from '../assignment/applied-when';
2
+ import { ListParam } from '@things-factory/shell';
3
+ import { MasterPatch } from '../master-crud';
4
+ import { EquipmentClass } from './equipment-class';
5
+ import { Equipment } from './equipment';
6
+ import { StopReason } from './stop-reason';
7
+ /**
8
+ * 설비 축을 채우고 고친다.
9
+ *
10
+ * ── 왜 마스터는 그리드에서 고칠 수 있나 ────────────────────────────────────
11
+ * 업무 기록과 달리 마스터는 **선언**이다. 「이 사람이 용접 자격을 갖는다」는 일어난 일이 아니라 지금의
12
+ * 규정이고, 규정은 바뀐다. 없앨 때 행을 지우지 않고 유효 기간의 끝을 채우는 것이 그래서다 —
13
+ * 지우면 그것을 가리키는 지난 기록이 가리킬 것을 잃는다.
14
+ *
15
+ * 규칙은 `master-crud.ts` 한 곳에 있다. 여기는 축의 이름만 붙인다.
16
+ */
17
+ export declare class EquipmentClassList {
18
+ items: EquipmentClass[];
19
+ total: number;
20
+ }
21
+ export declare class EquipmentClassResolver {
22
+ equipmentClasses(params: ListParam, context: ResolverContext): Promise<EquipmentClassList>;
23
+ /**
24
+ * 이 등급에 든 설비들
25
+ *
26
+ * 아무도 안 들면 빈 목록이다. 다만 그것이 「없다」인지 「다 못 봤다」인지는 `memberScanCapped`
27
+ * 가 말한다 — 조용히 자르면 고쳐야 할 선언과 멀쩡한 등급이 같아 보인다.
28
+ */
29
+ members(klass: EquipmentClass, context: ResolverContext): Promise<string[]>;
30
+ /** 소속을 다 보지 못했나. */
31
+ memberScanCapped(klass: EquipmentClass, context: ResolverContext): Promise<boolean>;
32
+ /**
33
+ * 그리드가 보낸 변경을 한 번에 적용한다.
34
+ *
35
+ * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을
36
+ * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는
37
+ * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.
38
+ */
39
+ updateMultipleEquipmentClass(patches: MasterPatch[], context: ResolverContext): Promise<EquipmentClass[]>;
40
+ }
41
+ export declare class EquipmentList {
42
+ items: Equipment[];
43
+ total: number;
44
+ }
45
+ export declare class EquipmentResolver {
46
+ equipmentList(params: ListParam, context: ResolverContext): Promise<EquipmentList>;
47
+ /**
48
+ * 그리드가 보낸 변경을 한 번에 적용한다.
49
+ *
50
+ * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을
51
+ * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는
52
+ * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.
53
+ */
54
+ updateMultipleEquipment(patches: MasterPatch[], context: ResolverContext,
55
+ /**
56
+ * **언제부터 그러한가** — 배정·선언 칸을 고칠 때만 온다.
57
+ *
58
+ * 안 오면 지금부터다. 미래면 주장만 남고 본행은 그 시각이 올 때까지 그대로다
59
+ * (§`claimAssignmentChanges`).
60
+ */
61
+ applied?: AppliedWhen): Promise<Equipment[]>;
62
+ }
63
+ export declare class StopReasonList {
64
+ items: StopReason[];
65
+ total: number;
66
+ }
67
+ export declare class StopReasonResolver {
68
+ stopReasonList(params: ListParam, context: ResolverContext): Promise<StopReasonList>;
69
+ /**
70
+ * 그리드가 보낸 변경을 한 번에 적용한다.
71
+ *
72
+ * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을
73
+ * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는
74
+ * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.
75
+ */
76
+ updateMultipleStopReason(patches: MasterPatch[], context: ResolverContext): Promise<StopReason[]>;
77
+ }