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