@things-factory/ops-master 10.1.247 → 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.
- package/package.json +3 -3
- package/dist-client/bootstrap.d.ts +0 -19
- package/dist-client/bootstrap.js +0 -66
- package/dist-client/bootstrap.js.map +0 -1
- package/dist-client/index.d.ts +0 -17
- package/dist-client/index.js +0 -21
- package/dist-client/index.js.map +0 -1
- package/dist-client/master-change-approval.d.ts +0 -14
- package/dist-client/master-change-approval.js +0 -36
- package/dist-client/master-change-approval.js.map +0 -1
- package/dist-client/master-change-policy-axes.d.ts +0 -37
- package/dist-client/master-change-policy-axes.js +0 -29
- package/dist-client/master-change-policy-axes.js.map +0 -1
- package/dist-client/master-change-policy-panel.d.ts +0 -59
- package/dist-client/master-change-policy-panel.js +0 -454
- package/dist-client/master-change-policy-panel.js.map +0 -1
- package/dist-client/master-change-providers.d.ts +0 -4
- package/dist-client/master-change-providers.js +0 -91
- package/dist-client/master-change-providers.js.map +0 -1
- package/dist-client/pages/master/applied-when-dialog.d.ts +0 -48
- package/dist-client/pages/master/applied-when-dialog.js +0 -137
- package/dist-client/pages/master/applied-when-dialog.js.map +0 -1
- package/dist-client/pages/master/assignment-fields.d.ts +0 -27
- package/dist-client/pages/master/assignment-fields.js +0 -62
- package/dist-client/pages/master/assignment-fields.js.map +0 -1
- package/dist-client/pages/master/equipment-class.d.ts +0 -12
- package/dist-client/pages/master/equipment-class.js +0 -42
- package/dist-client/pages/master/equipment-class.js.map +0 -1
- package/dist-client/pages/master/equipment.d.ts +0 -12
- package/dist-client/pages/master/equipment.js +0 -58
- package/dist-client/pages/master/equipment.js.map +0 -1
- package/dist-client/pages/master/grist-iso-duration.d.ts +0 -20
- package/dist-client/pages/master/grist-iso-duration.js +0 -70
- package/dist-client/pages/master/grist-iso-duration.js.map +0 -1
- package/dist-client/pages/master/grist-reference.d.ts +0 -91
- package/dist-client/pages/master/grist-reference.js +0 -419
- package/dist-client/pages/master/grist-reference.js.map +0 -1
- package/dist-client/pages/master/import-rows.d.ts +0 -35
- package/dist-client/pages/master/import-rows.js +0 -66
- package/dist-client/pages/master/import-rows.js.map +0 -1
- package/dist-client/pages/master/iso-duration.d.ts +0 -34
- package/dist-client/pages/master/iso-duration.js +0 -76
- package/dist-client/pages/master/iso-duration.js.map +0 -1
- package/dist-client/pages/master/master-options.d.ts +0 -40
- package/dist-client/pages/master/master-options.js +0 -54
- package/dist-client/pages/master/master-options.js.map +0 -1
- package/dist-client/pages/master/master-page-base.d.ts +0 -369
- package/dist-client/pages/master/master-page-base.js +0 -657
- package/dist-client/pages/master/master-page-base.js.map +0 -1
- package/dist-client/pages/master/material-class.d.ts +0 -12
- package/dist-client/pages/master/material-class.js +0 -42
- package/dist-client/pages/master/material-class.js.map +0 -1
- package/dist-client/pages/master/material-definition.d.ts +0 -5
- package/dist-client/pages/master/material-definition.js +0 -14
- package/dist-client/pages/master/material-definition.js.map +0 -1
- package/dist-client/pages/master/material-revision-fields.d.ts +0 -2
- package/dist-client/pages/master/material-revision-fields.js +0 -43
- package/dist-client/pages/master/material-revision-fields.js.map +0 -1
- package/dist-client/pages/master/operation-definition.d.ts +0 -12
- package/dist-client/pages/master/operation-definition.js +0 -49
- package/dist-client/pages/master/operation-definition.js.map +0 -1
- package/dist-client/pages/master/operational-location.d.ts +0 -84
- package/dist-client/pages/master/operational-location.js +0 -432
- package/dist-client/pages/master/operational-location.js.map +0 -1
- package/dist-client/pages/master/person.d.ts +0 -12
- package/dist-client/pages/master/person.js +0 -41
- package/dist-client/pages/master/person.js.map +0 -1
- package/dist-client/pages/master/personnel-class.d.ts +0 -12
- package/dist-client/pages/master/personnel-class.js +0 -43
- package/dist-client/pages/master/personnel-class.js.map +0 -1
- package/dist-client/pages/master/physical-asset-class.d.ts +0 -12
- package/dist-client/pages/master/physical-asset-class.js +0 -40
- package/dist-client/pages/master/physical-asset-class.js.map +0 -1
- package/dist-client/pages/master/physical-asset.d.ts +0 -12
- package/dist-client/pages/master/physical-asset.js +0 -41
- package/dist-client/pages/master/physical-asset.js.map +0 -1
- package/dist-client/pages/master/recipe-definition.d.ts +0 -5
- package/dist-client/pages/master/recipe-definition.js +0 -14
- package/dist-client/pages/master/recipe-definition.js.map +0 -1
- package/dist-client/pages/master/reference-targets.d.ts +0 -42
- package/dist-client/pages/master/reference-targets.js +0 -82
- package/dist-client/pages/master/reference-targets.js.map +0 -1
- package/dist-client/pages/master/revision-comparison.d.ts +0 -49
- package/dist-client/pages/master/revision-comparison.js +0 -560
- package/dist-client/pages/master/revision-comparison.js.map +0 -1
- package/dist-client/pages/master/revision-view.d.ts +0 -34
- package/dist-client/pages/master/revision-view.js +0 -145
- package/dist-client/pages/master/revision-view.js.map +0 -1
- package/dist-client/pages/master/revision-workspace.d.ts +0 -50
- package/dist-client/pages/master/revision-workspace.js +0 -763
- package/dist-client/pages/master/revision-workspace.js.map +0 -1
- package/dist-client/pages/master/route-definition.d.ts +0 -19
- package/dist-client/pages/master/route-definition.js +0 -40
- package/dist-client/pages/master/route-definition.js.map +0 -1
- package/dist-client/pages/master/stop-reason.d.ts +0 -12
- package/dist-client/pages/master/stop-reason.js +0 -48
- package/dist-client/pages/master/stop-reason.js.map +0 -1
- package/dist-client/pages/master/test-specification.d.ts +0 -5
- package/dist-client/pages/master/test-specification.js +0 -14
- package/dist-client/pages/master/test-specification.js.map +0 -1
- package/dist-client/pages/master-axes.d.ts +0 -24
- package/dist-client/pages/master-axes.js +0 -39
- package/dist-client/pages/master-axes.js.map +0 -1
- package/dist-client/route.d.ts +0 -1
- package/dist-client/route.js +0 -81
- package/dist-client/route.js.map +0 -1
- package/dist-client/tsconfig.tsbuildinfo +0 -1
- package/dist-server/index.d.ts +0 -1
- package/dist-server/index.js +0 -19
- package/dist-server/index.js.map +0 -1
- package/dist-server/service/ai-entry/master-entry-rules.d.ts +0 -175
- package/dist-server/service/ai-entry/master-entry-rules.js +0 -302
- package/dist-server/service/ai-entry/master-entry-rules.js.map +0 -1
- package/dist-server/service/ai-entry/master-entry-targets.d.ts +0 -23
- package/dist-server/service/ai-entry/master-entry-targets.js +0 -293
- package/dist-server/service/ai-entry/master-entry-targets.js.map +0 -1
- package/dist-server/service/approval-route.d.ts +0 -37
- package/dist-server/service/approval-route.js +0 -34
- package/dist-server/service/approval-route.js.map +0 -1
- package/dist-server/service/asset/asset-lifecycle.d.ts +0 -106
- package/dist-server/service/asset/asset-lifecycle.js +0 -126
- package/dist-server/service/asset/asset-lifecycle.js.map +0 -1
- package/dist-server/service/asset/asset-master-resolver.d.ts +0 -53
- package/dist-server/service/asset/asset-master-resolver.js +0 -185
- package/dist-server/service/asset/asset-master-resolver.js.map +0 -1
- package/dist-server/service/asset/asset-master.d.ts +0 -21
- package/dist-server/service/asset/asset-master.js +0 -25
- package/dist-server/service/asset/asset-master.js.map +0 -1
- package/dist-server/service/asset/asset-query.d.ts +0 -16
- package/dist-server/service/asset/asset-query.js +0 -72
- package/dist-server/service/asset/asset-query.js.map +0 -1
- package/dist-server/service/asset/index.d.ts +0 -6
- package/dist-server/service/asset/index.js +0 -10
- package/dist-server/service/asset/index.js.map +0 -1
- package/dist-server/service/asset/physical-asset-class.d.ts +0 -34
- package/dist-server/service/asset/physical-asset-class.js +0 -104
- package/dist-server/service/asset/physical-asset-class.js.map +0 -1
- package/dist-server/service/asset/physical-asset.d.ts +0 -66
- package/dist-server/service/asset/physical-asset.js +0 -123
- package/dist-server/service/asset/physical-asset.js.map +0 -1
- package/dist-server/service/assignment/applied-when.d.ts +0 -24
- package/dist-server/service/assignment/applied-when.js +0 -16
- package/dist-server/service/assignment/applied-when.js.map +0 -1
- package/dist-server/service/assignment/assignment-history.d.ts +0 -92
- package/dist-server/service/assignment/assignment-history.js +0 -289
- package/dist-server/service/assignment/assignment-history.js.map +0 -1
- package/dist-server/service/assignment/assignment-write.d.ts +0 -42
- package/dist-server/service/assignment/assignment-write.js +0 -101
- package/dist-server/service/assignment/assignment-write.js.map +0 -1
- package/dist-server/service/assignment/master-value-claim.d.ts +0 -135
- package/dist-server/service/assignment/master-value-claim.js +0 -174
- package/dist-server/service/assignment/master-value-claim.js.map +0 -1
- package/dist-server/service/equipment/equipment-class.d.ts +0 -34
- package/dist-server/service/equipment/equipment-class.js +0 -104
- package/dist-server/service/equipment/equipment-class.js.map +0 -1
- package/dist-server/service/equipment/equipment-master-resolver.d.ts +0 -77
- package/dist-server/service/equipment/equipment-master-resolver.js +0 -266
- package/dist-server/service/equipment/equipment-master-resolver.js.map +0 -1
- package/dist-server/service/equipment/equipment-master.d.ts +0 -30
- package/dist-server/service/equipment/equipment-master.js +0 -53
- package/dist-server/service/equipment/equipment-master.js.map +0 -1
- package/dist-server/service/equipment/equipment-query.d.ts +0 -16
- package/dist-server/service/equipment/equipment-query.js +0 -72
- package/dist-server/service/equipment/equipment-query.js.map +0 -1
- package/dist-server/service/equipment/equipment.d.ts +0 -71
- package/dist-server/service/equipment/equipment.js +0 -138
- package/dist-server/service/equipment/equipment.js.map +0 -1
- package/dist-server/service/equipment/index.d.ts +0 -8
- package/dist-server/service/equipment/index.js +0 -12
- package/dist-server/service/equipment/index.js.map +0 -1
- package/dist-server/service/equipment/state-period-rules.d.ts +0 -95
- package/dist-server/service/equipment/state-period-rules.js +0 -122
- package/dist-server/service/equipment/state-period-rules.js.map +0 -1
- package/dist-server/service/equipment/stop-reason-query.d.ts +0 -11
- package/dist-server/service/equipment/stop-reason-query.js +0 -39
- package/dist-server/service/equipment/stop-reason-query.js.map +0 -1
- package/dist-server/service/equipment/stop-reason.d.ts +0 -58
- package/dist-server/service/equipment/stop-reason.js +0 -114
- package/dist-server/service/equipment/stop-reason.js.map +0 -1
- package/dist-server/service/index.d.ts +0 -82
- package/dist-server/service/index.js +0 -145
- package/dist-server/service/index.js.map +0 -1
- package/dist-server/service/location/index.d.ts +0 -5
- package/dist-server/service/location/index.js +0 -9
- package/dist-server/service/location/index.js.map +0 -1
- package/dist-server/service/location/location-master-resolver.d.ts +0 -60
- package/dist-server/service/location/location-master-resolver.js +0 -313
- package/dist-server/service/location/location-master-resolver.js.map +0 -1
- package/dist-server/service/location/location-master.d.ts +0 -26
- package/dist-server/service/location/location-master.js +0 -28
- package/dist-server/service/location/location-master.js.map +0 -1
- package/dist-server/service/location/location-query.d.ts +0 -15
- package/dist-server/service/location/location-query.js +0 -56
- package/dist-server/service/location/location-query.js.map +0 -1
- package/dist-server/service/location/operational-location.d.ts +0 -116
- package/dist-server/service/location/operational-location.js +0 -157
- package/dist-server/service/location/operational-location.js.map +0 -1
- package/dist-server/service/master-axis.d.ts +0 -40
- package/dist-server/service/master-axis.js +0 -57
- package/dist-server/service/master-axis.js.map +0 -1
- package/dist-server/service/master-change-approval/approval-input.d.ts +0 -17
- package/dist-server/service/master-change-approval/approval-input.js +0 -35
- package/dist-server/service/master-change-approval/approval-input.js.map +0 -1
- package/dist-server/service/master-change-approval/builtin-axes.d.ts +0 -4
- package/dist-server/service/master-change-approval/builtin-axes.js +0 -96
- package/dist-server/service/master-change-approval/builtin-axes.js.map +0 -1
- package/dist-server/service/master-change-approval/index.d.ts +0 -14
- package/dist-server/service/master-change-approval/index.js +0 -37
- package/dist-server/service/master-change-approval/index.js.map +0 -1
- package/dist-server/service/master-change-approval/master-change-axis.d.ts +0 -54
- package/dist-server/service/master-change-approval/master-change-axis.js +0 -17
- package/dist-server/service/master-change-approval/master-change-axis.js.map +0 -1
- package/dist-server/service/master-change-approval/master-change-flow.d.ts +0 -65
- package/dist-server/service/master-change-approval/master-change-flow.js +0 -125
- package/dist-server/service/master-change-approval/master-change-flow.js.map +0 -1
- package/dist-server/service/master-change-approval/master-change-resolver.d.ts +0 -18
- package/dist-server/service/master-change-approval/master-change-resolver.js +0 -58
- package/dist-server/service/master-change-approval/master-change-resolver.js.map +0 -1
- package/dist-server/service/master-change-policy.d.ts +0 -122
- package/dist-server/service/master-change-policy.js +0 -304
- package/dist-server/service/master-change-policy.js.map +0 -1
- package/dist-server/service/master-conformance-resolver.d.ts +0 -34
- package/dist-server/service/master-conformance-resolver.js +0 -153
- package/dist-server/service/master-conformance-resolver.js.map +0 -1
- package/dist-server/service/master-conformance.d.ts +0 -80
- package/dist-server/service/master-conformance.js +0 -266
- package/dist-server/service/master-conformance.js.map +0 -1
- package/dist-server/service/master-crud.d.ts +0 -55
- package/dist-server/service/master-crud.js +0 -93
- package/dist-server/service/master-crud.js.map +0 -1
- package/dist-server/service/master-list.d.ts +0 -12
- package/dist-server/service/master-list.js +0 -30
- package/dist-server/service/master-list.js.map +0 -1
- package/dist-server/service/master-page-query.d.ts +0 -33
- package/dist-server/service/master-page-query.js +0 -55
- package/dist-server/service/master-page-query.js.map +0 -1
- package/dist-server/service/master-page.d.ts +0 -85
- package/dist-server/service/master-page.js +0 -104
- package/dist-server/service/master-page.js.map +0 -1
- package/dist-server/service/material/index.d.ts +0 -7
- package/dist-server/service/material/index.js +0 -12
- package/dist-server/service/material/index.js.map +0 -1
- package/dist-server/service/material/material-axis-status.d.ts +0 -8
- package/dist-server/service/material/material-axis-status.js +0 -19
- package/dist-server/service/material/material-axis-status.js.map +0 -1
- package/dist-server/service/material/material-class.d.ts +0 -34
- package/dist-server/service/material/material-class.js +0 -104
- package/dist-server/service/material/material-class.js.map +0 -1
- package/dist-server/service/material/material-definition.d.ts +0 -45
- package/dist-server/service/material/material-definition.js +0 -125
- package/dist-server/service/material/material-definition.js.map +0 -1
- package/dist-server/service/material/material-effective-list.d.ts +0 -39
- package/dist-server/service/material/material-effective-list.js +0 -54
- package/dist-server/service/material/material-effective-list.js.map +0 -1
- package/dist-server/service/material/material-master-resolver.d.ts +0 -106
- package/dist-server/service/material/material-master-resolver.js +0 -351
- package/dist-server/service/material/material-master-resolver.js.map +0 -1
- package/dist-server/service/material/material-master.d.ts +0 -9
- package/dist-server/service/material/material-master.js +0 -24
- package/dist-server/service/material/material-master.js.map +0 -1
- package/dist-server/service/material/material-query.d.ts +0 -16
- package/dist-server/service/material/material-query.js +0 -79
- package/dist-server/service/material/material-query.js.map +0 -1
- package/dist-server/service/material/material-revision-content.d.ts +0 -10
- package/dist-server/service/material/material-revision-content.js +0 -92
- package/dist-server/service/material/material-revision-content.js.map +0 -1
- package/dist-server/service/material/material-revision-resolver.d.ts +0 -60
- package/dist-server/service/material/material-revision-resolver.js +0 -96
- package/dist-server/service/material/material-revision-resolver.js.map +0 -1
- package/dist-server/service/material/material-revision-service.d.ts +0 -179
- package/dist-server/service/material/material-revision-service.js +0 -687
- package/dist-server/service/material/material-revision-service.js.map +0 -1
- package/dist-server/service/material/material-revision.d.ts +0 -86
- package/dist-server/service/material/material-revision.js +0 -339
- package/dist-server/service/material/material-revision.js.map +0 -1
- package/dist-server/service/material/recipe-index.d.ts +0 -23
- package/dist-server/service/material/recipe-index.js +0 -44
- package/dist-server/service/material/recipe-index.js.map +0 -1
- package/dist-server/service/operation/index.d.ts +0 -6
- package/dist-server/service/operation/index.js +0 -10
- package/dist-server/service/operation/index.js.map +0 -1
- package/dist-server/service/operation/operation-definition.d.ts +0 -52
- package/dist-server/service/operation/operation-definition.js +0 -143
- package/dist-server/service/operation/operation-definition.js.map +0 -1
- package/dist-server/service/operation/operation-master-resolver.d.ts +0 -52
- package/dist-server/service/operation/operation-master-resolver.js +0 -187
- package/dist-server/service/operation/operation-master-resolver.js.map +0 -1
- package/dist-server/service/operation/operation-master.d.ts +0 -21
- package/dist-server/service/operation/operation-master.js +0 -28
- package/dist-server/service/operation/operation-master.js.map +0 -1
- package/dist-server/service/operation/operation-query.d.ts +0 -15
- package/dist-server/service/operation/operation-query.js +0 -56
- package/dist-server/service/operation/operation-query.js.map +0 -1
- package/dist-server/service/operation/operation-readiness-resolver.d.ts +0 -39
- package/dist-server/service/operation/operation-readiness-resolver.js +0 -111
- package/dist-server/service/operation/operation-readiness-resolver.js.map +0 -1
- package/dist-server/service/operation/operation-readiness.d.ts +0 -34
- package/dist-server/service/operation/operation-readiness.js +0 -133
- package/dist-server/service/operation/operation-readiness.js.map +0 -1
- package/dist-server/service/personnel/index.d.ts +0 -6
- package/dist-server/service/personnel/index.js +0 -10
- package/dist-server/service/personnel/index.js.map +0 -1
- package/dist-server/service/personnel/person.d.ts +0 -51
- package/dist-server/service/personnel/person.js +0 -119
- package/dist-server/service/personnel/person.js.map +0 -1
- package/dist-server/service/personnel/personnel-class-readiness.d.ts +0 -22
- package/dist-server/service/personnel/personnel-class-readiness.js +0 -98
- package/dist-server/service/personnel/personnel-class-readiness.js.map +0 -1
- package/dist-server/service/personnel/personnel-class.d.ts +0 -54
- package/dist-server/service/personnel/personnel-class.js +0 -114
- package/dist-server/service/personnel/personnel-class.js.map +0 -1
- package/dist-server/service/personnel/personnel-master-resolver.d.ts +0 -53
- package/dist-server/service/personnel/personnel-master-resolver.js +0 -187
- package/dist-server/service/personnel/personnel-master-resolver.js.map +0 -1
- package/dist-server/service/personnel/personnel-master.d.ts +0 -39
- package/dist-server/service/personnel/personnel-master.js +0 -34
- package/dist-server/service/personnel/personnel-master.js.map +0 -1
- package/dist-server/service/personnel/personnel-query.d.ts +0 -29
- package/dist-server/service/personnel/personnel-query.js +0 -79
- package/dist-server/service/personnel/personnel-query.js.map +0 -1
- package/dist-server/service/personnel/qualification.d.ts +0 -104
- package/dist-server/service/personnel/qualification.js +0 -147
- package/dist-server/service/personnel/qualification.js.map +0 -1
- package/dist-server/service/quality/index.d.ts +0 -4
- package/dist-server/service/quality/index.js +0 -8
- package/dist-server/service/quality/index.js.map +0 -1
- package/dist-server/service/quality/nonconformance-cause-resolver.d.ts +0 -12
- package/dist-server/service/quality/nonconformance-cause-resolver.js +0 -60
- package/dist-server/service/quality/nonconformance-cause-resolver.js.map +0 -1
- package/dist-server/service/quality/nonconformance-cause.d.ts +0 -20
- package/dist-server/service/quality/nonconformance-cause.js +0 -90
- package/dist-server/service/quality/nonconformance-cause.js.map +0 -1
- package/dist-server/service/recipe/index.d.ts +0 -10
- package/dist-server/service/recipe/index.js +0 -16
- package/dist-server/service/recipe/index.js.map +0 -1
- package/dist-server/service/recipe/recipe-definition.d.ts +0 -75
- package/dist-server/service/recipe/recipe-definition.js +0 -143
- package/dist-server/service/recipe/recipe-definition.js.map +0 -1
- package/dist-server/service/recipe/recipe-effective-list.d.ts +0 -49
- package/dist-server/service/recipe/recipe-effective-list.js +0 -96
- package/dist-server/service/recipe/recipe-effective-list.js.map +0 -1
- package/dist-server/service/recipe/recipe-master-resolver.d.ts +0 -28
- package/dist-server/service/recipe/recipe-master-resolver.js +0 -128
- package/dist-server/service/recipe/recipe-master-resolver.js.map +0 -1
- package/dist-server/service/recipe/recipe-master.d.ts +0 -37
- package/dist-server/service/recipe/recipe-master.js +0 -47
- package/dist-server/service/recipe/recipe-master.js.map +0 -1
- package/dist-server/service/recipe/recipe-query.d.ts +0 -21
- package/dist-server/service/recipe/recipe-query.js +0 -82
- package/dist-server/service/recipe/recipe-query.js.map +0 -1
- package/dist-server/service/recipe/recipe-revision-content.d.ts +0 -32
- package/dist-server/service/recipe/recipe-revision-content.js +0 -70
- package/dist-server/service/recipe/recipe-revision-content.js.map +0 -1
- package/dist-server/service/recipe/recipe-revision-line.d.ts +0 -30
- package/dist-server/service/recipe/recipe-revision-line.js +0 -95
- package/dist-server/service/recipe/recipe-revision-line.js.map +0 -1
- package/dist-server/service/recipe/recipe-revision-resolver.d.ts +0 -65
- package/dist-server/service/recipe/recipe-revision-resolver.js +0 -96
- package/dist-server/service/recipe/recipe-revision-resolver.js.map +0 -1
- package/dist-server/service/recipe/recipe-revision-service.d.ts +0 -183
- package/dist-server/service/recipe/recipe-revision-service.js +0 -754
- package/dist-server/service/recipe/recipe-revision-service.js.map +0 -1
- package/dist-server/service/recipe/recipe-revision.d.ts +0 -102
- package/dist-server/service/recipe/recipe-revision.js +0 -373
- package/dist-server/service/recipe/recipe-revision.js.map +0 -1
- package/dist-server/service/recipe/route-definition.d.ts +0 -51
- package/dist-server/service/recipe/route-definition.js +0 -114
- package/dist-server/service/recipe/route-definition.js.map +0 -1
- package/dist-server/service/resource/class-lineage.d.ts +0 -46
- package/dist-server/service/resource/class-lineage.js +0 -80
- package/dist-server/service/resource/class-lineage.js.map +0 -1
- package/dist-server/service/resource/class-members.d.ts +0 -36
- package/dist-server/service/resource/class-members.js +0 -59
- package/dist-server/service/resource/class-members.js.map +0 -1
- package/dist-server/service/resource/referrers.d.ts +0 -54
- package/dist-server/service/resource/referrers.js +0 -99
- package/dist-server/service/resource/referrers.js.map +0 -1
- package/dist-server/service/resource/resource-class.d.ts +0 -25
- package/dist-server/service/resource/resource-class.js +0 -29
- package/dist-server/service/resource/resource-class.js.map +0 -1
- package/dist-server/service/revision-baseline.d.ts +0 -71
- package/dist-server/service/revision-baseline.js +0 -87
- package/dist-server/service/revision-baseline.js.map +0 -1
- package/dist-server/service/row-lock.d.ts +0 -22
- package/dist-server/service/row-lock.js +0 -31
- package/dist-server/service/row-lock.js.map +0 -1
- package/dist-server/service/status/axis-stamp.d.ts +0 -16
- package/dist-server/service/status/axis-stamp.js +0 -22
- package/dist-server/service/status/axis-stamp.js.map +0 -1
- package/dist-server/service/status/index.d.ts +0 -3
- package/dist-server/service/status/index.js +0 -7
- package/dist-server/service/status/index.js.map +0 -1
- package/dist-server/service/status/master-status.d.ts +0 -38
- package/dist-server/service/status/master-status.js +0 -129
- package/dist-server/service/status/master-status.js.map +0 -1
- package/dist-server/service/test-spec/criteria-check.d.ts +0 -53
- package/dist-server/service/test-spec/criteria-check.js +0 -142
- package/dist-server/service/test-spec/criteria-check.js.map +0 -1
- package/dist-server/service/test-spec/criteria-rows.d.ts +0 -89
- package/dist-server/service/test-spec/criteria-rows.js +0 -139
- package/dist-server/service/test-spec/criteria-rows.js.map +0 -1
- package/dist-server/service/test-spec/index.d.ts +0 -6
- package/dist-server/service/test-spec/index.js +0 -11
- package/dist-server/service/test-spec/index.js.map +0 -1
- package/dist-server/service/test-spec/test-spec-effective-list.d.ts +0 -34
- package/dist-server/service/test-spec/test-spec-effective-list.js +0 -42
- package/dist-server/service/test-spec/test-spec-effective-list.js.map +0 -1
- package/dist-server/service/test-spec/test-spec-master-resolver.d.ts +0 -44
- package/dist-server/service/test-spec/test-spec-master-resolver.js +0 -144
- package/dist-server/service/test-spec/test-spec-master-resolver.js.map +0 -1
- package/dist-server/service/test-spec/test-spec-master.d.ts +0 -6
- package/dist-server/service/test-spec/test-spec-master.js +0 -18
- package/dist-server/service/test-spec/test-spec-master.js.map +0 -1
- package/dist-server/service/test-spec/test-spec-query.d.ts +0 -15
- package/dist-server/service/test-spec/test-spec-query.js +0 -61
- package/dist-server/service/test-spec/test-spec-query.js.map +0 -1
- package/dist-server/service/test-spec/test-spec-revision-resolver.d.ts +0 -59
- package/dist-server/service/test-spec/test-spec-revision-resolver.js +0 -96
- package/dist-server/service/test-spec/test-spec-revision-resolver.js.map +0 -1
- package/dist-server/service/test-spec/test-spec-revision-service.d.ts +0 -178
- package/dist-server/service/test-spec/test-spec-revision-service.js +0 -685
- package/dist-server/service/test-spec/test-spec-revision-service.js.map +0 -1
- package/dist-server/service/test-spec/test-spec-revision.d.ts +0 -86
- package/dist-server/service/test-spec/test-spec-revision.js +0 -334
- package/dist-server/service/test-spec/test-spec-revision.js.map +0 -1
- package/dist-server/service/test-spec/test-specification.d.ts +0 -47
- package/dist-server/service/test-spec/test-specification.js +0 -119
- package/dist-server/service/test-spec/test-specification.js.map +0 -1
- package/dist-server/tsconfig.tsbuildinfo +0 -1
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StopReasonResolver = exports.StopReasonList = exports.EquipmentResolver = exports.EquipmentList = exports.EquipmentClassResolver = exports.EquipmentClassList = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const type_graphql_1 = require("type-graphql");
|
|
6
|
-
const applied_when_1 = require("../assignment/applied-when");
|
|
7
|
-
const shell_1 = require("@things-factory/shell");
|
|
8
|
-
const type_graphql_2 = require("type-graphql");
|
|
9
|
-
const state_period_rules_js_1 = require("./state-period-rules.js");
|
|
10
|
-
const shell_2 = require("@things-factory/shell");
|
|
11
|
-
const master_crud_1 = require("../master-crud");
|
|
12
|
-
const master_axis_1 = require("../master-axis");
|
|
13
|
-
const master_list_1 = require("../master-list");
|
|
14
|
-
const class_members_1 = require("../resource/class-members");
|
|
15
|
-
const equipment_class_1 = require("./equipment-class");
|
|
16
|
-
const equipment_1 = require("./equipment");
|
|
17
|
-
const stop_reason_1 = require("./stop-reason");
|
|
18
|
-
/**
|
|
19
|
-
* 설비 축을 채우고 고친다.
|
|
20
|
-
*
|
|
21
|
-
* ── 왜 마스터는 그리드에서 고칠 수 있나 ────────────────────────────────────
|
|
22
|
-
* 업무 기록과 달리 마스터는 **선언**이다. 「이 사람이 용접 자격을 갖는다」는 일어난 일이 아니라 지금의
|
|
23
|
-
* 규정이고, 규정은 바뀐다. 없앨 때 행을 지우지 않고 유효 기간의 끝을 채우는 것이 그래서다 —
|
|
24
|
-
* 지우면 그것을 가리키는 지난 기록이 가리킬 것을 잃는다.
|
|
25
|
-
*
|
|
26
|
-
* 규칙은 `master-crud.ts` 한 곳에 있다. 여기는 축의 이름만 붙인다.
|
|
27
|
-
*/
|
|
28
|
-
let EquipmentClassList = class EquipmentClassList {
|
|
29
|
-
};
|
|
30
|
-
exports.EquipmentClassList = EquipmentClassList;
|
|
31
|
-
tslib_1.__decorate([
|
|
32
|
-
(0, type_graphql_2.Field)(type => [equipment_class_1.EquipmentClass]),
|
|
33
|
-
tslib_1.__metadata("design:type", Array)
|
|
34
|
-
], EquipmentClassList.prototype, "items", void 0);
|
|
35
|
-
tslib_1.__decorate([
|
|
36
|
-
(0, type_graphql_2.Field)(type => type_graphql_2.Int),
|
|
37
|
-
tslib_1.__metadata("design:type", Number)
|
|
38
|
-
], EquipmentClassList.prototype, "total", void 0);
|
|
39
|
-
exports.EquipmentClassList = EquipmentClassList = tslib_1.__decorate([
|
|
40
|
-
(0, type_graphql_2.ObjectType)({ description: 'A page of equipment classes' })
|
|
41
|
-
], EquipmentClassList);
|
|
42
|
-
/**
|
|
43
|
-
* **이 등급에 무엇이 드나** — 들어오는 관계.
|
|
44
|
-
*
|
|
45
|
-
* 등급을 만들어 놓고 아무도 안 들어 있는 일이 실제로 있었다. 화면에는 등급 이름만 있어서 그 사실이
|
|
46
|
-
* 안 보였다. 없앨 때 무엇이 딸려 자격을 잃는지도 알 수 없었다.
|
|
47
|
-
*
|
|
48
|
-
* 세는 방식과 상한은 `class-members.ts` 머리말에 적었다 — 등급 넷이 같은 함수를 쓴다.
|
|
49
|
-
*/
|
|
50
|
-
function equipmentClassMembersOf(context) {
|
|
51
|
-
const state = context.state;
|
|
52
|
-
state.equipmentClassMembers = state.equipmentClassMembers || (0, class_members_1.scanClassMembers)(equipment_1.Equipment, 'equipmentClassIds', state.domain);
|
|
53
|
-
return state.equipmentClassMembers;
|
|
54
|
-
}
|
|
55
|
-
let EquipmentClassResolver = class EquipmentClassResolver {
|
|
56
|
-
async equipmentClasses(params, context) {
|
|
57
|
-
const { domain } = context.state;
|
|
58
|
-
const { items, total } = await (0, master_list_1.listMaster)('equipmentClass', params, domain);
|
|
59
|
-
return { items: items, total };
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* 이 등급에 든 설비들
|
|
63
|
-
*
|
|
64
|
-
* 아무도 안 들면 빈 목록이다. 다만 그것이 「없다」인지 「다 못 봤다」인지는 `memberScanCapped`
|
|
65
|
-
* 가 말한다 — 조용히 자르면 고쳐야 할 선언과 멀쩡한 등급이 같아 보인다.
|
|
66
|
-
*/
|
|
67
|
-
async members(klass, context) {
|
|
68
|
-
return (await equipmentClassMembersOf(context)).members.get(klass.name) ?? [];
|
|
69
|
-
}
|
|
70
|
-
/** 소속을 다 보지 못했나. */
|
|
71
|
-
async memberScanCapped(klass, context) {
|
|
72
|
-
return (await equipmentClassMembersOf(context)).capped;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* 그리드가 보낸 변경을 한 번에 적용한다.
|
|
76
|
-
*
|
|
77
|
-
* 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을
|
|
78
|
-
* 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는
|
|
79
|
-
* 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.
|
|
80
|
-
*/
|
|
81
|
-
async updateMultipleEquipmentClass(patches, context) {
|
|
82
|
-
const { domain, user, tx } = context.state;
|
|
83
|
-
const axis = (0, master_axis_1.masterAxisOf)('equipmentClass');
|
|
84
|
-
const saved = await (0, master_crud_1.saveMasterPatches)(tx, domain, axis.entity, patches, user, {
|
|
85
|
-
hasEffectivePeriod: axis.hasEffectivePeriod
|
|
86
|
-
});
|
|
87
|
-
return saved;
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
exports.EquipmentClassResolver = EquipmentClassResolver;
|
|
91
|
-
tslib_1.__decorate([
|
|
92
|
-
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "query", domainOwnerGranted: true)'),
|
|
93
|
-
(0, type_graphql_2.Query)(returns => EquipmentClassList, { description: 'To fetch equipment classes' }),
|
|
94
|
-
tslib_1.__param(0, (0, type_graphql_2.Args)(type => shell_2.ListParam)),
|
|
95
|
-
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
96
|
-
tslib_1.__metadata("design:type", Function),
|
|
97
|
-
tslib_1.__metadata("design:paramtypes", [shell_2.ListParam, Object]),
|
|
98
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
99
|
-
], EquipmentClassResolver.prototype, "equipmentClasses", null);
|
|
100
|
-
tslib_1.__decorate([
|
|
101
|
-
(0, type_graphql_2.FieldResolver)(type => [String], { description: 'Equipment belonging to this class' }),
|
|
102
|
-
tslib_1.__param(0, (0, type_graphql_2.Root)()),
|
|
103
|
-
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
104
|
-
tslib_1.__metadata("design:type", Function),
|
|
105
|
-
tslib_1.__metadata("design:paramtypes", [equipment_class_1.EquipmentClass, Object]),
|
|
106
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
107
|
-
], EquipmentClassResolver.prototype, "members", null);
|
|
108
|
-
tslib_1.__decorate([
|
|
109
|
-
(0, type_graphql_2.FieldResolver)(type => Boolean, { description: 'True when members were too many to scan fully' }),
|
|
110
|
-
tslib_1.__param(0, (0, type_graphql_2.Root)()),
|
|
111
|
-
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
112
|
-
tslib_1.__metadata("design:type", Function),
|
|
113
|
-
tslib_1.__metadata("design:paramtypes", [equipment_class_1.EquipmentClass, Object]),
|
|
114
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
115
|
-
], EquipmentClassResolver.prototype, "memberScanCapped", null);
|
|
116
|
-
tslib_1.__decorate([
|
|
117
|
-
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "mutation", domainOwnerGranted: true)'),
|
|
118
|
-
(0, type_graphql_2.Directive)('@transaction'),
|
|
119
|
-
(0, type_graphql_2.Mutation)(returns => [equipment_class_1.EquipmentClass], { description: 'To create, change or retire equipment classes' }),
|
|
120
|
-
tslib_1.__param(0, (0, type_graphql_2.Arg)('patches', type => [shell_2.ScalarObject])),
|
|
121
|
-
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
122
|
-
tslib_1.__metadata("design:type", Function),
|
|
123
|
-
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
124
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
125
|
-
], EquipmentClassResolver.prototype, "updateMultipleEquipmentClass", null);
|
|
126
|
-
exports.EquipmentClassResolver = EquipmentClassResolver = tslib_1.__decorate([
|
|
127
|
-
(0, type_graphql_2.Resolver)(equipment_class_1.EquipmentClass),
|
|
128
|
-
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
129
|
-
], EquipmentClassResolver);
|
|
130
|
-
let EquipmentList = class EquipmentList {
|
|
131
|
-
};
|
|
132
|
-
exports.EquipmentList = EquipmentList;
|
|
133
|
-
tslib_1.__decorate([
|
|
134
|
-
(0, type_graphql_2.Field)(type => [equipment_1.Equipment]),
|
|
135
|
-
tslib_1.__metadata("design:type", Array)
|
|
136
|
-
], EquipmentList.prototype, "items", void 0);
|
|
137
|
-
tslib_1.__decorate([
|
|
138
|
-
(0, type_graphql_2.Field)(type => type_graphql_2.Int),
|
|
139
|
-
tslib_1.__metadata("design:type", Number)
|
|
140
|
-
], EquipmentList.prototype, "total", void 0);
|
|
141
|
-
exports.EquipmentList = EquipmentList = tslib_1.__decorate([
|
|
142
|
-
(0, type_graphql_2.ObjectType)({ description: 'A page of equipment' })
|
|
143
|
-
], EquipmentList);
|
|
144
|
-
let EquipmentResolver = class EquipmentResolver {
|
|
145
|
-
async equipmentList(params, context) {
|
|
146
|
-
const { domain } = context.state;
|
|
147
|
-
const { items, total } = await (0, master_list_1.listMaster)('equipment', params, domain);
|
|
148
|
-
return { items: items, total };
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* 그리드가 보낸 변경을 한 번에 적용한다.
|
|
152
|
-
*
|
|
153
|
-
* 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을
|
|
154
|
-
* 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는
|
|
155
|
-
* 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.
|
|
156
|
-
*/
|
|
157
|
-
async updateMultipleEquipment(patches, context, applied) {
|
|
158
|
-
const { domain, user, tx } = context.state;
|
|
159
|
-
const axis = (0, master_axis_1.masterAxisOf)('equipment');
|
|
160
|
-
const saved = await (0, master_crud_1.saveMasterPatches)(tx, domain, axis.entity, patches, user, {
|
|
161
|
-
hasEffectivePeriod: axis.hasEffectivePeriod,
|
|
162
|
-
...(0, applied_when_1.appliedOptions)(applied)
|
|
163
|
-
});
|
|
164
|
-
return saved;
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
exports.EquipmentResolver = EquipmentResolver;
|
|
168
|
-
tslib_1.__decorate([
|
|
169
|
-
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "query", domainOwnerGranted: true)'),
|
|
170
|
-
(0, type_graphql_2.Query)(returns => EquipmentList, { description: 'To fetch equipment' }),
|
|
171
|
-
tslib_1.__param(0, (0, type_graphql_2.Args)(type => shell_2.ListParam)),
|
|
172
|
-
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
173
|
-
tslib_1.__metadata("design:type", Function),
|
|
174
|
-
tslib_1.__metadata("design:paramtypes", [shell_2.ListParam, Object]),
|
|
175
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
176
|
-
], EquipmentResolver.prototype, "equipmentList", null);
|
|
177
|
-
tslib_1.__decorate([
|
|
178
|
-
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "mutation", domainOwnerGranted: true)'),
|
|
179
|
-
(0, type_graphql_2.Directive)('@transaction'),
|
|
180
|
-
(0, type_graphql_2.Mutation)(returns => [equipment_1.Equipment], { description: 'To create, change or retire equipment' }),
|
|
181
|
-
tslib_1.__param(0, (0, type_graphql_2.Arg)('patches', type => [shell_2.ScalarObject])),
|
|
182
|
-
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
183
|
-
tslib_1.__param(2, (0, type_graphql_2.Arg)('applied', type => shell_2.ScalarObject, { nullable: true })),
|
|
184
|
-
tslib_1.__metadata("design:type", Function),
|
|
185
|
-
tslib_1.__metadata("design:paramtypes", [Array, Object, Object]),
|
|
186
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
187
|
-
], EquipmentResolver.prototype, "updateMultipleEquipment", null);
|
|
188
|
-
exports.EquipmentResolver = EquipmentResolver = tslib_1.__decorate([
|
|
189
|
-
(0, type_graphql_2.Resolver)(equipment_1.Equipment),
|
|
190
|
-
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
191
|
-
], EquipmentResolver);
|
|
192
|
-
let StopReasonList = class StopReasonList {
|
|
193
|
-
};
|
|
194
|
-
exports.StopReasonList = StopReasonList;
|
|
195
|
-
tslib_1.__decorate([
|
|
196
|
-
(0, type_graphql_2.Field)(type => [stop_reason_1.StopReason]),
|
|
197
|
-
tslib_1.__metadata("design:type", Array)
|
|
198
|
-
], StopReasonList.prototype, "items", void 0);
|
|
199
|
-
tslib_1.__decorate([
|
|
200
|
-
(0, type_graphql_2.Field)(type => type_graphql_2.Int),
|
|
201
|
-
tslib_1.__metadata("design:type", Number)
|
|
202
|
-
], StopReasonList.prototype, "total", void 0);
|
|
203
|
-
exports.StopReasonList = StopReasonList = tslib_1.__decorate([
|
|
204
|
-
(0, type_graphql_2.ObjectType)({ description: 'A page of stop reasons' })
|
|
205
|
-
], StopReasonList);
|
|
206
|
-
let StopReasonResolver = class StopReasonResolver {
|
|
207
|
-
async stopReasonList(params, context) {
|
|
208
|
-
const { domain } = context.state;
|
|
209
|
-
const { items, total } = await (0, master_list_1.listMaster)('stopReason', params, domain);
|
|
210
|
-
return { items: items, total };
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* 그리드가 보낸 변경을 한 번에 적용한다.
|
|
214
|
-
*
|
|
215
|
-
* 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을
|
|
216
|
-
* 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는
|
|
217
|
-
* 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.
|
|
218
|
-
*/
|
|
219
|
-
async updateMultipleStopReason(patches, context) {
|
|
220
|
-
const { domain, user, tx } = context.state;
|
|
221
|
-
const axis = (0, master_axis_1.masterAxisOf)('stopReason');
|
|
222
|
-
/*
|
|
223
|
-
* **모르는 상태로는 저장하지 않는다.** 이 값이 가동률을 깎느냐 마느냐를 정하므로, 목록 밖 값이
|
|
224
|
-
* 들어오면 그 사유를 쓴 구간이 전부 어긋남으로 걸린다 — 잘못은 여기서 났는데 불은 거기서 켜진다.
|
|
225
|
-
*
|
|
226
|
-
* 지우는 패치(`retire`)는 상태를 다시 말하지 않으므로 값이 있을 때만 본다.
|
|
227
|
-
*/
|
|
228
|
-
for (const patch of patches) {
|
|
229
|
-
const said = patch?.status;
|
|
230
|
-
if (said === undefined || said === null)
|
|
231
|
-
continue;
|
|
232
|
-
const gap = (0, state_period_rules_js_1.stopReasonStatusGap)(said);
|
|
233
|
-
if (gap)
|
|
234
|
-
throw new Error(`정지 사유 "${patch?.name ?? ''}" — ${gap}`);
|
|
235
|
-
}
|
|
236
|
-
const saved = await (0, master_crud_1.saveMasterPatches)(tx, domain, axis.entity, patches, user, {
|
|
237
|
-
hasEffectivePeriod: axis.hasEffectivePeriod
|
|
238
|
-
});
|
|
239
|
-
return saved;
|
|
240
|
-
}
|
|
241
|
-
};
|
|
242
|
-
exports.StopReasonResolver = StopReasonResolver;
|
|
243
|
-
tslib_1.__decorate([
|
|
244
|
-
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "query", domainOwnerGranted: true)'),
|
|
245
|
-
(0, type_graphql_2.Query)(returns => StopReasonList, { description: 'To fetch stop reasons' }),
|
|
246
|
-
tslib_1.__param(0, (0, type_graphql_2.Args)(type => shell_2.ListParam)),
|
|
247
|
-
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
248
|
-
tslib_1.__metadata("design:type", Function),
|
|
249
|
-
tslib_1.__metadata("design:paramtypes", [shell_2.ListParam, Object]),
|
|
250
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
251
|
-
], StopReasonResolver.prototype, "stopReasonList", null);
|
|
252
|
-
tslib_1.__decorate([
|
|
253
|
-
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "mutation", domainOwnerGranted: true)'),
|
|
254
|
-
(0, type_graphql_2.Directive)('@transaction'),
|
|
255
|
-
(0, type_graphql_2.Mutation)(returns => [stop_reason_1.StopReason], { description: 'To create, change or retire stop reasons' }),
|
|
256
|
-
tslib_1.__param(0, (0, type_graphql_2.Arg)('patches', type => [shell_2.ScalarObject])),
|
|
257
|
-
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
258
|
-
tslib_1.__metadata("design:type", Function),
|
|
259
|
-
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
260
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
261
|
-
], StopReasonResolver.prototype, "updateMultipleStopReason", null);
|
|
262
|
-
exports.StopReasonResolver = StopReasonResolver = tslib_1.__decorate([
|
|
263
|
-
(0, type_graphql_2.Resolver)(stop_reason_1.StopReason),
|
|
264
|
-
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
265
|
-
], StopReasonResolver);
|
|
266
|
-
//# sourceMappingURL=equipment-master-resolver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"equipment-master-resolver.js","sourceRoot":"","sources":["../../../server/service/equipment/equipment-master-resolver.ts"],"names":[],"mappings":";;;;AAAA,+CAA4C;AAC5C,6DAAwE;AACxE,iDAAqD;AACrD,+CAAgI;AAChI,mEAA6D;AAE7D,iDAAuE;AAEvE,gDAA+D;AAC/D,gDAA6C;AAC7C,gDAA2C;AAC3C,6DAA0E;AAC1E,uDAAkD;AAClD,2CAAuC;AACvC,+CAA0C;AAE1C;;;;;;;;;GASG;AAGI,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAM9B,CAAA;AANY,gDAAkB;AAE7B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,gCAAc,CAAC,CAAC;;iDACT;AAGvB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;iDACN;6BALF,kBAAkB;IAD9B,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;GAC9C,kBAAkB,CAM9B;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,OAAwB;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAA0E,CAAA;IAEhG,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,IAAI,IAAA,gCAAgB,EAAC,qBAAS,EAAE,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAE3H,OAAO,KAAK,CAAC,qBAAqB,CAAA;AACpC,CAAC;AAIM,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAG3B,AAAN,KAAK,CAAC,gBAAgB,CAA0B,MAAiB,EAAS,OAAwB;QAChG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAChC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,wBAAU,EAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAE3E,OAAO,EAAE,KAAK,EAAE,KAAyB,EAAE,KAAK,EAAE,CAAA;IACpD,CAAC;IAED;;;;;OAKG;IAEG,AAAN,KAAK,CAAC,OAAO,CAAS,KAAqB,EAAS,OAAwB;QAC1E,OAAO,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC/E,CAAC;IAED,oBAAoB;IAEd,AAAN,KAAK,CAAC,gBAAgB,CAAS,KAAqB,EAAS,OAAwB;QACnF,OAAO,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;IACxD,CAAC;IAED;;;;;;OAMG;IAIG,AAAN,KAAK,CAAC,4BAA4B,CACQ,OAAsB,EACvD,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,IAAI,GAAG,IAAA,0BAAY,EAAC,gBAAgB,CAAC,CAAA;QAE3C,MAAM,KAAK,GAAG,MAAM,IAAA,+BAAiB,EAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;YAC5E,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAC,CAAA;QAEF,OAAO,KAAyB,CAAA;IAClC,CAAC;CACF,CAAA;AAlDY,wDAAsB;AAG3B;IAFL,IAAA,wBAAS,EAAC,kFAAkF,CAAC;IAC7F,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;IAC5D,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;8DAKhE;AASK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;IACvE,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAAyB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAtB,gCAAc;;qDAE1C;AAIK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC;IACzE,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAAyB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAtB,gCAAc;;8DAEnD;AAYK;IAHL,IAAA,wBAAS,EAAC,qFAAqF,CAAC;IAChG,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,gCAAc,CAAC,EAAE,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC;IAErG,mBAAA,IAAA,kBAAG,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAY,CAAC,CAAC,CAAA;IACtC,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;0EAUP;iCAjDU,sBAAsB;IAFlC,IAAA,uBAAQ,EAAC,gCAAc,CAAC;IACxB,IAAA,4BAAa,EAAC,qBAAa,CAAC;GAChB,sBAAsB,CAkDlC;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAa;CAMzB,CAAA;AANY,sCAAa;AAExB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,qBAAS,CAAC,CAAC;;4CACT;AAGlB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;4CACN;wBALF,aAAa;IADzB,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;GACtC,aAAa,CAMzB;AAIM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAGtB,AAAN,KAAK,CAAC,aAAa,CAA0B,MAAiB,EAAS,OAAwB;QAC7F,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAChC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,wBAAU,EAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAEtE,OAAO,EAAE,KAAK,EAAE,KAAoB,EAAE,KAAK,EAAE,CAAA;IAC/C,CAAC;IAED;;;;;;OAMG;IAIG,AAAN,KAAK,CAAC,uBAAuB,CACa,OAAsB,EACvD,OAAwB,EAO2B,OAAqB;QAE/E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,IAAI,GAAG,IAAA,0BAAY,EAAC,WAAW,CAAC,CAAA;QAEtC,MAAM,KAAK,GAAG,MAAM,IAAA,+BAAiB,EAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;YAC5E,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,GAAG,IAAA,6BAAc,EAAC,OAAO,CAAC;SAC3B,CAAC,CAAA;QAEF,OAAO,KAAoB,CAAA;IAC7B,CAAC;CACF,CAAA;AAzCY,8CAAiB;AAGtB;IAFL,IAAA,wBAAS,EAAC,kFAAkF,CAAC;IAC7F,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAClD,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;sDAK7D;AAYK;IAHL,IAAA,wBAAS,EAAC,qFAAqF,CAAC;IAChG,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,qBAAS,CAAC,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;IAExF,mBAAA,IAAA,kBAAG,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAY,CAAC,CAAC,CAAA;IACtC,mBAAA,IAAA,kBAAG,GAAE,CAAA;IAOL,mBAAA,IAAA,kBAAG,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;;;gEAW1D;4BAxCU,iBAAiB;IAF7B,IAAA,uBAAQ,EAAC,qBAAS,CAAC;IACnB,IAAA,4BAAa,EAAC,qBAAa,CAAC;GAChB,iBAAiB,CAyC7B;AAGM,IAAM,cAAc,GAApB,MAAM,cAAc;CAM1B,CAAA;AANY,wCAAc;AAEzB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,wBAAU,CAAC,CAAC;;6CACT;AAGnB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;6CACN;yBALF,cAAc;IAD1B,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;GACzC,cAAc,CAM1B;AAIM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAGvB,AAAN,KAAK,CAAC,cAAc,CAA0B,MAAiB,EAAS,OAAwB;QAC9F,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAChC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,wBAAU,EAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAEvE,OAAO,EAAE,KAAK,EAAE,KAAqB,EAAE,KAAK,EAAE,CAAA;IAChD,CAAC;IAED;;;;;;OAMG;IAIG,AAAN,KAAK,CAAC,wBAAwB,CACY,OAAsB,EACvD,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1C,MAAM,IAAI,GAAG,IAAA,0BAAY,EAAC,YAAY,CAAC,CAAA;QAEvC;;;;;WAKG;QACH,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAI,KAAa,EAAE,MAAM,CAAA;YACnC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;gBAAE,SAAQ;YAEjD,MAAM,GAAG,GAAG,IAAA,2CAAmB,EAAC,IAAI,CAAC,CAAA;YACrC,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,UAAW,KAAa,EAAE,IAAI,IAAI,EAAE,OAAO,GAAG,EAAE,CAAC,CAAA;QAC5E,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAA,+BAAiB,EAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;YAC5E,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAC,CAAA;QAEF,OAAO,KAAqB,CAAA;IAC9B,CAAC;CACF,CAAA;AA/CY,gDAAkB;AAGvB;IAFL,IAAA,wBAAS,EAAC,kFAAkF,CAAC;IAC7F,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACrD,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;wDAK9D;AAYK;IAHL,IAAA,wBAAS,EAAC,qFAAqF,CAAC;IAChG,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,wBAAU,CAAC,EAAE,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;IAE5F,mBAAA,IAAA,kBAAG,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAY,CAAC,CAAC,CAAA;IACtC,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;kEAwBP;6BA9CU,kBAAkB;IAF9B,IAAA,uBAAQ,EAAC,wBAAU,CAAC;IACpB,IAAA,4BAAa,EAAC,qBAAa,CAAC;GAChB,kBAAkB,CA+C9B","sourcesContent":["import { UseMiddleware } from 'type-graphql'\nimport { AppliedWhen, appliedOptions } from '../assignment/applied-when'\nimport { SpeakRefusals } from '@things-factory/shell'\nimport { FieldResolver, Root, Args, Arg, Ctx, Directive, Int, Mutation, ObjectType, Field, Query, Resolver } from 'type-graphql'\nimport { stopReasonStatusGap } from './state-period-rules.js'\n\nimport { Domain, ListParam, ScalarObject } from '@things-factory/shell'\n\nimport { MasterPatch, saveMasterPatches } from '../master-crud'\nimport { masterAxisOf } from '../master-axis'\nimport { listMaster } from '../master-list'\nimport { ClassMembers, scanClassMembers } from '../resource/class-members'\nimport { EquipmentClass } from './equipment-class'\nimport { Equipment } from './equipment'\nimport { StopReason } from './stop-reason'\n\n/**\n * 설비 축을 채우고 고친다.\n *\n * ── 왜 마스터는 그리드에서 고칠 수 있나 ────────────────────────────────────\n * 업무 기록과 달리 마스터는 **선언**이다. 「이 사람이 용접 자격을 갖는다」는 일어난 일이 아니라 지금의\n * 규정이고, 규정은 바뀐다. 없앨 때 행을 지우지 않고 유효 기간의 끝을 채우는 것이 그래서다 —\n * 지우면 그것을 가리키는 지난 기록이 가리킬 것을 잃는다.\n *\n * 규칙은 `master-crud.ts` 한 곳에 있다. 여기는 축의 이름만 붙인다.\n */\n\n@ObjectType({ description: 'A page of equipment classes' })\nexport class EquipmentClassList {\n @Field(type => [EquipmentClass])\n items: EquipmentClass[]\n\n @Field(type => Int)\n total: number\n}\n\n/**\n * **이 등급에 무엇이 드나** — 들어오는 관계.\n *\n * 등급을 만들어 놓고 아무도 안 들어 있는 일이 실제로 있었다. 화면에는 등급 이름만 있어서 그 사실이\n * 안 보였다. 없앨 때 무엇이 딸려 자격을 잃는지도 알 수 없었다.\n *\n * 세는 방식과 상한은 `class-members.ts` 머리말에 적었다 — 등급 넷이 같은 함수를 쓴다.\n */\nfunction equipmentClassMembersOf(context: ResolverContext): Promise<ClassMembers> {\n const state = context.state as { domain: Domain; equipmentClassMembers?: Promise<ClassMembers> }\n\n state.equipmentClassMembers = state.equipmentClassMembers || scanClassMembers(Equipment, 'equipmentClassIds', state.domain)\n\n return state.equipmentClassMembers\n}\n\n@Resolver(EquipmentClass)\n@UseMiddleware(SpeakRefusals)\nexport class EquipmentClassResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => EquipmentClassList, { description: 'To fetch equipment classes' })\n async equipmentClasses(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<EquipmentClassList> {\n const { domain } = context.state\n const { items, total } = await listMaster('equipmentClass', params, domain)\n\n return { items: items as EquipmentClass[], total }\n }\n\n /**\n * 이 등급에 든 설비들\n *\n * 아무도 안 들면 빈 목록이다. 다만 그것이 「없다」인지 「다 못 봤다」인지는 `memberScanCapped`\n * 가 말한다 — 조용히 자르면 고쳐야 할 선언과 멀쩡한 등급이 같아 보인다.\n */\n @FieldResolver(type => [String], { description: 'Equipment belonging to this class' })\n async members(@Root() klass: EquipmentClass, @Ctx() context: ResolverContext): Promise<string[]> {\n return (await equipmentClassMembersOf(context)).members.get(klass.name) ?? []\n }\n\n /** 소속을 다 보지 못했나. */\n @FieldResolver(type => Boolean, { description: 'True when members were too many to scan fully' })\n async memberScanCapped(@Root() klass: EquipmentClass, @Ctx() context: ResolverContext): Promise<boolean> {\n return (await equipmentClassMembersOf(context)).capped\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [EquipmentClass], { description: 'To create, change or retire equipment classes' })\n async updateMultipleEquipmentClass(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<EquipmentClass[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('equipmentClass')\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as EquipmentClass[]\n }\n}\n\n@ObjectType({ description: 'A page of equipment' })\nexport class EquipmentList {\n @Field(type => [Equipment])\n items: Equipment[]\n\n @Field(type => Int)\n total: number\n}\n\n@Resolver(Equipment)\n@UseMiddleware(SpeakRefusals)\nexport class EquipmentResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => EquipmentList, { description: 'To fetch equipment' })\n async equipmentList(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<EquipmentList> {\n const { domain } = context.state\n const { items, total } = await listMaster('equipment', params, domain)\n\n return { items: items as Equipment[], total }\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [Equipment], { description: 'To create, change or retire equipment' })\n async updateMultipleEquipment(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext,\n /**\n * **언제부터 그러한가** — 배정·선언 칸을 고칠 때만 온다.\n *\n * 안 오면 지금부터다. 미래면 주장만 남고 본행은 그 시각이 올 때까지 그대로다\n * (§`claimAssignmentChanges`).\n */\n @Arg('applied', type => ScalarObject, { nullable: true }) applied?: AppliedWhen\n ): Promise<Equipment[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('equipment')\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod,\n ...appliedOptions(applied)\n })\n\n return saved as Equipment[]\n }\n}\n\n@ObjectType({ description: 'A page of stop reasons' })\nexport class StopReasonList {\n @Field(type => [StopReason])\n items: StopReason[]\n\n @Field(type => Int)\n total: number\n}\n\n@Resolver(StopReason)\n@UseMiddleware(SpeakRefusals)\nexport class StopReasonResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => StopReasonList, { description: 'To fetch stop reasons' })\n async stopReasonList(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<StopReasonList> {\n const { domain } = context.state\n const { items, total } = await listMaster('stopReason', params, domain)\n\n return { items: items as StopReason[], total }\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [StopReason], { description: 'To create, change or retire stop reasons' })\n async updateMultipleStopReason(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<StopReason[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('stopReason')\n\n /*\n * **모르는 상태로는 저장하지 않는다.** 이 값이 가동률을 깎느냐 마느냐를 정하므로, 목록 밖 값이\n * 들어오면 그 사유를 쓴 구간이 전부 어긋남으로 걸린다 — 잘못은 여기서 났는데 불은 거기서 켜진다.\n *\n * 지우는 패치(`retire`)는 상태를 다시 말하지 않으므로 값이 있을 때만 본다.\n */\n for (const patch of patches) {\n const said = (patch as any)?.status\n if (said === undefined || said === null) continue\n\n const gap = stopReasonStatusGap(said)\n if (gap) throw new Error(`정지 사유 \"${(patch as any)?.name ?? ''}\" — ${gap}`)\n }\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as StopReason[]\n }\n}\n"]}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { ResourceClassDef } from '@operato/ops-contract';
|
|
2
|
-
import type { Equipment } from './equipment';
|
|
3
|
-
import type { EquipmentClass } from './equipment-class';
|
|
4
|
-
/** 트윈 `ReferenceMaster.equipment` 의 한 항목. */
|
|
5
|
-
export interface EquipmentEntry {
|
|
6
|
-
id: string;
|
|
7
|
-
kind: string;
|
|
8
|
-
equipmentClassIds?: string[];
|
|
9
|
-
homeLocation: string;
|
|
10
|
-
identity?: string;
|
|
11
|
-
mtbfMs?: number;
|
|
12
|
-
mttrMs?: number;
|
|
13
|
-
workCalendar?: unknown[];
|
|
14
|
-
properties?: unknown[];
|
|
15
|
-
testSpecificationIds?: string[];
|
|
16
|
-
testResults?: unknown[];
|
|
17
|
-
effectiveStart?: string;
|
|
18
|
-
effectiveEnd?: string;
|
|
19
|
-
}
|
|
20
|
-
export declare function toEquipmentEntry(equipment: Equipment): EquipmentEntry;
|
|
21
|
-
/**
|
|
22
|
-
* 설비 축 전체 — 트윈이 당겨 갈 조각.
|
|
23
|
-
*
|
|
24
|
-
* 설비가 `equipmentClassIds` 로 등급을, `homeLocation` 으로 자리를 가리키므로 등급과 함께 나가야
|
|
25
|
-
* 한다. 한 건씩 밀면 설비가 먼저 도착하고 등급이 나중에 오는 순간이 생긴다.
|
|
26
|
-
*/
|
|
27
|
-
export declare function equipmentMaster(classes: EquipmentClass[], equipment: Equipment[]): {
|
|
28
|
-
equipmentClasses: ResourceClassDef[];
|
|
29
|
-
equipment: EquipmentEntry[];
|
|
30
|
-
};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toEquipmentEntry = toEquipmentEntry;
|
|
4
|
-
exports.equipmentMaster = equipmentMaster;
|
|
5
|
-
const resource_class_1 = require("../resource/resource-class");
|
|
6
|
-
/*
|
|
7
|
-
* ── 커널이 받는 이름은 `homeLocationId` 다 ────────────────────────────────
|
|
8
|
-
*
|
|
9
|
-
* 우리 칸 이름은 `homeLocation` 이고 커널의 마스터 접수는 `homeLocationId` 로 받는다. 이름이 하나
|
|
10
|
-
* 달라서 **값이 지나가고 아무도 안 읽었다** — 트윈의 설비 넷이 전부 자리 없이 앉아 있었다.
|
|
11
|
-
* 거절도 경고도 없었다. (인티그레이션 레인 실측, 2026-09-04)
|
|
12
|
-
*
|
|
13
|
-
* 값은 그대로다. 우리가 담는 것이 이미 자리 식별자(이름)라 옮길 것이 없고 이름만 맞춘다. 계약도
|
|
14
|
-
* 「붙박인 자리(마스터의 `homeLocationId`)」라고 적는다.
|
|
15
|
-
*
|
|
16
|
-
* 이 축은 셋 다 같다 — 인원 · 설비 · 자산. 하나만 고치면 나머지 둘이 계속 조용하다.
|
|
17
|
-
*/
|
|
18
|
-
function toEquipmentEntry(equipment) {
|
|
19
|
-
/* `kind` 와 자리는 비울 수 없다 — 자리를 모르면 커널이 어디서 일하는지 정할 수 없다. */
|
|
20
|
-
const out = {
|
|
21
|
-
id: equipment.name,
|
|
22
|
-
kind: equipment.kind,
|
|
23
|
-
homeLocationId: equipment.homeLocation
|
|
24
|
-
};
|
|
25
|
-
/*
|
|
26
|
-
* 등급은 비어 있을 수 있다. 비면 커널이 `kind` 하나로 소속을 정한다 — 예전과 같다.
|
|
27
|
-
* 빈 배열을 내보내지 않는 것은 `put` 이 든다(값이 없으면 칸을 만들지 않는다).
|
|
28
|
-
*/
|
|
29
|
-
(0, resource_class_1.put)(out, 'equipmentClassIds', equipment.equipmentClassIds);
|
|
30
|
-
(0, resource_class_1.put)(out, 'identity', equipment.identity);
|
|
31
|
-
(0, resource_class_1.put)(out, 'mtbfMs', equipment.mtbfMs === undefined || equipment.mtbfMs === null ? undefined : Number(equipment.mtbfMs));
|
|
32
|
-
(0, resource_class_1.put)(out, 'mttrMs', equipment.mttrMs === undefined || equipment.mttrMs === null ? undefined : Number(equipment.mttrMs));
|
|
33
|
-
(0, resource_class_1.put)(out, 'workCalendar', equipment.workCalendar);
|
|
34
|
-
(0, resource_class_1.put)(out, 'properties', equipment.properties);
|
|
35
|
-
(0, resource_class_1.put)(out, 'testSpecificationIds', equipment.testSpecificationIds);
|
|
36
|
-
(0, resource_class_1.put)(out, 'testResults', equipment.testResults);
|
|
37
|
-
(0, resource_class_1.put)(out, 'effectiveStart', (0, resource_class_1.iso)(equipment.effectiveStart));
|
|
38
|
-
(0, resource_class_1.put)(out, 'effectiveEnd', (0, resource_class_1.iso)(equipment.effectiveEnd));
|
|
39
|
-
return out;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* 설비 축 전체 — 트윈이 당겨 갈 조각.
|
|
43
|
-
*
|
|
44
|
-
* 설비가 `equipmentClassIds` 로 등급을, `homeLocation` 으로 자리를 가리키므로 등급과 함께 나가야
|
|
45
|
-
* 한다. 한 건씩 밀면 설비가 먼저 도착하고 등급이 나중에 오는 순간이 생긴다.
|
|
46
|
-
*/
|
|
47
|
-
function equipmentMaster(classes, equipment) {
|
|
48
|
-
return {
|
|
49
|
-
equipmentClasses: classes.map(resource_class_1.toResourceClassDef),
|
|
50
|
-
equipment: equipment.map(toEquipmentEntry)
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=equipment-master.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"equipment-master.js","sourceRoot":"","sources":["../../../server/service/equipment/equipment-master.ts"],"names":[],"mappings":";;AAmCA,4CAwBC;AAQD,0CAQC;AAzED,+DAAyE;AAqBzE;;;;;;;;;;;GAWG;AACH,SAAgB,gBAAgB,CAAC,SAAoB;IACnD,0DAA0D;IAC1D,MAAM,GAAG,GAA4B;QACnC,EAAE,EAAE,SAAS,CAAC,IAAI;QAClB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,cAAc,EAAE,SAAS,CAAC,YAAY;KACvC,CAAA;IAED;;;OAGG;IACH,IAAA,oBAAG,EAAC,GAAG,EAAE,mBAAmB,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAA;IAC1D,IAAA,oBAAG,EAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IACxC,IAAA,oBAAG,EAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IACtH,IAAA,oBAAG,EAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IACtH,IAAA,oBAAG,EAAC,GAAG,EAAE,cAAc,EAAE,SAAS,CAAC,YAAY,CAAC,CAAA;IAChD,IAAA,oBAAG,EAAC,GAAG,EAAE,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;IAC5C,IAAA,oBAAG,EAAC,GAAG,EAAE,sBAAsB,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAA;IAChE,IAAA,oBAAG,EAAC,GAAG,EAAE,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;IAC9C,IAAA,oBAAG,EAAC,GAAG,EAAE,gBAAgB,EAAE,IAAA,oBAAG,EAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;IACzD,IAAA,oBAAG,EAAC,GAAG,EAAE,cAAc,EAAE,IAAA,oBAAG,EAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;IAErD,OAAO,GAAgC,CAAA;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAC7B,OAAyB,EACzB,SAAsB;IAEtB,OAAO;QACL,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,mCAAkB,CAAC;QACjD,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;KAC3C,CAAA;AACH,CAAC","sourcesContent":["import type { ResourceClassDef } from '@operato/ops-contract'\n\nimport { iso, put, toResourceClassDef } from '../resource/resource-class'\nimport type { Equipment } from './equipment'\nimport type { EquipmentClass } from './equipment-class'\n\n/** 트윈 `ReferenceMaster.equipment` 의 한 항목. */\nexport interface EquipmentEntry {\n id: string\n kind: string\n equipmentClassIds?: string[]\n homeLocation: string\n identity?: string\n mtbfMs?: number\n mttrMs?: number\n workCalendar?: unknown[]\n properties?: unknown[]\n testSpecificationIds?: string[]\n testResults?: unknown[]\n effectiveStart?: string\n effectiveEnd?: string\n}\n\n/*\n * ── 커널이 받는 이름은 `homeLocationId` 다 ────────────────────────────────\n *\n * 우리 칸 이름은 `homeLocation` 이고 커널의 마스터 접수는 `homeLocationId` 로 받는다. 이름이 하나\n * 달라서 **값이 지나가고 아무도 안 읽었다** — 트윈의 설비 넷이 전부 자리 없이 앉아 있었다.\n * 거절도 경고도 없었다. (인티그레이션 레인 실측, 2026-09-04)\n *\n * 값은 그대로다. 우리가 담는 것이 이미 자리 식별자(이름)라 옮길 것이 없고 이름만 맞춘다. 계약도\n * 「붙박인 자리(마스터의 `homeLocationId`)」라고 적는다.\n *\n * 이 축은 셋 다 같다 — 인원 · 설비 · 자산. 하나만 고치면 나머지 둘이 계속 조용하다.\n */\nexport function toEquipmentEntry(equipment: Equipment): EquipmentEntry {\n /* `kind` 와 자리는 비울 수 없다 — 자리를 모르면 커널이 어디서 일하는지 정할 수 없다. */\n const out: Record<string, unknown> = {\n id: equipment.name,\n kind: equipment.kind,\n homeLocationId: equipment.homeLocation\n }\n\n /*\n * 등급은 비어 있을 수 있다. 비면 커널이 `kind` 하나로 소속을 정한다 — 예전과 같다.\n * 빈 배열을 내보내지 않는 것은 `put` 이 든다(값이 없으면 칸을 만들지 않는다).\n */\n put(out, 'equipmentClassIds', equipment.equipmentClassIds)\n put(out, 'identity', equipment.identity)\n put(out, 'mtbfMs', equipment.mtbfMs === undefined || equipment.mtbfMs === null ? undefined : Number(equipment.mtbfMs))\n put(out, 'mttrMs', equipment.mttrMs === undefined || equipment.mttrMs === null ? undefined : Number(equipment.mttrMs))\n put(out, 'workCalendar', equipment.workCalendar)\n put(out, 'properties', equipment.properties)\n put(out, 'testSpecificationIds', equipment.testSpecificationIds)\n put(out, 'testResults', equipment.testResults)\n put(out, 'effectiveStart', iso(equipment.effectiveStart))\n put(out, 'effectiveEnd', iso(equipment.effectiveEnd))\n\n return out as unknown as EquipmentEntry\n}\n\n/**\n * 설비 축 전체 — 트윈이 당겨 갈 조각.\n *\n * 설비가 `equipmentClassIds` 로 등급을, `homeLocation` 으로 자리를 가리키므로 등급과 함께 나가야\n * 한다. 한 건씩 밀면 설비가 먼저 도착하고 등급이 나중에 오는 순간이 생긴다.\n */\nexport function equipmentMaster(\n classes: EquipmentClass[],\n equipment: Equipment[]\n): { equipmentClasses: ResourceClassDef[]; equipment: EquipmentEntry[] } {\n return {\n equipmentClasses: classes.map(toResourceClassDef),\n equipment: equipment.map(toEquipmentEntry)\n }\n}\n"]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export declare class EquipmentMaster {
|
|
2
|
-
equipmentClasses: string;
|
|
3
|
-
equipment: string;
|
|
4
|
-
/**
|
|
5
|
-
* 더 있나 — **이 값을 안 보고 쓰면 조용히 잘린 마스터로 트윈을 세우게 된다.**
|
|
6
|
-
*
|
|
7
|
-
* 거짓이 될 때까지 `next` 를 `after` 로 넘겨 이어 받는다.
|
|
8
|
-
*/
|
|
9
|
-
hasMore: boolean;
|
|
10
|
-
/** 이어 받을 자리. 더 없으면 없다. */
|
|
11
|
-
next?: string;
|
|
12
|
-
}
|
|
13
|
-
export declare class EquipmentQuery {
|
|
14
|
-
/** 설비 축 전체를 한 번에 낸다 — 설비가 자기 등급과 자리를 가리키므로 함께 나가야 한다. */
|
|
15
|
-
equipmentMaster(after: string | undefined, limit: number | undefined, context: ResolverContext): Promise<EquipmentMaster>;
|
|
16
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EquipmentQuery = exports.EquipmentMaster = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const type_graphql_1 = require("type-graphql");
|
|
6
|
-
const shell_1 = require("@things-factory/shell");
|
|
7
|
-
const master_page_query_1 = require("../master-page-query");
|
|
8
|
-
const equipment_1 = require("./equipment");
|
|
9
|
-
const equipment_class_1 = require("./equipment-class");
|
|
10
|
-
const equipment_master_1 = require("./equipment-master");
|
|
11
|
-
let EquipmentMaster = class EquipmentMaster {
|
|
12
|
-
};
|
|
13
|
-
exports.EquipmentMaster = EquipmentMaster;
|
|
14
|
-
tslib_1.__decorate([
|
|
15
|
-
(0, type_graphql_1.Field)(type => String, { description: 'ResourceClassDef[] as JSON text' }),
|
|
16
|
-
tslib_1.__metadata("design:type", String)
|
|
17
|
-
], EquipmentMaster.prototype, "equipmentClasses", void 0);
|
|
18
|
-
tslib_1.__decorate([
|
|
19
|
-
(0, type_graphql_1.Field)(type => String, { description: 'ReferenceMaster equipment[] as JSON text' }),
|
|
20
|
-
tslib_1.__metadata("design:type", String)
|
|
21
|
-
], EquipmentMaster.prototype, "equipment", void 0);
|
|
22
|
-
tslib_1.__decorate([
|
|
23
|
-
(0, type_graphql_1.Field)({ description: 'true when more rows remain — keep pulling with next as after' }),
|
|
24
|
-
tslib_1.__metadata("design:type", Boolean)
|
|
25
|
-
], EquipmentMaster.prototype, "hasMore", void 0);
|
|
26
|
-
tslib_1.__decorate([
|
|
27
|
-
(0, type_graphql_1.Field)(type => String, { nullable: true, description: 'cursor for the next page — the last name in this page' }),
|
|
28
|
-
tslib_1.__metadata("design:type", String)
|
|
29
|
-
], EquipmentMaster.prototype, "next", void 0);
|
|
30
|
-
exports.EquipmentMaster = EquipmentMaster = tslib_1.__decorate([
|
|
31
|
-
(0, type_graphql_1.ObjectType)({ description: 'Equipment master as the twin receives it' })
|
|
32
|
-
], EquipmentMaster);
|
|
33
|
-
let EquipmentQuery = class EquipmentQuery {
|
|
34
|
-
/** 설비 축 전체를 한 번에 낸다 — 설비가 자기 등급과 자리를 가리키므로 함께 나가야 한다. */
|
|
35
|
-
async equipmentMaster(after, limit, context) {
|
|
36
|
-
const { domain } = context.state;
|
|
37
|
-
const request = { after, limit };
|
|
38
|
-
/*
|
|
39
|
-
* **등급은 통째로, 구성원만 나눈다.** 구성원이 자기 등급을 이름으로 가리키므로 둘을 함께 나누면
|
|
40
|
-
* 구성원이 먼저 도착하고 등급이 나중에 오는 순간이 생긴다 — 그 순간 받는 쪽은 없는 등급을
|
|
41
|
-
* 가리키는 구성원을 갖는다. 등급은 수십 단위라 매 쪽에 실어도 크지 않다.
|
|
42
|
-
*/
|
|
43
|
-
const [classes, page] = await Promise.all([
|
|
44
|
-
(0, shell_1.getRepository)(equipment_class_1.EquipmentClass).find({ where: { domain: { id: domain.id } }, order: { name: 'ASC' } }),
|
|
45
|
-
(0, master_page_query_1.pullPage)(equipment_1.Equipment, domain, request)
|
|
46
|
-
]);
|
|
47
|
-
/* 통째로 달라고 했는데 한도를 넘으면 **자르지 않고 거절한다**(§`master-page`). */
|
|
48
|
-
(0, master_page_query_1.refuseIfTooLarge)('설비', request, page);
|
|
49
|
-
const equipment = page.rows;
|
|
50
|
-
const master = (0, equipment_master_1.equipmentMaster)(classes, equipment);
|
|
51
|
-
return {
|
|
52
|
-
equipmentClasses: JSON.stringify(master.equipmentClasses),
|
|
53
|
-
equipment: JSON.stringify(master.equipment),
|
|
54
|
-
hasMore: page.hasMore,
|
|
55
|
-
...(page.next ? { next: page.next } : {})
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
exports.EquipmentQuery = EquipmentQuery;
|
|
60
|
-
tslib_1.__decorate([
|
|
61
|
-
(0, type_graphql_1.Query)(returns => EquipmentMaster, { description: 'Equipment master for the twin to pull' }),
|
|
62
|
-
tslib_1.__param(0, (0, type_graphql_1.Arg)('after', { nullable: true, description: 'resume after this name — the previous page\'s next' })),
|
|
63
|
-
tslib_1.__param(1, (0, type_graphql_1.Arg)('limit', type => type_graphql_1.Int, { nullable: true, description: 'rows per page — omit only when the axis is small enough to pull whole' })),
|
|
64
|
-
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
65
|
-
tslib_1.__metadata("design:type", Function),
|
|
66
|
-
tslib_1.__metadata("design:paramtypes", [String, Number, Object]),
|
|
67
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
68
|
-
], EquipmentQuery.prototype, "equipmentMaster", null);
|
|
69
|
-
exports.EquipmentQuery = EquipmentQuery = tslib_1.__decorate([
|
|
70
|
-
(0, type_graphql_1.Resolver)(equipment_1.Equipment)
|
|
71
|
-
], EquipmentQuery);
|
|
72
|
-
//# sourceMappingURL=equipment-query.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"equipment-query.js","sourceRoot":"","sources":["../../../server/service/equipment/equipment-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAgF;AAEhF,iDAAqD;AAErD,4DAAiE;AAEjE,2CAAuC;AACvC,uDAAkD;AAClD,yDAA4E;AAGrE,IAAM,eAAe,GAArB,MAAM,eAAe;CAmB3B,CAAA;AAnBY,0CAAe;AAE1B;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;;yDAClD;AAGxB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;;kDAClE;AAQjB;IADC,IAAA,oBAAK,EAAC,EAAE,WAAW,EAAE,8DAA8D,EAAE,CAAC;;gDACvE;AAIhB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uDAAuD,EAAE,CAAC;;6CACnG;0BAjBF,eAAe;IAD3B,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;GAC3D,eAAe,CAmB3B;AAGM,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,yDAAyD;IAEnD,AAAN,KAAK,CAAC,eAAe,CACkF,KAAyB,EACO,KAAyB,EACvJ,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QAEhC;;;;WAIG;QACH,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACxC,IAAA,qBAAa,EAAC,gCAAc,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpG,IAAA,4BAAQ,EAAY,qBAAS,EAAE,MAAM,EAAE,OAAO,CAAC;SAChD,CAAC,CAAA;QAEF,0DAA0D;QAC1D,IAAA,oCAAgB,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAErC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;QAE3B,MAAM,MAAM,GAAG,IAAA,kCAAoB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAEvD,OAAO;YACL,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACzD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAA;IACH,CAAC;CACF,CAAA;AApCY,wCAAc;AAGnB;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;IAEzF,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC,CAAA;IACnG,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,uEAAuE,EAAE,CAAC,CAAA;IACnI,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;qDA6BP;yBAnCU,cAAc;IAD1B,IAAA,uBAAQ,EAAC,qBAAS,CAAC;GACP,cAAc,CAoC1B","sourcesContent":["import { Arg, Ctx, Field, Int, ObjectType, Query, Resolver } from 'type-graphql'\n\nimport { getRepository } from '@things-factory/shell'\n\nimport { pullPage, refuseIfTooLarge } from '../master-page-query'\n\nimport { Equipment } from './equipment'\nimport { EquipmentClass } from './equipment-class'\nimport { equipmentMaster as buildEquipmentMaster } from './equipment-master'\n\n@ObjectType({ description: 'Equipment master as the twin receives it' })\nexport class EquipmentMaster {\n @Field(type => String, { description: 'ResourceClassDef[] as JSON text' })\n equipmentClasses: string\n\n @Field(type => String, { description: 'ReferenceMaster equipment[] as JSON text' })\n equipment: string\n\n /**\n * 더 있나 — **이 값을 안 보고 쓰면 조용히 잘린 마스터로 트윈을 세우게 된다.**\n *\n * 거짓이 될 때까지 `next` 를 `after` 로 넘겨 이어 받는다.\n */\n @Field({ description: 'true when more rows remain — keep pulling with next as after' })\n hasMore: boolean\n\n /** 이어 받을 자리. 더 없으면 없다. */\n @Field(type => String, { nullable: true, description: 'cursor for the next page — the last name in this page' })\n next?: string\n\n}\n\n@Resolver(Equipment)\nexport class EquipmentQuery {\n /** 설비 축 전체를 한 번에 낸다 — 설비가 자기 등급과 자리를 가리키므로 함께 나가야 한다. */\n @Query(returns => EquipmentMaster, { description: 'Equipment master for the twin to pull' })\n async equipmentMaster(\n @Arg('after', { nullable: true, description: 'resume after this name — the previous page\\'s next' }) after: string | undefined,\n @Arg('limit', type => Int, { nullable: true, description: 'rows per page — omit only when the axis is small enough to pull whole' }) limit: number | undefined,\n @Ctx() context: ResolverContext\n ): Promise<EquipmentMaster> {\n const { domain } = context.state\n\n const request = { after, limit }\n\n /*\n * **등급은 통째로, 구성원만 나눈다.** 구성원이 자기 등급을 이름으로 가리키므로 둘을 함께 나누면\n * 구성원이 먼저 도착하고 등급이 나중에 오는 순간이 생긴다 — 그 순간 받는 쪽은 없는 등급을\n * 가리키는 구성원을 갖는다. 등급은 수십 단위라 매 쪽에 실어도 크지 않다.\n */\n const [classes, page] = await Promise.all([\n getRepository(EquipmentClass).find({ where: { domain: { id: domain.id } }, order: { name: 'ASC' } }),\n pullPage<Equipment>(Equipment, domain, request)\n ])\n\n /* 통째로 달라고 했는데 한도를 넘으면 **자르지 않고 거절한다**(§`master-page`). */\n refuseIfTooLarge('설비', request, page)\n\n const equipment = page.rows\n\n const master = buildEquipmentMaster(classes, equipment)\n\n return {\n equipmentClasses: JSON.stringify(master.equipmentClasses),\n equipment: JSON.stringify(master.equipment),\n hasMore: page.hasMore,\n ...(page.next ? { next: page.next } : {})\n }\n }\n}\n"]}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { Domain } from '@things-factory/shell';
|
|
2
|
-
import { User } from '@things-factory/auth-base';
|
|
3
|
-
/**
|
|
4
|
-
* 설비 — **ISA-95 `Equipment`**.
|
|
5
|
-
*
|
|
6
|
-
* 설비는 작업을 수행하는 자원이다. 배정을 받고, 가동률로 평가받고, 능력으로 찾힌다. **계측기는 설비가
|
|
7
|
-
* 아니다** — 저울과 센서는 그 어느 것도 하지 않고, 그것은 관측의 원천이다. 계측기를 설비로 세우면
|
|
8
|
-
* 가동률 화면이 저울을 기계로 세고 「설비가 논다」가 나온다.
|
|
9
|
-
*/
|
|
10
|
-
export declare class Equipment {
|
|
11
|
-
readonly id: string;
|
|
12
|
-
domain?: Domain;
|
|
13
|
-
domainId?: string;
|
|
14
|
-
/** 표준 `EquipmentID` — 트윈으로 나갈 때 `equipment[].id` 가 된다. */
|
|
15
|
-
name: string;
|
|
16
|
-
description?: string;
|
|
17
|
-
/**
|
|
18
|
-
* 종류 — 계약의 `kind` 자리다.
|
|
19
|
-
*
|
|
20
|
-
* **등급이기도 하고 종류이기도 한 칸이다.** 등급을 담을 칸이 따로 없던 동안 이 한 낱말이 둘을
|
|
21
|
-
* 다 했고, 지금도 하중을 받고 있다 — 설비를 이름으로 부르는 공정들이 이 값을 가리킨다. 그래서
|
|
22
|
-
* 아래에 `equipmentClassIds` 를 열면서도 이 칸을 빼지 않았다.
|
|
23
|
-
*
|
|
24
|
-
* 커널은 소속을 `equipmentClassIds ∪ {kind}` 로 본다(계약의 `equipmentClassMembership`).
|
|
25
|
-
*/
|
|
26
|
-
kind: string;
|
|
27
|
-
/**
|
|
28
|
-
* 속한 등급들 — 표준 `EquipmentClassID`(복수).
|
|
29
|
-
*
|
|
30
|
-
* ── 왜 복수인가 ──────────────────────────────────────────────────────────
|
|
31
|
-
* 인원과 자산이 이미 복수다(`personnelClassIds` · `assetClassIds`). 설비만 없어서 판정이
|
|
32
|
-
* `kind` 하나를 소속으로 썼고, 그래서 표준 요구가 **종류와 이름이 같을 때만** 채워졌다.
|
|
33
|
-
*
|
|
34
|
-
* ```
|
|
35
|
-
* equipmentSpecification: { equipmentClass: 'welding-equipment', quantity: 2 }
|
|
36
|
-
* → kind 가 'welding-equipment' 인 설비만 세어졌다
|
|
37
|
-
* → 6축 로봇과 수동 용접기를 「용접설비 2대」로 함께 세는 것이 불가능했다
|
|
38
|
-
* ```
|
|
39
|
-
*
|
|
40
|
-
* 요구가 조용히 안 채워지고 작업이 서 있었다. 오류는 나지 않았다.
|
|
41
|
-
*
|
|
42
|
-
* 비워 두면 예전과 똑같이 돈다 — `kind` 만으로 소속이 정해진다.
|
|
43
|
-
*/
|
|
44
|
-
equipmentClassIds?: string[];
|
|
45
|
-
/** 이 설비가 있는 자리 — 표준 `OperationalLocation`. */
|
|
46
|
-
homeLocation: string;
|
|
47
|
-
/** GS1 GIAI. 없으면 비워 둔다 — 회사 프리픽스를 지어내지 않는다. */
|
|
48
|
-
identity?: string;
|
|
49
|
-
/** 평균 고장 간격(밀리초) — 없으면 고장이 없는 설비로 예측된다. */
|
|
50
|
-
mtbfMs?: number;
|
|
51
|
-
/** 평균 수리 시간(밀리초). */
|
|
52
|
-
mttrMs?: number;
|
|
53
|
-
/** 근무 캘린더 — 표준 `WorkCalendar`. 교대 이름과 구간. */
|
|
54
|
-
workCalendar?: Record<string, unknown>[];
|
|
55
|
-
/** 개체 속성 — 표준 `EquipmentProperty`. 속도처럼 계산에 들어가는 속성이 여기 온다. */
|
|
56
|
-
properties?: Record<string, unknown>[];
|
|
57
|
-
/** 이 설비에 요구되는 `TestSpecification` 참조들 — 검정·교정이 이 모양에 맞는다. */
|
|
58
|
-
testSpecificationIds?: string[];
|
|
59
|
-
/** `TestResult` — 만료되었거나 떨어졌으면 그 설비에 작업이 가지 않는다. */
|
|
60
|
-
testResults?: Record<string, unknown>[];
|
|
61
|
-
/** 언제부터 이 설비가 현장에 있나 — 도입 예정 설비를 미리 등록할 수 있다. */
|
|
62
|
-
effectiveStart?: Date;
|
|
63
|
-
/** 언제까지 — 폐기한 설비가 영원히 배정 대상으로 남지 않게 한다. */
|
|
64
|
-
effectiveEnd?: Date;
|
|
65
|
-
createdAt?: Date;
|
|
66
|
-
updatedAt?: Date;
|
|
67
|
-
creator?: User;
|
|
68
|
-
creatorId?: string;
|
|
69
|
-
updater?: User;
|
|
70
|
-
updaterId?: string;
|
|
71
|
-
}
|