@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,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Equipment = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const typeorm_1 = require("typeorm");
|
|
6
|
-
const type_graphql_1 = require("type-graphql");
|
|
7
|
-
const shell_1 = require("@things-factory/shell");
|
|
8
|
-
const auth_base_1 = require("@things-factory/auth-base");
|
|
9
|
-
/**
|
|
10
|
-
* 설비 — **ISA-95 `Equipment`**.
|
|
11
|
-
*
|
|
12
|
-
* 설비는 작업을 수행하는 자원이다. 배정을 받고, 가동률로 평가받고, 능력으로 찾힌다. **계측기는 설비가
|
|
13
|
-
* 아니다** — 저울과 센서는 그 어느 것도 하지 않고, 그것은 관측의 원천이다. 계측기를 설비로 세우면
|
|
14
|
-
* 가동률 화면이 저울을 기계로 세고 「설비가 논다」가 나온다.
|
|
15
|
-
*/
|
|
16
|
-
let Equipment = class Equipment {
|
|
17
|
-
};
|
|
18
|
-
exports.Equipment = Equipment;
|
|
19
|
-
tslib_1.__decorate([
|
|
20
|
-
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
21
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.ID),
|
|
22
|
-
tslib_1.__metadata("design:type", String)
|
|
23
|
-
], Equipment.prototype, "id", void 0);
|
|
24
|
-
tslib_1.__decorate([
|
|
25
|
-
(0, typeorm_1.ManyToOne)(type => shell_1.Domain),
|
|
26
|
-
(0, type_graphql_1.Field)(type => shell_1.Domain),
|
|
27
|
-
tslib_1.__metadata("design:type", shell_1.Domain)
|
|
28
|
-
], Equipment.prototype, "domain", void 0);
|
|
29
|
-
tslib_1.__decorate([
|
|
30
|
-
(0, typeorm_1.RelationId)((equipment) => equipment.domain),
|
|
31
|
-
tslib_1.__metadata("design:type", String)
|
|
32
|
-
], Equipment.prototype, "domainId", void 0);
|
|
33
|
-
tslib_1.__decorate([
|
|
34
|
-
(0, typeorm_1.Column)(),
|
|
35
|
-
(0, type_graphql_1.Field)(),
|
|
36
|
-
tslib_1.__metadata("design:type", String)
|
|
37
|
-
], Equipment.prototype, "name", void 0);
|
|
38
|
-
tslib_1.__decorate([
|
|
39
|
-
(0, typeorm_1.Column)({ nullable: true }),
|
|
40
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
|
41
|
-
tslib_1.__metadata("design:type", String)
|
|
42
|
-
], Equipment.prototype, "description", void 0);
|
|
43
|
-
tslib_1.__decorate([
|
|
44
|
-
(0, typeorm_1.Column)(),
|
|
45
|
-
(0, type_graphql_1.Field)(),
|
|
46
|
-
tslib_1.__metadata("design:type", String)
|
|
47
|
-
], Equipment.prototype, "kind", void 0);
|
|
48
|
-
tslib_1.__decorate([
|
|
49
|
-
(0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
|
|
50
|
-
(0, type_graphql_1.Field)(type => [String], { nullable: true }),
|
|
51
|
-
tslib_1.__metadata("design:type", Array)
|
|
52
|
-
], Equipment.prototype, "equipmentClassIds", void 0);
|
|
53
|
-
tslib_1.__decorate([
|
|
54
|
-
(0, typeorm_1.Column)(),
|
|
55
|
-
(0, type_graphql_1.Field)(),
|
|
56
|
-
tslib_1.__metadata("design:type", String)
|
|
57
|
-
], Equipment.prototype, "homeLocation", void 0);
|
|
58
|
-
tslib_1.__decorate([
|
|
59
|
-
(0, typeorm_1.Column)({ nullable: true }),
|
|
60
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
|
61
|
-
tslib_1.__metadata("design:type", String)
|
|
62
|
-
], Equipment.prototype, "identity", void 0);
|
|
63
|
-
tslib_1.__decorate([
|
|
64
|
-
(0, typeorm_1.Column)({ type: 'bigint', nullable: true }),
|
|
65
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
|
|
66
|
-
tslib_1.__metadata("design:type", Number)
|
|
67
|
-
], Equipment.prototype, "mtbfMs", void 0);
|
|
68
|
-
tslib_1.__decorate([
|
|
69
|
-
(0, typeorm_1.Column)({ type: 'bigint', nullable: true }),
|
|
70
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
|
|
71
|
-
tslib_1.__metadata("design:type", Number)
|
|
72
|
-
], Equipment.prototype, "mttrMs", void 0);
|
|
73
|
-
tslib_1.__decorate([
|
|
74
|
-
(0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
|
|
75
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'WorkCalendarEntry[]' }),
|
|
76
|
-
tslib_1.__metadata("design:type", Array)
|
|
77
|
-
], Equipment.prototype, "workCalendar", void 0);
|
|
78
|
-
tslib_1.__decorate([
|
|
79
|
-
(0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
|
|
80
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'ResourceProperty[]' }),
|
|
81
|
-
tslib_1.__metadata("design:type", Array)
|
|
82
|
-
], Equipment.prototype, "properties", void 0);
|
|
83
|
-
tslib_1.__decorate([
|
|
84
|
-
(0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
|
|
85
|
-
(0, type_graphql_1.Field)(type => [String], { nullable: true }),
|
|
86
|
-
tslib_1.__metadata("design:type", Array)
|
|
87
|
-
], Equipment.prototype, "testSpecificationIds", void 0);
|
|
88
|
-
tslib_1.__decorate([
|
|
89
|
-
(0, typeorm_1.Column)({ type: 'simple-json', nullable: true }),
|
|
90
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'TestResult[]' }),
|
|
91
|
-
tslib_1.__metadata("design:type", Array)
|
|
92
|
-
], Equipment.prototype, "testResults", void 0);
|
|
93
|
-
tslib_1.__decorate([
|
|
94
|
-
(0, typeorm_1.Column)({ nullable: true }),
|
|
95
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
|
96
|
-
tslib_1.__metadata("design:type", Date
|
|
97
|
-
/** 언제까지 — 폐기한 설비가 영원히 배정 대상으로 남지 않게 한다. */
|
|
98
|
-
)
|
|
99
|
-
], Equipment.prototype, "effectiveStart", void 0);
|
|
100
|
-
tslib_1.__decorate([
|
|
101
|
-
(0, typeorm_1.Column)({ nullable: true }),
|
|
102
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
|
103
|
-
tslib_1.__metadata("design:type", Date)
|
|
104
|
-
], Equipment.prototype, "effectiveEnd", void 0);
|
|
105
|
-
tslib_1.__decorate([
|
|
106
|
-
(0, typeorm_1.CreateDateColumn)(),
|
|
107
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
|
108
|
-
tslib_1.__metadata("design:type", Date)
|
|
109
|
-
], Equipment.prototype, "createdAt", void 0);
|
|
110
|
-
tslib_1.__decorate([
|
|
111
|
-
(0, typeorm_1.UpdateDateColumn)(),
|
|
112
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
|
113
|
-
tslib_1.__metadata("design:type", Date)
|
|
114
|
-
], Equipment.prototype, "updatedAt", void 0);
|
|
115
|
-
tslib_1.__decorate([
|
|
116
|
-
(0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
|
|
117
|
-
(0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
|
|
118
|
-
tslib_1.__metadata("design:type", auth_base_1.User)
|
|
119
|
-
], Equipment.prototype, "creator", void 0);
|
|
120
|
-
tslib_1.__decorate([
|
|
121
|
-
(0, typeorm_1.RelationId)((equipment) => equipment.creator),
|
|
122
|
-
tslib_1.__metadata("design:type", String)
|
|
123
|
-
], Equipment.prototype, "creatorId", void 0);
|
|
124
|
-
tslib_1.__decorate([
|
|
125
|
-
(0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
|
|
126
|
-
(0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true }),
|
|
127
|
-
tslib_1.__metadata("design:type", auth_base_1.User)
|
|
128
|
-
], Equipment.prototype, "updater", void 0);
|
|
129
|
-
tslib_1.__decorate([
|
|
130
|
-
(0, typeorm_1.RelationId)((equipment) => equipment.updater),
|
|
131
|
-
tslib_1.__metadata("design:type", String)
|
|
132
|
-
], Equipment.prototype, "updaterId", void 0);
|
|
133
|
-
exports.Equipment = Equipment = tslib_1.__decorate([
|
|
134
|
-
(0, typeorm_1.Entity)({ name: 'ops_equipment' }),
|
|
135
|
-
(0, typeorm_1.Index)('ix_ops_equipment_0', (equipment) => [equipment.domain, equipment.name], { unique: true }),
|
|
136
|
-
(0, type_graphql_1.ObjectType)({ description: 'ISA-95 Equipment — a resource that performs work' })
|
|
137
|
-
], Equipment);
|
|
138
|
-
//# sourceMappingURL=equipment.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"equipment.js","sourceRoot":"","sources":["../../../server/service/equipment/equipment.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Column,\n CreateDateColumn,\n Entity,\n Index,\n ManyToOne,\n PrimaryGeneratedColumn,\n RelationId,\n UpdateDateColumn\n} from 'typeorm'\nimport { Field, ID, Int, ObjectType } from 'type-graphql'\n\nimport { Domain, ScalarObject } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n/**\n * 설비 — **ISA-95 `Equipment`**.\n *\n * 설비는 작업을 수행하는 자원이다. 배정을 받고, 가동률로 평가받고, 능력으로 찾힌다. **계측기는 설비가\n * 아니다** — 저울과 센서는 그 어느 것도 하지 않고, 그것은 관측의 원천이다. 계측기를 설비로 세우면\n * 가동률 화면이 저울을 기계로 세고 「설비가 논다」가 나온다.\n */\n@Entity({ name: 'ops_equipment' })\n@Index('ix_ops_equipment_0', (equipment: Equipment) => [equipment.domain, equipment.name], { unique: true })\n@ObjectType({ description: 'ISA-95 Equipment — a resource that performs work' })\nexport class Equipment {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain)\n domain?: Domain\n\n @RelationId((equipment: Equipment) => equipment.domain)\n domainId?: string\n\n /** 표준 `EquipmentID` — 트윈으로 나갈 때 `equipment[].id` 가 된다. */\n @Column()\n @Field()\n name: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n /**\n * 종류 — 계약의 `kind` 자리다.\n *\n * **등급이기도 하고 종류이기도 한 칸이다.** 등급을 담을 칸이 따로 없던 동안 이 한 낱말이 둘을\n * 다 했고, 지금도 하중을 받고 있다 — 설비를 이름으로 부르는 공정들이 이 값을 가리킨다. 그래서\n * 아래에 `equipmentClassIds` 를 열면서도 이 칸을 빼지 않았다.\n *\n * 커널은 소속을 `equipmentClassIds ∪ {kind}` 로 본다(계약의 `equipmentClassMembership`).\n */\n @Column()\n @Field()\n kind: string\n\n /**\n * 속한 등급들 — 표준 `EquipmentClassID`(복수).\n *\n * ── 왜 복수인가 ──────────────────────────────────────────────────────────\n * 인원과 자산이 이미 복수다(`personnelClassIds` · `assetClassIds`). 설비만 없어서 판정이\n * `kind` 하나를 소속으로 썼고, 그래서 표준 요구가 **종류와 이름이 같을 때만** 채워졌다.\n *\n * ```\n * equipmentSpecification: { equipmentClass: 'welding-equipment', quantity: 2 }\n * → kind 가 'welding-equipment' 인 설비만 세어졌다\n * → 6축 로봇과 수동 용접기를 「용접설비 2대」로 함께 세는 것이 불가능했다\n * ```\n *\n * 요구가 조용히 안 채워지고 작업이 서 있었다. 오류는 나지 않았다.\n *\n * 비워 두면 예전과 똑같이 돈다 — `kind` 만으로 소속이 정해진다.\n */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => [String], { nullable: true })\n equipmentClassIds?: string[]\n\n /** 이 설비가 있는 자리 — 표준 `OperationalLocation`. */\n @Column()\n @Field()\n homeLocation: string\n\n /** GS1 GIAI. 없으면 비워 둔다 — 회사 프리픽스를 지어내지 않는다. */\n @Column({ nullable: true })\n @Field({ nullable: true })\n identity?: string\n\n /** 평균 고장 간격(밀리초) — 없으면 고장이 없는 설비로 예측된다. */\n @Column({ type: 'bigint', nullable: true })\n @Field(type => Int, { nullable: true })\n mtbfMs?: number\n\n /** 평균 수리 시간(밀리초). */\n @Column({ type: 'bigint', nullable: true })\n @Field(type => Int, { nullable: true })\n mttrMs?: number\n\n /** 근무 캘린더 — 표준 `WorkCalendar`. 교대 이름과 구간. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => ScalarObject, { nullable: true, description: 'WorkCalendarEntry[]' })\n workCalendar?: Record<string, unknown>[]\n\n /** 개체 속성 — 표준 `EquipmentProperty`. 속도처럼 계산에 들어가는 속성이 여기 온다. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => ScalarObject, { nullable: true, description: 'ResourceProperty[]' })\n properties?: Record<string, unknown>[]\n\n /** 이 설비에 요구되는 `TestSpecification` 참조들 — 검정·교정이 이 모양에 맞는다. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => [String], { nullable: true })\n testSpecificationIds?: string[]\n\n /** `TestResult` — 만료되었거나 떨어졌으면 그 설비에 작업이 가지 않는다. */\n @Column({ type: 'simple-json', nullable: true })\n @Field(type => ScalarObject, { nullable: true, description: 'TestResult[]' })\n testResults?: Record<string, unknown>[]\n\n /** 언제부터 이 설비가 현장에 있나 — 도입 예정 설비를 미리 등록할 수 있다. */\n @Column({ nullable: true })\n @Field({ nullable: true })\n effectiveStart?: Date\n\n /** 언제까지 — 폐기한 설비가 영원히 배정 대상으로 남지 않게 한다. */\n @Column({ nullable: true })\n @Field({ nullable: true })\n effectiveEnd?: Date\n\n @CreateDateColumn()\n @Field({ nullable: true })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((equipment: Equipment) => equipment.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((equipment: Equipment) => equipment.updater)\n updaterId?: string\n}\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Equipment } from './equipment';
|
|
2
|
-
import { EquipmentClass } from './equipment-class';
|
|
3
|
-
import { EquipmentQuery } from './equipment-query';
|
|
4
|
-
import { StopReason } from './stop-reason';
|
|
5
|
-
import { StopReasonQuery } from './stop-reason-query';
|
|
6
|
-
import { EquipmentClassResolver, EquipmentResolver, StopReasonResolver } from './equipment-master-resolver';
|
|
7
|
-
export declare const entities: (typeof Equipment | typeof EquipmentClass | typeof StopReason)[];
|
|
8
|
-
export declare const resolvers: (typeof EquipmentClassResolver | typeof EquipmentResolver | typeof StopReasonResolver | typeof EquipmentQuery | typeof StopReasonQuery)[];
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolvers = exports.entities = void 0;
|
|
4
|
-
const equipment_1 = require("./equipment");
|
|
5
|
-
const equipment_class_1 = require("./equipment-class");
|
|
6
|
-
const equipment_query_1 = require("./equipment-query");
|
|
7
|
-
const stop_reason_1 = require("./stop-reason");
|
|
8
|
-
const stop_reason_query_1 = require("./stop-reason-query");
|
|
9
|
-
const equipment_master_resolver_1 = require("./equipment-master-resolver");
|
|
10
|
-
exports.entities = [equipment_class_1.EquipmentClass, equipment_1.Equipment, stop_reason_1.StopReason];
|
|
11
|
-
exports.resolvers = [equipment_query_1.EquipmentQuery, stop_reason_query_1.StopReasonQuery, equipment_master_resolver_1.EquipmentClassResolver, equipment_master_resolver_1.EquipmentResolver, equipment_master_resolver_1.StopReasonResolver];
|
|
12
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/equipment/index.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AACvC,uDAAkD;AAClD,uDAAkD;AAClD,+CAA0C;AAC1C,2DAAqD;AACrD,2EAA2G;AAE9F,QAAA,QAAQ,GAAG,CAAC,gCAAc,EAAE,qBAAS,EAAE,wBAAU,CAAC,CAAA;AAClD,QAAA,SAAS,GAAG,CAAC,gCAAc,EAAE,mCAAe,EAAE,kDAAsB,EAAE,6CAAiB,EAAE,8CAAkB,CAAC,CAAA","sourcesContent":["import { Equipment } from './equipment'\nimport { EquipmentClass } from './equipment-class'\nimport { EquipmentQuery } from './equipment-query'\nimport { StopReason } from './stop-reason'\nimport { StopReasonQuery } from './stop-reason-query'\nimport { EquipmentClassResolver, EquipmentResolver, StopReasonResolver } from './equipment-master-resolver'\n\nexport const entities = [EquipmentClass, Equipment, StopReason]\nexport const resolvers = [EquipmentQuery, StopReasonQuery, EquipmentClassResolver, EquipmentResolver, StopReasonResolver]\n"]}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 상태 구간을 받아도 되나 — **순수 판단.**
|
|
3
|
-
*
|
|
4
|
-
* ── 왜 규칙이 필요한가 ──────────────────────────────────────────────────────
|
|
5
|
-
* 구간은 사람이 되돌아가 적는다. 그래서 겹치고, 거꾸로 되고, 미래로 간다. 그대로 받으면 가동률의
|
|
6
|
-
* 분자가 분모보다 커지는 날이 온다. 그때는 이미 잘못된 구간이 수백 개 쌓여 있다.
|
|
7
|
-
*
|
|
8
|
-
* ── 왜 사유와 상태를 맞춰 보나 ──────────────────────────────────────────────
|
|
9
|
-
* ISO 22400 에서 가동률을 깎느냐 마느냐는 **상태**가 정한다. 「점심시간」을 `down` 으로 적으면 가동률이
|
|
10
|
-
* 오류 보고 없이 낮아지고, 「고장」을 `planned-stop` 으로 적으면 오류 보고 없이 높아진다. 둘 다 조용한
|
|
11
|
-
* 거짓이라 나중에 찾을 방법이 없다.
|
|
12
|
-
*/
|
|
13
|
-
/** 계약의 `EQUIPMENT_STATUS` 와 같은 어휘. 여기서 새로 만들지 않는다. */
|
|
14
|
-
export declare const EQUIPMENT_PERIOD_STATUS: readonly ["idle", "busy", "down", "setup", "planned-stop"];
|
|
15
|
-
export type EquipmentPeriodStatus = (typeof EQUIPMENT_PERIOD_STATUS)[number];
|
|
16
|
-
/**
|
|
17
|
-
* 정지 사유가 붙을 수 있는 상태 — **`busy` 는 빠진다.**
|
|
18
|
-
*
|
|
19
|
-
* 돌고 있는 것에는 사유가 없다(§`StopReason.status` 주석). 그래서 구간이 가질 수 있는 상태는 다섯인데
|
|
20
|
-
* 사유가 가질 수 있는 상태는 넷이다.
|
|
21
|
-
*/
|
|
22
|
-
export declare const STOP_REASON_STATUS: ("idle" | "down" | "setup" | "planned-stop")[];
|
|
23
|
-
/**
|
|
24
|
-
* 이 사유를 마스터에 적을 수 있나 — **적을 수 없으면 왜인지, 그리고 무엇이 되는지.**
|
|
25
|
-
*
|
|
26
|
-
* ── 왜 마스터에서 막나 (2026-09-03) ────────────────────────────────────────
|
|
27
|
-
* 사유의 `status` 가 자유 문자열이라 `broken` 이 그대로 저장됐다. 그러면 **그 사유를 쓴 모든 구간이**
|
|
28
|
-
* 「사유와 상태가 어긋난다」로 걸린다(§`reasonIssues`). 잘못은 마스터 한 줄에서 났는데 불은 구간
|
|
29
|
-
* 수백 개에서 켜지고, 그 문장은 마스터를 가리키지 않는다.
|
|
30
|
-
*
|
|
31
|
-
* 그래서 틀린 자리에서 막는다. 구간 쪽 검사는 그대로 둔다 — 마스터를 채우기 전에 쓰인 지난 줄과,
|
|
32
|
-
* 사유를 나중에 고친 경우가 거기서 걸린다.
|
|
33
|
-
*/
|
|
34
|
-
export declare function stopReasonStatusGap(status: unknown): string | undefined;
|
|
35
|
-
export type PeriodProblem =
|
|
36
|
-
/** 끝이 시작보다 앞이거나 같다 — 길이가 없는 구간은 셀 것이 없다. */
|
|
37
|
-
'not-a-period'
|
|
38
|
-
/** 아직 오지 않은 시각이다. */
|
|
39
|
-
| 'in-the-future'
|
|
40
|
-
/** 같은 설비의 다른 구간과 겹친다 — 한 설비가 같은 시각에 두 상태일 수 없다. */
|
|
41
|
-
| 'overlaps'
|
|
42
|
-
/** 계약이 모르는 상태다. */
|
|
43
|
-
| 'unknown-status'
|
|
44
|
-
/** 사유가 사유 마스터에 없다. */
|
|
45
|
-
| 'unknown-reason'
|
|
46
|
-
/** 사유가 이 상태의 사유가 아니다 — 가동률이 오류 보고 없이 틀어진다. */
|
|
47
|
-
| 'reason-status-mismatch'
|
|
48
|
-
/** 이 사유는 상세를 함께 적어야 한다. */
|
|
49
|
-
| 'detail-required';
|
|
50
|
-
export interface PeriodIssue {
|
|
51
|
-
problem: PeriodProblem;
|
|
52
|
-
/** 겹치는 것이면 어느 구간과 겹치나(시작 시각, ISO). */
|
|
53
|
-
conflictsWith?: string;
|
|
54
|
-
/** 사유 문제이면 어느 사유인가. */
|
|
55
|
-
reasonCode?: string;
|
|
56
|
-
/** 사유가 속한 상태와 적힌 상태. */
|
|
57
|
-
reasonStatus?: string;
|
|
58
|
-
status?: string;
|
|
59
|
-
}
|
|
60
|
-
export interface JudgeablePeriod {
|
|
61
|
-
status: string;
|
|
62
|
-
startTime: Date | string;
|
|
63
|
-
endTime: Date | string;
|
|
64
|
-
reasonCode?: string;
|
|
65
|
-
reasonDetail?: string;
|
|
66
|
-
}
|
|
67
|
-
/** 사유 마스터에서 필요한 것만. */
|
|
68
|
-
export interface StopReasonFact {
|
|
69
|
-
name: string;
|
|
70
|
-
status: string;
|
|
71
|
-
detailRequired?: boolean;
|
|
72
|
-
}
|
|
73
|
-
/** 이미 적혀 있는 구간 — 겹침을 볼 때만 쓴다. */
|
|
74
|
-
export interface ExistingPeriod {
|
|
75
|
-
startTime: Date | string;
|
|
76
|
-
endTime: Date | string;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* 이 구간을 받아도 되나.
|
|
80
|
-
*
|
|
81
|
-
* `now` 를 부르는 쪽이 준다 — 이 함수가 시계를 읽으면 테스트가 시각에 흔들린다.
|
|
82
|
-
*/
|
|
83
|
-
export declare function judgePeriod(period: JudgeablePeriod, context: {
|
|
84
|
-
now: Date | string;
|
|
85
|
-
/** 같은 설비의 이미 적힌 구간들. 부르는 쪽이 시각으로 좁혀서 준다. */
|
|
86
|
-
existing?: readonly ExistingPeriod[];
|
|
87
|
-
/**
|
|
88
|
-
* 사유 마스터에서 읽은 것.
|
|
89
|
-
*
|
|
90
|
-
* **`undefined` 와 빈 배열의 뜻이 다르다.** `undefined` 는 「마스터를 아직 채우지 않았다」이고
|
|
91
|
-
* 확인하지 않는다. 빈 배열은 「채웠는데 이 사유가 없다」이고 막는다. 둘을 섞으면 오타로 적은
|
|
92
|
-
* 사유가 오류 보고 없이 통과한다.
|
|
93
|
-
*/
|
|
94
|
-
reasons?: readonly StopReasonFact[];
|
|
95
|
-
}): PeriodIssue[];
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* 상태 구간을 받아도 되나 — **순수 판단.**
|
|
4
|
-
*
|
|
5
|
-
* ── 왜 규칙이 필요한가 ──────────────────────────────────────────────────────
|
|
6
|
-
* 구간은 사람이 되돌아가 적는다. 그래서 겹치고, 거꾸로 되고, 미래로 간다. 그대로 받으면 가동률의
|
|
7
|
-
* 분자가 분모보다 커지는 날이 온다. 그때는 이미 잘못된 구간이 수백 개 쌓여 있다.
|
|
8
|
-
*
|
|
9
|
-
* ── 왜 사유와 상태를 맞춰 보나 ──────────────────────────────────────────────
|
|
10
|
-
* ISO 22400 에서 가동률을 깎느냐 마느냐는 **상태**가 정한다. 「점심시간」을 `down` 으로 적으면 가동률이
|
|
11
|
-
* 오류 보고 없이 낮아지고, 「고장」을 `planned-stop` 으로 적으면 오류 보고 없이 높아진다. 둘 다 조용한
|
|
12
|
-
* 거짓이라 나중에 찾을 방법이 없다.
|
|
13
|
-
*/
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.STOP_REASON_STATUS = exports.EQUIPMENT_PERIOD_STATUS = void 0;
|
|
16
|
-
exports.stopReasonStatusGap = stopReasonStatusGap;
|
|
17
|
-
exports.judgePeriod = judgePeriod;
|
|
18
|
-
/** 계약의 `EQUIPMENT_STATUS` 와 같은 어휘. 여기서 새로 만들지 않는다. */
|
|
19
|
-
exports.EQUIPMENT_PERIOD_STATUS = ['idle', 'busy', 'down', 'setup', 'planned-stop'];
|
|
20
|
-
/**
|
|
21
|
-
* 정지 사유가 붙을 수 있는 상태 — **`busy` 는 빠진다.**
|
|
22
|
-
*
|
|
23
|
-
* 돌고 있는 것에는 사유가 없다(§`StopReason.status` 주석). 그래서 구간이 가질 수 있는 상태는 다섯인데
|
|
24
|
-
* 사유가 가질 수 있는 상태는 넷이다.
|
|
25
|
-
*/
|
|
26
|
-
exports.STOP_REASON_STATUS = exports.EQUIPMENT_PERIOD_STATUS.filter(status => status !== 'busy');
|
|
27
|
-
/**
|
|
28
|
-
* 이 사유를 마스터에 적을 수 있나 — **적을 수 없으면 왜인지, 그리고 무엇이 되는지.**
|
|
29
|
-
*
|
|
30
|
-
* ── 왜 마스터에서 막나 (2026-09-03) ────────────────────────────────────────
|
|
31
|
-
* 사유의 `status` 가 자유 문자열이라 `broken` 이 그대로 저장됐다. 그러면 **그 사유를 쓴 모든 구간이**
|
|
32
|
-
* 「사유와 상태가 어긋난다」로 걸린다(§`reasonIssues`). 잘못은 마스터 한 줄에서 났는데 불은 구간
|
|
33
|
-
* 수백 개에서 켜지고, 그 문장은 마스터를 가리키지 않는다.
|
|
34
|
-
*
|
|
35
|
-
* 그래서 틀린 자리에서 막는다. 구간 쪽 검사는 그대로 둔다 — 마스터를 채우기 전에 쓰인 지난 줄과,
|
|
36
|
-
* 사유를 나중에 고친 경우가 거기서 걸린다.
|
|
37
|
-
*/
|
|
38
|
-
function stopReasonStatusGap(status) {
|
|
39
|
-
const said = typeof status === 'string' ? status.trim() : '';
|
|
40
|
-
if (!said) {
|
|
41
|
-
return ('정지 사유에는 어느 상태에 쓰이는지가 있어야 합니다 — 가동률을 깎느냐 마느냐를 그 값이 정합니다 ' +
|
|
42
|
-
`(쓸 수 있는 것: ${exports.STOP_REASON_STATUS.join(' · ')})`);
|
|
43
|
-
}
|
|
44
|
-
if (said === 'busy') {
|
|
45
|
-
return '돌고 있는 상태에는 정지 사유가 없습니다 — busy 는 정지가 아닙니다';
|
|
46
|
-
}
|
|
47
|
-
if (!exports.STOP_REASON_STATUS.includes(said)) {
|
|
48
|
-
return (`모르는 상태입니다: "${said}" — 이 값으로 저장하면 그 사유를 쓴 모든 구간이 어긋남으로 걸립니다 ` +
|
|
49
|
-
`(쓸 수 있는 것: ${exports.STOP_REASON_STATUS.join(' · ')})`);
|
|
50
|
-
}
|
|
51
|
-
return undefined;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* 이 구간을 받아도 되나.
|
|
55
|
-
*
|
|
56
|
-
* `now` 를 부르는 쪽이 준다 — 이 함수가 시계를 읽으면 테스트가 시각에 흔들린다.
|
|
57
|
-
*/
|
|
58
|
-
function judgePeriod(period, context) {
|
|
59
|
-
const issues = [];
|
|
60
|
-
const start = ms(period.startTime);
|
|
61
|
-
const end = ms(period.endTime);
|
|
62
|
-
if (!(end > start)) {
|
|
63
|
-
issues.push({ problem: 'not-a-period' });
|
|
64
|
-
}
|
|
65
|
-
if (end > ms(context.now)) {
|
|
66
|
-
issues.push({ problem: 'in-the-future' });
|
|
67
|
-
}
|
|
68
|
-
if (!exports.EQUIPMENT_PERIOD_STATUS.includes(period.status)) {
|
|
69
|
-
issues.push({ problem: 'unknown-status', status: period.status });
|
|
70
|
-
}
|
|
71
|
-
for (const other of context.existing ?? []) {
|
|
72
|
-
const otherStart = ms(other.startTime);
|
|
73
|
-
const otherEnd = ms(other.endTime);
|
|
74
|
-
/* 끝과 시작이 맞닿는 것은 겹침이 아니다 — 한 구간이 끝나는 순간 다음이 시작한다. */
|
|
75
|
-
if (start < otherEnd && otherStart < end) {
|
|
76
|
-
issues.push({ problem: 'overlaps', conflictsWith: isoOf(other.startTime) });
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
issues.push(...reasonIssues(period, context.reasons));
|
|
80
|
-
return issues;
|
|
81
|
-
}
|
|
82
|
-
function reasonIssues(period, reasons) {
|
|
83
|
-
/*
|
|
84
|
-
* 사유를 적지 않은 것은 흠이 아니다. 정지는 일단 적고 사유는 나중에 정하는 것이 현장의 순서이고,
|
|
85
|
-
* 사유를 요구하면 그 순서를 막게 된다.
|
|
86
|
-
*/
|
|
87
|
-
if (!period.reasonCode) {
|
|
88
|
-
return [];
|
|
89
|
-
}
|
|
90
|
-
/*
|
|
91
|
-
* 마스터를 아직 채우지 않은 현장은 확인하지 않는다 — 선언한 것만 걸린다.
|
|
92
|
-
*
|
|
93
|
-
* 빈 배열은 여기서 걸러지지 않는다. 채웠는데 이 사유가 없는 것이고, 아래에서 「모르는 사유」가 된다.
|
|
94
|
-
*/
|
|
95
|
-
if (!reasons) {
|
|
96
|
-
return [];
|
|
97
|
-
}
|
|
98
|
-
const found = reasons.find(reason => reason.name === period.reasonCode);
|
|
99
|
-
if (!found) {
|
|
100
|
-
return [{ problem: 'unknown-reason', reasonCode: period.reasonCode }];
|
|
101
|
-
}
|
|
102
|
-
const issues = [];
|
|
103
|
-
if (found.status !== period.status) {
|
|
104
|
-
issues.push({
|
|
105
|
-
problem: 'reason-status-mismatch',
|
|
106
|
-
reasonCode: found.name,
|
|
107
|
-
reasonStatus: found.status,
|
|
108
|
-
status: period.status
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
if (found.detailRequired && !period.reasonDetail) {
|
|
112
|
-
issues.push({ problem: 'detail-required', reasonCode: found.name });
|
|
113
|
-
}
|
|
114
|
-
return issues;
|
|
115
|
-
}
|
|
116
|
-
function ms(at) {
|
|
117
|
-
return typeof at === 'string' ? Date.parse(at) : at.getTime();
|
|
118
|
-
}
|
|
119
|
-
function isoOf(at) {
|
|
120
|
-
return typeof at === 'string' ? at : at.toISOString();
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=state-period-rules.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-period-rules.js","sourceRoot":"","sources":["../../../server/service/equipment/state-period-rules.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 상태 구간을 받아도 되나 — **순수 판단.**\n *\n * ── 왜 규칙이 필요한가 ──────────────────────────────────────────────────────\n * 구간은 사람이 되돌아가 적는다. 그래서 겹치고, 거꾸로 되고, 미래로 간다. 그대로 받으면 가동률의\n * 분자가 분모보다 커지는 날이 온다. 그때는 이미 잘못된 구간이 수백 개 쌓여 있다.\n *\n * ── 왜 사유와 상태를 맞춰 보나 ──────────────────────────────────────────────\n * ISO 22400 에서 가동률을 깎느냐 마느냐는 **상태**가 정한다. 「점심시간」을 `down` 으로 적으면 가동률이\n * 오류 보고 없이 낮아지고, 「고장」을 `planned-stop` 으로 적으면 오류 보고 없이 높아진다. 둘 다 조용한\n * 거짓이라 나중에 찾을 방법이 없다.\n */\n\n/** 계약의 `EQUIPMENT_STATUS` 와 같은 어휘. 여기서 새로 만들지 않는다. */\nexport const EQUIPMENT_PERIOD_STATUS = ['idle', 'busy', 'down', 'setup', 'planned-stop'] as const\n\nexport type EquipmentPeriodStatus = (typeof EQUIPMENT_PERIOD_STATUS)[number]\n\n/**\n * 정지 사유가 붙을 수 있는 상태 — **`busy` 는 빠진다.**\n *\n * 돌고 있는 것에는 사유가 없다(§`StopReason.status` 주석). 그래서 구간이 가질 수 있는 상태는 다섯인데\n * 사유가 가질 수 있는 상태는 넷이다.\n */\nexport const STOP_REASON_STATUS = EQUIPMENT_PERIOD_STATUS.filter(status => status !== 'busy')\n\n/**\n * 이 사유를 마스터에 적을 수 있나 — **적을 수 없으면 왜인지, 그리고 무엇이 되는지.**\n *\n * ── 왜 마스터에서 막나 (2026-09-03) ────────────────────────────────────────\n * 사유의 `status` 가 자유 문자열이라 `broken` 이 그대로 저장됐다. 그러면 **그 사유를 쓴 모든 구간이**\n * 「사유와 상태가 어긋난다」로 걸린다(§`reasonIssues`). 잘못은 마스터 한 줄에서 났는데 불은 구간\n * 수백 개에서 켜지고, 그 문장은 마스터를 가리키지 않는다.\n *\n * 그래서 틀린 자리에서 막는다. 구간 쪽 검사는 그대로 둔다 — 마스터를 채우기 전에 쓰인 지난 줄과,\n * 사유를 나중에 고친 경우가 거기서 걸린다.\n */\nexport function stopReasonStatusGap(status: unknown): string | undefined {\n const said = typeof status === 'string' ? status.trim() : ''\n\n if (!said) {\n return (\n '정지 사유에는 어느 상태에 쓰이는지가 있어야 합니다 — 가동률을 깎느냐 마느냐를 그 값이 정합니다 ' +\n `(쓸 수 있는 것: ${STOP_REASON_STATUS.join(' · ')})`\n )\n }\n\n if (said === 'busy') {\n return '돌고 있는 상태에는 정지 사유가 없습니다 — busy 는 정지가 아닙니다'\n }\n\n if (!(STOP_REASON_STATUS as readonly string[]).includes(said)) {\n return (\n `모르는 상태입니다: \"${said}\" — 이 값으로 저장하면 그 사유를 쓴 모든 구간이 어긋남으로 걸립니다 ` +\n `(쓸 수 있는 것: ${STOP_REASON_STATUS.join(' · ')})`\n )\n }\n\n return undefined\n}\n\nexport type PeriodProblem =\n /** 끝이 시작보다 앞이거나 같다 — 길이가 없는 구간은 셀 것이 없다. */\n | 'not-a-period'\n /** 아직 오지 않은 시각이다. */\n | 'in-the-future'\n /** 같은 설비의 다른 구간과 겹친다 — 한 설비가 같은 시각에 두 상태일 수 없다. */\n | 'overlaps'\n /** 계약이 모르는 상태다. */\n | 'unknown-status'\n /** 사유가 사유 마스터에 없다. */\n | 'unknown-reason'\n /** 사유가 이 상태의 사유가 아니다 — 가동률이 오류 보고 없이 틀어진다. */\n | 'reason-status-mismatch'\n /** 이 사유는 상세를 함께 적어야 한다. */\n | 'detail-required'\n\nexport interface PeriodIssue {\n problem: PeriodProblem\n /** 겹치는 것이면 어느 구간과 겹치나(시작 시각, ISO). */\n conflictsWith?: string\n /** 사유 문제이면 어느 사유인가. */\n reasonCode?: string\n /** 사유가 속한 상태와 적힌 상태. */\n reasonStatus?: string\n status?: string\n}\n\nexport interface JudgeablePeriod {\n status: string\n startTime: Date | string\n endTime: Date | string\n reasonCode?: string\n reasonDetail?: string\n}\n\n/** 사유 마스터에서 필요한 것만. */\nexport interface StopReasonFact {\n name: string\n status: string\n detailRequired?: boolean\n}\n\n/** 이미 적혀 있는 구간 — 겹침을 볼 때만 쓴다. */\nexport interface ExistingPeriod {\n startTime: Date | string\n endTime: Date | string\n}\n\n/**\n * 이 구간을 받아도 되나.\n *\n * `now` 를 부르는 쪽이 준다 — 이 함수가 시계를 읽으면 테스트가 시각에 흔들린다.\n */\nexport function judgePeriod(\n period: JudgeablePeriod,\n context: {\n now: Date | string\n /** 같은 설비의 이미 적힌 구간들. 부르는 쪽이 시각으로 좁혀서 준다. */\n existing?: readonly ExistingPeriod[]\n /**\n * 사유 마스터에서 읽은 것.\n *\n * **`undefined` 와 빈 배열의 뜻이 다르다.** `undefined` 는 「마스터를 아직 채우지 않았다」이고\n * 확인하지 않는다. 빈 배열은 「채웠는데 이 사유가 없다」이고 막는다. 둘을 섞으면 오타로 적은\n * 사유가 오류 보고 없이 통과한다.\n */\n reasons?: readonly StopReasonFact[]\n }\n): PeriodIssue[] {\n const issues: PeriodIssue[] = []\n\n const start = ms(period.startTime)\n const end = ms(period.endTime)\n\n if (!(end > start)) {\n issues.push({ problem: 'not-a-period' })\n }\n\n if (end > ms(context.now)) {\n issues.push({ problem: 'in-the-future' })\n }\n\n if (!(EQUIPMENT_PERIOD_STATUS as readonly string[]).includes(period.status)) {\n issues.push({ problem: 'unknown-status', status: period.status })\n }\n\n for (const other of context.existing ?? []) {\n const otherStart = ms(other.startTime)\n const otherEnd = ms(other.endTime)\n\n /* 끝과 시작이 맞닿는 것은 겹침이 아니다 — 한 구간이 끝나는 순간 다음이 시작한다. */\n if (start < otherEnd && otherStart < end) {\n issues.push({ problem: 'overlaps', conflictsWith: isoOf(other.startTime) })\n }\n }\n\n issues.push(...reasonIssues(period, context.reasons))\n\n return issues\n}\n\nfunction reasonIssues(period: JudgeablePeriod, reasons: readonly StopReasonFact[] | undefined): PeriodIssue[] {\n /*\n * 사유를 적지 않은 것은 흠이 아니다. 정지는 일단 적고 사유는 나중에 정하는 것이 현장의 순서이고,\n * 사유를 요구하면 그 순서를 막게 된다.\n */\n if (!period.reasonCode) {\n return []\n }\n\n /*\n * 마스터를 아직 채우지 않은 현장은 확인하지 않는다 — 선언한 것만 걸린다.\n *\n * 빈 배열은 여기서 걸러지지 않는다. 채웠는데 이 사유가 없는 것이고, 아래에서 「모르는 사유」가 된다.\n */\n if (!reasons) {\n return []\n }\n\n const found = reasons.find(reason => reason.name === period.reasonCode)\n\n if (!found) {\n return [{ problem: 'unknown-reason', reasonCode: period.reasonCode }]\n }\n\n const issues: PeriodIssue[] = []\n\n if (found.status !== period.status) {\n issues.push({\n problem: 'reason-status-mismatch',\n reasonCode: found.name,\n reasonStatus: found.status,\n status: period.status\n })\n }\n\n if (found.detailRequired && !period.reasonDetail) {\n issues.push({ problem: 'detail-required', reasonCode: found.name })\n }\n\n return issues\n}\n\nfunction ms(at: Date | string): number {\n return typeof at === 'string' ? Date.parse(at) : at.getTime()\n}\n\nfunction isoOf(at: Date | string): string {\n return typeof at === 'string' ? at : at.toISOString()\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ListParam } from '@things-factory/shell';
|
|
2
|
-
import { StopReason } from './stop-reason';
|
|
3
|
-
/**
|
|
4
|
-
* 정지 사유 목록.
|
|
5
|
-
*
|
|
6
|
-
* 트윈으로 내보내는 마스터에 넣지 않는다 — 사유는 **MES 가 사실을 적을 때 쓰는 분류**이고, 트윈은
|
|
7
|
-
* 상태 구간에 실려 오는 사유 코드를 그대로 받는다. 목록을 두 곳에 두면 한쪽만 늘어나는 날이 온다.
|
|
8
|
-
*/
|
|
9
|
-
export declare class StopReasonQuery {
|
|
10
|
-
stopReasons(params: ListParam, context: ResolverContext): Promise<StopReason[]>;
|
|
11
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StopReasonQuery = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const type_graphql_1 = require("type-graphql");
|
|
6
|
-
const shell_1 = require("@things-factory/shell");
|
|
7
|
-
const stop_reason_1 = require("./stop-reason");
|
|
8
|
-
/**
|
|
9
|
-
* 정지 사유 목록.
|
|
10
|
-
*
|
|
11
|
-
* 트윈으로 내보내는 마스터에 넣지 않는다 — 사유는 **MES 가 사실을 적을 때 쓰는 분류**이고, 트윈은
|
|
12
|
-
* 상태 구간에 실려 오는 사유 코드를 그대로 받는다. 목록을 두 곳에 두면 한쪽만 늘어나는 날이 온다.
|
|
13
|
-
*/
|
|
14
|
-
let StopReasonQuery = class StopReasonQuery {
|
|
15
|
-
async stopReasons(params, context) {
|
|
16
|
-
const { domain } = context.state;
|
|
17
|
-
const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
|
|
18
|
-
repository: (0, shell_1.getRepository)(stop_reason_1.StopReason),
|
|
19
|
-
params,
|
|
20
|
-
domain,
|
|
21
|
-
searchables: ['name', 'description'],
|
|
22
|
-
alias: 'sr'
|
|
23
|
-
});
|
|
24
|
-
return queryBuilder.getMany();
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
exports.StopReasonQuery = StopReasonQuery;
|
|
28
|
-
tslib_1.__decorate([
|
|
29
|
-
(0, type_graphql_1.Query)(returns => [stop_reason_1.StopReason], { description: 'To fetch the classified reasons an equipment stops' }),
|
|
30
|
-
tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
|
|
31
|
-
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
32
|
-
tslib_1.__metadata("design:type", Function),
|
|
33
|
-
tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
|
|
34
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
35
|
-
], StopReasonQuery.prototype, "stopReasons", null);
|
|
36
|
-
exports.StopReasonQuery = StopReasonQuery = tslib_1.__decorate([
|
|
37
|
-
(0, type_graphql_1.Resolver)(stop_reason_1.StopReason)
|
|
38
|
-
], StopReasonQuery);
|
|
39
|
-
//# sourceMappingURL=stop-reason-query.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stop-reason-query.js","sourceRoot":"","sources":["../../../server/service/equipment/stop-reason-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAyD;AAEzD,iDAA+F;AAE/F,+CAA0C;AAE1C;;;;;GAKG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAe;IAEpB,AAAN,KAAK,CAAC,WAAW,CAA0B,MAAiB,EAAS,OAAwB;QAC3F,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC;YACjD,UAAU,EAAE,IAAA,qBAAa,EAAC,wBAAU,CAAC;YACrC,MAAM;YACN,MAAM;YACN,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;YACpC,KAAK,EAAE,IAAI;SACZ,CAAC,CAAA;QAEF,OAAO,YAAY,CAAC,OAAO,EAAE,CAAA;IAC/B,CAAC;CACF,CAAA;AAfY,0CAAe;AAEpB;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,wBAAU,CAAC,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC;IACnF,mBAAA,IAAA,mBAAI,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;kDAY3D;0BAdU,eAAe;IAD3B,IAAA,uBAAQ,EAAC,wBAAU,CAAC;GACR,eAAe,CAe3B","sourcesContent":["import { Args, Ctx, Query, Resolver } from 'type-graphql'\n\nimport { ListParam, getQueryBuilderFromListParams, getRepository } from '@things-factory/shell'\n\nimport { StopReason } from './stop-reason'\n\n/**\n * 정지 사유 목록.\n *\n * 트윈으로 내보내는 마스터에 넣지 않는다 — 사유는 **MES 가 사실을 적을 때 쓰는 분류**이고, 트윈은\n * 상태 구간에 실려 오는 사유 코드를 그대로 받는다. 목록을 두 곳에 두면 한쪽만 늘어나는 날이 온다.\n */\n@Resolver(StopReason)\nexport class StopReasonQuery {\n @Query(returns => [StopReason], { description: 'To fetch the classified reasons an equipment stops' })\n async stopReasons(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<StopReason[]> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(StopReason),\n params,\n domain,\n searchables: ['name', 'description'],\n alias: 'sr'\n })\n\n return queryBuilder.getMany()\n }\n}\n"]}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Domain } from '@things-factory/shell';
|
|
2
|
-
import { User } from '@things-factory/auth-base';
|
|
3
|
-
/**
|
|
4
|
-
* 설비가 왜 섰나 — **사유의 목록.**
|
|
5
|
-
*
|
|
6
|
-
* ── 왜 마스터로 두나 ────────────────────────────────────────────────────────
|
|
7
|
-
* 사유를 자유 문장으로 받으면 「금형교체」 · 「금형 교체」 · 「몰드교환」이 서로 다른 사유가 된다. 그러면
|
|
8
|
-
* 「무엇 때문에 가장 많이 멈추나」에 답할 수 없다 — 그 답이 정지 사유를 적는 유일한 이유다.
|
|
9
|
-
*
|
|
10
|
-
* ── `status` 가 가동률을 정하고, 사유는 무엇을 고칠지 정한다 ────────────────
|
|
11
|
-
* ISO 22400 에서 가동률을 깎느냐 마느냐는 **상태**가 정한다(`down` · `idle` 은 깎고 `planned-stop` 은
|
|
12
|
-
* 깎지 않는다). 사유는 그 상태 안에서 **무엇을 고쳐야 하나**를 말한다.
|
|
13
|
-
*
|
|
14
|
-
* 그래서 사유마다 어느 상태에 쓰이는지 적어 둔다. 「점심시간」을 `down` 으로 적으면 가동률이 알리지
|
|
15
|
-
* 않고 낮아지고, 「고장」을 `planned-stop` 으로 적으면 알리지 않고 높아진다. 둘 다 조용한 거짓이다.
|
|
16
|
-
*/
|
|
17
|
-
export declare class StopReason {
|
|
18
|
-
readonly id: string;
|
|
19
|
-
domain?: Domain;
|
|
20
|
-
domainId?: string;
|
|
21
|
-
/** 사유 코드 — 상태 구간이 이 값을 가리킨다. */
|
|
22
|
-
name: string;
|
|
23
|
-
description?: string;
|
|
24
|
-
/**
|
|
25
|
-
* 이 사유가 쓰이는 상태 — `down` · `idle` · `setup` · `planned-stop`.
|
|
26
|
-
*
|
|
27
|
-
* 어휘는 계약의 `EQUIPMENT_STATUS` 다. `busy` 는 여기 오지 않는다 — 돌고 있는 것에는 사유가 없다.
|
|
28
|
-
*/
|
|
29
|
-
status: string;
|
|
30
|
-
/**
|
|
31
|
-
* 상위 사유 — 사유는 나무다.
|
|
32
|
-
*
|
|
33
|
-
* 「설비 고장」 아래 「금형 파손」 · 「모터 과열」이 온다. 위로 모아 보면 「고장으로 몇 시간」이 나오고,
|
|
34
|
-
* 아래로 내려가면 「무엇을 고칠까」가 나온다. 한 단으로만 두면 둘 중 하나를 잃는다.
|
|
35
|
-
*/
|
|
36
|
-
parentName?: string;
|
|
37
|
-
/**
|
|
38
|
-
* 이 사유를 적을 때 상세를 함께 받나.
|
|
39
|
-
*
|
|
40
|
-
* 「기타」로만 적히는 사유가 목록의 절반을 차지하면 분류가 없는 것과 같다. 상세를 요구하는 사유를
|
|
41
|
-
* 표시해 두어 화면이 그때만 묻게 한다.
|
|
42
|
-
*/
|
|
43
|
-
detailRequired?: boolean;
|
|
44
|
-
/** 언제부터 — 표준 `EffectiveStartDate`. */
|
|
45
|
-
effectiveStart?: Date;
|
|
46
|
-
/**
|
|
47
|
-
* 언제까지 — 표준 `EffectiveEndDate`.
|
|
48
|
-
*
|
|
49
|
-
* 쓰지 않는 사유는 지우지 않고 이 칸을 채운다. 지우면 그 사유로 적힌 지난 구간이 가리킬 것을 잃는다.
|
|
50
|
-
*/
|
|
51
|
-
effectiveEnd?: Date;
|
|
52
|
-
createdAt?: Date;
|
|
53
|
-
updatedAt?: Date;
|
|
54
|
-
creator?: User;
|
|
55
|
-
creatorId?: string;
|
|
56
|
-
updater?: User;
|
|
57
|
-
updaterId?: string;
|
|
58
|
-
}
|