@acorex-platform/module-maintenance-management-client 0.0.70 → 1.0.2
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/fesm2022/{acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-DzBAGvuZ.mjs → acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-C3cGlFKd.mjs} +118 -43
- package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-C3cGlFKd.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-plan.mjs +26 -3
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-plan.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-work-order.mjs +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-work-order.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-Dgu63wyv.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-B3VyUXZS.mjs} +27 -27
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-Dgu63wyv.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-B3VyUXZS.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-CePSpBHM.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-CsYZTxT_.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-CePSpBHM.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-CsYZTxT_.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-Bfvk4GcQ.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-Bh5dBgpo.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-Bfvk4GcQ.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-Bh5dBgpo.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-Jy3BDuNN.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-DvO6Fzyy.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-Jy3BDuNN.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-DvO6Fzyy.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-CCgWn686.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-PdvjV4lk.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-CCgWn686.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-PdvjV4lk.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-r_GaKV4C.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-BV-O5oRI.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-r_GaKV4C.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-BV-O5oRI.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-BC8cmP-E.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-GqFBuuiR.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-BC8cmP-E.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-GqFBuuiR.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-DkyVyX8d.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-CiqHDstL.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-DkyVyX8d.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-CiqHDstL.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-WxiHq42o.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-TcC_1stz.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-WxiHq42o.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-TcC_1stz.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-B1yGBbFQ.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-q2O4YHPk.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-B1yGBbFQ.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-q2O4YHPk.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-Bquvs5zg.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-CeyOYGAL.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-Bquvs5zg.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-CeyOYGAL.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-DU4i03Hi.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-CDWqPcEx.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-DU4i03Hi.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-CDWqPcEx.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-DvO7KoEq.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-6GS66uos.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-DvO7KoEq.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-6GS66uos.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-DK702y8j.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-BDsiwqyj.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-DK702y8j.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-BDsiwqyj.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-Dua1ufeE.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-DYX8gBDO.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-Dua1ufeE.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-DYX8gBDO.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-Cs-SLfHm.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-DWKPDUB7.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-Cs-SLfHm.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-DWKPDUB7.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-C-vkhC0g.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-wHk-6VCb.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-C-vkhC0g.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-wHk-6VCb.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-DEcLe9MD.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-tTg4D_-N.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-DEcLe9MD.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-tTg4D_-N.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-R0UVSWKi.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-BwsjdQur.mjs} +28 -5
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-BwsjdQur.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-C3KERG4U.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-CCx9h8Gq.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-C3KERG4U.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-CCx9h8Gq.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-EXXJjDYH.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-BlfNXvBw.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-EXXJjDYH.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-BlfNXvBw.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-CrMPuOD8.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-2lGT7_Xi.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-CrMPuOD8.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-2lGT7_Xi.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-Bn2DAaNN.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-bJKzxAis.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-Bn2DAaNN.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-bJKzxAis.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-DS8_oRB7.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-j2eyDg9O.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-DS8_oRB7.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-j2eyDg9O.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-DS1RPQ-I.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-DFJdx9Km.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-DS1RPQ-I.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-DFJdx9Km.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-BUMsgLTC.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-DM60G8nP.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-BUMsgLTC.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-DM60G8nP.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-V0CqICBq.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-DOvNijen.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-V0CqICBq.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-DOvNijen.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts.mjs +475 -3
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BWN_yXC0.mjs → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-C-K8mD4N.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BWN_yXC0.mjs.map → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-C-K8mD4N.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-6MzY-uB0.mjs → acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-b8sTwXxe.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-6MzY-uB0.mjs.map → acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-b8sTwXxe.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-C6rDOolF.mjs +596 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-C6rDOolF.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-v1gioM7S.mjs → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-StzIetk8.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-v1gioM7S.mjs.map → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-StzIetk8.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-sign-off-work-order.command-Ca8WbM3R.mjs +217 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-sign-off-work-order.command-Ca8WbM3R.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow-id.util-CuUi8LBT.mjs +123 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow-id.util-CuUi8LBT.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CW_9ROmv.mjs → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CNau6u4p.mjs} +263 -35
- package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CNau6u4p.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-BTaGzrEt.mjs → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DDJHrYkP.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-BTaGzrEt.mjs.map → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DDJHrYkP.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BtDv8ueZ.mjs → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DcBxsEci.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BtDv8ueZ.mjs.map → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DcBxsEci.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client.mjs +1 -1
- package/i18n/en-AU/maintenance-management.json +52 -5
- package/i18n/en-US/maintenance-management.json +52 -5
- package/i18n/fa-IR/maintenance-management.json +52 -5
- package/package.json +3 -2
- package/types/acorex-platform-module-maintenance-management-client-contracts.d.ts +153 -2
- package/types/acorex-platform-module-maintenance-management-client.d.ts +3 -2
- package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-DzBAGvuZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-R0UVSWKi.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CW_9ROmv.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-maintenance-management-client-contracts.mjs","sources":["../../../../libs/modules/maintenance-management/contracts/src/catalog-scope.keys.ts","../../../../libs/modules/maintenance-management/contracts/src/commands.keys.ts","../../../../libs/modules/maintenance-management/contracts/src/features.keys.ts","../../../../libs/modules/maintenance-management/contracts/src/menu.keys.ts","../../../../libs/modules/maintenance-management/contracts/src/permission.keys.ts","../../../../libs/modules/maintenance-management/contracts/src/work-order.status.ts","../../../../libs/modules/maintenance-management/contracts/src/work-order.source-type.ts","../../../../libs/modules/maintenance-management/contracts/src/failure-register.status.ts","../../../../libs/modules/maintenance-management/contracts/src/maintenance-interval.config.ts","../../../../libs/modules/maintenance-management/contracts/src/root-config.ts","../../../../libs/modules/maintenance-management/contracts/src/manifest.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/activity-type/activity-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/activity-type-asset-type/activity-type-asset-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/activity-type-resource/activity-type-resource.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-cause/failure-cause.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-detection/failure-detection.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-effect/failure-effect.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-mechanism/failure-mechanism.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-mode/failure-mode.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-mode-asset-type/failure-mode-asset-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-mode-mechanism/failure-mode-mechanism.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-mode-solution/failure-mode-solution.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-register/failure-register.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-register-cause/failure-register-cause.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-register-effect/failure-register-effect.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-register-mechanism/failure-register-mechanism.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-severity/failure-severity.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-type/failure-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-plan/maintenance-plan.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-template/maintenance-template.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-template-activity-type/maintenance-template-activity-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-template-failure-mode/maintenance-template-failure-mode.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-template-resource/maintenance-template-resource.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-type/maintenance-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/work-report/work-report.types.ts","../../../../libs/modules/maintenance-management/contracts/src/index.ts","../../../../libs/modules/maintenance-management/contracts/src/acorex-platform-module-maintenance-management-client-contracts.ts"],"sourcesContent":["/** Maintenance catalog scope for questionnaires, question bank items, and workflow definitions. */\nexport const MM_CATALOG_SCOPE_MN = 'maintenance-management.mn';\n","//#region ---- Command keys ----\n\nexport const AXMMaintenanceManagementCommandKeys = {\n WorkOrder: {\n StartFlow: 'MaintenanceManagement.WorkOrder:StartFlow',\n },\n WorkReport: {\n FillCompletion: 'MaintenanceManagement.WorkReport:FillCompletion',\n OpenFromWorkOrder: 'MaintenanceManagement.WorkReport:OpenFromWorkOrder',\n },\n MaintenanceIntervalCheck: 'MaintenanceManagement:MaintenanceInterval:Check',\n WorkflowActivity: {\n ResolveWorkOrder: 'workflow-activity:resolve-work-order',\n ResolvePersonUserId: 'workflow-activity:resolve-person-user-id',\n CreateWorkOrderFromPlan: 'workflow-activity:create-work-order-from-plan',\n CreateOrGetWorkReportDraft: 'workflow-activity:create-or-get-work-report-draft',\n UpdateWorkOrderInProgress: 'workflow-activity:update-work-order-in-progress',\n ValidateWorkOrderCompletion: 'workflow-activity:validate-work-order-completion',\n UpdateWorkReportOnCompletion: 'workflow-activity:update-work-report-on-completion',\n RecordWorkReportAssessment: 'workflow-activity:record-work-report-assessment',\n UpdateWorkOrderCompleted: 'workflow-activity:update-work-order-completed',\n },\n} as const;\n\nexport const AXM_MAINTENANCE_INTERVAL_CHECK_COMMAND_KEY =\n AXMMaintenanceManagementCommandKeys.MaintenanceIntervalCheck;\n\n//#endregion\n","export const AXMMaintenanceManagementFeatureKeys = {\n Management: 'MaintenanceManagement:Feature:Management',\n} as const;\n","export const AXMMaintenanceManagementMenuKeys = {\n Root: 'MaintenanceManagement:Menu',\n // MainPlanEquipmentMaintenanceSectionGroup: 'MaintenanceManagement:Menu:MainPlanEquipment:MaintenanceSectionGroup',\n // PlanEquipmentMaintenanceSectionGroup: 'MaintenanceManagement:Menu:PlantEquipment:MaintenanceSectionGroup',\n Activities: 'MaintenanceManagement:Menu:Activities',\n Failures: 'MaintenanceManagement:Menu:Failures',\n ActivityCategories: 'MaintenanceManagement:Menu:ActivityCategories',\n ActivityTypes: 'MaintenanceManagement:Menu:ActivityTypes',\n MaintenanceTypes: 'MaintenanceManagement:Menu:MaintenanceTypes',\n MaintenancePlans: 'MaintenanceManagement:Menu:MaintenancePlans',\n MaintenancePlansList: 'MaintenanceManagement:Menu:MaintenancePlans:List',\n WorkPackages: 'MaintenanceManagement:Menu:WorkPackages',\n WorkOrders: 'MaintenanceManagement:Menu:WorkOrders',\n WorkReports: 'MaintenanceManagement:Menu:WorkReports',\n MaintenanceTemplates: 'MaintenanceManagement:Menu:MaintenanceTemplates',\n MaintenanceTemplateActivityTypes: 'MaintenanceManagement:Menu:MaintenanceTemplateActivityTypes',\n MaintenanceTemplateResources: 'MaintenanceManagement:Menu:MaintenanceTemplateResources',\n MaintenanceTemplateFailureModes: 'MaintenanceManagement:Menu:MaintenanceTemplateFailureModes',\n FailureCauses: 'MaintenanceManagement:Menu:FailureCauses',\n FailureMechanisms: 'MaintenanceManagement:Menu:FailureMechanisms',\n FailureDetections: 'MaintenanceManagement:Menu:FailureDetections',\n FailureEffects: 'MaintenanceManagement:Menu:FailureEffects',\n FailureSeverities: 'MaintenanceManagement:Menu:FailureSeverities',\n FailureTypes: 'MaintenanceManagement:Menu:FailureTypes',\n FailureModes: 'MaintenanceManagement:Menu:FailureModes',\n FailureRegisters: 'MaintenanceManagement:Menu:FailureRegisters',\n} as const;\n","/**\n * Assets & Maintenance capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPAssetsMaintenancePermissionKeys = {\n Access: 'AssetsMaintenance:Permission:Access',\n MaintainAssets: 'AssetsMaintenance:Permission:MaintainAssets',\n MaintainMaintenance: 'AssetsMaintenance:Permission:MaintainMaintenance',\n Setup: 'AssetsMaintenance:Permission:Setup',\n} as const;\n\nconst cap = AXPAssetsMaintenancePermissionKeys.MaintainMaintenance;\n\nfunction entityCrud() {\n return {\n Management: cap,\n View: cap,\n Create: cap,\n Update: cap,\n Delete: cap,\n } as const;\n}\n\n/**\n * @deprecated Prefer {@link AXPAssetsMaintenancePermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMMaintenanceManagementPermissionKeys = {\n MaintenanceManagement: {\n Management: cap,\n ActivityCategory: entityCrud(),\n MaintenanceType: entityCrud(),\n MaintenanceTemplate: entityCrud(),\n MaintenancePlan: entityCrud(),\n WorkPackage: entityCrud(),\n WorkOrder: entityCrud(),\n WorkReport: entityCrud(),\n MaintenanceTemplateActivityType: entityCrud(),\n MaintenanceTemplateResource: entityCrud(),\n MaintenanceTemplateFailureMode: entityCrud(),\n ActivityType: entityCrud(),\n ActivityTypeAssetType: entityCrud(),\n ActivityTypeResource: entityCrud(),\n FailureCause: entityCrud(),\n FailureMechanism: entityCrud(),\n FailureDetection: entityCrud(),\n FailureEffect: entityCrud(),\n FailureSeverity: entityCrud(),\n FailureType: entityCrud(),\n FailureMode: entityCrud(),\n FailureRegister: entityCrud(),\n },\n} as const;\n","//#region ---- Status names ----\n\nexport enum AXMWorkOrderStatus {\n Planned = 'planned',\n Scheduled = 'scheduled',\n Assigned = 'assigned',\n InProgress = 'in-progress',\n OnHold = 'on-hold',\n Completed = 'completed',\n SignedOff = 'signed-off',\n Cancelled = 'cancelled',\n}\n\n//#endregion\n","//#region ---- Source type enum ----\n\nexport enum AXMWorkOrderSourceType {\n Manual = 'manual',\n MaintenancePlan = 'maintenance-plan',\n CreateAsset = 'create-asset',\n FailureRegister = 'failure-register',\n}\n\n//#endregion\n","//#region ---- Status names ----\n\nexport enum AXMFailureRegisterStatus {\n Reported = 'reported',\n UnderReview = 'underReview',\n WorkOrderRequired = 'workOrderRequired',\n WorkOrderCreated = 'workOrderCreated',\n InProgress = 'inProgress',\n Resolved = 'resolved',\n FollowUpRequired = 'followUpRequired',\n Rejected = 'rejected',\n Duplicate = 'duplicate',\n Closed = 'closed',\n}\n\n//#endregion\n","import type { AXMMaintenanceManagementMaintenanceTemplateSchedule } from './entities/maintenance-template/maintenance-template.types';\n\n//#region ----- Constants -----\n\n/** Widget name for the maintenance interval editor. Kind strings match `AXMAssetIntervalKind`. */\nexport const AXM_MAINTENANCE_INTERVAL_WIDGET = 'maintenance-interval-editor';\n\n/**\n * Same stored values as `AXMAssetIntervalKind`.\n * Combinations are multiple entries, not extra kinds.\n */\nexport const AXM_MAINTENANCE_INTERVAL_KINDS = ['schedule', 'date', 'distance', 'operating-hours', 'operation-count'] as const;\n\nconst METER_KINDS = ['distance', 'operating-hours', 'operation-count'] as const;\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type AXMMaintenanceIntervalKind = (typeof AXM_MAINTENANCE_INTERVAL_KINDS)[number];\n\nexport type AXMMaintenanceMeterKind = (typeof METER_KINDS)[number];\n\n/** How multiple enabled intervals combine. Stored in lowercase, like other persisted enums. */\nexport enum AXMMaintenanceIntervalTriggerLogic {\n Any = 'any',\n All = 'all',\n}\n\n/** Unit stored on a meter trigger. Distance is the only kind with a choice. */\nexport enum AXMMaintenanceIntervalUnit {\n Kilometer = 'kilometer',\n Mile = 'mile',\n Hour = 'hour',\n Operation = 'operation',\n}\n\nexport interface AXMMaintenanceIntervalConfig {\n triggerLogic: AXMMaintenanceIntervalTriggerLogic;\n triggers: AXMMaintenanceIntervalTrigger[];\n}\n\nexport type AXMMaintenanceIntervalTrigger =\n | AXMScheduleIntervalTrigger\n | AXMDateIntervalTrigger\n | AXMMeterIntervalTrigger;\n\n/** Recurring calendar configuration from the scheduler picker. */\nexport interface AXMScheduleIntervalTrigger {\n kind: 'schedule';\n schedule: AXMMaintenanceManagementMaintenanceTemplateSchedule;\n}\n\n/**\n * Single date. Older rows stored a scheduler value on `schedule` before Schedule was its own kind.\n */\nexport interface AXMDateIntervalTrigger {\n kind: 'date';\n date?: string;\n schedule?: AXMMaintenanceManagementMaintenanceTemplateSchedule;\n}\n\nexport interface AXMMeterIntervalTrigger {\n kind: AXMMaintenanceMeterKind;\n interval: number;\n unit?: AXMMaintenanceIntervalUnit;\n}\n\nexport interface AXMMaintenanceIntervalMeterDraft {\n enabled: boolean;\n interval: number | null;\n unit: AXMMaintenanceIntervalUnit;\n}\n\n/** Editable form state. Disabled or invalid kinds are omitted from {@link buildAXMMaintenanceIntervalConfig}. */\nexport interface AXMMaintenanceIntervalDraft {\n triggerLogic: AXMMaintenanceIntervalTriggerLogic;\n scheduleEnabled: boolean;\n schedule: AXMMaintenanceManagementMaintenanceTemplateSchedule | null;\n dateEnabled: boolean;\n /** Calendar date `YYYY-MM-DD`. Not a recurring schedule. */\n date: string | null;\n meters: Record<AXMMaintenanceMeterKind, AXMMaintenanceIntervalMeterDraft>;\n}\n\nexport type AXMMaintenanceIntervalErrorCode = 'schedule' | 'date' | 'interval' | 'integer';\n\nexport interface AXMMaintenanceIntervalFieldError {\n kind: AXMMaintenanceIntervalKind;\n code: AXMMaintenanceIntervalErrorCode;\n}\n\nexport interface AXMMaintenanceIntervalBuildResult {\n config: AXMMaintenanceIntervalConfig;\n errors: AXMMaintenanceIntervalFieldError[];\n}\n\n//#endregion\n\n//#region ----- Kind helpers -----\n\nconst KIND_SET = new Set<string>(AXM_MAINTENANCE_INTERVAL_KINDS);\n\nexport function isAXMMaintenanceIntervalKind(value: string): value is AXMMaintenanceIntervalKind {\n return KIND_SET.has(value);\n}\n\nexport function isAXMMaintenanceMeterKind(value: string): value is AXMMaintenanceMeterKind {\n return value === 'distance' || value === 'operating-hours' || value === 'operation-count';\n}\n\nexport function defaultAXMMaintenanceIntervalUnit(kind: AXMMaintenanceMeterKind): AXMMaintenanceIntervalUnit {\n switch (kind) {\n case 'distance':\n return AXMMaintenanceIntervalUnit.Kilometer;\n case 'operating-hours':\n return AXMMaintenanceIntervalUnit.Hour;\n case 'operation-count':\n return AXMMaintenanceIntervalUnit.Operation;\n }\n}\n\nexport function isAXMMaintenanceIntervalUnitForKind(\n kind: AXMMaintenanceMeterKind,\n unit: AXMMaintenanceIntervalUnit,\n): boolean {\n switch (kind) {\n case 'distance':\n return unit === AXMMaintenanceIntervalUnit.Kilometer || unit === AXMMaintenanceIntervalUnit.Mile;\n case 'operating-hours':\n return unit === AXMMaintenanceIntervalUnit.Hour;\n case 'operation-count':\n return unit === AXMMaintenanceIntervalUnit.Operation;\n }\n}\n\nexport function emptyAXMMaintenanceIntervalConfig(): AXMMaintenanceIntervalConfig {\n return { triggerLogic: AXMMaintenanceIntervalTriggerLogic.Any, triggers: [] };\n}\n\nexport function emptyAXMMaintenanceIntervalDraft(): AXMMaintenanceIntervalDraft {\n return {\n triggerLogic: AXMMaintenanceIntervalTriggerLogic.Any,\n scheduleEnabled: false,\n schedule: null,\n dateEnabled: false,\n date: null,\n meters: {\n distance: { enabled: false, interval: null, unit: AXMMaintenanceIntervalUnit.Kilometer },\n 'operating-hours': { enabled: false, interval: null, unit: AXMMaintenanceIntervalUnit.Hour },\n 'operation-count': { enabled: false, interval: null, unit: AXMMaintenanceIntervalUnit.Operation },\n },\n };\n}\n\n//#endregion\n\n//#region ----- Normalize -----\n\nfunction isSchedule(value: unknown): value is AXMMaintenanceManagementMaintenanceTemplateSchedule {\n if (!value || typeof value !== 'object') {\n return false;\n }\n const record = value as { mode?: unknown; startCondition?: unknown; recurrence?: unknown };\n return typeof record.mode === 'string' || record.startCondition != null || typeof record.recurrence === 'string';\n}\n\n/** Calendar day stored on a date interval, as `YYYY-MM-DD`. */\nexport function readIntervalDate(value: unknown): string | null {\n const date =\n value instanceof Date\n ? value\n : typeof value === 'string' && value.trim()\n ? new Date(value)\n : null;\n if (!date || Number.isNaN(date.getTime())) {\n return null;\n }\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${date.getFullYear()}-${month}-${day}`;\n}\n\nfunction isUnit(value: unknown): value is AXMMaintenanceIntervalUnit {\n return (\n value === AXMMaintenanceIntervalUnit.Kilometer ||\n value === AXMMaintenanceIntervalUnit.Mile ||\n value === AXMMaintenanceIntervalUnit.Hour ||\n value === AXMMaintenanceIntervalUnit.Operation\n );\n}\n\nfunction readTriggerLogic(value: unknown): AXMMaintenanceIntervalTriggerLogic {\n return value === AXMMaintenanceIntervalTriggerLogic.All\n ? AXMMaintenanceIntervalTriggerLogic.All\n : AXMMaintenanceIntervalTriggerLogic.Any;\n}\n\nfunction supportedKindSet(kinds: readonly string[]): Set<AXMMaintenanceIntervalKind> {\n const set = new Set<AXMMaintenanceIntervalKind>();\n for (const kind of kinds) {\n if (isAXMMaintenanceIntervalKind(kind)) {\n set.add(kind);\n }\n }\n return set;\n}\n\nfunction meterIssue(kind: AXMMaintenanceMeterKind, interval: number | null): AXMMaintenanceIntervalErrorCode | null {\n if (typeof interval !== 'number' || !Number.isFinite(interval) || interval <= 0) {\n return 'interval';\n }\n if (kind === 'operation-count' && !Number.isInteger(interval)) {\n return 'integer';\n }\n return null;\n}\n\n/**\n * Builds the value object emitted by the interval editor.\n * Unsupported, disabled, and invalid triggers are left out.\n * Zero or one valid trigger always reports `any`.\n */\nexport function buildAXMMaintenanceIntervalConfig(\n supportedIntervalKinds: readonly string[],\n draft: AXMMaintenanceIntervalDraft,\n): AXMMaintenanceIntervalBuildResult {\n const supported = supportedKindSet(supportedIntervalKinds);\n const triggers: AXMMaintenanceIntervalTrigger[] = [];\n const errors: AXMMaintenanceIntervalFieldError[] = [];\n\n if (supported.has('schedule') && draft.scheduleEnabled) {\n if (isSchedule(draft.schedule)) {\n triggers.push({ kind: 'schedule', schedule: draft.schedule });\n } else {\n errors.push({ kind: 'schedule', code: 'schedule' });\n }\n }\n\n if (supported.has('date') && draft.dateEnabled) {\n const date = readIntervalDate(draft.date);\n if (date) {\n triggers.push({ kind: 'date', date });\n } else if (!supported.has('schedule') && isSchedule(draft.schedule)) {\n triggers.push({ kind: 'date', schedule: draft.schedule });\n } else {\n errors.push({ kind: 'date', code: 'date' });\n }\n }\n\n for (const kind of METER_KINDS) {\n const meter = draft.meters[kind];\n if (!supported.has(kind) || !meter.enabled) {\n continue;\n }\n const issue = meterIssue(kind, meter.interval);\n if (issue) {\n errors.push({ kind, code: issue });\n continue;\n }\n const unit = isAXMMaintenanceIntervalUnitForKind(kind, meter.unit)\n ? meter.unit\n : defaultAXMMaintenanceIntervalUnit(kind);\n triggers.push({ kind, interval: meter.interval as number, unit });\n }\n\n const triggerLogic =\n triggers.length > 1 && draft.triggerLogic === AXMMaintenanceIntervalTriggerLogic.All\n ? AXMMaintenanceIntervalTriggerLogic.All\n : AXMMaintenanceIntervalTriggerLogic.Any;\n\n return { config: { triggerLogic, triggers }, errors };\n}\n\n/**\n * Date trigger schedule, or a legacy scheduler-picker object stored before interval configs.\n * Meter-only configs have no calendar schedule.\n */\nexport function readMaintenancePlanCalendarSchedule(\n value: unknown,\n): AXMMaintenanceManagementMaintenanceTemplateSchedule | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n const record = value as {\n triggers?: unknown;\n mode?: unknown;\n startCondition?: unknown;\n recurrence?: unknown;\n };\n\n if (Array.isArray(record.triggers)) {\n for (const item of record.triggers) {\n if (!item || typeof item !== 'object') {\n continue;\n }\n const kind = (item as { kind?: unknown }).kind;\n if (kind !== 'date' && kind !== 'schedule') {\n continue;\n }\n const schedule = (item as { schedule?: unknown }).schedule;\n if (isSchedule(schedule)) {\n return schedule;\n }\n }\n return undefined;\n }\n\n if (record.mode != null || record.startCondition != null || record.recurrence != null) {\n return value as AXMMaintenanceManagementMaintenanceTemplateSchedule;\n }\n\n return undefined;\n}\n\n/** Reads a stored config into editor state. Kinds outside `supportedIntervalKinds` are dropped. */\nexport function draftFromAXMMaintenanceIntervalConfig(\n value: unknown,\n supportedIntervalKinds: readonly string[],\n): AXMMaintenanceIntervalDraft {\n const draft = emptyAXMMaintenanceIntervalDraft();\n const supported = supportedKindSet(supportedIntervalKinds);\n if (!value || typeof value !== 'object') {\n return draft;\n }\n\n const record = value as { triggerLogic?: unknown; triggers?: unknown };\n draft.triggerLogic = readTriggerLogic(record.triggerLogic);\n if (!Array.isArray(record.triggers)) {\n return draft;\n }\n\n for (const item of record.triggers) {\n if (!item || typeof item !== 'object' || !('kind' in item) || typeof (item as { kind: unknown }).kind !== 'string') {\n continue;\n }\n const kind = (item as { kind: string }).kind;\n if (kind === 'date') {\n const schedule = (item as { schedule?: unknown }).schedule;\n const date = readIntervalDate((item as { date?: unknown }).date);\n if (isSchedule(schedule) && supported.has('schedule') && !draft.scheduleEnabled) {\n draft.scheduleEnabled = true;\n draft.schedule = schedule;\n }\n if (!supported.has('date')) {\n continue;\n }\n if (date) {\n draft.dateEnabled = true;\n draft.date = date;\n } else if (isSchedule(schedule) && !supported.has('schedule')) {\n draft.dateEnabled = true;\n draft.schedule = schedule;\n }\n continue;\n }\n if (!isAXMMaintenanceIntervalKind(kind) || !supported.has(kind)) {\n continue;\n }\n if (kind === 'schedule') {\n const schedule = (item as { schedule?: unknown }).schedule;\n if (!isSchedule(schedule) || draft.scheduleEnabled) {\n continue;\n }\n draft.scheduleEnabled = true;\n draft.schedule = schedule;\n continue;\n }\n if (!isAXMMaintenanceMeterKind(kind)) {\n continue;\n }\n const meter = draft.meters[kind];\n if (meter.enabled) {\n continue;\n }\n const interval = (item as { interval?: unknown }).interval;\n const unit = (item as { unit?: unknown }).unit;\n if (meterIssue(kind, typeof interval === 'number' ? interval : null)) {\n continue;\n }\n meter.enabled = true;\n meter.interval = interval as number;\n meter.unit = isUnit(unit) && isAXMMaintenanceIntervalUnitForKind(kind, unit) ? unit : defaultAXMMaintenanceIntervalUnit(kind);\n }\n\n return draft;\n}\n\n//#endregion\n","//#region ---- Root Configuration ----\n\nconst config = {\n i18n: 'maintenance-management',\n module: 'MaintenanceManagement',\n route: 'maintenance-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: config.route,\n name: config.module,\n title: '@maintenance-management:module.title',\n icon: 'fa-light fa-box',\n },\n entities: {\n maintenanceType: {\n name: 'MaintenanceType',\n source: `${config.module}.MaintenanceType`,\n title: '@maintenance-management:maintenance-types.entities.maintenance-type.title',\n titlePlural: '@maintenance-management:maintenance-types.entities.maintenance-type.plural',\n icon: 'fa-light fa-screwdriver-wrench',\n },\n maintenanceTemplate: {\n name: 'MaintenanceTemplate',\n source: `${config.module}.MaintenanceTemplate`,\n title: '@maintenance-management:maintenance-templates.entities.maintenance-template.title',\n titlePlural: '@maintenance-management:maintenance-templates.entities.maintenance-template.plural',\n icon: 'fa-light fa-clipboard-list',\n },\n maintenancePlan: {\n name: 'MaintenancePlan',\n source: `${config.module}.MaintenancePlan`,\n title: '@maintenance-management:maintenance-plans.entities.maintenance-plan.title',\n titlePlural: '@maintenance-management:maintenance-plans.entities.maintenance-plan.plural',\n icon: 'fa-light fa-calendar-check',\n },\n workPackage: {\n name: 'WorkPackage',\n source: `${config.module}.WorkPackage`,\n title: '@maintenance-management:work-packages.entities.work-package.title',\n titlePlural: '@maintenance-management:work-packages.entities.work-package.plural',\n icon: 'fa-light fa-boxes-packing',\n },\n workOrder: {\n name: 'WorkOrder',\n source: `${config.module}.WorkOrder`,\n title: '@maintenance-management:work-orders.entities.work-order.title',\n titlePlural: '@maintenance-management:work-orders.entities.work-order.plural',\n icon: 'fa-light fa-clipboard-check',\n },\n workReport: {\n name: 'WorkReport',\n source: `${config.module}.WorkReport`,\n title: '@maintenance-management:work-reports.entities.work-report.title',\n titlePlural: '@maintenance-management:work-reports.entities.work-report.plural',\n icon: 'fa-light fa-file-lines',\n },\n maintenanceTemplateActivityType: {\n name: 'MaintenanceTemplateActivityType',\n source: `${config.module}.MaintenanceTemplateActivityType`,\n title:\n '@maintenance-management:maintenance-template-activity-types.entities.maintenance-template-activity-type.title',\n titlePlural:\n '@maintenance-management:maintenance-template-activity-types.entities.maintenance-template-activity-type.plural',\n icon: 'fa-light fa-list-check',\n },\n maintenanceTemplateResource: {\n name: 'MaintenanceTemplateResource',\n source: `${config.module}.MaintenanceTemplateResource`,\n title: '@maintenance-management:maintenance-template-resources.entities.maintenance-template-resource.title',\n titlePlural:\n '@maintenance-management:maintenance-template-resources.entities.maintenance-template-resource.plural',\n icon: 'fa-light fa-box-open-full',\n },\n maintenanceTemplateFailureMode: {\n name: 'MaintenanceTemplateFailureMode',\n source: `${config.module}.MaintenanceTemplateFailureMode`,\n title:\n '@maintenance-management:maintenance-template-failure-modes.entities.maintenance-template-failure-mode.title',\n titlePlural:\n '@maintenance-management:maintenance-template-failure-modes.entities.maintenance-template-failure-mode.plural',\n icon: 'fa-light fa-triangle-exclamation',\n },\n activityType: {\n name: 'ActivityType',\n source: `${config.module}.ActivityType`,\n title: '@maintenance-management:activity-types.entities.activity-type.title',\n titlePlural: '@maintenance-management:activity-types.entities.activity-type.plural',\n icon: 'fa-light fa-list-check',\n },\n activityTypeAssetType: {\n name: 'ActivityTypeAssetType',\n source: `${config.module}.ActivityTypeAssetType`,\n title: '@maintenance-management:activity-type-asset-types.entities.activity-type-asset-type.title',\n titlePlural: '@maintenance-management:activity-type-asset-types.entities.activity-type-asset-type.plural',\n icon: 'fa-light fa-link',\n },\n activityTypeResource: {\n name: 'ActivityTypeResource',\n source: `${config.module}.ActivityTypeResource`,\n title: '@maintenance-management:activity-type-resources.entities.activity-type-resource.title',\n titlePlural: '@maintenance-management:activity-type-resources.entities.activity-type-resource.plural',\n icon: 'fa-light fa-cubes',\n },\n failureCause: {\n name: 'FailureCause',\n source: `${config.module}.FailureCause`,\n title: '@maintenance-management:failure-causes.entities.failure-cause.title',\n titlePlural: '@maintenance-management:failure-causes.entities.failure-cause.plural',\n icon: 'fa-light fa-triangle-exclamation',\n },\n failureMechanism: {\n name: 'FailureMechanism',\n source: `${config.module}.FailureMechanism`,\n title: '@maintenance-management:failure-mechanisms.entities.failure-mechanism.title',\n titlePlural: '@maintenance-management:failure-mechanisms.entities.failure-mechanism.plural',\n icon: 'fa-light fa-gears',\n },\n failureDetection: {\n name: 'FailureDetection',\n source: `${config.module}.FailureDetection`,\n title: '@maintenance-management:failure-detections.entities.failure-detection.title',\n titlePlural: '@maintenance-management:failure-detections.entities.failure-detection.plural',\n icon: 'fa-light fa-radar',\n },\n failureType: {\n name: 'FailureType',\n source: `${config.module}.FailureType`,\n title: '@maintenance-management:failure-types.entities.failure-type.title',\n titlePlural: '@maintenance-management:failure-types.entities.failure-type.plural',\n icon: 'fa-light fa-shapes',\n },\n failureMode: {\n name: 'FailureMode',\n source: `${config.module}.FailureMode`,\n title: '@maintenance-management:failure-modes.entities.failure-mode.title',\n titlePlural: '@maintenance-management:failure-modes.entities.failure-mode.plural',\n icon: 'fa-light fa-diagram-project',\n },\n failureModeAssetType: {\n name: 'FailureModeAssetType',\n source: `${config.module}.FailureModeAssetType`,\n title: '@maintenance-management:failure-mode-asset-types.entities.failure-mode-asset-type.title',\n titlePlural: '@maintenance-management:failure-mode-asset-types.entities.failure-mode-asset-type.plural',\n icon: 'fa-light fa-link',\n },\n failureModeMechanism: {\n name: 'FailureModeMechanism',\n source: `${config.module}.FailureModeMechanism`,\n title: '@maintenance-management:failure-mode-mechanisms.entities.failure-mode-mechanism.title',\n titlePlural: '@maintenance-management:failure-mode-mechanisms.entities.failure-mode-mechanism.plural',\n icon: 'fa-light fa-gears',\n },\n failureModeSolution: {\n name: 'FailureModeSolution',\n source: `${config.module}.FailureModeSolution`,\n title: '@maintenance-management:failure-mode-solutions.entities.failure-mode-solution.title',\n titlePlural: '@maintenance-management:failure-mode-solutions.entities.failure-mode-solution.plural',\n icon: 'fa-light fa-screwdriver-wrench',\n },\n failureEffect: {\n name: 'FailureEffect',\n source: `${config.module}.FailureEffect`,\n title: '@maintenance-management:failure-effects.entities.failure-effect.title',\n titlePlural: '@maintenance-management:failure-effects.entities.failure-effect.plural',\n icon: 'fa-light fa-waveform-lines',\n },\n failureSeverity: {\n name: 'FailureSeverity',\n source: `${config.module}.FailureSeverity`,\n title: '@maintenance-management:failure-severities.entities.failure-severity.title',\n titlePlural: '@maintenance-management:failure-severities.entities.failure-severity.plural',\n icon: 'fa-light fa-gauge-high',\n },\n failureRegister: {\n name: 'FailureRegister',\n source: `${config.module}.FailureRegister`,\n title: '@maintenance-management:failure-registers.entities.failure-register.title',\n titlePlural: '@maintenance-management:failure-registers.entities.failure-register.plural',\n icon: 'fa-light fa-file-waveform',\n },\n failureRegisterEffect: {\n name: 'FailureRegisterEffect',\n source: `${config.module}.FailureRegisterEffect`,\n title: '@maintenance-management:failure-register-effects.entities.failure-register-effect.title',\n titlePlural: '@maintenance-management:failure-register-effects.entities.failure-register-effect.plural',\n icon: 'fa-light fa-wave-pulse',\n },\n failureRegisterCause: {\n name: 'FailureRegisterCause',\n source: `${config.module}.FailureRegisterCause`,\n title: '@maintenance-management:failure-register-causes.entities.failure-register-cause.title',\n titlePlural: '@maintenance-management:failure-register-causes.entities.failure-register-cause.plural',\n icon: 'fa-light fa-triangle-exclamation',\n },\n failureRegisterMechanism: {\n name: 'FailureRegisterMechanism',\n source: `${config.module}.FailureRegisterMechanism`,\n title: '@maintenance-management:failure-register-mechanisms.entities.failure-register-mechanism.title',\n titlePlural: '@maintenance-management:failure-register-mechanisms.entities.failure-register-mechanism.plural',\n icon: 'fa-light fa-gears',\n },\n },\n /**\n * Hourly usage-threshold check. Date intervals stay on work-order sign-off.\n * One run per tenant; an open generated work order blocks a second insert.\n */\n maintenanceIntervalCheck: {\n providerKey: 'maintenance-management',\n defaultCron: '0 * * * *',\n idempotencyKeyTemplate: 'maintenance-management:interval-check:{tenantId}',\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-shared/core';\nimport { RootConfig } from './root-config';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Maintenance Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const MaintenanceManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'domain',\n domain: 'asset-maintenance',\n required: false,\n\n // Module dependencies (optional)\n};\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\n/** Scheduler-picker value persisted on activity types. */\nexport interface AXMMaintenanceManagementActivityTypeSchedule {\n startCondition?: {\n type?: string;\n startDate?: string | Date;\n };\n recurrence?: string;\n cron?: string;\n mode?: string;\n interval?: number;\n endCondition?: {\n type?: string;\n endDate?: string | Date;\n };\n}\n\nexport interface AXMMaintenanceManagementActivityTypeEntityModel {\n id: string;\n code: string;\n activityCategoryId: string;\n activityCategory?: { id: string; title: AXPMultiLanguageString };\n scheduleId?: AXMMaintenanceManagementActivityTypeSchedule;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n initialEstimatedTime?: number;\n shutDownFlag?: boolean;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementActivityTypeAssetTypeEntityModel {\n id: string;\n activityTypeId: string;\n activityType?: { id: string; title: AXPMultiLanguageString };\n assetTypeId: string;\n assetType?: { id: string; title: AXPMultiLanguageString };\n workTeamId: string;\n workTeam?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\nexport type AXMMaintenanceManagementActivityTypeResourceType = 'assettype' | 'jobdefinition' | 'inventoryitem';\n\nexport interface AXMMaintenanceManagementActivityTypeResourceEntityModel {\n id: string;\n activityTypeId: string;\n activityType?: { id: string; title: AXPMultiLanguageString };\n resourceType: AXMMaintenanceManagementActivityTypeResourceType;\n resourceId: string;\n resourceSelectionIds?: string[];\n /** Denormalized labels for list/grid when stored values are raw ids (see mock seeding). */\n resourceSummary?: string;\n count?: number;\n description?: AXPMultiLanguageString;\n initialEstimatedTime?: number;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureCauseEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parentId?: string;\n parent?: { id: string; title: AXPMultiLanguageString };\n failureTypeId?: string;\n failureType?: { id: string; title: AXPMultiLanguageString };\n failureMechanismIds?: string[];\n priorityId?: 'critical' | 'high' | 'medium' | 'low';\n shutDownFlag?: boolean;\n initialEstimatedTime?: number;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureDetectionEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parentId?: string;\n parent?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureEffectEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parentId?: string;\n parent?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureMechanismEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parentId?: string;\n parent?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureModeEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n shutDownFlag?: boolean;\n priorityId?: string;\n failureTypeId: string;\n failureType?: { id: string; title: AXPMultiLanguageString };\n failureMechanismIds?: string[];\n initialEstimatedTime?: number;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureModeAssetTypeEntityModel {\n id: string;\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n assetTypeId: string;\n assetType?: { id: string; title: AXPMultiLanguageString };\n priorityId?: string;\n shutDownFlag?: boolean;\n creditRequired?: boolean;\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureModeMechanismEntityModel {\n id: string;\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n failureMechanismId: string;\n failureMechanism?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureModeMechanismEntityModel {\n id: string;\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n failureMechanismId: string;\n failureMechanism?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureModeSolutionEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n description: AXPMultiLanguageString;\n successRate: number;\n riskLevel: 'low' | 'medium' | 'high' | 'critical';\n estimatedCost: number;\n solutionType: 'temporary' | 'permanent' | 'workaround' | 'preventive';\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\nimport { AXMFailureRegisterStatus } from '../../failure-register.status';\n\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureRegisterEntityModel {\n id: string;\n /** Business code from identifier rule `failure-register-code` (`FR-{date:YYYY}-{seq:4}`). */\n code: string;\n statusId: AXMFailureRegisterStatus;\n date: string;\n assetSystemId?: string;\n assetSystem?: { id: string; title: AXPMultiLanguageString };\n assetId: string;\n asset?: { id: string; title: AXPMultiLanguageString };\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n failureDetectionId: string;\n failureDetection?: { id: string; title: AXPMultiLanguageString };\n priorityId: string;\n failureSeverityId: string;\n failureSeverity?: { id: string; title: AXPMultiLanguageString };\n failureEffectIds?: string[];\n failureCauseIds?: string[];\n failureMechanismIds?: string[];\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureRegisterCauseEntityModel {\n id: string;\n failureRegisterId: string;\n failureRegister?: { id: string; title: AXPMultiLanguageString };\n failureCauseId: string;\n failureCause?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureRegisterEffectEntityModel {\n id: string;\n failureRegisterId: string;\n failureRegister?: { id: string; title: AXPMultiLanguageString };\n failureEffectId: string;\n failureEffect?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureRegisterMechanismEntityModel {\n id: string;\n failureRegisterId: string;\n failureRegister?: { id: string; title: AXPMultiLanguageString };\n failureMechanismId: string;\n failureMechanism?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureSeverityEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureTypeEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parentId?: string;\n parent?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\nimport type { AXMMaintenanceIntervalConfig } from '../../maintenance-interval.config';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementMaintenancePlanSchedule {\n startCondition?: {\n type?: string;\n startDate?: string | Date;\n };\n recurrence?: string;\n cron?: string;\n mode?: string;\n interval?: number;\n endCondition?: {\n type?: string;\n occurrences?: number;\n endDate?: string | Date;\n };\n}\n\n//#region ----- Interval state -----\n\n/** Meter kinds that can track last completed and next due values. Date stays on `intervalConfig`. */\nexport const AXM_MAINTENANCE_INTERVAL_STATE_KINDS = ['distance', 'operating-hours', 'operation-count'] as const;\n\nexport type AXMMaintenanceIntervalStateKind = (typeof AXM_MAINTENANCE_INTERVAL_STATE_KINDS)[number];\n\nexport interface AXMMaintenanceIntervalState {\n kind: AXMMaintenanceIntervalStateKind;\n lastCompletedValue?: number;\n nextDueValue?: number;\n}\n\nexport type AXMMaintenanceIntervalStateIssue = 'invalid' | 'date-kind' | 'negative' | 'next-before-last';\n\nconst INTERVAL_STATE_I18N = '@maintenance-management:maintenance-plans.entities.maintenance-plan.fields.interval-states.validation';\n\nexport const AXM_MAINTENANCE_INTERVAL_STATE_ERRORS: Record<\n AXMMaintenanceIntervalStateIssue,\n { message: string; code: string }\n> = {\n invalid: { message: `${INTERVAL_STATE_I18N}.invalid`, code: 'MAINTENANCE_INTERVAL_STATE_INVALID' },\n 'date-kind': { message: `${INTERVAL_STATE_I18N}.date-kind`, code: 'MAINTENANCE_INTERVAL_STATE_DATE_KIND' },\n negative: { message: `${INTERVAL_STATE_I18N}.negative`, code: 'MAINTENANCE_INTERVAL_STATE_NEGATIVE' },\n 'next-before-last': {\n message: `${INTERVAL_STATE_I18N}.next-before-last`,\n code: 'MAINTENANCE_INTERVAL_STATE_NEXT_BEFORE_LAST',\n },\n};\n\nconst INTERVAL_STATE_KIND_SET = new Set<string>(AXM_MAINTENANCE_INTERVAL_STATE_KINDS);\n\nfunction isMaintenanceIntervalStateKind(value: string): value is AXMMaintenanceIntervalStateKind {\n return INTERVAL_STATE_KIND_SET.has(value);\n}\n\nfunction readOptionalMeter(value: unknown): number | undefined | null {\n if (value == null) {\n return undefined;\n }\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n return null;\n }\n return value;\n}\n\nfunction readStateItem(item: unknown): AXMMaintenanceIntervalState | AXMMaintenanceIntervalStateIssue {\n if (!item || typeof item !== 'object' || Array.isArray(item)) {\n return 'invalid';\n }\n const record = item as Record<string, unknown>;\n const kind = record['kind'];\n if (kind === 'date') {\n return 'date-kind';\n }\n if (typeof kind !== 'string' || !isMaintenanceIntervalStateKind(kind)) {\n return 'invalid';\n }\n const lastCompletedValue = readOptionalMeter(record['lastCompletedValue']);\n const nextDueValue = readOptionalMeter(record['nextDueValue']);\n if (lastCompletedValue === null || nextDueValue === null) {\n return 'invalid';\n }\n if ((lastCompletedValue != null && lastCompletedValue < 0) || (nextDueValue != null && nextDueValue < 0)) {\n return 'negative';\n }\n if (lastCompletedValue != null && nextDueValue != null && nextDueValue < lastCompletedValue) {\n return 'next-before-last';\n }\n const state: AXMMaintenanceIntervalState = { kind };\n if (lastCompletedValue != null) {\n state.lastCompletedValue = lastCompletedValue;\n }\n if (nextDueValue != null) {\n state.nextDueValue = nextDueValue;\n }\n return state;\n}\n\n/** Missing or unreadable input becomes `[]`. Invalid items and date kinds are dropped. The last item of a kind wins. */\nexport function readMaintenanceIntervalStates(value: unknown): AXMMaintenanceIntervalState[] {\n if (!Array.isArray(value)) {\n return [];\n }\n const byKind = new Map<AXMMaintenanceIntervalStateKind, AXMMaintenanceIntervalState>();\n for (const item of value) {\n const state = readStateItem(item);\n if (typeof state === 'string') {\n continue;\n }\n byKind.set(state.kind, state);\n }\n return [...byKind.values()];\n}\n\n/** Strict create/update check. A later item replaces an earlier item of the same kind. */\nexport function resolveMaintenanceIntervalStates(value: unknown): {\n states: AXMMaintenanceIntervalState[];\n issue: AXMMaintenanceIntervalStateIssue | null;\n} {\n if (value == null) {\n return { states: [], issue: null };\n }\n if (!Array.isArray(value)) {\n return { states: [], issue: 'invalid' };\n }\n const byKind = new Map<AXMMaintenanceIntervalStateKind, AXMMaintenanceIntervalState>();\n for (const item of value) {\n const state = readStateItem(item);\n if (typeof state === 'string') {\n return { states: [], issue: state };\n }\n byKind.set(state.kind, state);\n }\n return { states: [...byKind.values()], issue: null };\n}\n\n//#endregion\n\nexport interface AXMMaintenanceManagementMaintenancePlanEntityModel {\n id: string;\n /** Business code from identifier rule `maintenance-plan-code` (`MP-{date:YYYYMM}-{seq:4}`). */\n code: string;\n title: AXPMultiLanguageString;\n maintenanceTypeId: string;\n maintenanceType?: { id: string; title: AXPMultiLanguageString };\n assetId: string;\n asset?: {\n id: string;\n title: AXPMultiLanguageString;\n assetTypeId?: string;\n assetType?: { maintenanceTypeIds?: string[]; supportedIntervalKinds?: string[] };\n };\n maintenanceTemplateId: string;\n maintenanceTemplate?: { id: string; title: AXPMultiLanguageString };\n /** Maintenance interval rule. Date triggers still store the scheduler-picker value. */\n intervalConfig?: AXMMaintenanceIntervalConfig;\n /** Current due position for meter intervals. Date is not stored here. */\n intervalStates?: AXMMaintenanceIntervalState[];\n assignedToId?: string;\n assignedTo?: { id: string; displayName?: string };\n priorityId?: string;\n priority?: { id: string; title: AXPMultiLanguageString };\n needPermission?: boolean;\n needShutdown?: boolean;\n estimatedHours?: number;\n autoGeneratedPlan?: boolean;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\n/** Workflow template binding and admin-configured default inputs for maintenance templates. */\nexport interface AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig {\n workflowDefinitionId: string;\n workflowName: string;\n /** When false, approval workflow is disabled for work orders using this template. */\n enabled?: boolean;\n defaultInput?: Record<string, unknown>;\n}\n\n/** Scheduler-picker value persisted on maintenance templates (aligned with maintenance plans). */\nexport interface AXMMaintenanceManagementMaintenanceTemplateSchedule {\n startCondition?: {\n type?: string;\n startDate?: string | Date;\n };\n recurrence?: string;\n cron?: string;\n mode?: string;\n interval?: number;\n endCondition?: {\n type?: string;\n endDate?: string | Date;\n };\n}\n\n/** Persisted value shape for the meta-data-builder plugin (`metaDataList`). */\nexport interface AXMMaintenanceManagementMaintenanceTemplateMetaDataList {\n groups: Array<{\n name: string;\n title?: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n order: number;\n fields: Array<{\n id: string;\n name: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n /** Serialized widget descriptor (JSON string), same convention as Asset Type mock meta-data. */\n interface: string;\n configuration?: Record<string, unknown>;\n order: number;\n }>;\n }>;\n}\n\nexport interface AXMMaintenanceManagementMaintenanceTemplateEntityModel {\n id: string;\n /** Business code from identifier rule `maintenance-template-code` (`MNT-{date:YYYYMM}-{seq:4}`). */\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n maintenanceTypeId: string;\n maintenanceType?: {\n id: string;\n title: AXPMultiLanguageString;\n autoGeneratePlan?: boolean;\n };\n assetTypeId: string;\n assetType?: { id: string; title?: AXPMultiLanguageString; maintenanceTypeIds?: string[] };\n /** Selected metadata field ids from asset types that support the maintenance type. */\n // metadataIds?: string[];\n /** Asset status key (aligned with asset lifecycle status). */\n assetStatusTypeId?: string;\n needPermission: boolean;\n needShutdown: boolean;\n estimatedMinutes?: number;\n /** Dynamic field definitions for the meta-data-builder plugin (stored as `metaDataList`). */\n // metaDataList?: AXMMaintenanceManagementMaintenanceTemplateMetaDataList;\n /** Selected workflow and template-time input defaults (workflow-selector plugin). */\n workflowConfig?: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null;\n /** Recurrence schedule (`scheduler-picker` widget value). */\n schedule?: AXMMaintenanceManagementMaintenanceTemplateSchedule;\n /** Template definition version (identifier). */\n versionId?: string;\n autoGeneratePlan?: boolean;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementMaintenanceTemplateActivityTypeEntityModel {\n id: string;\n maintenanceTemplateId: string;\n maintenanceTemplate?: { id: string; title: AXPMultiLanguageString };\n activityTypeId: string;\n activityType?: { id: string; title: AXPMultiLanguageString };\n sequenceNo: number;\n needShutdown: boolean;\n isMainActivity: boolean;\n estimatedMinutes?: number;\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementMaintenanceTemplateFailureModeEntityModel {\n id: string;\n code: string;\n maintenanceTemplateId: string;\n maintenanceTemplate?: { id: string; title: AXPMultiLanguageString };\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\nexport type AXMMaintenanceManagementMaintenanceTemplateResourceType = 'assettype' | 'jobdefinition' | 'inventoryitem';\n\nexport interface AXMMaintenanceManagementMaintenanceTemplateResourceEntityModel {\n id: string;\n code: string;\n maintenanceTemplateId: string;\n maintenanceTemplate?: { id: string; title?: AXPMultiLanguageString; name?: string };\n resourceType: AXMMaintenanceManagementMaintenanceTemplateResourceType;\n resourceId?: string;\n resourceSelectionIds?: string[];\n /** Denormalized titles for list/grid when stored values are ids. */\n resourceSummary?: string;\n quantity?: number;\n estimatedHours?: number;\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementMaintenanceTypeEntityModel {\n id: string;\n /** Business code from identifier rule `maintenance-type-code` (`MT-{date:YYYYMM}-{seq:4}`). */\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n autoGeneratePlan?: boolean;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Types ----\n\nexport interface AXMWorkReportAssessmentReference {\n assessmentCaseId: string;\n assessmentCase?: {\n id: string;\n title?: AXPMultiLanguageString;\n };\n completedAt?: string | null;\n completedById?: string | null;\n}\n\nexport interface AXMMaintenanceManagementWorkReportEntityModel {\n id: string;\n workOrderId: string;\n workOrder?: {\n id: string;\n workOrderNo?: string;\n title?: AXPMultiLanguageString;\n statusId?: string;\n };\n reportedAt: string;\n performedById: string;\n performedBy?: { id: string; displayName?: string };\n result?: string;\n summary?: string;\n actionTaken?: string;\n recommendation?: string;\n laborHours?: number;\n downtimeMinutes?: number;\n startedAt?: Date;\n endedAt?: Date;\n needFollowUp?: boolean;\n followUpWorkOrderId?: string;\n followUpWorkOrder?: {\n id: string;\n workOrderNo?: string;\n title?: AXPMultiLanguageString;\n };\n assessments?: AXMWorkReportAssessmentReference[];\n finalizedAt?: string | null;\n}\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './catalog-scope.keys';\nexport * from './commands.keys';\nexport * from './features.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './work-order.status';\nexport * from './work-order.source-type';\nexport * from './failure-register.status';\nexport * from './maintenance-interval.config';\n\nexport * from './root-config';\nexport * from './manifest';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-maintenance-management-client-contracts.mjs","sources":["../../../../libs/modules/maintenance-management/contracts/src/catalog-scope.keys.ts","../../../../libs/modules/maintenance-management/contracts/src/commands.keys.ts","../../../../libs/modules/maintenance-management/contracts/src/interval-work-order-checklist.ts","../../../../libs/modules/maintenance-management/contracts/src/features.keys.ts","../../../../libs/modules/maintenance-management/contracts/src/menu.keys.ts","../../../../libs/modules/maintenance-management/contracts/src/permission.keys.ts","../../../../libs/modules/maintenance-management/contracts/src/work-order.status.ts","../../../../libs/modules/maintenance-management/contracts/src/work-order.source-type.ts","../../../../libs/modules/maintenance-management/contracts/src/failure-register.status.ts","../../../../libs/modules/maintenance-management/contracts/src/maintenance-interval.config.ts","../../../../libs/modules/maintenance-management/contracts/src/root-config.ts","../../../../libs/modules/maintenance-management/contracts/src/manifest.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/activity-type/activity-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/activity-type-asset-type/activity-type-asset-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/activity-type-resource/activity-type-resource.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-cause/failure-cause.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-detection/failure-detection.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-effect/failure-effect.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-mechanism/failure-mechanism.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-mode/failure-mode.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-mode-asset-type/failure-mode-asset-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-mode-mechanism/failure-mode-mechanism.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-mode-solution/failure-mode-solution.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-register/failure-register.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-register-cause/failure-register-cause.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-register-effect/failure-register-effect.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-register-mechanism/failure-register-mechanism.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-severity/failure-severity.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/failure-type/failure-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-plan/maintenance-plan.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-template/maintenance-template.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-template-activity-type/maintenance-template-activity-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-template-failure-mode/maintenance-template-failure-mode.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-template-resource/maintenance-template-resource.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/maintenance-type/maintenance-type.types.ts","../../../../libs/modules/maintenance-management/contracts/src/entities/work-report/work-report.types.ts","../../../../libs/modules/maintenance-management/contracts/src/index.ts","../../../../libs/modules/maintenance-management/contracts/src/acorex-platform-module-maintenance-management-client-contracts.ts"],"sourcesContent":["/** Maintenance catalog scope for questionnaires, question bank items, and workflow definitions. */\nexport const MM_CATALOG_SCOPE_MN = 'maintenance-management.mn';\n","//#region ---- Command keys ----\n\nexport const AXMMaintenanceManagementCommandKeys = {\n WorkOrder: {\n StartFlow: 'MaintenanceManagement.WorkOrder:StartFlow',\n /** Interval in-progress card. Delegated (`:`) so the task board does not resume the workflow. */\n OpenForm: 'MaintenanceManagement.WorkOrder:OpenForm',\n /** Interval card. Opens the existing signature dialog, then asks the server to complete the work order. */\n SignOff: 'MaintenanceManagement.WorkOrder:SignOff',\n /** Server completion for an interval checklist sign-off. Not registered on the client. */\n CompleteIntervalSignOff: 'MaintenanceManagement.WorkOrder:CompleteIntervalSignOff',\n },\n WorkReport: {\n FillCompletion: 'MaintenanceManagement.WorkReport:FillCompletion',\n OpenFromWorkOrder: 'MaintenanceManagement.WorkReport:OpenFromWorkOrder',\n },\n MaintenanceIntervalCheck: 'MaintenanceManagement:MaintenanceInterval:Check',\n WorkflowActivity: {\n ResolveWorkOrder: 'workflow-activity:resolve-work-order',\n ResolvePersonUserId: 'workflow-activity:resolve-person-user-id',\n CreateWorkOrderFromPlan: 'workflow-activity:create-work-order-from-plan',\n CreateOrGetWorkReportDraft: 'workflow-activity:create-or-get-work-report-draft',\n UpdateWorkOrderInProgress: 'workflow-activity:update-work-order-in-progress',\n ValidateWorkOrderCompletion: 'workflow-activity:validate-work-order-completion',\n UpdateWorkReportOnCompletion: 'workflow-activity:update-work-report-on-completion',\n RecordWorkReportAssessment: 'workflow-activity:record-work-report-assessment',\n UpdateWorkOrderCompleted: 'workflow-activity:update-work-order-completed',\n },\n} as const;\n\nexport const AXM_MAINTENANCE_INTERVAL_CHECK_COMMAND_KEY =\n AXMMaintenanceManagementCommandKeys.MaintenanceIntervalCheck;\n\n//#endregion\n","import { AXMMaintenanceManagementCommandKeys } from './commands.keys';\n\n//#region ----- Constants -----\n\n/** Bookmark action that starts an interval work order. */\nexport const AXM_INTERVAL_START_FLOW_ACTION_NAME = 'start-flow';\n\n/** Bookmark action that opens the in-progress checklist form. */\nexport const AXM_INTERVAL_OPEN_FORM_ACTION_NAME = 'open-form';\n\n/** Bookmark action that collects a signature and completes the interval work order. */\nexport const AXM_INTERVAL_SIGN_OFF_ACTION_NAME = 'sign-off';\n\n/** Seeded interval workflow name. The task-board card belongs to this instance. */\nexport const AXM_INTERVAL_WORK_ORDER_WORKFLOW_NAME = 'maintenance-interval-work-order';\n\nconst AXM_INTERVAL_DUE_ACTIVITY_ID = 'intervalDueHumanTask';\n\n/** Workflow variable / instance property for the checklist case of this work order. */\nexport const AXM_INTERVAL_CHECKLIST_CASE_ID = 'assessmentCaseId';\n\n/** Workflow variable / instance property for the checklist session of this work order. */\nexport const AXM_INTERVAL_CHECKLIST_SESSION_ID = 'assessmentSessionId';\n\n/** Workflow variable storing the template questionnaire this occurrence was opened against. */\nexport const AXM_INTERVAL_CHECKLIST_QUESTIONNAIRE_ID = 'checklistQuestionnaireId';\n\n/** Short-lived claim so concurrent Open Form clicks create one case and session. */\nexport const AXM_INTERVAL_CHECKLIST_CLAIM = 'checklistOccurrenceClaim';\n\nexport const AXM_INTERVAL_IN_PROGRESS_TASK_DESCRIPTION =\n '@maintenance-management:work-orders.tasks.interval-due.in-progress-description';\n\nexport const AXM_INTERVAL_COMPLETED_TASK_DESCRIPTION =\n '@maintenance-management:work-orders.tasks.interval-due.completed-description';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface IntervalWorkOrderOpenFormAction {\n name: string;\n title: string;\n icon: string;\n color: string;\n /** Shown on the card face, ahead of the more menu. */\n priority: 'primary';\n command: {\n name: string;\n options: {\n data: { id: string };\n checklist: string;\n };\n };\n}\n\nexport interface IntervalWorkOrderSignOffAction {\n name: string;\n title: string;\n icon: string;\n color: string;\n priority: 'primary';\n command: {\n name: string;\n options: {\n data: { id: string };\n checklist: string;\n };\n };\n}\n\nexport interface IntervalTaskActionLists {\n prefix?: unknown[] | null;\n suffix?: unknown[] | null;\n}\n\nexport interface ChecklistOccurrenceRow {\n id?: unknown;\n auditInfo?: { created?: { at?: unknown } };\n createdAt?: unknown;\n}\n\n//#endregion\n\n//#region ----- Checklist id -----\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nexport function resolveChecklistId(value: unknown): string {\n if (typeof value === 'string') {\n return value.trim();\n }\n if (isRecord(value)) {\n return resolveChecklistId(value['id']);\n }\n return '';\n}\n\n/**\n * Questionnaire for this interval occurrence.\n * `workflowState.input.checklist` wins over a task-action or command fallback.\n */\nexport function readIntervalChecklistId(source: Record<string, unknown> | null | undefined, fallback?: unknown): string {\n const workflowInstance = isRecord(source?.['workflowInstance'])\n ? (source['workflowInstance'] as Record<string, unknown>)\n : source;\n const workflowState = isRecord(workflowInstance?.['workflowState'])\n ? (workflowInstance['workflowState'] as Record<string, unknown>)\n : null;\n const input = isRecord(workflowState?.['input']) ? (workflowState['input'] as Record<string, unknown>) : null;\n const properties = isRecord(workflowState?.['properties'])\n ? (workflowState['properties'] as Record<string, unknown>)\n : null;\n\n return (\n resolveChecklistId(input?.['checklist']) ||\n resolveChecklistId(input?.['preChecklistQuestionnaireId']) ||\n resolveChecklistId(properties?.[AXM_INTERVAL_CHECKLIST_QUESTIONNAIRE_ID]) ||\n resolveChecklistId(properties?.['checklist']) ||\n resolveChecklistId(fallback)\n );\n}\n\nexport function readChecklistIdFromTaskActions(actions: unknown): string {\n if (!isRecord(actions)) {\n return '';\n }\n const lists = [actions['prefix'], actions['suffix']];\n for (const list of lists) {\n if (!Array.isArray(list)) {\n continue;\n }\n for (const item of list) {\n if (!isRecord(item) || !isRecord(item['command'])) {\n continue;\n }\n const options = isRecord(item['command']['options']) ? item['command']['options'] : null;\n const checklist = resolveChecklistId(options?.['checklist']);\n if (checklist) {\n return checklist;\n }\n }\n }\n return '';\n}\n\n//#endregion\n\n//#region ----- Task action -----\n\nexport function buildIntervalWorkOrderOpenFormAction(input: {\n workOrderId: string;\n checklist: string;\n}): IntervalWorkOrderOpenFormAction {\n return {\n name: AXM_INTERVAL_OPEN_FORM_ACTION_NAME,\n title: '@maintenance-management:work-orders.tasks.actions.open-form',\n icon: 'fa-light fa-file-lines',\n color: 'primary',\n priority: 'primary',\n command: {\n name: AXMMaintenanceManagementCommandKeys.WorkOrder.OpenForm,\n options: {\n data: { id: input.workOrderId },\n checklist: input.checklist,\n },\n },\n };\n}\n\nexport function buildIntervalWorkOrderSignOffAction(input: {\n workOrderId: string;\n checklist: string;\n}): IntervalWorkOrderSignOffAction {\n return {\n name: AXM_INTERVAL_SIGN_OFF_ACTION_NAME,\n title: '@maintenance-management:work-orders.tasks.actions.sign-off',\n icon: 'fa-light fa-file-signature',\n color: 'primary',\n priority: 'primary',\n command: {\n name: AXMMaintenanceManagementCommandKeys.WorkOrder.SignOff,\n options: {\n data: { id: input.workOrderId },\n checklist: input.checklist,\n },\n },\n };\n}\n\nexport function isIntervalStartFlowAction(action: unknown): boolean {\n if (!isRecord(action)) {\n return false;\n }\n const command = isRecord(action['command']) ? action['command'] : null;\n const commandName = typeof command?.['name'] === 'string' ? command['name'].trim() : '';\n const name = typeof action['name'] === 'string' ? action['name'].trim() : '';\n return name === AXM_INTERVAL_START_FLOW_ACTION_NAME || commandName === AXMMaintenanceManagementCommandKeys.WorkOrder.StartFlow;\n}\n\nexport function isIntervalSignOffAction(action: unknown): boolean {\n if (!isRecord(action)) {\n return false;\n }\n const command = isRecord(action['command']) ? action['command'] : null;\n const commandName = typeof command?.['name'] === 'string' ? command['name'].trim() : '';\n const name = typeof action['name'] === 'string' ? action['name'].trim() : '';\n return name === AXM_INTERVAL_SIGN_OFF_ACTION_NAME || commandName === AXMMaintenanceManagementCommandKeys.WorkOrder.SignOff;\n}\n\nexport function isIntervalOpenFormAction(action: unknown): boolean {\n if (!isRecord(action)) {\n return false;\n }\n const command = isRecord(action['command']) ? action['command'] : null;\n const commandName = typeof command?.['name'] === 'string' ? command['name'].trim() : '';\n const name = typeof action['name'] === 'string' ? action['name'].trim() : '';\n return name === AXM_INTERVAL_OPEN_FORM_ACTION_NAME || commandName === AXMMaintenanceManagementCommandKeys.WorkOrder.OpenForm;\n}\n\n/**\n * Replaces Start Flow with a single Open Form action.\n * A second call refreshes that action and does not add another button.\n */\nexport function replaceIntervalStartFlowActions(\n actions: IntervalTaskActionLists | null | undefined,\n openFormAction: IntervalWorkOrderOpenFormAction,\n): { prefix: unknown[]; suffix: unknown[]; changed: boolean } {\n const prefixSource = Array.isArray(actions?.prefix) ? actions.prefix : [];\n const suffixSource = Array.isArray(actions?.suffix) ? actions.suffix : [];\n let changed = false;\n let placed = false;\n\n const rewrite = (list: unknown[]): unknown[] => {\n const next: unknown[] = [];\n for (const item of list) {\n if (isIntervalStartFlowAction(item) || isIntervalOpenFormAction(item)) {\n changed = true;\n if (!placed) {\n next.push(openFormAction);\n placed = true;\n }\n continue;\n }\n next.push(item);\n }\n return next;\n };\n\n const prefix = rewrite(prefixSource);\n const suffix = rewrite(suffixSource);\n if (!placed) {\n suffix.push(openFormAction);\n changed = true;\n }\n return { prefix, suffix, changed };\n}\n\nexport type IntervalTaskCardMode = 'in-progress' | 'completed';\n\n/**\n * Completed checklists reopen read-only. In Progress stays editable.\n * Accepts the stored status string or a status object (`name` / `id`).\n * Any other status cannot open this card's form.\n */\nexport function resolveIntervalChecklistViewerMode(statusId: unknown): 'editable' | 'readonly' | 'unavailable' {\n const status = readStatusName(statusId);\n if (status === 'completed') {\n return 'readonly';\n }\n if (status === 'in-progress') {\n return 'editable';\n }\n return 'unavailable';\n}\n\n/** Status plugin values are a name string or an object with `name` / `id`. */\nfunction readStatusName(value: unknown, seen?: Set<unknown>): string {\n if (typeof value === 'string') {\n return value.trim();\n }\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return '';\n }\n if (seen?.has(value)) {\n return '';\n }\n const next = seen ?? new Set<unknown>();\n next.add(value);\n const record = value as Record<string, unknown>;\n return (\n readStatusName(record['name'], next) ||\n readStatusName(record['id'], next) ||\n readStatusName(record['statusId'], next) ||\n readStatusName(record['status'], next)\n );\n}\n\n/**\n * In Progress cards show Open Form, then Sign Off.\n * Completed cards keep Open Form and drop Sign Off. Other actions, including History, stay where they are.\n */\nexport function applyIntervalWorkOrderCardActions(\n actions: IntervalTaskActionLists | null | undefined,\n mode: IntervalTaskCardMode,\n input: { workOrderId: string; checklist: string },\n): { prefix: unknown[]; suffix: unknown[]; changed: boolean } {\n const openForm = buildIntervalWorkOrderOpenFormAction(input);\n const desired =\n mode === 'completed'\n ? [openForm]\n : [openForm, buildIntervalWorkOrderSignOffAction(input)];\n const prefixSource = Array.isArray(actions?.prefix) ? actions.prefix : [];\n const suffixSource = Array.isArray(actions?.suffix) ? actions.suffix : [];\n let changed = false;\n let placed = false;\n\n const isManaged = (item: unknown): boolean =>\n isIntervalStartFlowAction(item) || isIntervalOpenFormAction(item) || isIntervalSignOffAction(item);\n\n const rewrite = (list: unknown[]): unknown[] => {\n const next: unknown[] = [];\n for (const item of list) {\n if (isManaged(item)) {\n changed = true;\n if (!placed) {\n next.push(...desired);\n placed = true;\n }\n continue;\n }\n next.push(item);\n }\n return next;\n };\n\n const prefix = rewrite(prefixSource);\n const suffix = rewrite(suffixSource);\n if (!placed) {\n suffix.push(...desired);\n changed = true;\n }\n return { prefix, suffix, changed: changed || !sameJson(actions, { prefix, suffix }) };\n}\n\n/**\n * Cancellation from workflow-activity:sign-off is success:true with metadata.outcome Cancelled.\n * Only an explicit Signed outcome with a signature continues.\n */\nexport function readSignOffActivityOutcome(result: {\n success?: boolean;\n metadata?: { outcome?: unknown };\n data?: unknown;\n} | null | undefined): 'Signed' | 'Cancelled' | 'Failed' {\n const outcome = text(result?.metadata?.outcome);\n if (result?.success === false) {\n return outcome === 'Cancelled' ? 'Cancelled' : 'Failed';\n }\n if (!result || outcome === 'Cancelled' || outcome !== 'Signed') {\n return 'Cancelled';\n }\n const data = isRecord(result.data) ? result.data : null;\n return text(data?.['signature']) ? 'Signed' : 'Cancelled';\n}\n\nexport function rewriteIntervalCardBookmarks(input: {\n instance: Record<string, unknown>;\n workOrderId: string;\n sourceBookmarkId?: string;\n mode: IntervalTaskCardMode;\n assigneeUserId?: string;\n}): { bookmarks: Record<string, unknown>[]; changed: boolean } {\n const workflowInstance = isRecord(input.instance['workflowInstance'])\n ? (input.instance['workflowInstance'] as Record<string, unknown>)\n : input.instance;\n const bookmarks = readBookmarkList(workflowInstance['bookmarks']);\n const definitionId =\n text(input.instance['definitionId']) || text(workflowInstance['definitionId']);\n const checklist = readIntervalChecklistId(input.instance, readChecklistFromBookmarks(bookmarks));\n const selected = new Set(\n selectIntervalBookmarks(bookmarks, input.workOrderId, text(input.sourceBookmarkId), definitionId).map((bookmark) =>\n text(bookmark['id']),\n ),\n );\n if (selected.size === 0) {\n return { bookmarks, changed: false };\n }\n\n const description =\n input.mode === 'completed' ? AXM_INTERVAL_COMPLETED_TASK_DESCRIPTION : AXM_INTERVAL_IN_PROGRESS_TASK_DESCRIPTION;\n const statusId = input.mode === 'completed' ? 'completed' : 'in-progress';\n let changed = false;\n const next = bookmarks.map((bookmark) => {\n if (!selected.has(text(bookmark['id']))) {\n return bookmark;\n }\n const payload = readPayload(bookmark);\n if (!payload) {\n return bookmark;\n }\n const before = JSON.stringify(payload);\n if (input.mode === 'in-progress' && text(input.assigneeUserId)) {\n payload['assignedUserIds'] = [text(input.assigneeUserId)];\n }\n const context = isRecord(payload['context']) ? { ...payload['context'] } : {};\n const actions = isRecord(payload['actions']) ? payload['actions'] : {};\n const replaced = applyIntervalWorkOrderCardActions(\n {\n prefix: Array.isArray(actions['prefix']) ? actions['prefix'] : [],\n suffix: Array.isArray(actions['suffix']) ? actions['suffix'] : [],\n },\n input.mode,\n { workOrderId: input.workOrderId, checklist },\n );\n payload['actions'] = { prefix: replaced.prefix, suffix: replaced.suffix };\n payload['description'] = description;\n payload['context'] = {\n ...context,\n workOrderId: input.workOrderId,\n statusId,\n ...(checklist ? { checklist } : {}),\n };\n if (JSON.stringify(payload) !== before) {\n changed = true;\n }\n return {\n ...bookmark,\n payload,\n payloadJson: JSON.stringify(payload),\n };\n });\n return { bookmarks: next, changed };\n}\n\nfunction readBookmarkList(value: unknown): Record<string, unknown>[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.map((item) => (isRecord(item) ? { ...item } : null)).filter((item): item is Record<string, unknown> => !!item);\n}\n\nfunction readPayload(bookmark: Record<string, unknown>): Record<string, unknown> | null {\n if (isRecord(bookmark['payload'])) {\n return { ...(bookmark['payload'] as Record<string, unknown>) };\n }\n const payloadJson = bookmark['payloadJson'];\n if (typeof payloadJson !== 'string' || !payloadJson.trim()) {\n return null;\n }\n try {\n const parsed = JSON.parse(payloadJson) as unknown;\n return isRecord(parsed) ? { ...parsed } : null;\n } catch {\n return null;\n }\n}\n\nfunction readChecklistFromBookmarks(bookmarks: Record<string, unknown>[]): string {\n for (const bookmark of bookmarks) {\n const payload = readPayload(bookmark);\n const fromActions = readChecklistIdFromTaskActions(payload?.['actions']);\n if (fromActions) {\n return fromActions;\n }\n const context = isRecord(payload?.['context']) ? payload?.['context'] : null;\n const fromContext = text(context?.['checklist']);\n if (fromContext) {\n return fromContext;\n }\n }\n return '';\n}\n\nfunction selectIntervalBookmarks(\n bookmarks: Record<string, unknown>[],\n workOrderId: string,\n sourceBookmarkId: string,\n definitionId: string,\n): Record<string, unknown>[] {\n const active = bookmarks.filter((bookmark) => bookmark['isConsumed'] !== true && bookmark['consumed'] !== true);\n if (sourceBookmarkId) {\n const byId = active.filter((bookmark) => text(bookmark['id']) === sourceBookmarkId);\n if (byId.length > 0) {\n return byId;\n }\n }\n if (definitionId !== AXM_INTERVAL_WORK_ORDER_WORKFLOW_NAME) {\n return [];\n }\n const byWorkOrder = active.filter((bookmark) => bookmarkReferencesWorkOrder(bookmark, workOrderId));\n if (byWorkOrder.length > 0) {\n return byWorkOrder;\n }\n const humanTasks = active.filter((bookmark) => {\n if (text(bookmark['activityId']) === AXM_INTERVAL_DUE_ACTIVITY_ID) {\n return true;\n }\n const payload = readPayload(bookmark);\n return text(payload?.['activityType']) === 'workflow-activity:human-task';\n });\n return humanTasks.length === 1 ? humanTasks : [];\n}\n\nfunction bookmarkReferencesWorkOrder(bookmark: Record<string, unknown>, workOrderId: string): boolean {\n const payload = readPayload(bookmark);\n const context = isRecord(payload?.['context']) ? payload?.['context'] : null;\n return text(context?.['workOrderId']) === workOrderId;\n}\n\nfunction sameJson(left: unknown, right: unknown): boolean {\n return JSON.stringify(left ?? null) === JSON.stringify(right ?? null);\n}\n\n//#endregion\n\n//#region ----- Occurrence identity -----\n\nfunction text(value: unknown): string {\n return typeof value === 'string' ? value.trim() : '';\n}\n\nfunction createdStamp(row: ChecklistOccurrenceRow): string {\n const auditAt = row.auditInfo?.created?.at;\n if (typeof auditAt === 'string' && auditAt.trim()) {\n return auditAt.trim();\n }\n if (auditAt instanceof Date && !Number.isNaN(auditAt.getTime())) {\n return auditAt.toISOString();\n }\n if (typeof row.createdAt === 'string' && row.createdAt.trim()) {\n return row.createdAt.trim();\n }\n return '';\n}\n\n/** Earliest created row, then lowest id. Rows without an id are ignored. */\nexport function pickCanonicalChecklistRow<T extends ChecklistOccurrenceRow>(rows: readonly T[]): T | null {\n const withId = rows.filter((row) => text(row.id));\n if (withId.length === 0) {\n return null;\n }\n return [...withId].sort((left, right) => {\n const leftAt = createdStamp(left);\n const rightAt = createdStamp(right);\n if (leftAt && rightAt && leftAt !== rightAt) {\n return leftAt < rightAt ? -1 : 1;\n }\n if (leftAt && !rightAt) {\n return -1;\n }\n if (!leftAt && rightAt) {\n return 1;\n }\n const leftId = text(left.id);\n const rightId = text(right.id);\n if (leftId === rightId) {\n return 0;\n }\n return leftId < rightId ? -1 : 1;\n })[0];\n}\n\n/**\n * A checklist occurrence is this work order plus its template questionnaire and the session's own case.\n * Questionnaire id alone is not enough.\n */\nexport function isWorkOrderChecklistOccurrence(input: {\n assessmentCase: Record<string, unknown> | null | undefined;\n session: Record<string, unknown> | null | undefined;\n workOrderId: string;\n questionnaireId: string;\n subjectType: string;\n}): boolean {\n const workOrderId = text(input.workOrderId);\n const questionnaireId = text(input.questionnaireId);\n const subjectType = text(input.subjectType);\n const caseId = text(input.assessmentCase?.['id']);\n const sessionCaseId = text(input.session?.['caseId']);\n if (!workOrderId || !questionnaireId || !subjectType || !caseId || !sessionCaseId || sessionCaseId !== caseId) {\n return false;\n }\n if (text(input.assessmentCase?.['questionnaireId']) !== questionnaireId) {\n return false;\n }\n const subject = isRecord(input.assessmentCase?.['subjectRef'])\n ? (input.assessmentCase?.['subjectRef'] as Record<string, unknown>)\n : null;\n return text(subject?.['type']) === subjectType && text(subject?.['id']) === workOrderId;\n}\n\n//#endregion\n","export const AXMMaintenanceManagementFeatureKeys = {\n Management: 'MaintenanceManagement:Feature:Management',\n} as const;\n","export const AXMMaintenanceManagementMenuKeys = {\n Root: 'MaintenanceManagement:Menu',\n // MainPlanEquipmentMaintenanceSectionGroup: 'MaintenanceManagement:Menu:MainPlanEquipment:MaintenanceSectionGroup',\n // PlanEquipmentMaintenanceSectionGroup: 'MaintenanceManagement:Menu:PlantEquipment:MaintenanceSectionGroup',\n Activities: 'MaintenanceManagement:Menu:Activities',\n Failures: 'MaintenanceManagement:Menu:Failures',\n ActivityCategories: 'MaintenanceManagement:Menu:ActivityCategories',\n ActivityTypes: 'MaintenanceManagement:Menu:ActivityTypes',\n MaintenanceTypes: 'MaintenanceManagement:Menu:MaintenanceTypes',\n MaintenancePlans: 'MaintenanceManagement:Menu:MaintenancePlans',\n MaintenancePlansList: 'MaintenanceManagement:Menu:MaintenancePlans:List',\n WorkPackages: 'MaintenanceManagement:Menu:WorkPackages',\n WorkOrders: 'MaintenanceManagement:Menu:WorkOrders',\n WorkReports: 'MaintenanceManagement:Menu:WorkReports',\n MaintenanceTemplates: 'MaintenanceManagement:Menu:MaintenanceTemplates',\n MaintenanceTemplateActivityTypes: 'MaintenanceManagement:Menu:MaintenanceTemplateActivityTypes',\n MaintenanceTemplateResources: 'MaintenanceManagement:Menu:MaintenanceTemplateResources',\n MaintenanceTemplateFailureModes: 'MaintenanceManagement:Menu:MaintenanceTemplateFailureModes',\n FailureCauses: 'MaintenanceManagement:Menu:FailureCauses',\n FailureMechanisms: 'MaintenanceManagement:Menu:FailureMechanisms',\n FailureDetections: 'MaintenanceManagement:Menu:FailureDetections',\n FailureEffects: 'MaintenanceManagement:Menu:FailureEffects',\n FailureSeverities: 'MaintenanceManagement:Menu:FailureSeverities',\n FailureTypes: 'MaintenanceManagement:Menu:FailureTypes',\n FailureModes: 'MaintenanceManagement:Menu:FailureModes',\n FailureRegisters: 'MaintenanceManagement:Menu:FailureRegisters',\n} as const;\n","/**\n * Assets & Maintenance capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPAssetsMaintenancePermissionKeys = {\n Access: 'AssetsMaintenance:Permission:Access',\n MaintainAssets: 'AssetsMaintenance:Permission:MaintainAssets',\n MaintainMaintenance: 'AssetsMaintenance:Permission:MaintainMaintenance',\n Setup: 'AssetsMaintenance:Permission:Setup',\n} as const;\n\nconst cap = AXPAssetsMaintenancePermissionKeys.MaintainMaintenance;\n\nfunction entityCrud() {\n return {\n Management: cap,\n View: cap,\n Create: cap,\n Update: cap,\n Delete: cap,\n } as const;\n}\n\n/**\n * @deprecated Prefer {@link AXPAssetsMaintenancePermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMMaintenanceManagementPermissionKeys = {\n MaintenanceManagement: {\n Management: cap,\n ActivityCategory: entityCrud(),\n MaintenanceType: entityCrud(),\n MaintenanceTemplate: entityCrud(),\n MaintenancePlan: entityCrud(),\n WorkPackage: entityCrud(),\n WorkOrder: entityCrud(),\n WorkReport: entityCrud(),\n MaintenanceTemplateActivityType: entityCrud(),\n MaintenanceTemplateResource: entityCrud(),\n MaintenanceTemplateFailureMode: entityCrud(),\n ActivityType: entityCrud(),\n ActivityTypeAssetType: entityCrud(),\n ActivityTypeResource: entityCrud(),\n FailureCause: entityCrud(),\n FailureMechanism: entityCrud(),\n FailureDetection: entityCrud(),\n FailureEffect: entityCrud(),\n FailureSeverity: entityCrud(),\n FailureType: entityCrud(),\n FailureMode: entityCrud(),\n FailureRegister: entityCrud(),\n },\n} as const;\n","//#region ---- Status names ----\n\nexport enum AXMWorkOrderStatus {\n Planned = 'planned',\n Scheduled = 'scheduled',\n Assigned = 'assigned',\n InProgress = 'in-progress',\n OnHold = 'on-hold',\n Completed = 'completed',\n SignedOff = 'signed-off',\n Cancelled = 'cancelled',\n}\n\n//#endregion\n","//#region ---- Source type enum ----\n\nexport enum AXMWorkOrderSourceType {\n Manual = 'manual',\n MaintenancePlan = 'maintenance-plan',\n CreateAsset = 'create-asset',\n FailureRegister = 'failure-register',\n}\n\n//#endregion\n","//#region ---- Status names ----\n\nexport enum AXMFailureRegisterStatus {\n Reported = 'reported',\n UnderReview = 'underReview',\n WorkOrderRequired = 'workOrderRequired',\n WorkOrderCreated = 'workOrderCreated',\n InProgress = 'inProgress',\n Resolved = 'resolved',\n FollowUpRequired = 'followUpRequired',\n Rejected = 'rejected',\n Duplicate = 'duplicate',\n Closed = 'closed',\n}\n\n//#endregion\n","import type { AXMMaintenanceManagementMaintenanceTemplateSchedule } from './entities/maintenance-template/maintenance-template.types';\n\n//#region ----- Constants -----\n\n/** Widget name for the maintenance interval editor. Kind strings match `AXMAssetIntervalKind`. */\nexport const AXM_MAINTENANCE_INTERVAL_WIDGET = 'maintenance-interval-editor';\n\n/**\n * Same stored values as `AXMAssetIntervalKind`.\n * Combinations are multiple entries, not extra kinds.\n */\nexport const AXM_MAINTENANCE_INTERVAL_KINDS = ['schedule', 'date', 'distance', 'operating-hours', 'operation-count'] as const;\n\nconst METER_KINDS = ['distance', 'operating-hours', 'operation-count'] as const;\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type AXMMaintenanceIntervalKind = (typeof AXM_MAINTENANCE_INTERVAL_KINDS)[number];\n\nexport type AXMMaintenanceMeterKind = (typeof METER_KINDS)[number];\n\n/** How multiple enabled intervals combine. Stored in lowercase, like other persisted enums. */\nexport enum AXMMaintenanceIntervalTriggerLogic {\n Any = 'any',\n All = 'all',\n}\n\n/** Unit stored on a meter trigger. Distance is the only kind with a choice. */\nexport enum AXMMaintenanceIntervalUnit {\n Kilometer = 'kilometer',\n Mile = 'mile',\n Hour = 'hour',\n Operation = 'operation',\n}\n\nexport interface AXMMaintenanceIntervalConfig {\n triggerLogic: AXMMaintenanceIntervalTriggerLogic;\n triggers: AXMMaintenanceIntervalTrigger[];\n}\n\nexport type AXMMaintenanceIntervalTrigger =\n | AXMScheduleIntervalTrigger\n | AXMDateIntervalTrigger\n | AXMMeterIntervalTrigger;\n\n/** Recurring calendar configuration from the scheduler picker. */\nexport interface AXMScheduleIntervalTrigger {\n kind: 'schedule';\n schedule: AXMMaintenanceManagementMaintenanceTemplateSchedule;\n}\n\n/**\n * Single date. Older rows stored a scheduler value on `schedule` before Schedule was its own kind.\n */\nexport interface AXMDateIntervalTrigger {\n kind: 'date';\n date?: string;\n schedule?: AXMMaintenanceManagementMaintenanceTemplateSchedule;\n}\n\nexport interface AXMMeterIntervalTrigger {\n kind: AXMMaintenanceMeterKind;\n interval: number;\n unit?: AXMMaintenanceIntervalUnit;\n}\n\nexport interface AXMMaintenanceIntervalMeterDraft {\n enabled: boolean;\n interval: number | null;\n unit: AXMMaintenanceIntervalUnit;\n}\n\n/** Editable form state. Disabled or invalid kinds are omitted from {@link buildAXMMaintenanceIntervalConfig}. */\nexport interface AXMMaintenanceIntervalDraft {\n triggerLogic: AXMMaintenanceIntervalTriggerLogic;\n scheduleEnabled: boolean;\n schedule: AXMMaintenanceManagementMaintenanceTemplateSchedule | null;\n dateEnabled: boolean;\n /** Calendar date `YYYY-MM-DD`. Not a recurring schedule. */\n date: string | null;\n meters: Record<AXMMaintenanceMeterKind, AXMMaintenanceIntervalMeterDraft>;\n}\n\nexport type AXMMaintenanceIntervalErrorCode = 'schedule' | 'date' | 'interval' | 'integer';\n\nexport interface AXMMaintenanceIntervalFieldError {\n kind: AXMMaintenanceIntervalKind;\n code: AXMMaintenanceIntervalErrorCode;\n}\n\nexport interface AXMMaintenanceIntervalBuildResult {\n config: AXMMaintenanceIntervalConfig;\n errors: AXMMaintenanceIntervalFieldError[];\n}\n\n//#endregion\n\n//#region ----- Kind helpers -----\n\nconst KIND_SET = new Set<string>(AXM_MAINTENANCE_INTERVAL_KINDS);\n\nexport function isAXMMaintenanceIntervalKind(value: string): value is AXMMaintenanceIntervalKind {\n return KIND_SET.has(value);\n}\n\nexport function isAXMMaintenanceMeterKind(value: string): value is AXMMaintenanceMeterKind {\n return value === 'distance' || value === 'operating-hours' || value === 'operation-count';\n}\n\nexport function defaultAXMMaintenanceIntervalUnit(kind: AXMMaintenanceMeterKind): AXMMaintenanceIntervalUnit {\n switch (kind) {\n case 'distance':\n return AXMMaintenanceIntervalUnit.Kilometer;\n case 'operating-hours':\n return AXMMaintenanceIntervalUnit.Hour;\n case 'operation-count':\n return AXMMaintenanceIntervalUnit.Operation;\n }\n}\n\nexport function isAXMMaintenanceIntervalUnitForKind(\n kind: AXMMaintenanceMeterKind,\n unit: AXMMaintenanceIntervalUnit,\n): boolean {\n switch (kind) {\n case 'distance':\n return unit === AXMMaintenanceIntervalUnit.Kilometer || unit === AXMMaintenanceIntervalUnit.Mile;\n case 'operating-hours':\n return unit === AXMMaintenanceIntervalUnit.Hour;\n case 'operation-count':\n return unit === AXMMaintenanceIntervalUnit.Operation;\n }\n}\n\nexport function emptyAXMMaintenanceIntervalConfig(): AXMMaintenanceIntervalConfig {\n return { triggerLogic: AXMMaintenanceIntervalTriggerLogic.Any, triggers: [] };\n}\n\nexport function emptyAXMMaintenanceIntervalDraft(): AXMMaintenanceIntervalDraft {\n return {\n triggerLogic: AXMMaintenanceIntervalTriggerLogic.Any,\n scheduleEnabled: false,\n schedule: null,\n dateEnabled: false,\n date: null,\n meters: {\n distance: { enabled: false, interval: null, unit: AXMMaintenanceIntervalUnit.Kilometer },\n 'operating-hours': { enabled: false, interval: null, unit: AXMMaintenanceIntervalUnit.Hour },\n 'operation-count': { enabled: false, interval: null, unit: AXMMaintenanceIntervalUnit.Operation },\n },\n };\n}\n\n//#endregion\n\n//#region ----- Normalize -----\n\nfunction scheduleMode(value: unknown): string {\n if (!value || typeof value !== 'object') {\n return '';\n }\n const mode = (value as { mode?: unknown }).mode;\n return typeof mode === 'string' ? mode.trim() : '';\n}\n\nfunction scheduleStartDate(value: unknown): unknown {\n if (!value || typeof value !== 'object') {\n return null;\n }\n const start = (value as { startCondition?: { startDate?: unknown } }).startCondition;\n return start?.startDate ?? null;\n}\n\nfunction isSchedule(value: unknown): value is AXMMaintenanceManagementMaintenanceTemplateSchedule {\n if (!value || typeof value !== 'object') {\n return false;\n }\n const record = value as { mode?: unknown; startCondition?: unknown; recurrence?: unknown };\n return typeof record.mode === 'string' || record.startCondition != null || typeof record.recurrence === 'string';\n}\n\n/** Calendar day stored on a date interval, as `YYYY-MM-DD`. */\nexport function readIntervalDate(value: unknown): string | null {\n const date =\n value instanceof Date\n ? value\n : typeof value === 'string' && value.trim()\n ? new Date(value)\n : null;\n if (!date || Number.isNaN(date.getTime())) {\n return null;\n }\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${date.getFullYear()}-${month}-${day}`;\n}\n\nfunction isUnit(value: unknown): value is AXMMaintenanceIntervalUnit {\n return (\n value === AXMMaintenanceIntervalUnit.Kilometer ||\n value === AXMMaintenanceIntervalUnit.Mile ||\n value === AXMMaintenanceIntervalUnit.Hour ||\n value === AXMMaintenanceIntervalUnit.Operation\n );\n}\n\nfunction readTriggerLogic(value: unknown): AXMMaintenanceIntervalTriggerLogic {\n return value === AXMMaintenanceIntervalTriggerLogic.All\n ? AXMMaintenanceIntervalTriggerLogic.All\n : AXMMaintenanceIntervalTriggerLogic.Any;\n}\n\nfunction supportedKindSet(kinds: readonly string[]): Set<AXMMaintenanceIntervalKind> {\n const set = new Set<AXMMaintenanceIntervalKind>();\n for (const kind of kinds) {\n if (isAXMMaintenanceIntervalKind(kind)) {\n set.add(kind);\n }\n }\n return set;\n}\n\nfunction meterIssue(kind: AXMMaintenanceMeterKind, interval: number | null): AXMMaintenanceIntervalErrorCode | null {\n if (typeof interval !== 'number' || !Number.isFinite(interval) || interval <= 0) {\n return 'interval';\n }\n if (kind === 'operation-count' && !Number.isInteger(interval)) {\n return 'integer';\n }\n return null;\n}\n\n/**\n * Builds the value object emitted by the interval editor.\n * Unsupported, disabled, and invalid triggers are left out.\n * Zero or one valid trigger always reports `any`.\n */\nexport function buildAXMMaintenanceIntervalConfig(\n supportedIntervalKinds: readonly string[],\n draft: AXMMaintenanceIntervalDraft,\n): AXMMaintenanceIntervalBuildResult {\n const supported = supportedKindSet(supportedIntervalKinds);\n const triggers: AXMMaintenanceIntervalTrigger[] = [];\n const errors: AXMMaintenanceIntervalFieldError[] = [];\n\n if (supported.has('schedule') && draft.scheduleEnabled) {\n const schedule = draft.schedule;\n if (schedule && scheduleMode(schedule) === 'specific-date') {\n if (readIntervalDate(scheduleStartDate(schedule))) {\n triggers.push({ kind: 'schedule', schedule });\n } else {\n errors.push({ kind: 'schedule', code: 'date' });\n }\n } else if (isSchedule(schedule)) {\n triggers.push({ kind: 'schedule', schedule });\n } else {\n errors.push({ kind: 'schedule', code: 'schedule' });\n }\n }\n\n if (supported.has('date') && draft.dateEnabled) {\n const date = readIntervalDate(draft.date);\n if (date) {\n triggers.push({ kind: 'date', date });\n } else if (!supported.has('schedule') && isSchedule(draft.schedule)) {\n triggers.push({ kind: 'date', schedule: draft.schedule });\n } else {\n errors.push({ kind: 'date', code: 'date' });\n }\n }\n\n for (const kind of METER_KINDS) {\n const meter = draft.meters[kind];\n if (!supported.has(kind) || !meter.enabled) {\n continue;\n }\n const issue = meterIssue(kind, meter.interval);\n if (issue) {\n errors.push({ kind, code: issue });\n continue;\n }\n const unit = isAXMMaintenanceIntervalUnitForKind(kind, meter.unit)\n ? meter.unit\n : defaultAXMMaintenanceIntervalUnit(kind);\n triggers.push({ kind, interval: meter.interval as number, unit });\n }\n\n const triggerLogic =\n triggers.length > 1 && draft.triggerLogic === AXMMaintenanceIntervalTriggerLogic.All\n ? AXMMaintenanceIntervalTriggerLogic.All\n : AXMMaintenanceIntervalTriggerLogic.Any;\n\n return { config: { triggerLogic, triggers }, errors };\n}\n\n/**\n * Date trigger schedule, or a legacy scheduler-picker object stored before interval configs.\n * Meter-only configs have no calendar schedule.\n */\nexport function readMaintenancePlanCalendarSchedule(\n value: unknown,\n): AXMMaintenanceManagementMaintenanceTemplateSchedule | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n const record = value as {\n triggers?: unknown;\n mode?: unknown;\n startCondition?: unknown;\n recurrence?: unknown;\n };\n\n if (Array.isArray(record.triggers)) {\n for (const item of record.triggers) {\n if (!item || typeof item !== 'object') {\n continue;\n }\n const kind = (item as { kind?: unknown }).kind;\n if (kind !== 'date' && kind !== 'schedule') {\n continue;\n }\n const schedule = (item as { schedule?: unknown }).schedule;\n if (isSchedule(schedule)) {\n return schedule;\n }\n }\n return undefined;\n }\n\n if (record.mode != null || record.startCondition != null || record.recurrence != null) {\n return value as AXMMaintenanceManagementMaintenanceTemplateSchedule;\n }\n\n return undefined;\n}\n\n/** Reads a stored config into editor state. Kinds outside `supportedIntervalKinds` are dropped. */\nexport function draftFromAXMMaintenanceIntervalConfig(\n value: unknown,\n supportedIntervalKinds: readonly string[],\n): AXMMaintenanceIntervalDraft {\n const draft = emptyAXMMaintenanceIntervalDraft();\n const supported = supportedKindSet(supportedIntervalKinds);\n if (!value || typeof value !== 'object') {\n return draft;\n }\n\n const record = value as { triggerLogic?: unknown; triggers?: unknown };\n draft.triggerLogic = readTriggerLogic(record.triggerLogic);\n if (!Array.isArray(record.triggers)) {\n return draft;\n }\n\n for (const item of record.triggers) {\n if (!item || typeof item !== 'object' || !('kind' in item) || typeof (item as { kind: unknown }).kind !== 'string') {\n continue;\n }\n const kind = (item as { kind: string }).kind;\n if (kind === 'date') {\n const schedule = (item as { schedule?: unknown }).schedule;\n const date = readIntervalDate((item as { date?: unknown }).date);\n if (isSchedule(schedule) && supported.has('schedule') && !draft.scheduleEnabled) {\n draft.scheduleEnabled = true;\n draft.schedule = schedule;\n }\n if (!supported.has('date')) {\n continue;\n }\n if (date) {\n draft.dateEnabled = true;\n draft.date = date;\n } else if (isSchedule(schedule) && !supported.has('schedule')) {\n draft.dateEnabled = true;\n draft.schedule = schedule;\n }\n continue;\n }\n if (!isAXMMaintenanceIntervalKind(kind) || !supported.has(kind)) {\n continue;\n }\n if (kind === 'schedule') {\n const schedule = (item as { schedule?: unknown }).schedule;\n if (!isSchedule(schedule) || draft.scheduleEnabled) {\n continue;\n }\n draft.scheduleEnabled = true;\n draft.schedule = schedule;\n continue;\n }\n if (!isAXMMaintenanceMeterKind(kind)) {\n continue;\n }\n const meter = draft.meters[kind];\n if (meter.enabled) {\n continue;\n }\n const interval = (item as { interval?: unknown }).interval;\n const unit = (item as { unit?: unknown }).unit;\n if (meterIssue(kind, typeof interval === 'number' ? interval : null)) {\n continue;\n }\n meter.enabled = true;\n meter.interval = interval as number;\n meter.unit = isUnit(unit) && isAXMMaintenanceIntervalUnitForKind(kind, unit) ? unit : defaultAXMMaintenanceIntervalUnit(kind);\n }\n\n return draft;\n}\n\n//#endregion\n","//#region ---- Root Configuration ----\n\nconst config = {\n i18n: 'maintenance-management',\n module: 'MaintenanceManagement',\n route: 'maintenance-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: config.route,\n name: config.module,\n title: '@maintenance-management:module.title',\n icon: 'fa-light fa-box',\n },\n entities: {\n maintenanceType: {\n name: 'MaintenanceType',\n source: `${config.module}.MaintenanceType`,\n title: '@maintenance-management:maintenance-types.entities.maintenance-type.title',\n titlePlural: '@maintenance-management:maintenance-types.entities.maintenance-type.plural',\n icon: 'fa-light fa-screwdriver-wrench',\n },\n maintenanceTemplate: {\n name: 'MaintenanceTemplate',\n source: `${config.module}.MaintenanceTemplate`,\n title: '@maintenance-management:maintenance-templates.entities.maintenance-template.title',\n titlePlural: '@maintenance-management:maintenance-templates.entities.maintenance-template.plural',\n icon: 'fa-light fa-clipboard-list',\n },\n maintenancePlan: {\n name: 'MaintenancePlan',\n source: `${config.module}.MaintenancePlan`,\n title: '@maintenance-management:maintenance-plans.entities.maintenance-plan.title',\n titlePlural: '@maintenance-management:maintenance-plans.entities.maintenance-plan.plural',\n icon: 'fa-light fa-calendar-check',\n },\n workPackage: {\n name: 'WorkPackage',\n source: `${config.module}.WorkPackage`,\n title: '@maintenance-management:work-packages.entities.work-package.title',\n titlePlural: '@maintenance-management:work-packages.entities.work-package.plural',\n icon: 'fa-light fa-boxes-packing',\n },\n workOrder: {\n name: 'WorkOrder',\n source: `${config.module}.WorkOrder`,\n title: '@maintenance-management:work-orders.entities.work-order.title',\n titlePlural: '@maintenance-management:work-orders.entities.work-order.plural',\n icon: 'fa-light fa-clipboard-check',\n },\n workReport: {\n name: 'WorkReport',\n source: `${config.module}.WorkReport`,\n title: '@maintenance-management:work-reports.entities.work-report.title',\n titlePlural: '@maintenance-management:work-reports.entities.work-report.plural',\n icon: 'fa-light fa-file-lines',\n },\n maintenanceTemplateActivityType: {\n name: 'MaintenanceTemplateActivityType',\n source: `${config.module}.MaintenanceTemplateActivityType`,\n title:\n '@maintenance-management:maintenance-template-activity-types.entities.maintenance-template-activity-type.title',\n titlePlural:\n '@maintenance-management:maintenance-template-activity-types.entities.maintenance-template-activity-type.plural',\n icon: 'fa-light fa-list-check',\n },\n maintenanceTemplateResource: {\n name: 'MaintenanceTemplateResource',\n source: `${config.module}.MaintenanceTemplateResource`,\n title: '@maintenance-management:maintenance-template-resources.entities.maintenance-template-resource.title',\n titlePlural:\n '@maintenance-management:maintenance-template-resources.entities.maintenance-template-resource.plural',\n icon: 'fa-light fa-box-open-full',\n },\n maintenanceTemplateFailureMode: {\n name: 'MaintenanceTemplateFailureMode',\n source: `${config.module}.MaintenanceTemplateFailureMode`,\n title:\n '@maintenance-management:maintenance-template-failure-modes.entities.maintenance-template-failure-mode.title',\n titlePlural:\n '@maintenance-management:maintenance-template-failure-modes.entities.maintenance-template-failure-mode.plural',\n icon: 'fa-light fa-triangle-exclamation',\n },\n activityType: {\n name: 'ActivityType',\n source: `${config.module}.ActivityType`,\n title: '@maintenance-management:activity-types.entities.activity-type.title',\n titlePlural: '@maintenance-management:activity-types.entities.activity-type.plural',\n icon: 'fa-light fa-list-check',\n },\n activityTypeAssetType: {\n name: 'ActivityTypeAssetType',\n source: `${config.module}.ActivityTypeAssetType`,\n title: '@maintenance-management:activity-type-asset-types.entities.activity-type-asset-type.title',\n titlePlural: '@maintenance-management:activity-type-asset-types.entities.activity-type-asset-type.plural',\n icon: 'fa-light fa-link',\n },\n activityTypeResource: {\n name: 'ActivityTypeResource',\n source: `${config.module}.ActivityTypeResource`,\n title: '@maintenance-management:activity-type-resources.entities.activity-type-resource.title',\n titlePlural: '@maintenance-management:activity-type-resources.entities.activity-type-resource.plural',\n icon: 'fa-light fa-cubes',\n },\n failureCause: {\n name: 'FailureCause',\n source: `${config.module}.FailureCause`,\n title: '@maintenance-management:failure-causes.entities.failure-cause.title',\n titlePlural: '@maintenance-management:failure-causes.entities.failure-cause.plural',\n icon: 'fa-light fa-triangle-exclamation',\n },\n failureMechanism: {\n name: 'FailureMechanism',\n source: `${config.module}.FailureMechanism`,\n title: '@maintenance-management:failure-mechanisms.entities.failure-mechanism.title',\n titlePlural: '@maintenance-management:failure-mechanisms.entities.failure-mechanism.plural',\n icon: 'fa-light fa-gears',\n },\n failureDetection: {\n name: 'FailureDetection',\n source: `${config.module}.FailureDetection`,\n title: '@maintenance-management:failure-detections.entities.failure-detection.title',\n titlePlural: '@maintenance-management:failure-detections.entities.failure-detection.plural',\n icon: 'fa-light fa-radar',\n },\n failureType: {\n name: 'FailureType',\n source: `${config.module}.FailureType`,\n title: '@maintenance-management:failure-types.entities.failure-type.title',\n titlePlural: '@maintenance-management:failure-types.entities.failure-type.plural',\n icon: 'fa-light fa-shapes',\n },\n failureMode: {\n name: 'FailureMode',\n source: `${config.module}.FailureMode`,\n title: '@maintenance-management:failure-modes.entities.failure-mode.title',\n titlePlural: '@maintenance-management:failure-modes.entities.failure-mode.plural',\n icon: 'fa-light fa-diagram-project',\n },\n failureModeAssetType: {\n name: 'FailureModeAssetType',\n source: `${config.module}.FailureModeAssetType`,\n title: '@maintenance-management:failure-mode-asset-types.entities.failure-mode-asset-type.title',\n titlePlural: '@maintenance-management:failure-mode-asset-types.entities.failure-mode-asset-type.plural',\n icon: 'fa-light fa-link',\n },\n failureModeMechanism: {\n name: 'FailureModeMechanism',\n source: `${config.module}.FailureModeMechanism`,\n title: '@maintenance-management:failure-mode-mechanisms.entities.failure-mode-mechanism.title',\n titlePlural: '@maintenance-management:failure-mode-mechanisms.entities.failure-mode-mechanism.plural',\n icon: 'fa-light fa-gears',\n },\n failureModeSolution: {\n name: 'FailureModeSolution',\n source: `${config.module}.FailureModeSolution`,\n title: '@maintenance-management:failure-mode-solutions.entities.failure-mode-solution.title',\n titlePlural: '@maintenance-management:failure-mode-solutions.entities.failure-mode-solution.plural',\n icon: 'fa-light fa-screwdriver-wrench',\n },\n failureEffect: {\n name: 'FailureEffect',\n source: `${config.module}.FailureEffect`,\n title: '@maintenance-management:failure-effects.entities.failure-effect.title',\n titlePlural: '@maintenance-management:failure-effects.entities.failure-effect.plural',\n icon: 'fa-light fa-waveform-lines',\n },\n failureSeverity: {\n name: 'FailureSeverity',\n source: `${config.module}.FailureSeverity`,\n title: '@maintenance-management:failure-severities.entities.failure-severity.title',\n titlePlural: '@maintenance-management:failure-severities.entities.failure-severity.plural',\n icon: 'fa-light fa-gauge-high',\n },\n failureRegister: {\n name: 'FailureRegister',\n source: `${config.module}.FailureRegister`,\n title: '@maintenance-management:failure-registers.entities.failure-register.title',\n titlePlural: '@maintenance-management:failure-registers.entities.failure-register.plural',\n icon: 'fa-light fa-file-waveform',\n },\n failureRegisterEffect: {\n name: 'FailureRegisterEffect',\n source: `${config.module}.FailureRegisterEffect`,\n title: '@maintenance-management:failure-register-effects.entities.failure-register-effect.title',\n titlePlural: '@maintenance-management:failure-register-effects.entities.failure-register-effect.plural',\n icon: 'fa-light fa-wave-pulse',\n },\n failureRegisterCause: {\n name: 'FailureRegisterCause',\n source: `${config.module}.FailureRegisterCause`,\n title: '@maintenance-management:failure-register-causes.entities.failure-register-cause.title',\n titlePlural: '@maintenance-management:failure-register-causes.entities.failure-register-cause.plural',\n icon: 'fa-light fa-triangle-exclamation',\n },\n failureRegisterMechanism: {\n name: 'FailureRegisterMechanism',\n source: `${config.module}.FailureRegisterMechanism`,\n title: '@maintenance-management:failure-register-mechanisms.entities.failure-register-mechanism.title',\n titlePlural: '@maintenance-management:failure-register-mechanisms.entities.failure-register-mechanism.plural',\n icon: 'fa-light fa-gears',\n },\n },\n /**\n * Hourly usage-threshold check. Date intervals stay on work-order sign-off.\n * One run per tenant; an open generated work order blocks a second insert.\n */\n maintenanceIntervalCheck: {\n providerKey: 'maintenance-management',\n defaultCron: '0 * * * *',\n idempotencyKeyTemplate: 'maintenance-management:interval-check:{tenantId}',\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-shared/core';\nimport { RootConfig } from './root-config';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Maintenance Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const MaintenanceManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'domain',\n domain: 'asset-maintenance',\n required: false,\n\n // Module dependencies (optional)\n};\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\n/** Scheduler-picker value persisted on activity types. */\nexport interface AXMMaintenanceManagementActivityTypeSchedule {\n startCondition?: {\n type?: string;\n startDate?: string | Date;\n };\n recurrence?: string;\n cron?: string;\n mode?: string;\n interval?: number;\n endCondition?: {\n type?: string;\n endDate?: string | Date;\n };\n}\n\nexport interface AXMMaintenanceManagementActivityTypeEntityModel {\n id: string;\n code: string;\n activityCategoryId: string;\n activityCategory?: { id: string; title: AXPMultiLanguageString };\n scheduleId?: AXMMaintenanceManagementActivityTypeSchedule;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n initialEstimatedTime?: number;\n shutDownFlag?: boolean;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementActivityTypeAssetTypeEntityModel {\n id: string;\n activityTypeId: string;\n activityType?: { id: string; title: AXPMultiLanguageString };\n assetTypeId: string;\n assetType?: { id: string; title: AXPMultiLanguageString };\n workTeamId: string;\n workTeam?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\nexport type AXMMaintenanceManagementActivityTypeResourceType = 'assettype' | 'jobdefinition' | 'inventoryitem';\n\nexport interface AXMMaintenanceManagementActivityTypeResourceEntityModel {\n id: string;\n activityTypeId: string;\n activityType?: { id: string; title: AXPMultiLanguageString };\n resourceType: AXMMaintenanceManagementActivityTypeResourceType;\n resourceId: string;\n resourceSelectionIds?: string[];\n /** Denormalized labels for list/grid when stored values are raw ids (see mock seeding). */\n resourceSummary?: string;\n count?: number;\n description?: AXPMultiLanguageString;\n initialEstimatedTime?: number;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureCauseEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parentId?: string;\n parent?: { id: string; title: AXPMultiLanguageString };\n failureTypeId?: string;\n failureType?: { id: string; title: AXPMultiLanguageString };\n failureMechanismIds?: string[];\n priorityId?: 'critical' | 'high' | 'medium' | 'low';\n shutDownFlag?: boolean;\n initialEstimatedTime?: number;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureDetectionEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parentId?: string;\n parent?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureEffectEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parentId?: string;\n parent?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureMechanismEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parentId?: string;\n parent?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureModeEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n shutDownFlag?: boolean;\n priorityId?: string;\n failureTypeId: string;\n failureType?: { id: string; title: AXPMultiLanguageString };\n failureMechanismIds?: string[];\n initialEstimatedTime?: number;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureModeAssetTypeEntityModel {\n id: string;\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n assetTypeId: string;\n assetType?: { id: string; title: AXPMultiLanguageString };\n priorityId?: string;\n shutDownFlag?: boolean;\n creditRequired?: boolean;\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureModeMechanismEntityModel {\n id: string;\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n failureMechanismId: string;\n failureMechanism?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureModeMechanismEntityModel {\n id: string;\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n failureMechanismId: string;\n failureMechanism?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureModeSolutionEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n description: AXPMultiLanguageString;\n successRate: number;\n riskLevel: 'low' | 'medium' | 'high' | 'critical';\n estimatedCost: number;\n solutionType: 'temporary' | 'permanent' | 'workaround' | 'preventive';\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\nimport { AXMFailureRegisterStatus } from '../../failure-register.status';\n\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureRegisterEntityModel {\n id: string;\n /** Business code from identifier rule `failure-register-code` (`FR-{date:YYYY}-{seq:4}`). */\n code: string;\n statusId: AXMFailureRegisterStatus;\n date: string;\n assetSystemId?: string;\n assetSystem?: { id: string; title: AXPMultiLanguageString };\n assetId: string;\n asset?: { id: string; title: AXPMultiLanguageString };\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n failureDetectionId: string;\n failureDetection?: { id: string; title: AXPMultiLanguageString };\n priorityId: string;\n failureSeverityId: string;\n failureSeverity?: { id: string; title: AXPMultiLanguageString };\n failureEffectIds?: string[];\n failureCauseIds?: string[];\n failureMechanismIds?: string[];\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureRegisterCauseEntityModel {\n id: string;\n failureRegisterId: string;\n failureRegister?: { id: string; title: AXPMultiLanguageString };\n failureCauseId: string;\n failureCause?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureRegisterEffectEntityModel {\n id: string;\n failureRegisterId: string;\n failureRegister?: { id: string; title: AXPMultiLanguageString };\n failureEffectId: string;\n failureEffect?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureRegisterMechanismEntityModel {\n id: string;\n failureRegisterId: string;\n failureRegister?: { id: string; title: AXPMultiLanguageString };\n failureMechanismId: string;\n failureMechanism?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureSeverityEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementFailureTypeEntityModel {\n id: string;\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parentId?: string;\n parent?: { id: string; title: AXPMultiLanguageString };\n}\n\n//#endregion\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\nimport type { AXMMaintenanceIntervalConfig } from '../../maintenance-interval.config';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementMaintenancePlanSchedule {\n startCondition?: {\n type?: string;\n startDate?: string | Date;\n };\n recurrence?: string;\n cron?: string;\n mode?: string;\n interval?: number;\n endCondition?: {\n type?: string;\n occurrences?: number;\n endDate?: string | Date;\n };\n}\n\n//#region ----- Interval state -----\n\n/** Meter kinds that can track last completed and next due values. Date stays on `intervalConfig`. */\nexport const AXM_MAINTENANCE_INTERVAL_STATE_KINDS = ['distance', 'operating-hours', 'operation-count'] as const;\n\nexport type AXMMaintenanceIntervalStateKind = (typeof AXM_MAINTENANCE_INTERVAL_STATE_KINDS)[number];\n\nexport interface AXMMaintenanceIntervalState {\n kind: AXMMaintenanceIntervalStateKind;\n lastCompletedValue?: number;\n nextDueValue?: number;\n}\n\nexport type AXMMaintenanceIntervalStateIssue = 'invalid' | 'date-kind' | 'negative' | 'next-before-last';\n\nconst INTERVAL_STATE_I18N = '@maintenance-management:maintenance-plans.entities.maintenance-plan.fields.interval-states.validation';\n\nexport const AXM_MAINTENANCE_INTERVAL_STATE_ERRORS: Record<\n AXMMaintenanceIntervalStateIssue,\n { message: string; code: string }\n> = {\n invalid: { message: `${INTERVAL_STATE_I18N}.invalid`, code: 'MAINTENANCE_INTERVAL_STATE_INVALID' },\n 'date-kind': { message: `${INTERVAL_STATE_I18N}.date-kind`, code: 'MAINTENANCE_INTERVAL_STATE_DATE_KIND' },\n negative: { message: `${INTERVAL_STATE_I18N}.negative`, code: 'MAINTENANCE_INTERVAL_STATE_NEGATIVE' },\n 'next-before-last': {\n message: `${INTERVAL_STATE_I18N}.next-before-last`,\n code: 'MAINTENANCE_INTERVAL_STATE_NEXT_BEFORE_LAST',\n },\n};\n\nconst INTERVAL_STATE_KIND_SET = new Set<string>(AXM_MAINTENANCE_INTERVAL_STATE_KINDS);\n\nfunction isMaintenanceIntervalStateKind(value: string): value is AXMMaintenanceIntervalStateKind {\n return INTERVAL_STATE_KIND_SET.has(value);\n}\n\nfunction readOptionalMeter(value: unknown): number | undefined | null {\n if (value == null) {\n return undefined;\n }\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n return null;\n }\n return value;\n}\n\nfunction readStateItem(item: unknown): AXMMaintenanceIntervalState | AXMMaintenanceIntervalStateIssue {\n if (!item || typeof item !== 'object' || Array.isArray(item)) {\n return 'invalid';\n }\n const record = item as Record<string, unknown>;\n const kind = record['kind'];\n if (kind === 'date') {\n return 'date-kind';\n }\n if (typeof kind !== 'string' || !isMaintenanceIntervalStateKind(kind)) {\n return 'invalid';\n }\n const lastCompletedValue = readOptionalMeter(record['lastCompletedValue']);\n const nextDueValue = readOptionalMeter(record['nextDueValue']);\n if (lastCompletedValue === null || nextDueValue === null) {\n return 'invalid';\n }\n if ((lastCompletedValue != null && lastCompletedValue < 0) || (nextDueValue != null && nextDueValue < 0)) {\n return 'negative';\n }\n if (lastCompletedValue != null && nextDueValue != null && nextDueValue < lastCompletedValue) {\n return 'next-before-last';\n }\n const state: AXMMaintenanceIntervalState = { kind };\n if (lastCompletedValue != null) {\n state.lastCompletedValue = lastCompletedValue;\n }\n if (nextDueValue != null) {\n state.nextDueValue = nextDueValue;\n }\n return state;\n}\n\n/** Missing or unreadable input becomes `[]`. Invalid items and date kinds are dropped. The last item of a kind wins. */\nexport function readMaintenanceIntervalStates(value: unknown): AXMMaintenanceIntervalState[] {\n if (!Array.isArray(value)) {\n return [];\n }\n const byKind = new Map<AXMMaintenanceIntervalStateKind, AXMMaintenanceIntervalState>();\n for (const item of value) {\n const state = readStateItem(item);\n if (typeof state === 'string') {\n continue;\n }\n byKind.set(state.kind, state);\n }\n return [...byKind.values()];\n}\n\n/** Strict create/update check. A later item replaces an earlier item of the same kind. */\nexport function resolveMaintenanceIntervalStates(value: unknown): {\n states: AXMMaintenanceIntervalState[];\n issue: AXMMaintenanceIntervalStateIssue | null;\n} {\n if (value == null) {\n return { states: [], issue: null };\n }\n if (!Array.isArray(value)) {\n return { states: [], issue: 'invalid' };\n }\n const byKind = new Map<AXMMaintenanceIntervalStateKind, AXMMaintenanceIntervalState>();\n for (const item of value) {\n const state = readStateItem(item);\n if (typeof state === 'string') {\n return { states: [], issue: state };\n }\n byKind.set(state.kind, state);\n }\n return { states: [...byKind.values()], issue: null };\n}\n\n//#endregion\n\nexport interface AXMMaintenanceManagementMaintenancePlanEntityModel {\n id: string;\n /** Business code from identifier rule `maintenance-plan-code` (`MP-{date:YYYYMM}-{seq:4}`). */\n code: string;\n title: AXPMultiLanguageString;\n maintenanceTypeId: string;\n maintenanceType?: { id: string; title: AXPMultiLanguageString };\n assetId: string;\n asset?: {\n id: string;\n title: AXPMultiLanguageString;\n assetTypeId?: string;\n assetType?: { maintenanceTypeIds?: string[]; supportedIntervalKinds?: string[] };\n };\n maintenanceTemplateId: string;\n maintenanceTemplate?: { id: string; title: AXPMultiLanguageString };\n /** Maintenance interval rule. Date triggers still store the scheduler-picker value. */\n intervalConfig?: AXMMaintenanceIntervalConfig;\n /** Current due position for meter intervals. Date is not stored here. */\n intervalStates?: AXMMaintenanceIntervalState[];\n assignedToId?: string;\n assignedTo?: { id: string; displayName?: string };\n priorityId?: string;\n priority?: { id: string; title: AXPMultiLanguageString };\n needPermission?: boolean;\n needShutdown?: boolean;\n estimatedHours?: number;\n autoGeneratedPlan?: boolean;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\n/** Workflow template binding and admin-configured default inputs for maintenance templates. */\nexport interface AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig {\n workflowDefinitionId: string;\n workflowName: string;\n /** When false, approval workflow is disabled for work orders using this template. */\n enabled?: boolean;\n defaultInput?: Record<string, unknown>;\n}\n\n/** Scheduler-picker value persisted on maintenance templates (aligned with maintenance plans). */\nexport interface AXMMaintenanceManagementMaintenanceTemplateSchedule {\n startCondition?: {\n type?: string;\n startDate?: string | Date;\n };\n recurrence?: string;\n cron?: string;\n mode?: string;\n interval?: number;\n endCondition?: {\n type?: string;\n endDate?: string | Date;\n };\n}\n\n/** Persisted value shape for the meta-data-builder plugin (`metaDataList`). */\nexport interface AXMMaintenanceManagementMaintenanceTemplateMetaDataList {\n groups: Array<{\n name: string;\n title?: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n order: number;\n fields: Array<{\n id: string;\n name: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n /** Serialized widget descriptor (JSON string), same convention as Asset Type mock meta-data. */\n interface: string;\n configuration?: Record<string, unknown>;\n order: number;\n }>;\n }>;\n}\n\nexport interface AXMMaintenanceManagementMaintenanceTemplateEntityModel {\n id: string;\n /** Business code from identifier rule `maintenance-template-code` (`MNT-{date:YYYYMM}-{seq:4}`). */\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n maintenanceTypeId: string;\n maintenanceType?: {\n id: string;\n title: AXPMultiLanguageString;\n autoGeneratePlan?: boolean;\n };\n assetTypeId: string;\n assetType?: { id: string; title?: AXPMultiLanguageString; maintenanceTypeIds?: string[] };\n /** Selected metadata field ids from asset types that support the maintenance type. */\n // metadataIds?: string[];\n /** Asset status key (aligned with asset lifecycle status). */\n assetStatusTypeId?: string;\n needPermission: boolean;\n needShutdown: boolean;\n estimatedMinutes?: number;\n /** Dynamic field definitions for the meta-data-builder plugin (stored as `metaDataList`). */\n // metaDataList?: AXMMaintenanceManagementMaintenanceTemplateMetaDataList;\n /** Selected workflow and template-time input defaults (workflow-selector plugin). */\n workflowConfig?: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null;\n /** Recurrence schedule (`scheduler-picker` widget value). */\n schedule?: AXMMaintenanceManagementMaintenanceTemplateSchedule;\n /** Template definition version (identifier). */\n versionId?: string;\n autoGeneratePlan?: boolean;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementMaintenanceTemplateActivityTypeEntityModel {\n id: string;\n maintenanceTemplateId: string;\n maintenanceTemplate?: { id: string; title: AXPMultiLanguageString };\n activityTypeId: string;\n activityType?: { id: string; title: AXPMultiLanguageString };\n sequenceNo: number;\n needShutdown: boolean;\n isMainActivity: boolean;\n estimatedMinutes?: number;\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementMaintenanceTemplateFailureModeEntityModel {\n id: string;\n code: string;\n maintenanceTemplateId: string;\n maintenanceTemplate?: { id: string; title: AXPMultiLanguageString };\n failureModeId: string;\n failureMode?: { id: string; title: AXPMultiLanguageString };\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\nexport type AXMMaintenanceManagementMaintenanceTemplateResourceType = 'assettype' | 'jobdefinition' | 'inventoryitem';\n\nexport interface AXMMaintenanceManagementMaintenanceTemplateResourceEntityModel {\n id: string;\n code: string;\n maintenanceTemplateId: string;\n maintenanceTemplate?: { id: string; title?: AXPMultiLanguageString; name?: string };\n resourceType: AXMMaintenanceManagementMaintenanceTemplateResourceType;\n resourceId?: string;\n resourceSelectionIds?: string[];\n /** Denormalized titles for list/grid when stored values are ids. */\n resourceSummary?: string;\n quantity?: number;\n estimatedHours?: number;\n description?: AXPMultiLanguageString;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n//#region ---- Types ----\n\nexport interface AXMMaintenanceManagementMaintenanceTypeEntityModel {\n id: string;\n /** Business code from identifier rule `maintenance-type-code` (`MT-{date:YYYYMM}-{seq:4}`). */\n code: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n autoGeneratePlan?: boolean;\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Types ----\n\nexport interface AXMWorkReportAssessmentReference {\n assessmentCaseId: string;\n assessmentCase?: {\n id: string;\n title?: AXPMultiLanguageString;\n };\n completedAt?: string | null;\n completedById?: string | null;\n}\n\nexport interface AXMMaintenanceManagementWorkReportEntityModel {\n id: string;\n workOrderId: string;\n workOrder?: {\n id: string;\n workOrderNo?: string;\n title?: AXPMultiLanguageString;\n statusId?: string;\n };\n reportedAt: string;\n performedById: string;\n performedBy?: { id: string; displayName?: string };\n result?: string;\n summary?: string;\n actionTaken?: string;\n recommendation?: string;\n laborHours?: number;\n downtimeMinutes?: number;\n startedAt?: Date;\n endedAt?: Date;\n needFollowUp?: boolean;\n followUpWorkOrderId?: string;\n followUpWorkOrder?: {\n id: string;\n workOrderNo?: string;\n title?: AXPMultiLanguageString;\n };\n assessments?: AXMWorkReportAssessmentReference[];\n finalizedAt?: string | null;\n}\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './catalog-scope.keys';\nexport * from './commands.keys';\nexport * from './interval-work-order-checklist';\nexport * from './features.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './work-order.status';\nexport * from './work-order.source-type';\nexport * from './failure-register.status';\nexport * from './maintenance-interval.config';\n\nexport * from './root-config';\nexport * from './manifest';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
import { inject, Injectable } from '@angular/core';
|
|
5
5
|
import { defaultTo, get, isString } from 'lodash';
|
|
6
6
|
import { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';
|
|
7
|
-
import { A as AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-
|
|
7
|
+
import { A as AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-C3cGlFKd.mjs';
|
|
8
8
|
|
|
9
9
|
//#region ---- Imports ----
|
|
10
10
|
//#endregion
|
|
@@ -138,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
138
138
|
}] });
|
|
139
139
|
|
|
140
140
|
export { CreateOrGetWorkReportDraftActivity };
|
|
141
|
-
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-
|
|
141
|
+
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-C-K8mD4N.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BWN_yXC0.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/activities/create-or-get-work-report-draft.activity.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPDebugService } from '@acorex-platform/framework-client/core';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from '../work-order-workflow.debug';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface CreateOrGetWorkReportDraftInput {\n workOrderId: string;\n performedById?: string | null;\n}\n\nexport interface CreateOrGetWorkReportDraftOutput {\n workReportId: string;\n created: boolean;\n reused: boolean;\n}\n\n//#endregion\n\n/**\n * Creates a draft work report for a work order or reuses an existing one to prevent duplicates.\n */\n@Injectable({ providedIn: 'root' })\nexport class CreateOrGetWorkReportDraftActivity\n implements AXPCommand<CreateOrGetWorkReportDraftInput, CreateOrGetWorkReportDraftOutput>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly debug = inject(AXPDebugService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(\n input: CreateOrGetWorkReportDraftInput,\n ): AXPCommandExecuteResultPromise<CreateOrGetWorkReportDraftOutput> {\n const workOrderId = this.resolveText(input?.workOrderId);\n\n if (!workOrderId) {\n return {\n success: false,\n message: { text: 'workOrderId is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const existing = await this.findWorkReportByWorkOrderId(workOrderId);\n if (existing?.id) {\n this.debug.trace(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'Reused existing work report draft',\n { workOrderId, workReportId: existing.id },\n );\n return { success: true, kind: 'object',\n data: {\n workReportId: existing.id,\n created: false,\n reused: true,\n },\n metadata: { outcome: 'Done' },\n };\n }\n\n const performedById = await this.resolvePerformedById(workOrderId, input.performedById);\n if (!performedById) {\n this.debug.error(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'performedById could not be resolved',\n { workOrderId },\n );\n return {\n success: false,\n message: { text: 'performedById is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const now = new Date().toISOString();\n const createdId = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .create({\n workOrderId,\n reportedAt: now,\n performedById,\n startedAt: now,\n finalizedAt: null,\n assessments: [],\n } as never);\n\n const workReportId = this.resolveText(createdId);\n if (!workReportId) {\n this.debug.error(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'Work report draft creation returned no id',\n { workOrderId },\n );\n return {\n success: false,\n message: { text: 'Work report draft could not be created' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n this.debug.trace(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'Created work report draft',\n { workOrderId, workReportId, performedById },\n );\n\n return { success: true, kind: 'object',\n data: {\n workReportId,\n created: true,\n reused: false,\n },\n metadata: { outcome: 'Done' },\n };\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async resolvePerformedById(workOrderId: string, explicit: unknown): Promise<string> {\n const fromInput = this.resolveText(explicit);\n if (fromInput) {\n return fromInput;\n }\n\n const workOrder = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId)) as AXMMaintenanceManagementWorkOrderEntityModel | null;\n\n const assignedToId = this.resolveText(workOrder?.assignedToId);\n if (!assignedToId) {\n return '';\n }\n\n const page = await this.entityService\n .withEntity('HumanCapitalManagement', 'Employee')\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'personId', operator: { type: 'equal' }, value: assignedToId }],\n },\n } as never);\n\n const employee = defaultTo(get(page, 'items[0]'), null) as { id?: string } | null;\n return this.resolveText(employee?.id);\n }\n\n private async findWorkReportByWorkOrderId(workOrderId: string): Promise<{ id?: string } | null> {\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'workOrderId', operator: { type: 'equal' }, value: workOrderId }],\n },\n } as never);\n\n return defaultTo(get(page, 'items[0]'), null) as { id?: string } | null;\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;;;AAAA;AA4BA;AAEA;;AAEG;MAEU,kCAAkC,CAAA;AAD/C,IAAA,WAAA,GAAA;;AAMmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;AA6JjD,IAAA;;;IAvJC,MAAM,OAAO,CACX,KAAsC,EAAA;QAEtC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC;QAExD,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE;AAC5C,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;aAChC;QACH;QAEA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;AACpE,QAAA,IAAI,QAAQ,EAAE,EAAE,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,uCAAuC,EACvC,mBAAmB,EACnB,mCAAmC,EACnC,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE,CAC3C;AACD,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ;AACpC,gBAAA,IAAI,EAAE;oBACJ,YAAY,EAAE,QAAQ,CAAC,EAAE;AACzB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,MAAM,EAAE,IAAI;AACb,iBAAA;AACD,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;aAC9B;QACH;AAEA,QAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC;QACvF,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,uCAAuC,EACvC,mBAAmB,EACnB,qCAAqC,EACrC,EAAE,WAAW,EAAE,CAChB;YACD,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE;AAC9C,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;aAChC;QACH;QAEA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACpC,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC;AAC1B,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI;AACtE,aAAA,IAAI;AACJ,aAAA,MAAM,CAAC;YACN,WAAW;AACX,YAAA,UAAU,EAAE,GAAG;YACf,aAAa;AACb,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,WAAW,EAAE,EAAE;AACP,SAAA,CAAC;QAEb,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAChD,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,uCAAuC,EACvC,mBAAmB,EACnB,2CAA2C,EAC3C,EAAE,WAAW,EAAE,CAChB;YACD,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,wCAAwC,EAAE;AAC3D,gBAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;aAChC;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CACd,uCAAuC,EACvC,mBAAmB,EACnB,2BAA2B,EAC3B,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,CAC7C;AAED,QAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ;AACpC,YAAA,IAAI,EAAE;gBACJ,YAAY;AACZ,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,MAAM,EAAE,KAAK;AACd,aAAA;AACD,YAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;SAC9B;IACH;;;AAMQ,IAAA,MAAM,oBAAoB,CAAC,WAAmB,EAAE,QAAiB,EAAA;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC5C,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,SAAS,IAAI,MAAM,IAAI,CAAC;AAC3B,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AACrE,aAAA,IAAI;AACJ,aAAA,KAAK,CAAC,WAAW,CAAC,CAAwD;QAE7E,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC;QAC9D,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;AACrB,aAAA,UAAU,CAAC,wBAAwB,EAAE,UAAU;AAC/C,aAAA,IAAI;AACJ,aAAA,KAAK,CAAC;AACL,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AACnF,aAAA;AACO,SAAA,CAAC;AAEb,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,CAA2B;QACjF,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;IACvC;IAEQ,MAAM,2BAA2B,CAAC,WAAmB,EAAA;AAC3D,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;AACrB,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI;AACtE,aAAA,IAAI;AACJ,aAAA,KAAK,CAAC;AACL,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACrF,aAAA;AACO,SAAA,CAAC;QAEb,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,CAA2B;IACzE;AAEQ,IAAA,WAAW,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,KAAK,CAAC,IAAI,EAAE;IACrB;8GAhKW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kCAAkC,cADrB,MAAM,EAAA,CAAA,CAAA;;2FACnB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-C-K8mD4N.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/activities/create-or-get-work-report-draft.activity.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPDebugService } from '@acorex-platform/framework-client/core';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from '../work-order-workflow.debug';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface CreateOrGetWorkReportDraftInput {\n workOrderId: string;\n performedById?: string | null;\n}\n\nexport interface CreateOrGetWorkReportDraftOutput {\n workReportId: string;\n created: boolean;\n reused: boolean;\n}\n\n//#endregion\n\n/**\n * Creates a draft work report for a work order or reuses an existing one to prevent duplicates.\n */\n@Injectable({ providedIn: 'root' })\nexport class CreateOrGetWorkReportDraftActivity\n implements AXPCommand<CreateOrGetWorkReportDraftInput, CreateOrGetWorkReportDraftOutput>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly debug = inject(AXPDebugService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(\n input: CreateOrGetWorkReportDraftInput,\n ): AXPCommandExecuteResultPromise<CreateOrGetWorkReportDraftOutput> {\n const workOrderId = this.resolveText(input?.workOrderId);\n\n if (!workOrderId) {\n return {\n success: false,\n message: { text: 'workOrderId is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const existing = await this.findWorkReportByWorkOrderId(workOrderId);\n if (existing?.id) {\n this.debug.trace(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'Reused existing work report draft',\n { workOrderId, workReportId: existing.id },\n );\n return { success: true, kind: 'object',\n data: {\n workReportId: existing.id,\n created: false,\n reused: true,\n },\n metadata: { outcome: 'Done' },\n };\n }\n\n const performedById = await this.resolvePerformedById(workOrderId, input.performedById);\n if (!performedById) {\n this.debug.error(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'performedById could not be resolved',\n { workOrderId },\n );\n return {\n success: false,\n message: { text: 'performedById is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const now = new Date().toISOString();\n const createdId = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .create({\n workOrderId,\n reportedAt: now,\n performedById,\n startedAt: now,\n finalizedAt: null,\n assessments: [],\n } as never);\n\n const workReportId = this.resolveText(createdId);\n if (!workReportId) {\n this.debug.error(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'Work report draft creation returned no id',\n { workOrderId },\n );\n return {\n success: false,\n message: { text: 'Work report draft could not be created' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n this.debug.trace(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'Created work report draft',\n { workOrderId, workReportId, performedById },\n );\n\n return { success: true, kind: 'object',\n data: {\n workReportId,\n created: true,\n reused: false,\n },\n metadata: { outcome: 'Done' },\n };\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async resolvePerformedById(workOrderId: string, explicit: unknown): Promise<string> {\n const fromInput = this.resolveText(explicit);\n if (fromInput) {\n return fromInput;\n }\n\n const workOrder = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId)) as AXMMaintenanceManagementWorkOrderEntityModel | null;\n\n const assignedToId = this.resolveText(workOrder?.assignedToId);\n if (!assignedToId) {\n return '';\n }\n\n const page = await this.entityService\n .withEntity('HumanCapitalManagement', 'Employee')\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'personId', operator: { type: 'equal' }, value: assignedToId }],\n },\n } as never);\n\n const employee = defaultTo(get(page, 'items[0]'), null) as { id?: string } | null;\n return this.resolveText(employee?.id);\n }\n\n private async findWorkReportByWorkOrderId(workOrderId: string): Promise<{ id?: string } | null> {\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'workOrderId', operator: { type: 'equal' }, value: workOrderId }],\n },\n } as never);\n\n return defaultTo(get(page, 'items[0]'), null) as { id?: string } | null;\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
4
|
-
import { a as AXMMaintenanceIntervalComponent } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-
|
|
4
|
+
import { a as AXMMaintenanceIntervalComponent } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-C3cGlFKd.mjs';
|
|
5
5
|
import { r as readMaintenanceIntervalKinds } from './acorex-platform-module-maintenance-management-client-maintenance-interval-widget.kinds-D8Hnq0ct.mjs';
|
|
6
6
|
|
|
7
7
|
//#region ----- Imports -----
|
|
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
51
51
|
}] });
|
|
52
52
|
|
|
53
53
|
export { AXMMaintenanceIntervalWidgetEditComponent };
|
|
54
|
-
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-
|
|
54
|
+
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-b8sTwXxe.mjs.map
|