@things-factory/worklist 10.1.248 → 10.1.250
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-client/activity-cells.d.ts +21 -0
- package/dist-client/activity-cells.js +117 -0
- package/dist-client/activity-cells.js.map +1 -0
- package/dist-client/activity-state-counts.d.ts +6 -0
- package/dist-client/activity-state-counts.js +23 -0
- package/dist-client/activity-state-counts.js.map +1 -0
- package/dist-client/activity-summary-generator.d.ts +2 -0
- package/dist-client/activity-summary-generator.js +155 -0
- package/dist-client/activity-summary-generator.js.map +1 -0
- package/dist-client/approval-progress.d.ts +27 -0
- package/dist-client/approval-progress.js +42 -0
- package/dist-client/approval-progress.js.map +1 -0
- package/dist-client/bootstrap.d.ts +5 -0
- package/dist-client/bootstrap.js +63 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/chip-counts.d.ts +7 -0
- package/dist-client/chip-counts.js +11 -0
- package/dist-client/chip-counts.js.map +1 -0
- package/dist-client/chip-filters.d.ts +60 -0
- package/dist-client/chip-filters.js +102 -0
- package/dist-client/chip-filters.js.map +1 -0
- package/dist-client/components/activity-/bowner-view.d.ts +1 -0
- package/dist-client/components/activity-/bowner-view.js +104 -0
- package/dist-client/components/activity-/bowner-view.js.map +1 -0
- package/dist-client/components/activity-approval-ribon.d.ts +31 -0
- package/dist-client/components/activity-approval-ribon.js +103 -0
- package/dist-client/components/activity-approval-ribon.js.map +1 -0
- package/dist-client/components/activity-fields.d.ts +77 -0
- package/dist-client/components/activity-fields.js +424 -0
- package/dist-client/components/activity-fields.js.map +1 -0
- package/dist-client/components/activity-instance-preview.d.ts +2 -0
- package/dist-client/components/activity-instance-preview.js +177 -0
- package/dist-client/components/activity-instance-preview.js.map +1 -0
- package/dist-client/components/activity-instance-ribon.d.ts +32 -0
- package/dist-client/components/activity-instance-ribon.js +91 -0
- package/dist-client/components/activity-instance-ribon.js.map +1 -0
- package/dist-client/components/activity-intro-view.d.ts +1 -0
- package/dist-client/components/activity-intro-view.js +104 -0
- package/dist-client/components/activity-intro-view.js.map +1 -0
- package/dist-client/components/activity-reporter-view.d.ts +1 -0
- package/dist-client/components/activity-reporter-view.js +103 -0
- package/dist-client/components/activity-reporter-view.js.map +1 -0
- package/dist-client/components/activity-starter-form.d.ts +19 -0
- package/dist-client/components/activity-starter-form.js +264 -0
- package/dist-client/components/activity-starter-form.js.map +1 -0
- package/dist-client/components/activity-thread-ribon.d.ts +38 -0
- package/dist-client/components/activity-thread-ribon.js +95 -0
- package/dist-client/components/activity-thread-ribon.js.map +1 -0
- package/dist-client/components/activity-thread-timeline.d.ts +28 -0
- package/dist-client/components/activity-thread-timeline.js +339 -0
- package/dist-client/components/activity-thread-timeline.js.map +1 -0
- package/dist-client/components/can-pick.d.ts +15 -0
- package/dist-client/components/can-pick.js +16 -0
- package/dist-client/components/can-pick.js.map +1 -0
- package/dist-client/components/decision-content.d.ts +35 -0
- package/dist-client/components/decision-content.js +331 -0
- package/dist-client/components/decision-content.js.map +1 -0
- package/dist-client/components/decision-slots.d.ts +153 -0
- package/dist-client/components/decision-slots.js +152 -0
- package/dist-client/components/decision-slots.js.map +1 -0
- package/dist-client/components/mutation-outcome.d.ts +57 -0
- package/dist-client/components/mutation-outcome.js +78 -0
- package/dist-client/components/mutation-outcome.js.map +1 -0
- package/dist-client/components/say-outcome.d.ts +25 -0
- package/dist-client/components/say-outcome.js +51 -0
- package/dist-client/components/say-outcome.js.map +1 -0
- package/dist-client/components/state-ribon.d.ts +48 -0
- package/dist-client/components/state-ribon.js +225 -0
- package/dist-client/components/state-ribon.js.map +1 -0
- package/dist-client/components/timeline-entries.d.ts +38 -0
- package/dist-client/components/timeline-entries.js +62 -0
- package/dist-client/components/timeline-entries.js.map +1 -0
- package/dist-client/components/work-box-groups.d.ts +25 -0
- package/dist-client/components/work-box-groups.js +98 -0
- package/dist-client/components/work-box-groups.js.map +1 -0
- package/dist-client/due.d.ts +16 -0
- package/dist-client/due.js +78 -0
- package/dist-client/due.js.map +1 -0
- package/dist-client/entity360/person-open-work-section.d.ts +23 -0
- package/dist-client/entity360/person-open-work-section.js +79 -0
- package/dist-client/entity360/person-open-work-section.js.map +1 -0
- package/dist-client/grist-editor/grist-editor-activity-search-key.d.ts +12 -0
- package/dist-client/grist-editor/grist-editor-activity-search-key.js +70 -0
- package/dist-client/grist-editor/grist-editor-activity-search-key.js.map +1 -0
- package/dist-client/grist-editor/grist-renderer-activity-search-key.d.ts +3 -0
- package/dist-client/grist-editor/grist-renderer-activity-search-key.js +25 -0
- package/dist-client/grist-editor/grist-renderer-activity-search-key.js.map +1 -0
- package/dist-client/grist-editor/popup-activity-search-keys-input.d.ts +17 -0
- package/dist-client/grist-editor/popup-activity-search-keys-input.js +175 -0
- package/dist-client/grist-editor/popup-activity-search-keys-input.js.map +1 -0
- package/dist-client/index.d.ts +6 -0
- package/dist-client/index.js +7 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/my-work-menus.d.ts +90 -0
- package/dist-client/my-work-menus.js +20 -0
- package/dist-client/my-work-menus.js.map +1 -0
- package/dist-client/pages/activity/activity-list-page.d.ts +53 -0
- package/dist-client/pages/activity/activity-list-page.js +600 -0
- package/dist-client/pages/activity/activity-list-page.js.map +1 -0
- package/dist-client/pages/activity/activity-model-item-list.d.ts +24 -0
- package/dist-client/pages/activity/activity-model-item-list.js +292 -0
- package/dist-client/pages/activity/activity-model-item-list.js.map +1 -0
- package/dist-client/pages/activity/activity-page.d.ts +56 -0
- package/dist-client/pages/activity/activity-page.js +396 -0
- package/dist-client/pages/activity/activity-page.js.map +1 -0
- package/dist-client/pages/activity/activity-partial-view.d.ts +13 -0
- package/dist-client/pages/activity/activity-partial-view.js +56 -0
- package/dist-client/pages/activity/activity-partial-view.js.map +1 -0
- package/dist-client/pages/activity/assignee-roles-cell.d.ts +32 -0
- package/dist-client/pages/activity/assignee-roles-cell.js +26 -0
- package/dist-client/pages/activity/assignee-roles-cell.js.map +1 -0
- package/dist-client/pages/activity/starter-list-page.d.ts +31 -0
- package/dist-client/pages/activity/starter-list-page.js +172 -0
- package/dist-client/pages/activity/starter-list-page.js.map +1 -0
- package/dist-client/pages/activity-approval/activity-approval-importer.d.ts +23 -0
- package/dist-client/pages/activity-approval/activity-approval-importer.js +94 -0
- package/dist-client/pages/activity-approval/activity-approval-importer.js.map +1 -0
- package/dist-client/pages/activity-approval/activity-approval-list-page.d.ts +55 -0
- package/dist-client/pages/activity-approval/activity-approval-list-page.js +253 -0
- package/dist-client/pages/activity-approval/activity-approval-list-page.js.map +1 -0
- package/dist-client/pages/activity-approval/activity-approval-page.d.ts +158 -0
- package/dist-client/pages/activity-approval/activity-approval-page.js +876 -0
- package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -0
- package/dist-client/pages/activity-approval/approval-gate.d.ts +29 -0
- package/dist-client/pages/activity-approval/approval-gate.js +21 -0
- package/dist-client/pages/activity-approval/approval-gate.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-catalog-page.d.ts +31 -0
- package/dist-client/pages/activity-catalog/activity-catalog-page.js +420 -0
- package/dist-client/pages/activity-catalog/activity-catalog-page.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-detail-actions.d.ts +34 -0
- package/dist-client/pages/activity-catalog/activity-detail-actions.js +18 -0
- package/dist-client/pages/activity-catalog/activity-detail-actions.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-detail-page.d.ts +90 -0
- package/dist-client/pages/activity-catalog/activity-detail-page.js +525 -0
- package/dist-client/pages/activity-catalog/activity-detail-page.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-guide.d.ts +16 -0
- package/dist-client/pages/activity-catalog/activity-guide.js +5 -0
- package/dist-client/pages/activity-catalog/activity-guide.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-panels.d.ts +80 -0
- package/dist-client/pages/activity-catalog/activity-panels.js +53 -0
- package/dist-client/pages/activity-catalog/activity-panels.js.map +1 -0
- package/dist-client/pages/activity-catalog/activity-stage.d.ts +31 -0
- package/dist-client/pages/activity-catalog/activity-stage.js +44 -0
- package/dist-client/pages/activity-catalog/activity-stage.js.map +1 -0
- package/dist-client/pages/activity-instance/activity-instance-list-page.d.ts +42 -0
- package/dist-client/pages/activity-instance/activity-instance-list-page.js +306 -0
- package/dist-client/pages/activity-instance/activity-instance-list-page.js.map +1 -0
- package/dist-client/pages/activity-instance/activity-instance-search-page.d.ts +69 -0
- package/dist-client/pages/activity-instance/activity-instance-search-page.js +309 -0
- package/dist-client/pages/activity-instance/activity-instance-search-page.js.map +1 -0
- package/dist-client/pages/activity-instance/activity-instance-start-page.d.ts +54 -0
- package/dist-client/pages/activity-instance/activity-instance-start-page.js +557 -0
- package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -0
- package/dist-client/pages/activity-instance/activity-instance-view.d.ts +36 -0
- package/dist-client/pages/activity-instance/activity-instance-view.js +495 -0
- package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -0
- package/dist-client/pages/activity-instance/discard-offer.d.ts +11 -0
- package/dist-client/pages/activity-instance/discard-offer.js +11 -0
- package/dist-client/pages/activity-instance/discard-offer.js.map +1 -0
- package/dist-client/pages/activity-stats/activity-stats-importer.d.ts +23 -0
- package/dist-client/pages/activity-stats/activity-stats-importer.js +94 -0
- package/dist-client/pages/activity-stats/activity-stats-importer.js.map +1 -0
- package/dist-client/pages/activity-stats/activity-stats-list-page.d.ts +55 -0
- package/dist-client/pages/activity-stats/activity-stats-list-page.js +253 -0
- package/dist-client/pages/activity-stats/activity-stats-list-page.js.map +1 -0
- package/dist-client/pages/activity-store/activity-store-page.d.ts +41 -0
- package/dist-client/pages/activity-store/activity-store-page.js +210 -0
- package/dist-client/pages/activity-store/activity-store-page.js.map +1 -0
- package/dist-client/pages/activity-supervisor/reporter-list-page.d.ts +30 -0
- package/dist-client/pages/activity-supervisor/reporter-list-page.js +190 -0
- package/dist-client/pages/activity-supervisor/reporter-list-page.js.map +1 -0
- package/dist-client/pages/activity-template/activity-template-importer.d.ts +11 -0
- package/dist-client/pages/activity-template/activity-template-importer.js +98 -0
- package/dist-client/pages/activity-template/activity-template-importer.js.map +1 -0
- package/dist-client/pages/activity-template/activity-template-list-page.d.ts +53 -0
- package/dist-client/pages/activity-template/activity-template-list-page.js +377 -0
- package/dist-client/pages/activity-template/activity-template-list-page.js.map +1 -0
- package/dist-client/pages/activity-template/activity-template-model-item-list.d.ts +1 -0
- package/dist-client/pages/activity-template/activity-template-model-item-list.js +41 -0
- package/dist-client/pages/activity-template/activity-template-model-item-list.js.map +1 -0
- package/dist-client/pages/activity-thread/activity-thread-importer.d.ts +11 -0
- package/dist-client/pages/activity-thread/activity-thread-importer.js +96 -0
- package/dist-client/pages/activity-thread/activity-thread-importer.js.map +1 -0
- package/dist-client/pages/activity-thread/activity-thread-list-page.d.ts +52 -0
- package/dist-client/pages/activity-thread/activity-thread-list-page.js +248 -0
- package/dist-client/pages/activity-thread/activity-thread-list-page.js.map +1 -0
- package/dist-client/pages/activity-thread/activity-thread-page.d.ts +91 -0
- package/dist-client/pages/activity-thread/activity-thread-page.js +594 -0
- package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -0
- package/dist-client/pages/activity-thread/activity-thread-view-page.d.ts +56 -0
- package/dist-client/pages/activity-thread/activity-thread-view-page.js +386 -0
- package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -0
- package/dist-client/pages/activity-thread/activity-thread-view.d.ts +31 -0
- package/dist-client/pages/activity-thread/activity-thread-view.js +134 -0
- package/dist-client/pages/activity-thread/activity-thread-view.js.map +1 -0
- package/dist-client/pages/activity-thread/thread-sections.d.ts +34 -0
- package/dist-client/pages/activity-thread/thread-sections.js +36 -0
- package/dist-client/pages/activity-thread/thread-sections.js.map +1 -0
- package/dist-client/pages/approval-progress/approval-progress-page.d.ts +46 -0
- package/dist-client/pages/approval-progress/approval-progress-page.js +294 -0
- package/dist-client/pages/approval-progress/approval-progress-page.js.map +1 -0
- package/dist-client/pages/installable-activity/installable-activity-list-page.d.ts +64 -0
- package/dist-client/pages/installable-activity/installable-activity-list-page.js +424 -0
- package/dist-client/pages/installable-activity/installable-activity-list-page.js.map +1 -0
- package/dist-client/pages/installable-activity/installable-activity-model-item-list.d.ts +1 -0
- package/dist-client/pages/installable-activity/installable-activity-model-item-list.js +20 -0
- package/dist-client/pages/installable-activity/installable-activity-model-item-list.js.map +1 -0
- package/dist-client/pages/todo/approval-done-list-page.d.ts +42 -0
- package/dist-client/pages/todo/approval-done-list-page.js +365 -0
- package/dist-client/pages/todo/approval-done-list-page.js.map +1 -0
- package/dist-client/pages/todo/approval-pending-list-page.d.ts +79 -0
- package/dist-client/pages/todo/approval-pending-list-page.js +683 -0
- package/dist-client/pages/todo/approval-pending-list-page.js.map +1 -0
- package/dist-client/pages/todo/done-list-calendar-page.d.ts +47 -0
- package/dist-client/pages/todo/done-list-calendar-page.js +379 -0
- package/dist-client/pages/todo/done-list-calendar-page.js.map +1 -0
- package/dist-client/pages/todo/draft-list-page.d.ts +64 -0
- package/dist-client/pages/todo/draft-list-page.js +404 -0
- package/dist-client/pages/todo/draft-list-page.js.map +1 -0
- package/dist-client/pages/todo/list-thumbnail.d.ts +25 -0
- package/dist-client/pages/todo/list-thumbnail.js +25 -0
- package/dist-client/pages/todo/list-thumbnail.js.map +1 -0
- package/dist-client/pages/todo/pickable-list-page.d.ts +37 -0
- package/dist-client/pages/todo/pickable-list-page.js +271 -0
- package/dist-client/pages/todo/pickable-list-page.js.map +1 -0
- package/dist-client/pages/todo/todo-list-page.d.ts +66 -0
- package/dist-client/pages/todo/todo-list-page.js +503 -0
- package/dist-client/pages/todo/todo-list-page.js.map +1 -0
- package/dist-client/pages/todo/work-box.d.ts +52 -0
- package/dist-client/pages/todo/work-box.js +54 -0
- package/dist-client/pages/todo/work-box.js.map +1 -0
- package/dist-client/pages/work-door/door-links.d.ts +22 -0
- package/dist-client/pages/work-door/door-links.js +20 -0
- package/dist-client/pages/work-door/door-links.js.map +1 -0
- package/dist-client/pages/work-door/door-sentence.d.ts +75 -0
- package/dist-client/pages/work-door/door-sentence.js +107 -0
- package/dist-client/pages/work-door/door-sentence.js.map +1 -0
- package/dist-client/pages/work-door/door-words.d.ts +48 -0
- package/dist-client/pages/work-door/door-words.js +84 -0
- package/dist-client/pages/work-door/door-words.js.map +1 -0
- package/dist-client/route.d.ts +1 -0
- package/dist-client/route.js +80 -0
- package/dist-client/route.js.map +1 -0
- package/dist-client/templates/activity-approval-context-template.d.ts +3 -0
- package/dist-client/templates/activity-approval-context-template.js +105 -0
- package/dist-client/templates/activity-approval-context-template.js.map +1 -0
- package/dist-client/templates/activity-instance-context-template.d.ts +3 -0
- package/dist-client/templates/activity-instance-context-template.js +118 -0
- package/dist-client/templates/activity-instance-context-template.js.map +1 -0
- package/dist-client/templates/activity-thread-context-template.d.ts +3 -0
- package/dist-client/templates/activity-thread-context-template.js +74 -0
- package/dist-client/templates/activity-thread-context-template.js.map +1 -0
- package/dist-client/templates/context-panel.d.ts +26 -0
- package/dist-client/templates/context-panel.js +182 -0
- package/dist-client/templates/context-panel.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-client/types/activity-approval.d.ts +36 -0
- package/dist-client/types/activity-approval.js +17 -0
- package/dist-client/types/activity-approval.js.map +1 -0
- package/dist-client/types/activity-instance-type.d.ts +77 -0
- package/dist-client/types/activity-instance-type.js +11 -0
- package/dist-client/types/activity-instance-type.js.map +1 -0
- package/dist-client/types/activity-instance.d.ts +72 -0
- package/dist-client/types/activity-instance.js +36 -0
- package/dist-client/types/activity-instance.js.map +1 -0
- package/dist-client/types/activity-model-type.d.ts +31 -0
- package/dist-client/types/activity-model-type.js +18 -0
- package/dist-client/types/activity-model-type.js.map +1 -0
- package/dist-client/types/activity-search-key-item-type.d.ts +6 -0
- package/dist-client/types/activity-search-key-item-type.js +3 -0
- package/dist-client/types/activity-search-key-item-type.js.map +1 -0
- package/dist-client/types/activity-thread-history.d.ts +28 -0
- package/dist-client/types/activity-thread-history.js +7 -0
- package/dist-client/types/activity-thread-history.js.map +1 -0
- package/dist-client/types/activity-thread-type.d.ts +15 -0
- package/dist-client/types/activity-thread-type.js +7 -0
- package/dist-client/types/activity-thread-type.js.map +1 -0
- package/dist-client/types/activity-thread.d.ts +39 -0
- package/dist-client/types/activity-thread.js +18 -0
- package/dist-client/types/activity-thread.js.map +1 -0
- package/dist-client/types/activity.d.ts +68 -0
- package/dist-client/types/activity.js +40 -0
- package/dist-client/types/activity.js.map +1 -0
- package/dist-client/types/types.d.ts +23 -0
- package/dist-client/types/types.js +42 -0
- package/dist-client/types/types.js.map +1 -0
- package/dist-client/when.d.ts +4 -0
- package/dist-client/when.js +72 -0
- package/dist-client/when.js.map +1 -0
- package/dist-client/work-calendar-sources.d.ts +96 -0
- package/dist-client/work-calendar-sources.js +88 -0
- package/dist-client/work-calendar-sources.js.map +1 -0
- package/dist-server/controllers/activity-approval/_abort.d.ts +5 -0
- package/dist-server/controllers/activity-approval/_abort.js +29 -0
- package/dist-server/controllers/activity-approval/_abort.js.map +1 -0
- package/dist-server/controllers/activity-approval/abort.d.ts +5 -0
- package/dist-server/controllers/activity-approval/abort.js +35 -0
- package/dist-server/controllers/activity-approval/abort.js.map +1 -0
- package/dist-server/controllers/activity-approval/approval-line.d.ts +138 -0
- package/dist-server/controllers/activity-approval/approval-line.js +185 -0
- package/dist-server/controllers/activity-approval/approval-line.js.map +1 -0
- package/dist-server/controllers/activity-approval/approve.d.ts +5 -0
- package/dist-server/controllers/activity-approval/approve.js +142 -0
- package/dist-server/controllers/activity-approval/approve.js.map +1 -0
- package/dist-server/controllers/activity-approval/check-authority.d.ts +8 -0
- package/dist-server/controllers/activity-approval/check-authority.js +29 -0
- package/dist-server/controllers/activity-approval/check-authority.js.map +1 -0
- package/dist-server/controllers/activity-approval/claim.d.ts +42 -0
- package/dist-server/controllers/activity-approval/claim.js +77 -0
- package/dist-server/controllers/activity-approval/claim.js.map +1 -0
- package/dist-server/controllers/activity-approval/create-approval.d.ts +41 -0
- package/dist-server/controllers/activity-approval/create-approval.js +85 -0
- package/dist-server/controllers/activity-approval/create-approval.js.map +1 -0
- package/dist-server/controllers/activity-approval/delegate.d.ts +23 -0
- package/dist-server/controllers/activity-approval/delegate.js +113 -0
- package/dist-server/controllers/activity-approval/delegate.js.map +1 -0
- package/dist-server/controllers/activity-approval/delegation.d.ts +21 -0
- package/dist-server/controllers/activity-approval/delegation.js +17 -0
- package/dist-server/controllers/activity-approval/delegation.js.map +1 -0
- package/dist-server/controllers/activity-approval/opinion.d.ts +10 -0
- package/dist-server/controllers/activity-approval/opinion.js +43 -0
- package/dist-server/controllers/activity-approval/opinion.js.map +1 -0
- package/dist-server/controllers/activity-approval/reject.d.ts +5 -0
- package/dist-server/controllers/activity-approval/reject.js +93 -0
- package/dist-server/controllers/activity-approval/reject.js.map +1 -0
- package/dist-server/controllers/activity-approval/resolve-judgeable-seats.d.ts +21 -0
- package/dist-server/controllers/activity-approval/resolve-judgeable-seats.js +60 -0
- package/dist-server/controllers/activity-approval/resolve-judgeable-seats.js.map +1 -0
- package/dist-server/controllers/activity-approval/save.d.ts +5 -0
- package/dist-server/controllers/activity-approval/save.js +56 -0
- package/dist-server/controllers/activity-approval/save.js.map +1 -0
- package/dist-server/controllers/activity-approval/seat-standing.d.ts +66 -0
- package/dist-server/controllers/activity-approval/seat-standing.js +57 -0
- package/dist-server/controllers/activity-approval/seat-standing.js.map +1 -0
- package/dist-server/controllers/activity-installation/activity-installation-controller.d.ts +79 -0
- package/dist-server/controllers/activity-installation/activity-installation-controller.js +99 -0
- package/dist-server/controllers/activity-installation/activity-installation-controller.js.map +1 -0
- package/dist-server/controllers/activity-installation/call-webhook.d.ts +3 -0
- package/dist-server/controllers/activity-installation/call-webhook.js +42 -0
- package/dist-server/controllers/activity-installation/call-webhook.js.map +1 -0
- package/dist-server/controllers/activity-installation/installable-to-activity.d.ts +77 -0
- package/dist-server/controllers/activity-installation/installable-to-activity.js +68 -0
- package/dist-server/controllers/activity-installation/installable-to-activity.js.map +1 -0
- package/dist-server/controllers/activity-installation/registry-conflict.d.ts +47 -0
- package/dist-server/controllers/activity-installation/registry-conflict.js +47 -0
- package/dist-server/controllers/activity-installation/registry-conflict.js.map +1 -0
- package/dist-server/controllers/activity-instance/abort.d.ts +5 -0
- package/dist-server/controllers/activity-instance/abort.js +62 -0
- package/dist-server/controllers/activity-instance/abort.js.map +1 -0
- package/dist-server/controllers/activity-instance/approval-expectation.d.ts +34 -0
- package/dist-server/controllers/activity-instance/approval-expectation.js +18 -0
- package/dist-server/controllers/activity-instance/approval-expectation.js.map +1 -0
- package/dist-server/controllers/activity-instance/approval-line-input.d.ts +29 -0
- package/dist-server/controllers/activity-instance/approval-line-input.js +44 -0
- package/dist-server/controllers/activity-instance/approval-line-input.js.map +1 -0
- package/dist-server/controllers/activity-instance/assign.d.ts +8 -0
- package/dist-server/controllers/activity-instance/assign.js +152 -0
- package/dist-server/controllers/activity-instance/assign.js.map +1 -0
- package/dist-server/controllers/activity-instance/assignee-input.d.ts +25 -0
- package/dist-server/controllers/activity-instance/assignee-input.js +28 -0
- package/dist-server/controllers/activity-instance/assignee-input.js.map +1 -0
- package/dist-server/controllers/activity-instance/claim-draft.d.ts +17 -0
- package/dist-server/controllers/activity-instance/claim-draft.js +30 -0
- package/dist-server/controllers/activity-instance/claim-draft.js.map +1 -0
- package/dist-server/controllers/activity-instance/discard-draft.d.ts +22 -0
- package/dist-server/controllers/activity-instance/discard-draft.js +54 -0
- package/dist-server/controllers/activity-instance/discard-draft.js.map +1 -0
- package/dist-server/controllers/activity-instance/draft.d.ts +3 -0
- package/dist-server/controllers/activity-instance/draft.js +93 -0
- package/dist-server/controllers/activity-instance/draft.js.map +1 -0
- package/dist-server/controllers/activity-instance/end.d.ts +6 -0
- package/dist-server/controllers/activity-instance/end.js +65 -0
- package/dist-server/controllers/activity-instance/end.js.map +1 -0
- package/dist-server/controllers/activity-instance/entitlement.d.ts +25 -0
- package/dist-server/controllers/activity-instance/entitlement.js +110 -0
- package/dist-server/controllers/activity-instance/entitlement.js.map +1 -0
- package/dist-server/controllers/activity-instance/index.d.ts +6 -0
- package/dist-server/controllers/activity-instance/index.js +10 -0
- package/dist-server/controllers/activity-instance/index.js.map +1 -0
- package/dist-server/controllers/activity-instance/issue.d.ts +3 -0
- package/dist-server/controllers/activity-instance/issue.js +272 -0
- package/dist-server/controllers/activity-instance/issue.js.map +1 -0
- package/dist-server/controllers/activity-instance/pick.d.ts +2 -0
- package/dist-server/controllers/activity-instance/pick.js +112 -0
- package/dist-server/controllers/activity-instance/pick.js.map +1 -0
- package/dist-server/controllers/activity-read/assert-may-read.d.ts +20 -0
- package/dist-server/controllers/activity-read/assert-may-read.js +108 -0
- package/dist-server/controllers/activity-read/assert-may-read.js.map +1 -0
- package/dist-server/controllers/activity-read/participates.d.ts +41 -0
- package/dist-server/controllers/activity-read/participates.js +42 -0
- package/dist-server/controllers/activity-read/participates.js.map +1 -0
- package/dist-server/controllers/activity-thread/_abort.d.ts +5 -0
- package/dist-server/controllers/activity-thread/_abort.js +36 -0
- package/dist-server/controllers/activity-thread/_abort.js.map +1 -0
- package/dist-server/controllers/activity-thread/abort.d.ts +5 -0
- package/dist-server/controllers/activity-thread/abort.js +45 -0
- package/dist-server/controllers/activity-thread/abort.js.map +1 -0
- package/dist-server/controllers/activity-thread/check-authority.d.ts +2 -0
- package/dist-server/controllers/activity-thread/check-authority.js +65 -0
- package/dist-server/controllers/activity-thread/check-authority.js.map +1 -0
- package/dist-server/controllers/activity-thread/delegate.d.ts +7 -0
- package/dist-server/controllers/activity-thread/delegate.js +66 -0
- package/dist-server/controllers/activity-thread/delegate.js.map +1 -0
- package/dist-server/controllers/activity-thread/end.d.ts +6 -0
- package/dist-server/controllers/activity-thread/end.js +44 -0
- package/dist-server/controllers/activity-thread/end.js.map +1 -0
- package/dist-server/controllers/activity-thread/index.d.ts +7 -0
- package/dist-server/controllers/activity-thread/index.js +11 -0
- package/dist-server/controllers/activity-thread/index.js.map +1 -0
- package/dist-server/controllers/activity-thread/restart.d.ts +2 -0
- package/dist-server/controllers/activity-thread/restart.js +63 -0
- package/dist-server/controllers/activity-thread/restart.js.map +1 -0
- package/dist-server/controllers/activity-thread/save.d.ts +3 -0
- package/dist-server/controllers/activity-thread/save.js +45 -0
- package/dist-server/controllers/activity-thread/save.js.map +1 -0
- package/dist-server/controllers/activity-thread/start.d.ts +2 -0
- package/dist-server/controllers/activity-thread/start.js +43 -0
- package/dist-server/controllers/activity-thread/start.js.map +1 -0
- package/dist-server/controllers/activity-thread/submit.d.ts +6 -0
- package/dist-server/controllers/activity-thread/submit.js +90 -0
- package/dist-server/controllers/activity-thread/submit.js.map +1 -0
- package/dist-server/controllers/common.d.ts +34 -0
- package/dist-server/controllers/common.js +346 -0
- package/dist-server/controllers/common.js.map +1 -0
- package/dist-server/controllers/index.d.ts +5 -0
- package/dist-server/controllers/index.js +18 -0
- package/dist-server/controllers/index.js.map +1 -0
- package/dist-server/index.d.ts +6 -0
- package/dist-server/index.js +18 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/role-tasks.d.ts +2 -0
- package/dist-server/role-tasks.js +16 -0
- package/dist-server/role-tasks.js.map +1 -0
- package/dist-server/routes.d.ts +1 -0
- package/dist-server/routes.js +57 -0
- package/dist-server/routes.js.map +1 -0
- package/dist-server/service/activity/activity-decision-key-item-type.d.ts +206 -0
- package/dist-server/service/activity/activity-decision-key-item-type.js +182 -0
- package/dist-server/service/activity/activity-decision-key-item-type.js.map +1 -0
- package/dist-server/service/activity/activity-history.d.ts +44 -0
- package/dist-server/service/activity/activity-history.js +220 -0
- package/dist-server/service/activity/activity-history.js.map +1 -0
- package/dist-server/service/activity/activity-model-type.d.ts +49 -0
- package/dist-server/service/activity/activity-model-type.js +138 -0
- package/dist-server/service/activity/activity-model-type.js.map +1 -0
- package/dist-server/service/activity/activity-mutation.d.ts +12 -0
- package/dist-server/service/activity/activity-mutation.js +416 -0
- package/dist-server/service/activity/activity-mutation.js.map +1 -0
- package/dist-server/service/activity/activity-query.d.ts +24 -0
- package/dist-server/service/activity/activity-query.js +310 -0
- package/dist-server/service/activity/activity-query.js.map +1 -0
- package/dist-server/service/activity/activity-search-key-item-type.d.ts +6 -0
- package/dist-server/service/activity/activity-search-key-item-type.js +28 -0
- package/dist-server/service/activity/activity-search-key-item-type.js.map +1 -0
- package/dist-server/service/activity/activity-type.d.ts +84 -0
- package/dist-server/service/activity/activity-type.js +269 -0
- package/dist-server/service/activity/activity-type.js.map +1 -0
- package/dist-server/service/activity/activity.d.ts +135 -0
- package/dist-server/service/activity/activity.js +328 -0
- package/dist-server/service/activity/activity.js.map +1 -0
- package/dist-server/service/activity/approval-line-seats.d.ts +12 -0
- package/dist-server/service/activity/approval-line-seats.js +68 -0
- package/dist-server/service/activity/approval-line-seats.js.map +1 -0
- package/dist-server/service/activity/credential-field.d.ts +35 -0
- package/dist-server/service/activity/credential-field.js +89 -0
- package/dist-server/service/activity/credential-field.js.map +1 -0
- package/dist-server/service/activity/decision-key-declaration.d.ts +106 -0
- package/dist-server/service/activity/decision-key-declaration.js +181 -0
- package/dist-server/service/activity/decision-key-declaration.js.map +1 -0
- package/dist-server/service/activity/declaration-guard-subscriber.d.ts +24 -0
- package/dist-server/service/activity/declaration-guard-subscriber.js +46 -0
- package/dist-server/service/activity/declaration-guard-subscriber.js.map +1 -0
- package/dist-server/service/activity/event-subscriber.d.ts +7 -0
- package/dist-server/service/activity/event-subscriber.js +21 -0
- package/dist-server/service/activity/event-subscriber.js.map +1 -0
- package/dist-server/service/activity/freeze-decision-sentences-for.d.ts +11 -0
- package/dist-server/service/activity/freeze-decision-sentences-for.js +18 -0
- package/dist-server/service/activity/freeze-decision-sentences-for.js.map +1 -0
- package/dist-server/service/activity/index.d.ts +9 -0
- package/dist-server/service/activity/index.js +13 -0
- package/dist-server/service/activity/index.js.map +1 -0
- package/dist-server/service/activity/search-key-declaration.d.ts +38 -0
- package/dist-server/service/activity/search-key-declaration.js +49 -0
- package/dist-server/service/activity/search-key-declaration.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval-mutation.d.ts +8 -0
- package/dist-server/service/activity-approval/activity-approval-mutation.js +81 -0
- package/dist-server/service/activity-approval/activity-approval-mutation.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval-query.d.ts +42 -0
- package/dist-server/service/activity-approval/activity-approval-query.js +391 -0
- package/dist-server/service/activity-approval/activity-approval-query.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval-subscription.d.ts +6 -0
- package/dist-server/service/activity-approval/activity-approval-subscription.js +39 -0
- package/dist-server/service/activity-approval/activity-approval-subscription.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval-type.d.ts +10 -0
- package/dist-server/service/activity-approval/activity-approval-type.js +39 -0
- package/dist-server/service/activity-approval/activity-approval-type.js.map +1 -0
- package/dist-server/service/activity-approval/activity-approval.d.ts +67 -0
- package/dist-server/service/activity-approval/activity-approval.js +183 -0
- package/dist-server/service/activity-approval/activity-approval.js.map +1 -0
- package/dist-server/service/activity-approval/event-subscriber.d.ts +7 -0
- package/dist-server/service/activity-approval/event-subscriber.js +46 -0
- package/dist-server/service/activity-approval/event-subscriber.js.map +1 -0
- package/dist-server/service/activity-approval/index.d.ts +8 -0
- package/dist-server/service/activity-approval/index.js +12 -0
- package/dist-server/service/activity-approval/index.js.map +1 -0
- package/dist-server/service/activity-approval/my-pending-approvals.d.ts +33 -0
- package/dist-server/service/activity-approval/my-pending-approvals.js +52 -0
- package/dist-server/service/activity-approval/my-pending-approvals.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance-history.d.ts +60 -0
- package/dist-server/service/activity-instance/activity-instance-history.js +294 -0
- package/dist-server/service/activity-instance/activity-instance-history.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance-mutation.d.ts +16 -0
- package/dist-server/service/activity-instance/activity-instance-mutation.js +185 -0
- package/dist-server/service/activity-instance/activity-instance-mutation.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance-query.d.ts +27 -0
- package/dist-server/service/activity-instance/activity-instance-query.js +386 -0
- package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance-subscription.d.ts +6 -0
- package/dist-server/service/activity-instance/activity-instance-subscription.js +39 -0
- package/dist-server/service/activity-instance/activity-instance-subscription.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance-type.d.ts +107 -0
- package/dist-server/service/activity-instance/activity-instance-type.js +301 -0
- package/dist-server/service/activity-instance/activity-instance-type.js.map +1 -0
- package/dist-server/service/activity-instance/activity-instance.d.ts +81 -0
- package/dist-server/service/activity-instance/activity-instance.js +324 -0
- package/dist-server/service/activity-instance/activity-instance.js.map +1 -0
- package/dist-server/service/activity-instance/assignee-pool.d.ts +59 -0
- package/dist-server/service/activity-instance/assignee-pool.js +99 -0
- package/dist-server/service/activity-instance/assignee-pool.js.map +1 -0
- package/dist-server/service/activity-instance/draft-list-states.d.ts +39 -0
- package/dist-server/service/activity-instance/draft-list-states.js +51 -0
- package/dist-server/service/activity-instance/draft-list-states.js.map +1 -0
- package/dist-server/service/activity-instance/event-subscriber.d.ts +21 -0
- package/dist-server/service/activity-instance/event-subscriber.js +59 -0
- package/dist-server/service/activity-instance/event-subscriber.js.map +1 -0
- package/dist-server/service/activity-instance/index.d.ts +9 -0
- package/dist-server/service/activity-instance/index.js +13 -0
- package/dist-server/service/activity-instance/index.js.map +1 -0
- package/dist-server/service/activity-instance/request-box.d.ts +2 -0
- package/dist-server/service/activity-instance/request-box.js +18 -0
- package/dist-server/service/activity-instance/request-box.js.map +1 -0
- package/dist-server/service/activity-stats/activity-stats-query.d.ts +9 -0
- package/dist-server/service/activity-stats/activity-stats-query.js +230 -0
- package/dist-server/service/activity-stats/activity-stats-query.js.map +1 -0
- package/dist-server/service/activity-stats/activity-stats-type.d.ts +27 -0
- package/dist-server/service/activity-stats/activity-stats-type.js +74 -0
- package/dist-server/service/activity-stats/activity-stats-type.js.map +1 -0
- package/dist-server/service/activity-stats/event-placement.d.ts +55 -0
- package/dist-server/service/activity-stats/event-placement.js +82 -0
- package/dist-server/service/activity-stats/event-placement.js.map +1 -0
- package/dist-server/service/activity-stats/index.d.ts +2 -0
- package/dist-server/service/activity-stats/index.js +6 -0
- package/dist-server/service/activity-stats/index.js.map +1 -0
- package/dist-server/service/activity-summary/activity-summary-query.d.ts +8 -0
- package/dist-server/service/activity-summary/activity-summary-query.js +137 -0
- package/dist-server/service/activity-summary/activity-summary-query.js.map +1 -0
- package/dist-server/service/activity-summary/activity-summary.d.ts +6 -0
- package/dist-server/service/activity-summary/activity-summary.js +28 -0
- package/dist-server/service/activity-summary/activity-summary.js.map +1 -0
- package/dist-server/service/activity-summary/index.d.ts +5 -0
- package/dist-server/service/activity-summary/index.js +9 -0
- package/dist-server/service/activity-summary/index.js.map +1 -0
- package/dist-server/service/activity-summary/open-work.d.ts +4 -0
- package/dist-server/service/activity-summary/open-work.js +51 -0
- package/dist-server/service/activity-summary/open-work.js.map +1 -0
- package/dist-server/service/activity-summary/person-open-work.d.ts +17 -0
- package/dist-server/service/activity-summary/person-open-work.js +68 -0
- package/dist-server/service/activity-summary/person-open-work.js.map +1 -0
- package/dist-server/service/activity-template/activity-template-history.d.ts +32 -0
- package/dist-server/service/activity-template/activity-template-history.js +165 -0
- package/dist-server/service/activity-template/activity-template-history.js.map +1 -0
- package/dist-server/service/activity-template/activity-template-mutation.d.ts +10 -0
- package/dist-server/service/activity-template/activity-template-mutation.js +194 -0
- package/dist-server/service/activity-template/activity-template-mutation.js.map +1 -0
- package/dist-server/service/activity-template/activity-template-query.d.ts +14 -0
- package/dist-server/service/activity-template/activity-template-query.js +112 -0
- package/dist-server/service/activity-template/activity-template-query.js.map +1 -0
- package/dist-server/service/activity-template/activity-template-type.d.ts +44 -0
- package/dist-server/service/activity-template/activity-template-type.js +164 -0
- package/dist-server/service/activity-template/activity-template-type.js.map +1 -0
- package/dist-server/service/activity-template/activity-template.d.ts +36 -0
- package/dist-server/service/activity-template/activity-template.js +154 -0
- package/dist-server/service/activity-template/activity-template.js.map +1 -0
- package/dist-server/service/activity-template/event-subscriber.d.ts +7 -0
- package/dist-server/service/activity-template/event-subscriber.js +21 -0
- package/dist-server/service/activity-template/event-subscriber.js.map +1 -0
- package/dist-server/service/activity-template/index.d.ts +8 -0
- package/dist-server/service/activity-template/index.js +12 -0
- package/dist-server/service/activity-template/index.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-history-query.d.ts +10 -0
- package/dist-server/service/activity-thread/activity-thread-history-query.js +69 -0
- package/dist-server/service/activity-thread/activity-thread-history-query.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-history.d.ts +39 -0
- package/dist-server/service/activity-thread/activity-thread-history.js +211 -0
- package/dist-server/service/activity-thread/activity-thread-history.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-mutation.d.ts +20 -0
- package/dist-server/service/activity-thread/activity-thread-mutation.js +115 -0
- package/dist-server/service/activity-thread/activity-thread-mutation.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-query.d.ts +24 -0
- package/dist-server/service/activity-thread/activity-thread-query.js +276 -0
- package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-subscription.d.ts +6 -0
- package/dist-server/service/activity-thread/activity-thread-subscription.js +38 -0
- package/dist-server/service/activity-thread/activity-thread-subscription.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread-type.d.ts +15 -0
- package/dist-server/service/activity-thread/activity-thread-type.js +50 -0
- package/dist-server/service/activity-thread/activity-thread-type.js.map +1 -0
- package/dist-server/service/activity-thread/activity-thread.d.ts +47 -0
- package/dist-server/service/activity-thread/activity-thread.js +197 -0
- package/dist-server/service/activity-thread/activity-thread.js.map +1 -0
- package/dist-server/service/activity-thread/event-subscriber.d.ts +13 -0
- package/dist-server/service/activity-thread/event-subscriber.js +45 -0
- package/dist-server/service/activity-thread/event-subscriber.js.map +1 -0
- package/dist-server/service/activity-thread/index.d.ts +10 -0
- package/dist-server/service/activity-thread/index.js +14 -0
- package/dist-server/service/activity-thread/index.js.map +1 -0
- package/dist-server/service/activity-thread/my-open-threads.d.ts +33 -0
- package/dist-server/service/activity-thread/my-open-threads.js +85 -0
- package/dist-server/service/activity-thread/my-open-threads.js.map +1 -0
- package/dist-server/service/activity-thread/todo-order.d.ts +49 -0
- package/dist-server/service/activity-thread/todo-order.js +70 -0
- package/dist-server/service/activity-thread/todo-order.js.map +1 -0
- package/dist-server/service/approval-notice/approval-notice-rules.d.ts +67 -0
- package/dist-server/service/approval-notice/approval-notice-rules.js +67 -0
- package/dist-server/service/approval-notice/approval-notice-rules.js.map +1 -0
- package/dist-server/service/approval-notice/approval-notice.d.ts +11 -0
- package/dist-server/service/approval-notice/approval-notice.js +76 -0
- package/dist-server/service/approval-notice/approval-notice.js.map +1 -0
- package/dist-server/service/approval-progress/approval-progress-query.d.ts +14 -0
- package/dist-server/service/approval-progress/approval-progress-query.js +142 -0
- package/dist-server/service/approval-progress/approval-progress-query.js.map +1 -0
- package/dist-server/service/approval-progress/approval-progress-rule.d.ts +67 -0
- package/dist-server/service/approval-progress/approval-progress-rule.js +102 -0
- package/dist-server/service/approval-progress/approval-progress-rule.js.map +1 -0
- package/dist-server/service/approval-progress/approval-progress-type.d.ts +44 -0
- package/dist-server/service/approval-progress/approval-progress-type.js +172 -0
- package/dist-server/service/approval-progress/approval-progress-type.js.map +1 -0
- package/dist-server/service/approval-progress/index.d.ts +2 -0
- package/dist-server/service/approval-progress/index.js +6 -0
- package/dist-server/service/approval-progress/index.js.map +1 -0
- package/dist-server/service/approval-progress/waiting-on.d.ts +15 -0
- package/dist-server/service/approval-progress/waiting-on.js +40 -0
- package/dist-server/service/approval-progress/waiting-on.js.map +1 -0
- package/dist-server/service/index.d.ts +24 -0
- package/dist-server/service/index.js +80 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/installable-activity/activity-readiness.d.ts +58 -0
- package/dist-server/service/installable-activity/activity-readiness.js +105 -0
- package/dist-server/service/installable-activity/activity-readiness.js.map +1 -0
- package/dist-server/service/installable-activity/index.d.ts +6 -0
- package/dist-server/service/installable-activity/index.js +10 -0
- package/dist-server/service/installable-activity/index.js.map +1 -0
- package/dist-server/service/installable-activity/installable-activity-mutation.d.ts +11 -0
- package/dist-server/service/installable-activity/installable-activity-mutation.js +83 -0
- package/dist-server/service/installable-activity/installable-activity-mutation.js.map +1 -0
- package/dist-server/service/installable-activity/installable-activity-query.d.ts +22 -0
- package/dist-server/service/installable-activity/installable-activity-query.js +127 -0
- package/dist-server/service/installable-activity/installable-activity-query.js.map +1 -0
- package/dist-server/service/installable-activity/installable-activity-type.d.ts +5 -0
- package/dist-server/service/installable-activity/installable-activity-type.js +21 -0
- package/dist-server/service/installable-activity/installable-activity-type.js.map +1 -0
- package/dist-server/service/installable-activity/installable-activity.d.ts +92 -0
- package/dist-server/service/installable-activity/installable-activity.js +140 -0
- package/dist-server/service/installable-activity/installable-activity.js.map +1 -0
- package/dist-server/service/nulls-last.d.ts +30 -0
- package/dist-server/service/nulls-last.js +37 -0
- package/dist-server/service/nulls-last.js.map +1 -0
- package/dist-server/service/subscription/roles-of.d.ts +9 -0
- package/dist-server/service/subscription/roles-of.js +17 -0
- package/dist-server/service/subscription/roles-of.js.map +1 -0
- package/dist-server/service/subscription/subscription-filters.d.ts +47 -0
- package/dist-server/service/subscription/subscription-filters.js +57 -0
- package/dist-server/service/subscription/subscription-filters.js.map +1 -0
- package/dist-server/service/work-door/activity-lookup.d.ts +70 -0
- package/dist-server/service/work-door/activity-lookup.js +110 -0
- package/dist-server/service/work-door/activity-lookup.js.map +1 -0
- package/dist-server/service/work-door/approval-line-standing.d.ts +106 -0
- package/dist-server/service/work-door/approval-line-standing.js +65 -0
- package/dist-server/service/work-door/approval-line-standing.js.map +1 -0
- package/dist-server/service/work-door/index.d.ts +15 -0
- package/dist-server/service/work-door/index.js +20 -0
- package/dist-server/service/work-door/index.js.map +1 -0
- package/dist-server/service/work-door/pass-work-door.d.ts +74 -0
- package/dist-server/service/work-door/pass-work-door.js +45 -0
- package/dist-server/service/work-door/pass-work-door.js.map +1 -0
- package/dist-server/service/work-door/work-door-declaration.d.ts +135 -0
- package/dist-server/service/work-door/work-door-declaration.js +87 -0
- package/dist-server/service/work-door/work-door-declaration.js.map +1 -0
- package/dist-server/service/work-door/work-door-event.d.ts +20 -0
- package/dist-server/service/work-door/work-door-event.js +25 -0
- package/dist-server/service/work-door/work-door-event.js.map +1 -0
- package/dist-server/service/work-door/work-door-journal-service.d.ts +47 -0
- package/dist-server/service/work-door/work-door-journal-service.js +75 -0
- package/dist-server/service/work-door/work-door-journal-service.js.map +1 -0
- package/dist-server/service/work-door/work-door-journal.d.ts +30 -0
- package/dist-server/service/work-door/work-door-journal.js +94 -0
- package/dist-server/service/work-door/work-door-journal.js.map +1 -0
- package/dist-server/service/work-door/work-door-not-used.d.ts +39 -0
- package/dist-server/service/work-door/work-door-not-used.js +86 -0
- package/dist-server/service/work-door/work-door-not-used.js.map +1 -0
- package/dist-server/service/work-door/work-door-resolver.d.ts +32 -0
- package/dist-server/service/work-door/work-door-resolver.js +152 -0
- package/dist-server/service/work-door/work-door-resolver.js.map +1 -0
- package/dist-server/service/work-door/work-door-service.d.ts +36 -0
- package/dist-server/service/work-door/work-door-service.js +127 -0
- package/dist-server/service/work-door/work-door-service.js.map +1 -0
- package/dist-server/service/work-door/work-door-type.d.ts +88 -0
- package/dist-server/service/work-door/work-door-type.js +206 -0
- package/dist-server/service/work-door/work-door-type.js.map +1 -0
- package/dist-server/service/work-door/work-door.d.ts +187 -0
- package/dist-server/service/work-door/work-door.js +119 -0
- package/dist-server/service/work-door/work-door.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +10 -10
- package/shared/approval-step.d.ts +21 -0
- package/shared/approval-step.js +55 -0
- package/tests/approval-progress-db.test.ts +143 -0
- package/things-factory.config.js +1 -0
- package/translations/en.json +20 -1
- package/translations/es.json +20 -1
- package/translations/ja.json +20 -1
- package/translations/ko.json +20 -1
- package/translations/ms.json +20 -1
- package/translations/zh.json +20 -1
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkDoorsType = exports.WorkDoorType = exports.WhenNoLineBecauseValue = exports.WhenNoLineValue = exports.DoorReasonValue = exports.DoorKindValue = exports.DoorStandingValue = void 0;
|
|
4
|
+
exports.toDoorType = toDoorType;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const type_graphql_1 = require("type-graphql");
|
|
7
|
+
const organization_1 = require("@things-factory/organization");
|
|
8
|
+
/**
|
|
9
|
+
* 「이 공장에서 어느 결재 문이 서 있나」를 화면에 낼 모양.
|
|
10
|
+
*
|
|
11
|
+
* **사실만 낸다. 문장은 화면이 번역으로 짓는다.** 서버가 한국어 문장을 지어 보내던 때 영어·일본어·
|
|
12
|
+
* 중국어·말레이어 사용자도 한국어를 읽었고, 화면이 상태별로 달리 그리려면 그 문장을 다시 뜯어 읽어야
|
|
13
|
+
* 했다. 열거형 값 셋은 `registerEnumType` 이 **멤버 이름**을 싣는다 — 화면이 `door-words.ts` 한 곳에서
|
|
14
|
+
* 옮긴다.
|
|
15
|
+
*/
|
|
16
|
+
var DoorStandingValue;
|
|
17
|
+
(function (DoorStandingValue) {
|
|
18
|
+
/** 채워졌다. */
|
|
19
|
+
DoorStandingValue["On"] = "on";
|
|
20
|
+
/** 양식은 섰는데 받을 사람이 없다. 조치 대상. */
|
|
21
|
+
DoorStandingValue["Off"] = "off";
|
|
22
|
+
/** 양식이 아예 안 섰다 — 설정이 아니라 결함이다. 조치 대상. */
|
|
23
|
+
DoorStandingValue["Missing"] = "missing";
|
|
24
|
+
/** 이 공장이 안 쓰기로 했다. 조치 대상이 아니다. */
|
|
25
|
+
DoorStandingValue["NotUsed"] = "not-used";
|
|
26
|
+
})(DoorStandingValue || (exports.DoorStandingValue = DoorStandingValue = {}));
|
|
27
|
+
/** 결재냐 배정이냐 — 비었을 때 결과가 반대라 화면이 갈라 그려야 한다. */
|
|
28
|
+
var DoorKindValue;
|
|
29
|
+
(function (DoorKindValue) {
|
|
30
|
+
DoorKindValue["Approval"] = "approval";
|
|
31
|
+
DoorKindValue["Assignment"] = "assignment";
|
|
32
|
+
})(DoorKindValue || (exports.DoorKindValue = DoorKindValue = {}));
|
|
33
|
+
/** 왜 그 상태인가 — 까닭마다 관리자가 할 일이 다르다(§`DoorReason`). */
|
|
34
|
+
var DoorReasonValue;
|
|
35
|
+
(function (DoorReasonValue) {
|
|
36
|
+
DoorReasonValue["NotUsed"] = "not-used";
|
|
37
|
+
DoorReasonValue["Missing"] = "missing";
|
|
38
|
+
DoorReasonValue["LineEmpty"] = "line-empty";
|
|
39
|
+
DoorReasonValue["RoleEmpty"] = "role-empty";
|
|
40
|
+
DoorReasonValue["PersonAbsent"] = "person-absent";
|
|
41
|
+
DoorReasonValue["NoAssignee"] = "no-assignee";
|
|
42
|
+
DoorReasonValue["LineFilled"] = "line-filled";
|
|
43
|
+
DoorReasonValue["AssigneeBound"] = "assignee-bound";
|
|
44
|
+
})(DoorReasonValue || (exports.DoorReasonValue = DoorReasonValue = {}));
|
|
45
|
+
/** 결재선이 비면 이 문이 어떻게 하나 — 선언 그대로(ADR-0077 결정 1). */
|
|
46
|
+
var WhenNoLineValue;
|
|
47
|
+
(function (WhenNoLineValue) {
|
|
48
|
+
WhenNoLineValue["Run"] = "run";
|
|
49
|
+
WhenNoLineValue["Refuse"] = "refuse";
|
|
50
|
+
WhenNoLineValue["AsEstablished"] = "as-established";
|
|
51
|
+
})(WhenNoLineValue || (exports.WhenNoLineValue = WhenNoLineValue = {}));
|
|
52
|
+
/** 결재를 요구하는 까닭 — `refuse` · `as-established` 문만. */
|
|
53
|
+
var WhenNoLineBecauseValue;
|
|
54
|
+
(function (WhenNoLineBecauseValue) {
|
|
55
|
+
WhenNoLineBecauseValue["Irreversible"] = "irreversible";
|
|
56
|
+
WhenNoLineBecauseValue["ApprovalIsTheAct"] = "approval-is-the-act";
|
|
57
|
+
WhenNoLineBecauseValue["LowersAControl"] = "lowers-a-control";
|
|
58
|
+
})(WhenNoLineBecauseValue || (exports.WhenNoLineBecauseValue = WhenNoLineBecauseValue = {}));
|
|
59
|
+
(0, type_graphql_1.registerEnumType)(DoorReasonValue, {
|
|
60
|
+
name: 'DoorReason',
|
|
61
|
+
description: 'Why a door stands where it does — each reason asks for a different fix'
|
|
62
|
+
});
|
|
63
|
+
(0, type_graphql_1.registerEnumType)(WhenNoLineValue, {
|
|
64
|
+
name: 'WhenNoLine',
|
|
65
|
+
description: 'What an approval door does when its approval line is empty, as the application declared it'
|
|
66
|
+
});
|
|
67
|
+
(0, type_graphql_1.registerEnumType)(WhenNoLineBecauseValue, {
|
|
68
|
+
name: 'WhenNoLineBecause',
|
|
69
|
+
description: 'Why an approval door will not run without an approval line'
|
|
70
|
+
});
|
|
71
|
+
(0, type_graphql_1.registerEnumType)(DoorKindValue, {
|
|
72
|
+
name: 'DoorKind',
|
|
73
|
+
description: 'Whether the plant fills an approval line or an assignee role on this door'
|
|
74
|
+
});
|
|
75
|
+
(0, type_graphql_1.registerEnumType)(DoorStandingValue, {
|
|
76
|
+
name: 'DoorStanding',
|
|
77
|
+
description: 'Whether this plant has an approval step standing for that form'
|
|
78
|
+
});
|
|
79
|
+
let WorkDoorType = class WorkDoorType {
|
|
80
|
+
};
|
|
81
|
+
exports.WorkDoorType = WorkDoorType;
|
|
82
|
+
tslib_1.__decorate([
|
|
83
|
+
(0, type_graphql_1.Field)({ description: 'the form name — the key the callback is found by' }),
|
|
84
|
+
tslib_1.__metadata("design:type", String)
|
|
85
|
+
], WorkDoorType.prototype, "name", void 0);
|
|
86
|
+
tslib_1.__decorate([
|
|
87
|
+
(0, type_graphql_1.Field)({ description: 'the translation key of its label — computed from the name, never declared' }),
|
|
88
|
+
tslib_1.__metadata("design:type", String)
|
|
89
|
+
], WorkDoorType.prototype, "labelKey", void 0);
|
|
90
|
+
tslib_1.__decorate([
|
|
91
|
+
(0, type_graphql_1.Field)(type => DoorKindValue),
|
|
92
|
+
tslib_1.__metadata("design:type", String)
|
|
93
|
+
], WorkDoorType.prototype, "kind", void 0);
|
|
94
|
+
tslib_1.__decorate([
|
|
95
|
+
(0, type_graphql_1.Field)(type => DoorStandingValue),
|
|
96
|
+
tslib_1.__metadata("design:type", String)
|
|
97
|
+
], WorkDoorType.prototype, "standing", void 0);
|
|
98
|
+
tslib_1.__decorate([
|
|
99
|
+
(0, type_graphql_1.Field)(type => DoorReasonValue),
|
|
100
|
+
tslib_1.__metadata("design:type", String)
|
|
101
|
+
], WorkDoorType.prototype, "reason", void 0);
|
|
102
|
+
tslib_1.__decorate([
|
|
103
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'how many approvers — zero for an assignment door or an empty line' }),
|
|
104
|
+
tslib_1.__metadata("design:type", Number)
|
|
105
|
+
], WorkDoorType.prototype, "approvers", void 0);
|
|
106
|
+
tslib_1.__decorate([
|
|
107
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'which domain the approval line came from — a plant may use its parent\'s' }),
|
|
108
|
+
tslib_1.__metadata("design:type", String)
|
|
109
|
+
], WorkDoorType.prototype, "from", void 0);
|
|
110
|
+
tslib_1.__decorate([
|
|
111
|
+
(0, type_graphql_1.Field)(type => WhenNoLineValue, { nullable: true, description: 'approval doors only' }),
|
|
112
|
+
tslib_1.__metadata("design:type", String)
|
|
113
|
+
], WorkDoorType.prototype, "whenNoLine", void 0);
|
|
114
|
+
tslib_1.__decorate([
|
|
115
|
+
(0, type_graphql_1.Field)(type => WhenNoLineBecauseValue, { nullable: true, description: 'refuse and as-established doors only' }),
|
|
116
|
+
tslib_1.__metadata("design:type", String)
|
|
117
|
+
], WorkDoorType.prototype, "whenNoLineBecause", void 0);
|
|
118
|
+
tslib_1.__decorate([
|
|
119
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'the label key of the door whose approval line this one follows' }),
|
|
120
|
+
tslib_1.__metadata("design:type", String)
|
|
121
|
+
], WorkDoorType.prototype, "followsLabelKey", void 0);
|
|
122
|
+
tslib_1.__decorate([
|
|
123
|
+
(0, type_graphql_1.Field)(type => [String], { nullable: true, description: 'the roles an assignment door is bound to - anyone holding any one of them' }),
|
|
124
|
+
tslib_1.__metadata("design:type", Array)
|
|
125
|
+
], WorkDoorType.prototype, "assigneeRoles", void 0);
|
|
126
|
+
tslib_1.__decorate([
|
|
127
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'what the plant wrote when it said it does not use this door — shown as written' }),
|
|
128
|
+
tslib_1.__metadata("design:type", String)
|
|
129
|
+
], WorkDoorType.prototype, "notUsedBecause", void 0);
|
|
130
|
+
tslib_1.__decorate([
|
|
131
|
+
(0, type_graphql_1.Field)(type => [organization_1.ApprovalLineItem], {
|
|
132
|
+
nullable: true,
|
|
133
|
+
description: 'the approval line raising this door goes through, seat by seat — the followed door\'s line when it follows one'
|
|
134
|
+
}),
|
|
135
|
+
tslib_1.__metadata("design:type", Array)
|
|
136
|
+
], WorkDoorType.prototype, "approvalLine", void 0);
|
|
137
|
+
exports.WorkDoorType = WorkDoorType = tslib_1.__decorate([
|
|
138
|
+
(0, type_graphql_1.ObjectType)({ description: 'One approval form and whether this plant has approvers on it' })
|
|
139
|
+
], WorkDoorType);
|
|
140
|
+
let WorkDoorsType = class WorkDoorsType {
|
|
141
|
+
};
|
|
142
|
+
exports.WorkDoorsType = WorkDoorsType;
|
|
143
|
+
tslib_1.__decorate([
|
|
144
|
+
(0, type_graphql_1.Field)(type => [WorkDoorType]),
|
|
145
|
+
tslib_1.__metadata("design:type", Array)
|
|
146
|
+
], WorkDoorsType.prototype, "doors", void 0);
|
|
147
|
+
tslib_1.__decorate([
|
|
148
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'how many still need filling — not-used doors are never counted' }),
|
|
149
|
+
tslib_1.__metadata("design:type", Number)
|
|
150
|
+
], WorkDoorsType.prototype, "todo", void 0);
|
|
151
|
+
tslib_1.__decorate([
|
|
152
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'doors standing' }),
|
|
153
|
+
tslib_1.__metadata("design:type", Number)
|
|
154
|
+
], WorkDoorsType.prototype, "on", void 0);
|
|
155
|
+
tslib_1.__decorate([
|
|
156
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'forms installed with nobody on them' }),
|
|
157
|
+
tslib_1.__metadata("design:type", Number)
|
|
158
|
+
], WorkDoorsType.prototype, "off", void 0);
|
|
159
|
+
tslib_1.__decorate([
|
|
160
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'forms that never installed' }),
|
|
161
|
+
tslib_1.__metadata("design:type", Number)
|
|
162
|
+
], WorkDoorsType.prototype, "missing", void 0);
|
|
163
|
+
tslib_1.__decorate([
|
|
164
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'doors this plant said it does not use' }),
|
|
165
|
+
tslib_1.__metadata("design:type", Number)
|
|
166
|
+
], WorkDoorsType.prototype, "notUsed", void 0);
|
|
167
|
+
tslib_1.__decorate([
|
|
168
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'how many of the role seats this product offers actually exist here' }),
|
|
169
|
+
tslib_1.__metadata("design:type", Number)
|
|
170
|
+
], WorkDoorsType.prototype, "seatsStanding", void 0);
|
|
171
|
+
tslib_1.__decorate([
|
|
172
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'how many role seats this product offers' }),
|
|
173
|
+
tslib_1.__metadata("design:type", Number)
|
|
174
|
+
], WorkDoorsType.prototype, "seatsOffered", void 0);
|
|
175
|
+
exports.WorkDoorsType = WorkDoorsType = tslib_1.__decorate([
|
|
176
|
+
(0, type_graphql_1.ObjectType)({ description: 'Every approval form this product installs, and where this plant stands on each' })
|
|
177
|
+
], WorkDoorsType);
|
|
178
|
+
/**
|
|
179
|
+
* 판단의 모양을 화면의 모양으로. 판단부의 낱말(`'line-empty'`)을 열거형 **값**으로 찾아 멤버를 싣는다 —
|
|
180
|
+
* 값과 낱말이 같게 적혀 있으니 표를 따로 들지 않는다. 못 찾으면 던진다: 새 낱말이 전선에서 조용히
|
|
181
|
+
* 사라지면 화면이 「모른다」조차 못 그린다.
|
|
182
|
+
*/
|
|
183
|
+
function toDoorType(door) {
|
|
184
|
+
return {
|
|
185
|
+
name: door.name,
|
|
186
|
+
labelKey: door.labelKey,
|
|
187
|
+
kind: member(DoorKindValue, door.kind),
|
|
188
|
+
standing: member(DoorStandingValue, door.standing),
|
|
189
|
+
reason: member(DoorReasonValue, door.reason),
|
|
190
|
+
approvers: door.approvers,
|
|
191
|
+
from: door.from,
|
|
192
|
+
whenNoLine: door.whenNoLine ? member(WhenNoLineValue, door.whenNoLine) : undefined,
|
|
193
|
+
whenNoLineBecause: door.whenNoLineBecause ? member(WhenNoLineBecauseValue, door.whenNoLineBecause) : undefined,
|
|
194
|
+
followsLabelKey: door.followsLabelKey,
|
|
195
|
+
assigneeRoles: door.assigneeRoles,
|
|
196
|
+
notUsedBecause: door.notUsedBecause
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
function member(values, word) {
|
|
200
|
+
const found = Object.values(values).find(one => one === word);
|
|
201
|
+
if (!found) {
|
|
202
|
+
throw new Error(`work door: no wire value for "${word}"`);
|
|
203
|
+
}
|
|
204
|
+
return found;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=work-door-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-door-type.js","sourceRoot":"","sources":["../../../server/service/work-door/work-door-type.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, Int, ObjectType, registerEnumType } from 'type-graphql'\n\nimport { ApprovalLineItem } from '@things-factory/organization'\n\nimport type { WorkDoor } from './work-door.js'\n\n/**\n * 「이 공장에서 어느 결재 문이 서 있나」를 화면에 낼 모양.\n *\n * **사실만 낸다. 문장은 화면이 번역으로 짓는다.** 서버가 한국어 문장을 지어 보내던 때 영어·일본어·\n * 중국어·말레이어 사용자도 한국어를 읽었고, 화면이 상태별로 달리 그리려면 그 문장을 다시 뜯어 읽어야\n * 했다. 열거형 값 셋은 `registerEnumType` 이 **멤버 이름**을 싣는다 — 화면이 `door-words.ts` 한 곳에서\n * 옮긴다.\n */\n\nexport enum DoorStandingValue {\n /** 채워졌다. */\n On = 'on',\n /** 양식은 섰는데 받을 사람이 없다. 조치 대상. */\n Off = 'off',\n /** 양식이 아예 안 섰다 — 설정이 아니라 결함이다. 조치 대상. */\n Missing = 'missing',\n /** 이 공장이 안 쓰기로 했다. 조치 대상이 아니다. */\n NotUsed = 'not-used'\n}\n\n/** 결재냐 배정이냐 — 비었을 때 결과가 반대라 화면이 갈라 그려야 한다. */\nexport enum DoorKindValue {\n Approval = 'approval',\n Assignment = 'assignment'\n}\n\n/** 왜 그 상태인가 — 까닭마다 관리자가 할 일이 다르다(§`DoorReason`). */\nexport enum DoorReasonValue {\n NotUsed = 'not-used',\n Missing = 'missing',\n LineEmpty = 'line-empty',\n RoleEmpty = 'role-empty',\n PersonAbsent = 'person-absent',\n NoAssignee = 'no-assignee',\n LineFilled = 'line-filled',\n AssigneeBound = 'assignee-bound'\n}\n\n/** 결재선이 비면 이 문이 어떻게 하나 — 선언 그대로(ADR-0077 결정 1). */\nexport enum WhenNoLineValue {\n Run = 'run',\n Refuse = 'refuse',\n AsEstablished = 'as-established'\n}\n\n/** 결재를 요구하는 까닭 — `refuse` · `as-established` 문만. */\nexport enum WhenNoLineBecauseValue {\n Irreversible = 'irreversible',\n ApprovalIsTheAct = 'approval-is-the-act',\n LowersAControl = 'lowers-a-control'\n}\n\nregisterEnumType(DoorReasonValue, {\n name: 'DoorReason',\n description: 'Why a door stands where it does — each reason asks for a different fix'\n})\n\nregisterEnumType(WhenNoLineValue, {\n name: 'WhenNoLine',\n description: 'What an approval door does when its approval line is empty, as the application declared it'\n})\n\nregisterEnumType(WhenNoLineBecauseValue, {\n name: 'WhenNoLineBecause',\n description: 'Why an approval door will not run without an approval line'\n})\n\nregisterEnumType(DoorKindValue, {\n name: 'DoorKind',\n description: 'Whether the plant fills an approval line or an assignee role on this door'\n})\n\nregisterEnumType(DoorStandingValue, {\n name: 'DoorStanding',\n description: 'Whether this plant has an approval step standing for that form'\n})\n\n@ObjectType({ description: 'One approval form and whether this plant has approvers on it' })\nexport class WorkDoorType {\n @Field({ description: 'the form name — the key the callback is found by' })\n name: string\n\n @Field({ description: 'the translation key of its label — computed from the name, never declared' })\n labelKey: string\n\n @Field(type => DoorKindValue)\n kind: DoorKindValue\n\n @Field(type => DoorStandingValue)\n standing: DoorStandingValue\n\n @Field(type => DoorReasonValue)\n reason: DoorReasonValue\n\n @Field(type => Int, { description: 'how many approvers — zero for an assignment door or an empty line' })\n approvers: number\n\n @Field({ nullable: true, description: 'which domain the approval line came from — a plant may use its parent\\'s' })\n from?: string\n\n @Field(type => WhenNoLineValue, { nullable: true, description: 'approval doors only' })\n whenNoLine?: WhenNoLineValue\n\n @Field(type => WhenNoLineBecauseValue, { nullable: true, description: 'refuse and as-established doors only' })\n whenNoLineBecause?: WhenNoLineBecauseValue\n\n @Field({ nullable: true, description: 'the label key of the door whose approval line this one follows' })\n followsLabelKey?: string\n\n @Field(type => [String], { nullable: true, description: 'the roles an assignment door is bound to - anyone holding any one of them' })\n assigneeRoles?: string[]\n\n @Field({ nullable: true, description: 'what the plant wrote when it said it does not use this door — shown as written' })\n notUsedBecause?: string\n\n @Field(type => [ApprovalLineItem], {\n nullable: true,\n description: 'the approval line raising this door goes through, seat by seat — the followed door\\'s line when it follows one'\n })\n approvalLine?: ApprovalLineItem[]\n}\n\n@ObjectType({ description: 'Every approval form this product installs, and where this plant stands on each' })\nexport class WorkDoorsType {\n @Field(type => [WorkDoorType])\n doors: WorkDoorType[]\n\n @Field(type => Int, { description: 'how many still need filling — not-used doors are never counted' })\n todo: number\n\n @Field(type => Int, { description: 'doors standing' })\n on: number\n\n @Field(type => Int, { description: 'forms installed with nobody on them' })\n off: number\n\n @Field(type => Int, { description: 'forms that never installed' })\n missing: number\n\n @Field(type => Int, { description: 'doors this plant said it does not use' })\n notUsed: number\n\n /**\n * 이 제품이 내놓는 역할 자리 중 **이 공장에 실제로 선 것.**\n *\n * ── 왜 문 목록에 자리 수가 붙나 ────────────────────────────────────────\n * 문이 비었다는 말만 하면 사람은 양식 화면으로 간다. 그런데 **고를 역할이 없으면 그 화면의\n * 결재선 칸이 빈 목록**이다. 헛걸음하고 돌아와서, 무엇이 잘못됐는지 모른 채 이 화면을 다시 본다.\n *\n * 두 수를 함께 내면 화면이 순서를 말할 수 있다 — 자리부터 세우고, 그다음에 결재선을 건다.\n */\n @Field(type => Int, { description: 'how many of the role seats this product offers actually exist here' })\n seatsStanding: number\n\n @Field(type => Int, { description: 'how many role seats this product offers' })\n seatsOffered: number\n}\n\n/**\n * 판단의 모양을 화면의 모양으로. 판단부의 낱말(`'line-empty'`)을 열거형 **값**으로 찾아 멤버를 싣는다 —\n * 값과 낱말이 같게 적혀 있으니 표를 따로 들지 않는다. 못 찾으면 던진다: 새 낱말이 전선에서 조용히\n * 사라지면 화면이 「모른다」조차 못 그린다.\n */\nexport function toDoorType(door: WorkDoor): WorkDoorType {\n return {\n name: door.name,\n labelKey: door.labelKey,\n kind: member(DoorKindValue, door.kind),\n standing: member(DoorStandingValue, door.standing),\n reason: member(DoorReasonValue, door.reason),\n approvers: door.approvers,\n from: door.from,\n whenNoLine: door.whenNoLine ? member(WhenNoLineValue, door.whenNoLine) : undefined,\n whenNoLineBecause: door.whenNoLineBecause ? member(WhenNoLineBecauseValue, door.whenNoLineBecause) : undefined,\n followsLabelKey: door.followsLabelKey,\n assigneeRoles: door.assigneeRoles,\n notUsedBecause: door.notUsedBecause\n }\n}\n\nfunction member<T extends Record<string, string>>(values: T, word: string): T[keyof T] {\n const found = Object.values(values).find(one => one === word)\n\n if (!found) {\n throw new Error(`work door: no wire value for \"${word}\"`)\n }\n\n return found as T[keyof T]\n}\n"]}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 이 공장에서 **어느 결재 문이 서 있나** — 순수 판단, DB 를 모른다.
|
|
3
|
+
*
|
|
4
|
+
* 결재선이 찼나를 세는 규칙은 상신하는 쪽과 **같은 함수**를 쓴다(§`approval-line-standing`). 여기서
|
|
5
|
+
* 따로 세면 화면이 「섰다」로 그리고 상신이 거절하는 날이 온다 — 그 자리가 실제로 있었다.
|
|
6
|
+
*
|
|
7
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
8
|
+
* ── 왜 이것을 볼 자리가 필요한가 ───────────────────────────────────────────
|
|
9
|
+
* 양식은 제품이 기동할 때 세우고 **결재선은 그 공장이 채운다.** 채운 것이 「우리는 이 단계를 쓴다」는
|
|
10
|
+
* 선언이다. 그래서 결재선이 비어 있는 것은 결함이 아니다 — 그 공장의 선택이다.
|
|
11
|
+
*
|
|
12
|
+
* 문제는 **그 선택이 어디에도 안 보인다**는 것이다. 업무 카탈로그는 「제품이 이 문을 만들었나」를
|
|
13
|
+
* 보여 주지만 「이 공장에서 이 문이 서 있나」는 말하지 않는다. 두 질문이 다른데 하나만 보인다.
|
|
14
|
+
*
|
|
15
|
+
* 실측(2026-09-11): 미라텍 도메인에 양식 11개가 다 설치돼 있고 **11개 전부 결재선이 비어 있다.**
|
|
16
|
+
* 그 공장에서는 실적 정정도 폐기도 승인 없이 바로 반영되는데, 화면에는 문이 있는 것처럼 보인다.
|
|
17
|
+
*
|
|
18
|
+
* ── 비어 있으면 그냥 통과가 아니다 ─────────────────────────────────────────
|
|
19
|
+
* 빈 결재선에서 무엇이 일어나는지는 **문마다 선언한다**(ADR-0077 결정 1, `WhenNoLine`). `run` 문은 상신이
|
|
20
|
+
* 곧 완료가 되어 올린 사람이 자기 건을 승인한 것이 되고, `refuse` 문은 올리는 것 자체가 거절된다.
|
|
21
|
+
* 「승인을 안 받는다」 한 벌로 말하면 둘 다 틀린다 — 판단은 그 선언을 그대로 싣는다.
|
|
22
|
+
*
|
|
23
|
+
* ── 기동 로그는 사실의 집이 아니다 ─────────────────────────────────────────
|
|
24
|
+
* `install-boot.ts` 가 기동할 때 한 줄 찍는다. 그 줄은 한 번 지나가고, 그 뒤로 어느 화면도 이것을
|
|
25
|
+
* 말하지 않는다. 사람이 조치해야 하는 사실은 물어볼 수 있는 자리에 있어야 한다.
|
|
26
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* 문이 두 종류다 — **축이 다르고, 비었을 때 결과도 다르다.**
|
|
30
|
+
*
|
|
31
|
+
* ```
|
|
32
|
+
* approval 누가 승인하나 결재선이 비면 문의 선언대로 — 통과해 버리거나(run) 올릴 수 없다(refuse)
|
|
33
|
+
* assignment 누가 받나 역할이 안 묶이면 배정 업무가 아무에게도 안 간다 → 아무도 안 받는다
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* 같은 `off` 인데 결과가 반대다. 한 벌 문장으로 뭉개면 관리자가 무엇을 해야 하는지 알 수 없다.
|
|
37
|
+
*/
|
|
38
|
+
import type { ApprovalLineStanding } from './approval-line-standing.js';
|
|
39
|
+
import type { WhenNoLine, WhenNoLineBecause } from './work-door-declaration.js';
|
|
40
|
+
export type DoorKind = 'approval' | 'assignment';
|
|
41
|
+
/** 문 하나가 어떤 상태인가. */
|
|
42
|
+
export type DoorStanding =
|
|
43
|
+
/** 채워졌다 — 이 공장은 이 문을 쓴다. */
|
|
44
|
+
'on'
|
|
45
|
+
/** 양식은 섰는데 비었다. **조치 대상.** */
|
|
46
|
+
| 'off'
|
|
47
|
+
/** 양식이 아예 안 섰다 — 기동이 못 세웠다. 공장의 선택이 아니라 결함이다. **조치 대상.** */
|
|
48
|
+
| 'missing'
|
|
49
|
+
/**
|
|
50
|
+
* **이 공장은 이 문을 안 쓴다** — 공장이 그렇게 말했다.
|
|
51
|
+
*
|
|
52
|
+
* 조치 대상이 아니다. 이것이 없으면 이 조사는 영원히 잔소리하는 화면이 되고, 그러면 사람들이
|
|
53
|
+
* 안 본다 — 그때 진짜 빈 문 하나가 그 잔소리에 섞여 묻힌다(아키텍트 판정 2026-09-11).
|
|
54
|
+
*
|
|
55
|
+
* **자동으로 추론하지 않는다.** 「석 달 안 썼으니 안 쓰는 것」은 조용한 한 철에 참이 된다.
|
|
56
|
+
*/
|
|
57
|
+
| 'not-used';
|
|
58
|
+
/**
|
|
59
|
+
* **왜 그 상태인가** — 상태 하나에 까닭이 여럿이고, 까닭마다 관리자가 할 일이 다르다.
|
|
60
|
+
*
|
|
61
|
+
* ```
|
|
62
|
+
* not-used 공장이 안 쓴다고 말했다
|
|
63
|
+
* missing 양식이 기동 때 안 섰다 — 기동 기록을 볼 일
|
|
64
|
+
* line-empty 결재선이 비었다 — 결재선을 채울 일
|
|
65
|
+
* role-empty 결재선이 지목한 역할에 사람이 없다 — 그 역할에 사람을 넣을 일
|
|
66
|
+
* person-absent 결재선이 지목한 사람이 이 공장에 없다 — 다른 사람을 지목할 일
|
|
67
|
+
* no-assignee 배정 문에 받을 역할이 안 묶였다
|
|
68
|
+
* line-filled 결재자가 있다
|
|
69
|
+
* assignee-bound 받을 역할이 묶였다
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* 문장이 아니라 값이다. 서버가 한국어 문장을 만들어 보내면 다른 언어 사용자가 한국어를 읽고, 화면이
|
|
73
|
+
* 그 문장을 다시 뜯어 읽게 된다 — 문장은 화면이 이 값과 번역으로 짓는다(`door-sentence.ts`).
|
|
74
|
+
*/
|
|
75
|
+
export type DoorReason = 'not-used' | 'missing' | 'line-empty' | 'role-empty' | 'person-absent' | 'no-assignee' | 'line-filled' | 'assignee-bound';
|
|
76
|
+
/** 이 문 하나에 대해 아는 것 — 사실만. 문장은 화면이 짓는다. */
|
|
77
|
+
export interface WorkDoor {
|
|
78
|
+
/** 양식 이름. 콜백을 찾는 키다. */
|
|
79
|
+
name: string;
|
|
80
|
+
/**
|
|
81
|
+
* 화면에 낼 이름의 번역 키 — **이름에서 센다**(`activityTKey`). 선언이 고르지 않는다.
|
|
82
|
+
*
|
|
83
|
+
* 선언한 키를 읽던 때 plant 가 `activity.${PascalCase}.label` 로 지어 보냈고 번역은 kebab 이라, 화면에
|
|
84
|
+
* 키 글자가 그대로 떴다(:4000, 2026-09-24). 아무도 고르지 않는 키는 아무도 틀리게 못 고른다.
|
|
85
|
+
*/
|
|
86
|
+
labelKey: string;
|
|
87
|
+
kind: DoorKind;
|
|
88
|
+
standing: DoorStanding;
|
|
89
|
+
reason: DoorReason;
|
|
90
|
+
/** 결재자 수. 안 섰거나 비었으면 0. */
|
|
91
|
+
approvers: number;
|
|
92
|
+
/**
|
|
93
|
+
* **결재선이 비면 이 문이 어떻게 하나** — 선언 그대로(ADR-0077 결정 1). 결재 문에만 있다.
|
|
94
|
+
*
|
|
95
|
+
* 빈 결재선의 결과가 문마다 다르다. `run` 은 올린 사람이 자기 건을 승인한 것이 되고, `refuse` 는
|
|
96
|
+
* 올리는 것 자체가 거절된다. 한 벌 문장으로 뭉개면 거절하는 문에 「자기 건을 승인한다」가 적힌다 —
|
|
97
|
+
* 실제로 그랬다(:4000, 개정 결재 넷, 2026-09-24).
|
|
98
|
+
*/
|
|
99
|
+
whenNoLine?: WhenNoLine;
|
|
100
|
+
/** `refuse` · `as-established` 문이 결재를 요구하는 까닭. */
|
|
101
|
+
whenNoLineBecause?: WhenNoLineBecause;
|
|
102
|
+
/** 다른 문의 결재선을 따르면 그 문의 이름 번역 키. 결재선은 그 문에서 정한다. */
|
|
103
|
+
followsLabelKey?: string;
|
|
104
|
+
/** 배정 문에 묶인 역할 이름. */
|
|
105
|
+
assigneeRoles?: string[];
|
|
106
|
+
/** 공장이 「안 쓴다」고 적은 사유 — 사람이 쓴 글이라 번역하지 않고 그대로 보인다. */
|
|
107
|
+
notUsedBecause?: string;
|
|
108
|
+
/**
|
|
109
|
+
* **남의 도메인에서 빌려 온 양식일 때만** 그 도메인의 이름.
|
|
110
|
+
*
|
|
111
|
+
* 본사에서 정하고 공장이 쓰는 것이 정상이라, 자기 것이 없으면 부모 것을 쓴다
|
|
112
|
+
* (`activityNamedIn`). 그 사실을 안 말하면 「우리가 정한 적 없는데 왜 서 있나」가 된다.
|
|
113
|
+
*
|
|
114
|
+
* ⚠ 자기 도메인이면 **없다.** 자기 이름을 채우면 화면이 모든 줄에 「miratek 에서 정했습니다」를
|
|
115
|
+
* 달고, 그 말은 아무것도 알려 주지 않는다 — 실제로 그랬다(2026-09-12, 화면으로 보고 알았다).
|
|
116
|
+
*/
|
|
117
|
+
from?: string;
|
|
118
|
+
}
|
|
119
|
+
/** 한 문에 대해 읽은 것. 엔티티를 통째로 받지 않는다 — 그러면 이 판단이 DB 를 끌고 온다. */
|
|
120
|
+
export interface DoorReading {
|
|
121
|
+
name: string;
|
|
122
|
+
kind: DoorKind;
|
|
123
|
+
/** 결재 문의 선언 — 빈 결재선에서 어떻게 하나와 그 까닭. */
|
|
124
|
+
whenNoLine?: WhenNoLine;
|
|
125
|
+
whenNoLineBecause?: WhenNoLineBecause;
|
|
126
|
+
/**
|
|
127
|
+
* 그 도메인(또는 부모)에 선 양식. 못 찾았으면 없다.
|
|
128
|
+
*
|
|
129
|
+
* 채워졌나를 보는 칸이 종류마다 다르다 — 결재는 `approvalLine`, 배정은 `assigneeRoles`(역할 이름들)이다.
|
|
130
|
+
* `borrowedFrom` 은 **다른 도메인의 양식일 때만** 채운다. 자기 것이면 비운다 — 읽는 쪽이
|
|
131
|
+
* 「빌려 왔나」를 이 칸 하나로 판단한다.
|
|
132
|
+
*/
|
|
133
|
+
installed?: {
|
|
134
|
+
approvalLine?: unknown[];
|
|
135
|
+
assigneeRoles?: string[];
|
|
136
|
+
borrowedFrom?: string;
|
|
137
|
+
};
|
|
138
|
+
/** 공장이 「안 쓴다」고 말했으면 그 사유. 말한 적 없으면 없다. */
|
|
139
|
+
notUsedBecause?: string;
|
|
140
|
+
/**
|
|
141
|
+
* **다른 문의 결재선을 따르면** 그 문의 양식 이름. 그러면 `approvalStanding` 도 그 문의 것이다 —
|
|
142
|
+
* 이 문에서 결재선을 고치러 가면 안 되고 그 문으로 가야 한다는 것을 화면이 말한다.
|
|
143
|
+
*/
|
|
144
|
+
follows?: string;
|
|
145
|
+
/**
|
|
146
|
+
* 결재선이 찼나 — **상신하는 쪽과 같은 함수**(`judgeApprovalLine`)가 낸 결과를 그대로 받는다.
|
|
147
|
+
*
|
|
148
|
+
* 여기서 다시 세지 않는다. 역할에 사람이 있는지는 DB 를 읽어야 알고, 이 판단은 DB 를 모른다.
|
|
149
|
+
* 없으면 「못 읽었다」로 읽는다 — 「안 읽었다」가 「다 찼다」로 새면 도로 줄 수 세기가 된다.
|
|
150
|
+
*/
|
|
151
|
+
approvalStanding?: ApprovalLineStanding;
|
|
152
|
+
}
|
|
153
|
+
export declare function judgeDoor(reading: DoorReading): WorkDoor;
|
|
154
|
+
/**
|
|
155
|
+
* 아직 채울 것이 몇 개인가 — **안 쓰기로 한 것은 안 센다.**
|
|
156
|
+
*
|
|
157
|
+
* 그래야 0 이 「다 됐다」를 뜻한다. 안 쓰는 것을 남은 수에 넣으면 다 채운 공장에서도 수가 안 줄고,
|
|
158
|
+
* 그 화면은 잔소리가 된다(아키텍트 판정 2026-09-11).
|
|
159
|
+
*/
|
|
160
|
+
export declare function doorsToFill(doors: readonly WorkDoor[]): number;
|
|
161
|
+
/**
|
|
162
|
+
* 상태별 수 — **문장은 화면이 짓는다.**
|
|
163
|
+
*
|
|
164
|
+
* 목록만 내면 읽는 사람이 열두 줄을 세어야 해서 한 문장으로 요약한다. 그 문장을 서버가 한국어로
|
|
165
|
+
* 지어 보내면 다른 언어 사용자가 한국어를 읽는다 — 그래서 수만 보낸다.
|
|
166
|
+
*/
|
|
167
|
+
export declare function countDoors(doors: readonly WorkDoor[]): {
|
|
168
|
+
on: number;
|
|
169
|
+
off: number;
|
|
170
|
+
missing: number;
|
|
171
|
+
notUsed: number;
|
|
172
|
+
};
|
|
173
|
+
/** The not-used declaration's content columns: which door and why. */
|
|
174
|
+
export declare const WORK_DOOR_NOT_USED_CONTENT: readonly ["doorName", "because"];
|
|
175
|
+
/** The declaration as it was — its content, who declared it, and when — written when it is withdrawn. */
|
|
176
|
+
export declare function workDoorNotUsedBefore(declaration: {
|
|
177
|
+
doorName: string;
|
|
178
|
+
because: string;
|
|
179
|
+
declaredBy?: {
|
|
180
|
+
email?: string;
|
|
181
|
+
name?: string;
|
|
182
|
+
} | null;
|
|
183
|
+
createdAt?: Date | null;
|
|
184
|
+
}): {
|
|
185
|
+
declaredBy: string;
|
|
186
|
+
declaredAt: Date;
|
|
187
|
+
};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 이 공장에서 **어느 결재 문이 서 있나** — 순수 판단, DB 를 모른다.
|
|
4
|
+
*
|
|
5
|
+
* 결재선이 찼나를 세는 규칙은 상신하는 쪽과 **같은 함수**를 쓴다(§`approval-line-standing`). 여기서
|
|
6
|
+
* 따로 세면 화면이 「섰다」로 그리고 상신이 거절하는 날이 온다 — 그 자리가 실제로 있었다.
|
|
7
|
+
*
|
|
8
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
9
|
+
* ── 왜 이것을 볼 자리가 필요한가 ───────────────────────────────────────────
|
|
10
|
+
* 양식은 제품이 기동할 때 세우고 **결재선은 그 공장이 채운다.** 채운 것이 「우리는 이 단계를 쓴다」는
|
|
11
|
+
* 선언이다. 그래서 결재선이 비어 있는 것은 결함이 아니다 — 그 공장의 선택이다.
|
|
12
|
+
*
|
|
13
|
+
* 문제는 **그 선택이 어디에도 안 보인다**는 것이다. 업무 카탈로그는 「제품이 이 문을 만들었나」를
|
|
14
|
+
* 보여 주지만 「이 공장에서 이 문이 서 있나」는 말하지 않는다. 두 질문이 다른데 하나만 보인다.
|
|
15
|
+
*
|
|
16
|
+
* 실측(2026-09-11): 미라텍 도메인에 양식 11개가 다 설치돼 있고 **11개 전부 결재선이 비어 있다.**
|
|
17
|
+
* 그 공장에서는 실적 정정도 폐기도 승인 없이 바로 반영되는데, 화면에는 문이 있는 것처럼 보인다.
|
|
18
|
+
*
|
|
19
|
+
* ── 비어 있으면 그냥 통과가 아니다 ─────────────────────────────────────────
|
|
20
|
+
* 빈 결재선에서 무엇이 일어나는지는 **문마다 선언한다**(ADR-0077 결정 1, `WhenNoLine`). `run` 문은 상신이
|
|
21
|
+
* 곧 완료가 되어 올린 사람이 자기 건을 승인한 것이 되고, `refuse` 문은 올리는 것 자체가 거절된다.
|
|
22
|
+
* 「승인을 안 받는다」 한 벌로 말하면 둘 다 틀린다 — 판단은 그 선언을 그대로 싣는다.
|
|
23
|
+
*
|
|
24
|
+
* ── 기동 로그는 사실의 집이 아니다 ─────────────────────────────────────────
|
|
25
|
+
* `install-boot.ts` 가 기동할 때 한 줄 찍는다. 그 줄은 한 번 지나가고, 그 뒤로 어느 화면도 이것을
|
|
26
|
+
* 말하지 않는다. 사람이 조치해야 하는 사실은 물어볼 수 있는 자리에 있어야 한다.
|
|
27
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
28
|
+
*/
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.WORK_DOOR_NOT_USED_CONTENT = void 0;
|
|
31
|
+
exports.judgeDoor = judgeDoor;
|
|
32
|
+
exports.doorsToFill = doorsToFill;
|
|
33
|
+
exports.countDoors = countDoors;
|
|
34
|
+
exports.workDoorNotUsedBefore = workDoorNotUsedBefore;
|
|
35
|
+
const decision_key_declaration_js_1 = require("../activity/decision-key-declaration.js");
|
|
36
|
+
function judgeDoor(reading) {
|
|
37
|
+
const { name, kind, installed, notUsedBecause, follows } = reading;
|
|
38
|
+
const approval = kind === 'approval';
|
|
39
|
+
const known = {
|
|
40
|
+
name,
|
|
41
|
+
labelKey: (0, decision_key_declaration_js_1.activityTKey)(name, 'label'),
|
|
42
|
+
kind,
|
|
43
|
+
standing: 'off',
|
|
44
|
+
reason: 'line-empty',
|
|
45
|
+
approvers: 0,
|
|
46
|
+
...(approval && reading.whenNoLine ? { whenNoLine: reading.whenNoLine } : {}),
|
|
47
|
+
...(approval && reading.whenNoLineBecause ? { whenNoLineBecause: reading.whenNoLineBecause } : {}),
|
|
48
|
+
...(follows ? { followsLabelKey: (0, decision_key_declaration_js_1.activityTKey)(follows, 'label') } : {})
|
|
49
|
+
};
|
|
50
|
+
/*
|
|
51
|
+
* **공장이 안 쓴다고 말한 것이 먼저다.** 뒤에 두면 양식이 안 선 문을 「결함」으로 먼저 그리고,
|
|
52
|
+
* 안 쓰기로 한 공장이 고치라는 말을 계속 듣는다.
|
|
53
|
+
*/
|
|
54
|
+
if (notUsedBecause) {
|
|
55
|
+
return { ...known, standing: 'not-used', reason: 'not-used', notUsedBecause };
|
|
56
|
+
}
|
|
57
|
+
if (!installed) {
|
|
58
|
+
return { ...known, standing: 'missing', reason: 'missing' };
|
|
59
|
+
}
|
|
60
|
+
const from = installed.borrowedFrom ? { from: installed.borrowedFrom } : {};
|
|
61
|
+
if (!approval) {
|
|
62
|
+
return installed.assigneeRoles?.length
|
|
63
|
+
? { ...known, ...from, standing: 'on', reason: 'assignee-bound', approvers: 1, assigneeRoles: installed.assigneeRoles }
|
|
64
|
+
: { ...known, ...from, standing: 'off', reason: 'no-assignee' };
|
|
65
|
+
}
|
|
66
|
+
/*
|
|
67
|
+
* 결재 문은 **줄 수가 아니라 그 줄에 사람이 있는지**로 센다. 역할을 지목해 놓고 그 역할이 빈
|
|
68
|
+
* 결재선은 화면에 「섰다」로 그려지고 상신하는 순간 터진다(ADR-0047 ③).
|
|
69
|
+
*/
|
|
70
|
+
const line = reading.approvalStanding;
|
|
71
|
+
const filled = line && !line.refusal ? line.approvers : 0;
|
|
72
|
+
if (filled) {
|
|
73
|
+
return { ...known, ...from, standing: 'on', reason: 'line-filled', approvers: filled };
|
|
74
|
+
}
|
|
75
|
+
/*
|
|
76
|
+
* **관리자가 할 일이 다르다.** 결재선을 정하는 것과 그 역할에 사람을 넣는 것은 다른 일이고,
|
|
77
|
+
* 뒤엣것을 앞엣것으로 말하면 이미 정해 둔 결재선을 다시 들여다보게 만든다.
|
|
78
|
+
*/
|
|
79
|
+
const reason = line?.refusal?.code === 'approval-role-empty'
|
|
80
|
+
? 'role-empty'
|
|
81
|
+
: line?.refusal?.code === 'approval-person-absent'
|
|
82
|
+
? 'person-absent'
|
|
83
|
+
: 'line-empty';
|
|
84
|
+
return { ...known, ...from, standing: 'off', reason };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 아직 채울 것이 몇 개인가 — **안 쓰기로 한 것은 안 센다.**
|
|
88
|
+
*
|
|
89
|
+
* 그래야 0 이 「다 됐다」를 뜻한다. 안 쓰는 것을 남은 수에 넣으면 다 채운 공장에서도 수가 안 줄고,
|
|
90
|
+
* 그 화면은 잔소리가 된다(아키텍트 판정 2026-09-11).
|
|
91
|
+
*/
|
|
92
|
+
function doorsToFill(doors) {
|
|
93
|
+
return doors.filter(one => one.standing === 'off' || one.standing === 'missing').length;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 상태별 수 — **문장은 화면이 짓는다.**
|
|
97
|
+
*
|
|
98
|
+
* 목록만 내면 읽는 사람이 열두 줄을 세어야 해서 한 문장으로 요약한다. 그 문장을 서버가 한국어로
|
|
99
|
+
* 지어 보내면 다른 언어 사용자가 한국어를 읽는다 — 그래서 수만 보낸다.
|
|
100
|
+
*/
|
|
101
|
+
function countDoors(doors) {
|
|
102
|
+
return {
|
|
103
|
+
on: doors.filter(one => one.standing === 'on').length,
|
|
104
|
+
off: doors.filter(one => one.standing === 'off').length,
|
|
105
|
+
missing: doors.filter(one => one.standing === 'missing').length,
|
|
106
|
+
notUsed: doors.filter(one => one.standing === 'not-used').length
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/** The not-used declaration's content columns: which door and why. */
|
|
110
|
+
exports.WORK_DOOR_NOT_USED_CONTENT = ['doorName', 'because'];
|
|
111
|
+
/** The declaration as it was — its content, who declared it, and when — written when it is withdrawn. */
|
|
112
|
+
function workDoorNotUsedBefore(declaration) {
|
|
113
|
+
return {
|
|
114
|
+
...Object.fromEntries(exports.WORK_DOOR_NOT_USED_CONTENT.map(column => [column, declaration[column] ?? null])),
|
|
115
|
+
declaredBy: declaration.declaredBy?.email ?? declaration.declaredBy?.name ?? null,
|
|
116
|
+
declaredAt: declaration.createdAt ?? null
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=work-door.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-door.js","sourceRoot":"","sources":["../../../server/service/work-door/work-door.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 이 공장에서 **어느 결재 문이 서 있나** — 순수 판단, DB 를 모른다.\n *\n * 결재선이 찼나를 세는 규칙은 상신하는 쪽과 **같은 함수**를 쓴다(§`approval-line-standing`). 여기서\n * 따로 세면 화면이 「섰다」로 그리고 상신이 거절하는 날이 온다 — 그 자리가 실제로 있었다.\n *\n * ═══════════════════════════════════════════════════════════════════════════\n * ── 왜 이것을 볼 자리가 필요한가 ───────────────────────────────────────────\n * 양식은 제품이 기동할 때 세우고 **결재선은 그 공장이 채운다.** 채운 것이 「우리는 이 단계를 쓴다」는\n * 선언이다. 그래서 결재선이 비어 있는 것은 결함이 아니다 — 그 공장의 선택이다.\n *\n * 문제는 **그 선택이 어디에도 안 보인다**는 것이다. 업무 카탈로그는 「제품이 이 문을 만들었나」를\n * 보여 주지만 「이 공장에서 이 문이 서 있나」는 말하지 않는다. 두 질문이 다른데 하나만 보인다.\n *\n * 실측(2026-09-11): 미라텍 도메인에 양식 11개가 다 설치돼 있고 **11개 전부 결재선이 비어 있다.**\n * 그 공장에서는 실적 정정도 폐기도 승인 없이 바로 반영되는데, 화면에는 문이 있는 것처럼 보인다.\n *\n * ── 비어 있으면 그냥 통과가 아니다 ─────────────────────────────────────────\n * 빈 결재선에서 무엇이 일어나는지는 **문마다 선언한다**(ADR-0077 결정 1, `WhenNoLine`). `run` 문은 상신이\n * 곧 완료가 되어 올린 사람이 자기 건을 승인한 것이 되고, `refuse` 문은 올리는 것 자체가 거절된다.\n * 「승인을 안 받는다」 한 벌로 말하면 둘 다 틀린다 — 판단은 그 선언을 그대로 싣는다.\n *\n * ── 기동 로그는 사실의 집이 아니다 ─────────────────────────────────────────\n * `install-boot.ts` 가 기동할 때 한 줄 찍는다. 그 줄은 한 번 지나가고, 그 뒤로 어느 화면도 이것을\n * 말하지 않는다. 사람이 조치해야 하는 사실은 물어볼 수 있는 자리에 있어야 한다.\n * ═══════════════════════════════════════════════════════════════════════════\n */\n\n/**\n * 문이 두 종류다 — **축이 다르고, 비었을 때 결과도 다르다.**\n *\n * ```\n * approval 누가 승인하나 결재선이 비면 문의 선언대로 — 통과해 버리거나(run) 올릴 수 없다(refuse)\n * assignment 누가 받나 역할이 안 묶이면 배정 업무가 아무에게도 안 간다 → 아무도 안 받는다\n * ```\n *\n * 같은 `off` 인데 결과가 반대다. 한 벌 문장으로 뭉개면 관리자가 무엇을 해야 하는지 알 수 없다.\n */\nimport type { ApprovalLineStanding } from './approval-line-standing.js'\nimport { activityTKey } from '../activity/decision-key-declaration.js'\nimport type { WhenNoLine, WhenNoLineBecause } from './work-door-declaration.js'\n\nexport type DoorKind = 'approval' | 'assignment'\n\n/** 문 하나가 어떤 상태인가. */\nexport type DoorStanding =\n /** 채워졌다 — 이 공장은 이 문을 쓴다. */\n | 'on'\n /** 양식은 섰는데 비었다. **조치 대상.** */\n | 'off'\n /** 양식이 아예 안 섰다 — 기동이 못 세웠다. 공장의 선택이 아니라 결함이다. **조치 대상.** */\n | 'missing'\n /**\n * **이 공장은 이 문을 안 쓴다** — 공장이 그렇게 말했다.\n *\n * 조치 대상이 아니다. 이것이 없으면 이 조사는 영원히 잔소리하는 화면이 되고, 그러면 사람들이\n * 안 본다 — 그때 진짜 빈 문 하나가 그 잔소리에 섞여 묻힌다(아키텍트 판정 2026-09-11).\n *\n * **자동으로 추론하지 않는다.** 「석 달 안 썼으니 안 쓰는 것」은 조용한 한 철에 참이 된다.\n */\n | 'not-used'\n\n/**\n * **왜 그 상태인가** — 상태 하나에 까닭이 여럿이고, 까닭마다 관리자가 할 일이 다르다.\n *\n * ```\n * not-used 공장이 안 쓴다고 말했다\n * missing 양식이 기동 때 안 섰다 — 기동 기록을 볼 일\n * line-empty 결재선이 비었다 — 결재선을 채울 일\n * role-empty 결재선이 지목한 역할에 사람이 없다 — 그 역할에 사람을 넣을 일\n * person-absent 결재선이 지목한 사람이 이 공장에 없다 — 다른 사람을 지목할 일\n * no-assignee 배정 문에 받을 역할이 안 묶였다\n * line-filled 결재자가 있다\n * assignee-bound 받을 역할이 묶였다\n * ```\n *\n * 문장이 아니라 값이다. 서버가 한국어 문장을 만들어 보내면 다른 언어 사용자가 한국어를 읽고, 화면이\n * 그 문장을 다시 뜯어 읽게 된다 — 문장은 화면이 이 값과 번역으로 짓는다(`door-sentence.ts`).\n */\nexport type DoorReason =\n | 'not-used'\n | 'missing'\n | 'line-empty'\n | 'role-empty'\n | 'person-absent'\n | 'no-assignee'\n | 'line-filled'\n | 'assignee-bound'\n\n/** 이 문 하나에 대해 아는 것 — 사실만. 문장은 화면이 짓는다. */\nexport interface WorkDoor {\n /** 양식 이름. 콜백을 찾는 키다. */\n name: string\n /**\n * 화면에 낼 이름의 번역 키 — **이름에서 센다**(`activityTKey`). 선언이 고르지 않는다.\n *\n * 선언한 키를 읽던 때 plant 가 `activity.${PascalCase}.label` 로 지어 보냈고 번역은 kebab 이라, 화면에\n * 키 글자가 그대로 떴다(:4000, 2026-09-24). 아무도 고르지 않는 키는 아무도 틀리게 못 고른다.\n */\n labelKey: string\n kind: DoorKind\n standing: DoorStanding\n reason: DoorReason\n /** 결재자 수. 안 섰거나 비었으면 0. */\n approvers: number\n /**\n * **결재선이 비면 이 문이 어떻게 하나** — 선언 그대로(ADR-0077 결정 1). 결재 문에만 있다.\n *\n * 빈 결재선의 결과가 문마다 다르다. `run` 은 올린 사람이 자기 건을 승인한 것이 되고, `refuse` 는\n * 올리는 것 자체가 거절된다. 한 벌 문장으로 뭉개면 거절하는 문에 「자기 건을 승인한다」가 적힌다 —\n * 실제로 그랬다(:4000, 개정 결재 넷, 2026-09-24).\n */\n whenNoLine?: WhenNoLine\n /** `refuse` · `as-established` 문이 결재를 요구하는 까닭. */\n whenNoLineBecause?: WhenNoLineBecause\n /** 다른 문의 결재선을 따르면 그 문의 이름 번역 키. 결재선은 그 문에서 정한다. */\n followsLabelKey?: string\n /** 배정 문에 묶인 역할 이름. */\n assigneeRoles?: string[]\n /** 공장이 「안 쓴다」고 적은 사유 — 사람이 쓴 글이라 번역하지 않고 그대로 보인다. */\n notUsedBecause?: string\n /**\n * **남의 도메인에서 빌려 온 양식일 때만** 그 도메인의 이름.\n *\n * 본사에서 정하고 공장이 쓰는 것이 정상이라, 자기 것이 없으면 부모 것을 쓴다\n * (`activityNamedIn`). 그 사실을 안 말하면 「우리가 정한 적 없는데 왜 서 있나」가 된다.\n *\n * ⚠ 자기 도메인이면 **없다.** 자기 이름을 채우면 화면이 모든 줄에 「miratek 에서 정했습니다」를\n * 달고, 그 말은 아무것도 알려 주지 않는다 — 실제로 그랬다(2026-09-12, 화면으로 보고 알았다).\n */\n from?: string\n}\n\n/** 한 문에 대해 읽은 것. 엔티티를 통째로 받지 않는다 — 그러면 이 판단이 DB 를 끌고 온다. */\nexport interface DoorReading {\n name: string\n kind: DoorKind\n /** 결재 문의 선언 — 빈 결재선에서 어떻게 하나와 그 까닭. */\n whenNoLine?: WhenNoLine\n whenNoLineBecause?: WhenNoLineBecause\n /**\n * 그 도메인(또는 부모)에 선 양식. 못 찾았으면 없다.\n *\n * 채워졌나를 보는 칸이 종류마다 다르다 — 결재는 `approvalLine`, 배정은 `assigneeRoles`(역할 이름들)이다.\n * `borrowedFrom` 은 **다른 도메인의 양식일 때만** 채운다. 자기 것이면 비운다 — 읽는 쪽이\n * 「빌려 왔나」를 이 칸 하나로 판단한다.\n */\n installed?: { approvalLine?: unknown[]; assigneeRoles?: string[]; borrowedFrom?: string }\n /** 공장이 「안 쓴다」고 말했으면 그 사유. 말한 적 없으면 없다. */\n notUsedBecause?: string\n /**\n * **다른 문의 결재선을 따르면** 그 문의 양식 이름. 그러면 `approvalStanding` 도 그 문의 것이다 —\n * 이 문에서 결재선을 고치러 가면 안 되고 그 문으로 가야 한다는 것을 화면이 말한다.\n */\n follows?: string\n /**\n * 결재선이 찼나 — **상신하는 쪽과 같은 함수**(`judgeApprovalLine`)가 낸 결과를 그대로 받는다.\n *\n * 여기서 다시 세지 않는다. 역할에 사람이 있는지는 DB 를 읽어야 알고, 이 판단은 DB 를 모른다.\n * 없으면 「못 읽었다」로 읽는다 — 「안 읽었다」가 「다 찼다」로 새면 도로 줄 수 세기가 된다.\n */\n approvalStanding?: ApprovalLineStanding\n}\n\nexport function judgeDoor(reading: DoorReading): WorkDoor {\n const { name, kind, installed, notUsedBecause, follows } = reading\n const approval = kind === 'approval'\n const known: WorkDoor = {\n name,\n labelKey: activityTKey(name, 'label'),\n kind,\n standing: 'off',\n reason: 'line-empty',\n approvers: 0,\n ...(approval && reading.whenNoLine ? { whenNoLine: reading.whenNoLine } : {}),\n ...(approval && reading.whenNoLineBecause ? { whenNoLineBecause: reading.whenNoLineBecause } : {}),\n ...(follows ? { followsLabelKey: activityTKey(follows, 'label') } : {})\n }\n\n /*\n * **공장이 안 쓴다고 말한 것이 먼저다.** 뒤에 두면 양식이 안 선 문을 「결함」으로 먼저 그리고,\n * 안 쓰기로 한 공장이 고치라는 말을 계속 듣는다.\n */\n if (notUsedBecause) {\n return { ...known, standing: 'not-used', reason: 'not-used', notUsedBecause }\n }\n\n if (!installed) {\n return { ...known, standing: 'missing', reason: 'missing' }\n }\n\n const from = installed.borrowedFrom ? { from: installed.borrowedFrom } : {}\n\n if (!approval) {\n return installed.assigneeRoles?.length\n ? { ...known, ...from, standing: 'on', reason: 'assignee-bound', approvers: 1, assigneeRoles: installed.assigneeRoles }\n : { ...known, ...from, standing: 'off', reason: 'no-assignee' }\n }\n\n /*\n * 결재 문은 **줄 수가 아니라 그 줄에 사람이 있는지**로 센다. 역할을 지목해 놓고 그 역할이 빈\n * 결재선은 화면에 「섰다」로 그려지고 상신하는 순간 터진다(ADR-0047 ③).\n */\n const line = reading.approvalStanding\n const filled = line && !line.refusal ? line.approvers : 0\n\n if (filled) {\n return { ...known, ...from, standing: 'on', reason: 'line-filled', approvers: filled }\n }\n\n /*\n * **관리자가 할 일이 다르다.** 결재선을 정하는 것과 그 역할에 사람을 넣는 것은 다른 일이고,\n * 뒤엣것을 앞엣것으로 말하면 이미 정해 둔 결재선을 다시 들여다보게 만든다.\n */\n const reason: DoorReason =\n line?.refusal?.code === 'approval-role-empty'\n ? 'role-empty'\n : line?.refusal?.code === 'approval-person-absent'\n ? 'person-absent'\n : 'line-empty'\n\n return { ...known, ...from, standing: 'off', reason }\n}\n\n/**\n * 아직 채울 것이 몇 개인가 — **안 쓰기로 한 것은 안 센다.**\n *\n * 그래야 0 이 「다 됐다」를 뜻한다. 안 쓰는 것을 남은 수에 넣으면 다 채운 공장에서도 수가 안 줄고,\n * 그 화면은 잔소리가 된다(아키텍트 판정 2026-09-11).\n */\nexport function doorsToFill(doors: readonly WorkDoor[]): number {\n return doors.filter(one => one.standing === 'off' || one.standing === 'missing').length\n}\n\n/**\n * 상태별 수 — **문장은 화면이 짓는다.**\n *\n * 목록만 내면 읽는 사람이 열두 줄을 세어야 해서 한 문장으로 요약한다. 그 문장을 서버가 한국어로\n * 지어 보내면 다른 언어 사용자가 한국어를 읽는다 — 그래서 수만 보낸다.\n */\nexport function countDoors(doors: readonly WorkDoor[]): { on: number; off: number; missing: number; notUsed: number } {\n return {\n on: doors.filter(one => one.standing === 'on').length,\n off: doors.filter(one => one.standing === 'off').length,\n missing: doors.filter(one => one.standing === 'missing').length,\n notUsed: doors.filter(one => one.standing === 'not-used').length\n }\n}\n\n/** The not-used declaration's content columns: which door and why. */\nexport const WORK_DOOR_NOT_USED_CONTENT = ['doorName', 'because'] as const\n\n/** The declaration as it was — its content, who declared it, and when — written when it is withdrawn. */\nexport function workDoorNotUsedBefore(declaration: {\n doorName: string\n because: string\n declaredBy?: { email?: string; name?: string } | null\n createdAt?: Date | null\n}) {\n return {\n ...Object.fromEntries(WORK_DOOR_NOT_USED_CONTENT.map(column => [column, declaration[column] ?? null])),\n declaredBy: declaration.declaredBy?.email ?? declaration.declaredBy?.name ?? null,\n declaredAt: declaration.createdAt ?? null\n }\n}\n"]}
|