@futdevpro/nts-dynamo 1.15.37 → 1.15.39
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/.c8rc.json +26 -26
- package/.copilot/patterns.json +7 -7
- package/.cursor/rules/__assistant_guide.mdc +30 -30
- package/.cursor/rules/_ag_backend-structure.mdc +85 -85
- package/.cursor/rules/_ag_backend.mdc +16 -16
- package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
- package/.cursor/rules/_ag_frontend.mdc +39 -39
- package/.cursor/rules/_ag_import-rules.mdc +44 -44
- package/.cursor/rules/_ag_naming.mdc +115 -115
- package/.cursor/rules/_ag_should-be.mdc +6 -6
- package/.cursor/rules/ai_development_guide.md +60 -60
- package/.cursor/rules/cursor-rules.md +160 -160
- package/.cursor/rules/default-command.mdc +464 -464
- package/.cursor/rules/error_code_pattern.md +39 -39
- package/.cursor/rules/saved rule mcp server use.md +15 -15
- package/.github/workflows/main.yml +432 -432
- package/.vscode/settings.json +10 -10
- package/HOWTO.md +15 -15
- package/LICENSE +21 -21
- package/__documentations/2026-06-01-fr041-cors-middleware.md +96 -0
- package/__documentations/nts-integration-tests-2026-03-17.md +26 -26
- package/_specifications/BACKLOG.md +92 -92
- package/_specifications/TODO.md +15 -15
- package/_specifications/agent.md +138 -138
- package/build/_modules/server/errors/errors.control-service.d.ts +3 -1
- package/build/_modules/server/errors/errors.control-service.d.ts.map +1 -1
- package/build/_modules/server/errors/errors.control-service.js.map +1 -1
- package/build/_modules/server/errors/errors.controller.d.ts.map +1 -1
- package/build/_modules/server/errors/errors.controller.js +45 -1
- package/build/_modules/server/errors/errors.controller.js.map +1 -1
- package/build/_modules/server/errors/errors.data-service.d.ts +27 -1
- package/build/_modules/server/errors/errors.data-service.d.ts.map +1 -1
- package/build/_modules/server/errors/errors.data-service.js +124 -0
- package/build/_modules/server/errors/errors.data-service.js.map +1 -1
- package/eslint.config.js +3 -3
- package/nodemon.json +24 -24
- package/package.json +2 -2
- package/pnpm-workspace.yaml +8 -5
- package/scripts/run-coverage-tests.js +28 -28
- package/spec/support/helpers/spec-reporter-loader.js +359 -359
- package/spec/support/helpers/ts-node-helper.js +93 -93
- package/spec/support/jasmine.coverage.json +24 -24
- package/spec/support/jasmine.json +24 -24
- package/src/_collections/archive.util.spec.ts +57 -57
- package/src/_collections/archive.util.ts +18 -18
- package/src/_collections/atlas-default-db-options.const.ts +9 -9
- package/src/_collections/default-fallback-cache-max-age.const.spec.ts +11 -11
- package/src/_collections/default-fallback-cache-max-age.const.ts +2 -2
- package/src/_collections/default-not-found-page.const.spec.ts +19 -19
- package/src/_collections/default-not-found-page.const.ts +22 -22
- package/src/_collections/default-socket-path.const.spec.ts +12 -12
- package/src/_collections/default-socket-path.const.ts +2 -2
- package/src/_collections/get-environment-settings.util.spec.ts +210 -210
- package/src/_collections/get-environment-settings.util.ts +48 -48
- package/src/_collections/sample.env +21 -21
- package/src/_collections/star.controller.spec.ts +224 -224
- package/src/_collections/star.controller.ts +129 -129
- package/src/_enums/data-model-type.enum.ts +14 -14
- package/src/_enums/data-service-function.enum.ts +24 -24
- package/src/_enums/predefined-data-types.enum.ts +16 -16
- package/src/_enums/route-security.enum.ts +12 -12
- package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
- package/src/_models/control-models/api-call-params.control-model.ts +142 -142
- package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
- package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
- package/src/_models/control-models/app-params.control-model.ts +136 -136
- package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
- package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/endpoint-params.control-model.spec.ts +578 -578
- package/src/_models/control-models/endpoint-params.control-model.ts +526 -526
- package/src/_models/control-models/http-settings.control-model.spec.ts +77 -77
- package/src/_models/control-models/http-settings.control-model.ts +37 -37
- package/src/_models/control-models/system-control.control-model.spec.ts +27 -27
- package/src/_models/control-models/system-control.control-model.ts +12 -12
- package/src/_models/interfaces/certification-settings.interface.ts +7 -7
- package/src/_models/interfaces/environment-settings.interface.ts +59 -59
- package/src/_models/interfaces/global-log-settings.interface.ts +144 -144
- package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
- package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
- package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
- package/src/_models/interfaces/static-client-settings.interface.ts +28 -28
- package/src/_models/types/db-update.type.ts +100 -100
- package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
- package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
- package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
- package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
- package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
- package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
- package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -209
- package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts +85 -85
- package/src/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.ts +7 -7
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts +146 -146
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts +162 -162
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts +99 -99
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.ts +18 -18
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.ts +19 -19
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.ts +25 -25
- package/src/_modules/ai/_modules/document-ai/index.ts +28 -28
- package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -189
- package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -5
- package/src/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.ts +9 -9
- package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts +82 -82
- package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts +75 -75
- package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +45 -45
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.ts +7 -7
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +7 -7
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.ts +57 -57
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts +292 -292
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -342
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -550
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +630 -630
- package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +332 -332
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -462
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +634 -634
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +489 -489
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.ts +106 -106
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +1011 -1011
- package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
- package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -98
- package/src/_modules/ai/_services/ai-embedding.service-base.ts +48 -48
- package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -229
- package/src/_modules/ai/_services/ai-llm-chat.service-base.ts +68 -68
- package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
- package/src/_modules/ai/_services/ai-llm.service-base.ts +510 -510
- package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +158 -158
- package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
- package/src/_modules/ai/index.ts +13 -13
- package/src/_modules/assistant/_collections/ass-global-settings.const.ts +13 -13
- package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -176
- package/src/_modules/assistant/_collections/ass.util.ts +50 -50
- package/src/_modules/assistant/_models/ass-global-settings.interface.ts +15 -15
- package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -140
- package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -192
- package/src/_modules/assistant/_services/ass-main.control-service.ts +107 -107
- package/src/_modules/bot/_collections/bot-default-commands.const.ts +12 -12
- package/src/_modules/bot/_collections/bot-global-settings.const.ts +39 -39
- package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +62 -62
- package/src/_modules/bot/_models/bot-command.interface.ts +8 -8
- package/src/_modules/bot/_models/bot-global-settings.interface.ts +96 -96
- package/src/_modules/bot/_models/bot-last-mention-date.interface.ts +6 -6
- package/src/_modules/bot/_models/bot-last-message-date.interface.ts +5 -5
- package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +41 -41
- package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -431
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -160
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +55 -55
- package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +15 -15
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -374
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +447 -447
- package/src/_modules/bot/_modules/dynamo-bot/index.ts +15 -15
- package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -344
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +197 -197
- package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -345
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +197 -197
- package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
- package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
- package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
- package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
- package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
- package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -49
- package/src/_modules/custom-data/custom-data.controller.ts +67 -67
- package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -54
- package/src/_modules/custom-data/custom-data.data-service.ts +21 -21
- package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -28
- package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +24 -24
- package/src/_modules/custom-data/index.ts +9 -9
- package/src/_modules/defaults/_collections/default-endpoints.util.ts +487 -487
- package/src/_modules/defaults/_models/default-user.data-model.ts +72 -72
- package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -269
- package/src/_modules/defaults/_services/default-auth.service.ts +177 -177
- package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -42
- package/src/_modules/defaults/_services/default-socket-events.service.ts +61 -61
- package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -187
- package/src/_modules/defaults/_services/default-user.data-service.ts +98 -98
- package/src/_modules/defaults/index.ts +17 -17
- package/src/_modules/discord-assistant/_collections/dias-global-settings.const.ts +19 -19
- package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -366
- package/src/_modules/discord-assistant/_collections/dias.util.ts +132 -132
- package/src/_modules/discord-assistant/_models/dias-global-settings.interface.ts +19 -19
- package/src/_modules/discord-assistant/_models/dias-knowledge.data-model.ts +52 -52
- package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +177 -177
- package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -108
- package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +69 -69
- package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -22
- package/src/_modules/discord-assistant/_services/dias-main.control-service.ts +27 -27
- package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -195
- package/src/_modules/discord-assistant/_services/dias.service-base.ts +76 -76
- package/src/_modules/discord-assistant/index.ts +38 -38
- package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -34
- package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts +11 -11
- package/src/_modules/discord-assistant-voiced/index.ts +36 -36
- package/src/_modules/discord-bot/_collections/dibo-default-commands.const.ts +16 -16
- package/src/_modules/discord-bot/_collections/dibo-global-settings.conts.ts +55 -55
- package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -214
- package/src/_modules/discord-bot/_collections/dibo-operations.util.ts +387 -387
- package/src/_modules/discord-bot/_models/dibo-command.interface.ts +12 -12
- package/src/_modules/discord-bot/_models/dibo-global-settings.interface.ts +98 -98
- package/src/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts +7 -7
- package/src/_modules/discord-bot/_models/dibo-last-message-date.interface.ts +6 -6
- package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -154
- package/src/_modules/discord-bot/_services/dibo-commands.control-service.ts +153 -153
- package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -264
- package/src/_modules/discord-bot/_services/dibo-io.control-service.ts +306 -306
- package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -408
- package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +487 -487
- package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -105
- package/src/_modules/discord-bot/index.ts +36 -36
- package/src/_modules/local-vector-search/_enums/lvs-search-mode.enum.ts +35 -35
- package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
- package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -418
- package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.ts +276 -276
- package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +480 -480
- package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +416 -416
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +393 -393
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +220 -220
- package/src/_modules/local-vector-search/index.ts +11 -11
- package/src/_modules/messaging/README.md +354 -354
- package/src/_modules/messaging/_collections/get-messaging-routing-module.util.ts +26 -26
- package/src/_modules/messaging/_collections/msg-global-settings.const.ts +22 -22
- package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -226
- package/src/_modules/messaging/_models/msg-global-settings.interface.ts +37 -37
- package/src/_modules/messaging/_services/msg-conversation.data-service.ts +146 -146
- package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -219
- package/src/_modules/messaging/_services/msg-events.service.ts +267 -267
- package/src/_modules/messaging/_services/msg-integration.control-service.ts +179 -179
- package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -147
- package/src/_modules/messaging/_services/msg-main.control-service.ts +571 -571
- package/src/_modules/messaging/_services/msg-message.data-service.ts +129 -129
- package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -201
- package/src/_modules/messaging/index.ts +30 -30
- package/src/_modules/mock/app-extended-server.mock.ts +201 -201
- package/src/_modules/mock/app-integration-test.mock.ts +51 -51
- package/src/_modules/mock/app-params.mock.spec.ts +21 -21
- package/src/_modules/mock/app-params.mock.ts +9 -9
- package/src/_modules/mock/app-server.mock.ts +188 -188
- package/src/_modules/mock/auth-service.mock.spec.ts +47 -47
- package/src/_modules/mock/auth-service.mock.ts +28 -28
- package/src/_modules/mock/controller.mock.spec.ts +26 -26
- package/src/_modules/mock/controller.mock.ts +16 -16
- package/src/_modules/mock/data-model.mock.spec.ts +111 -111
- package/src/_modules/mock/data-model.mock.ts +82 -82
- package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -24
- package/src/_modules/mock/email-service-collection.mock.ts +15 -15
- package/src/_modules/mock/email-service.mock.spec.ts +17 -17
- package/src/_modules/mock/email-service.mock.ts +20 -20
- package/src/_modules/mock/email-template.mock.html +14 -14
- package/src/_modules/mock/endpoint.mock.ts +91 -91
- package/src/_modules/mock/socket-client.mock.spec.ts +40 -40
- package/src/_modules/mock/socket-client.mock.ts +45 -45
- package/src/_modules/mock/socket-server.mock.spec.ts +44 -44
- package/src/_modules/mock/socket-server.mock.ts +46 -46
- package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -107
- package/src/_modules/oauth2/_routes/oauth2.controller.ts +98 -98
- package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -254
- package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -232
- package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -585
- package/src/_modules/oauth2/_services/oauth2.control-service.ts +653 -653
- package/src/_modules/oauth2/index.ts +17 -17
- package/src/_modules/server/errors/errors.control-service.spec.ts +238 -230
- package/src/_modules/server/errors/errors.control-service.ts +85 -69
- package/src/_modules/server/errors/errors.controller.spec.ts +241 -235
- package/src/_modules/server/errors/errors.controller.ts +431 -372
- package/src/_modules/server/errors/errors.data-service.spec.ts +355 -355
- package/src/_modules/server/errors/errors.data-service.ts +157 -7
- package/src/_modules/server/index.ts +30 -30
- package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -70
- package/src/_modules/server/server-status/server-status-snapshot.control-service.ts +17 -17
- package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -77
- package/src/_modules/server/server-status/server-status-snapshot.data-service.ts +37 -37
- package/src/_modules/server/server-status/server-status.control-service.spec.ts +524 -516
- package/src/_modules/server/server-status/server-status.control-service.ts +336 -336
- package/src/_modules/server/server-status/server-status.controller.spec.ts +162 -156
- package/src/_modules/server/server-status/server-status.controller.ts +131 -131
- package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
- package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
- package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +164 -164
- package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -210
- package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +46 -46
- package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
- package/src/_modules/socket/_services/socket-client.service.ts +260 -260
- package/src/_modules/socket/_services/socket-server.service.spec.ts +11 -11
- package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
- package/src/_modules/socket/app-extended.server.ts +630 -630
- package/src/_modules/socket/index.ts +42 -42
- package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
- package/src/_modules/test/get-test-routing-module.util.ts +23 -23
- package/src/_modules/test/index.ts +11 -11
- package/src/_modules/test/test.controller.spec.ts +72 -72
- package/src/_modules/test/test.controller.ts +115 -115
- package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
- package/src/_modules/usage/index.ts +15 -15
- package/src/_modules/usage/usage.controller.spec.ts +81 -81
- package/src/_modules/usage/usage.controller.ts +126 -126
- package/src/_modules/usage/usage.data-service.spec.ts +332 -332
- package/src/_modules/usage/usage.data-service.ts +185 -185
- package/src/_services/base/api.service-base.spec.ts +125 -125
- package/src/_services/base/api.service-base.ts +74 -74
- package/src/_services/base/archive-data.service.spec.ts +196 -196
- package/src/_services/base/archive-data.service.ts +216 -216
- package/src/_services/base/data.service.spec.ts +674 -674
- package/src/_services/base/data.service.ts +2719 -2719
- package/src/_services/base/db.service.spec.ts +73 -73
- package/src/_services/base/db.service.ts +1575 -1575
- package/src/_services/base/singleton.service-base.spec.ts +28 -28
- package/src/_services/base/singleton.service-base.ts +24 -24
- package/src/_services/base/singleton.service.spec.ts +114 -114
- package/src/_services/base/singleton.service.ts +38 -38
- package/src/_services/core/api.service.spec.ts +140 -140
- package/src/_services/core/auth.service.spec.ts +159 -159
- package/src/_services/core/auth.service.ts +174 -174
- package/src/_services/core/email.service.spec.ts +85 -85
- package/src/_services/core/email.service.ts +742 -742
- package/src/_services/core/global.service.spec.ts +275 -275
- package/src/_services/core/global.service.ts +461 -461
- package/src/_services/core/service-collection.service.spec.ts +46 -46
- package/src/_services/core/service-collection.service.ts +6 -6
- package/src/_services/route/controller.service.spec.ts +53 -53
- package/src/_services/route/controller.service.ts +148 -148
- package/src/_services/route/routing-module.service.spec.ts +98 -98
- package/src/_services/route/routing-module.service.ts +330 -330
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +95 -95
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
- package/.dynamo/logs/cicd-pipeline/output.log +0 -2630
- package/.dynamo/logs/cicd-pipeline/status.json +0 -321
package/_specifications/agent.md
CHANGED
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Agent
|
|
6
|
-
|
|
7
|
-
0. A conversation listát megvágjuk, hogy beleférjen a chat-LLM hívásba (maxTokens)
|
|
8
|
-
|
|
9
|
-
1. Egy elő LLM kérdésben beköthetjük a Routine-okat (a routinok afféle felülírók, megelőzik az utolsó üzenetet, de közben meg kell oldjuk valahogy, hogy az üzenet is feldolgozásra kerüljön, és a routine is érvényesüljön ha kell (van, hogy csak hozzá kell adjunk valamit a parancshoz))
|
|
10
|
-
- mik alapján keresünk routine-okat:
|
|
11
|
-
- session doing/goal/intent alapú micro routine-ok (vektor keresés; mindig amikor...)
|
|
12
|
-
- egyéb micro routine-ok (vektor keresés; mindig amikor...)
|
|
13
|
-
- idő alapú triggering
|
|
14
|
-
- ???
|
|
15
|
-
|
|
16
|
-
2. Egy nagy LLM kérdésben megkérdezzük, hogy az utolsó user message teljesítéséhez...
|
|
17
|
-
- milyen operation-ök kellenek
|
|
18
|
-
- itt felsoroljuk az elérhető operation-öket
|
|
19
|
-
- Ez lehet több is.
|
|
20
|
-
- A: NONE | (operation-with-intent or get-operation-group-with-intent) list
|
|
21
|
-
- kell-e a kódbázisban keresni
|
|
22
|
-
- itt felsoroljuk az elérhető projekt-eket
|
|
23
|
-
- ha igen, mire kell vektorkeressünk
|
|
24
|
-
- A: NONE | vektor search keywords
|
|
25
|
-
- kell-e a dokumentumok között keresni keresni
|
|
26
|
-
- itt felsoroljuk az elérhető dokumentumokat/dokumentum tárakat (attól függően, hogy ne legyen túl sok opció)
|
|
27
|
-
- ha igen, mire kell vektorkeressünk
|
|
28
|
-
- A: NONE | vektor search keywords
|
|
29
|
-
- kell-e a DB context-ben keresni
|
|
30
|
-
- ha igen, mire kell vektorkeressünk
|
|
31
|
-
- A: NONE | vektor search keywords
|
|
32
|
-
- kell-e valamilyen specifikus context adat
|
|
33
|
-
- itt felsoroljuk az elérhető specifikus context adatokat
|
|
34
|
-
- ezek olyan speciális adatok amik fixek, és direkt method-okkal adjuk meg őket,
|
|
35
|
-
- pontos dátum-idő
|
|
36
|
-
- user neve/nickneve/amin szólítsa a bot
|
|
37
|
-
- user data
|
|
38
|
-
- user settings
|
|
39
|
-
- ... TODO: add more special context data keys
|
|
40
|
-
- A: NONE | special context data key
|
|
41
|
-
Mindegyik input lehet NONE, ami azt jelzi, hogy nincs rá szükség
|
|
42
|
-
|
|
43
|
-
3. Ha kell, bármilyen info, akkor először azokat gyűjtjük össze
|
|
44
|
-
- a talált info-kat beletesszük a beszélgetésbe mint assistant message-ek
|
|
45
|
-
(ezek valójában nem kerülnek elküldésre, a következő üzenet érkezésekkor nem fognak rendelkezésre állni, de elmentjük a db-be az egész conversation listát)
|
|
46
|
-
|
|
47
|
-
4. Ha kell, akkor lekérjük a kért operation-group-okat és abból újabb LLM kérdéssel összeszedjük a szükséges operation-öket
|
|
48
|
-
- az operation-group-okat különféle módon szerezhetjük be
|
|
49
|
-
- Group-olt operation-ök listázása
|
|
50
|
-
- MCP Server-ről kérés
|
|
51
|
-
- ... TODO: is there any more operation-group sources?
|
|
52
|
-
|
|
53
|
-
4. Ha kell, akkor végrehajtjuk a kért operation-öket
|
|
54
|
-
- a végrehajtás eredményéről röviden beszámolunk/értesítjük a user-t, hogy mit sikerült és nem sikerült csinálni
|
|
55
|
-
(nem csak a jelenlegi conversation listába tesszük be, hanem tényleg el is küldjük a user-nek egy message-et)
|
|
56
|
-
|
|
57
|
-
5. Egy újabb LLM kérdéssel kiszedjük az új context-et aminek be kell kerülnie a DB context-be
|
|
58
|
-
- ha kell akkor a mentendő context-et kell visszaadja, ha nem akkor a NONE
|
|
59
|
-
|
|
60
|
-
6. Megválaszoljuk a user üzenetét
|
|
61
|
-
|
|
62
|
-
7. A végeredményt elmentjük a DB-be
|
|
63
|
-
- minden llm kérdés-választ,
|
|
64
|
-
- és a result-okkal feltáplált conversation listát
|
|
65
|
-
- a vektor keresések eredményeit
|
|
66
|
-
- (not yet): ha nem messaging platformon vagyunk (discord/slack/teams), akkor chat session-ökbe mentjük az adatokat
|
|
67
|
-
- ebben az esetben külön kell válogatni azokat a message-eket amiket elküldtünk a user-nek (conversation) attól amik az operation-ök végrehajtása során keletkeznek (logs)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
## Operation-ök
|
|
71
|
-
- az operation-ök lista kérésekor hangsúlyozzuk az LLM-nek, hogy mindig próbáljuk a leg apróbb lépésekből összeállítani a listát
|
|
72
|
-
- minden operation úgy működik mint egy MCP Server kérés, adott egy input schema
|
|
73
|
-
- az input-ot a conversation alapján állítjuk össze, úgy hogy az operation intent kerül bele a conversation-be mielőtt egy LLM hívással megpróbáljuk összeállítani az inputot
|
|
74
|
-
- az input-ok összeállításakor felhívjuk az LLM figyelmét, hogy a mentendő módosítandó adatokat csak akkor manipulálja, ha azt a user kérte, egyébként használjuk a user szava járását
|
|
75
|
-
- az operation-ok mindig string-et kell visszaadjanak ami szintén a conversation-be kerül bele (ha obj-et kapunk vissza, akkor azt egyszerűen string-gé alakítjuk)
|
|
76
|
-
- egyes operation-ök több lépéses operation-routine-okként hajtandóak végre (az LLM csak egy operation-t választ ki, de ha az egy operation-routine, akkor azokat hajtjuk végre sorban)
|
|
77
|
-
|
|
78
|
-
## Routine-ok
|
|
79
|
-
|
|
80
|
-
### Időalapú és Triggered routine-ok
|
|
81
|
-
- olyan routine-ok amiket egy adott időpontban/idő után/időközönként hajtunk végre
|
|
82
|
-
- ezek lehetnek olyan routine-ok is amiket nem egy felhasználói üzenet indít, hanem egy időpont, és ez után automatikusan üzenetet küld egy beállított default csatornára
|
|
83
|
-
- lehetnek webhook trigger alapúak is
|
|
84
|
-
- ezek lehetnek továbbá complex rutine-ok amik feladat folyamatokat indukálnak
|
|
85
|
-
pl.:
|
|
86
|
-
- minden reggel nézd át az email-eket és az üzeneteket és amire tudsz válaszolj, amire pedig nem, azt beszéljük át
|
|
87
|
-
- minden reggel gyűjtsd össze az aktuális top prio feladatokat és segíts megtervezni a napomat
|
|
88
|
-
- ha új task kerül a rendszerbe, tervezd meg a megvalósítást (de mindenképpen egyeztess róla a PO-val)
|
|
89
|
-
- az új task resolution plan-eket mindig validáltatssuk le a PO-val
|
|
90
|
-
- mindig amikor új PR kerül fel az xy repo-ba akkor review-zz
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
### Micro routine-ok
|
|
95
|
-
- olyan routine-ok amiket módosítanak a user input-on,
|
|
96
|
-
pl: mindig amikor kódokat generálunk, akkor figyeljünk oda, a hosszú sorok mindig törve legyenek (ilyenkor ezt mindig hozzáfűzzük a user message-hez)
|
|
97
|
-
- a micro routine-okat a DB-be mentjük, a kulcs adatokat vektorizálva
|
|
98
|
-
Adatok:
|
|
99
|
-
- goal: mindig amikor...
|
|
100
|
-
|
|
101
|
-
### Egyéb
|
|
102
|
-
- meg kell keresnünk azt a pontot és értelmezést, hogy hogyan tudunk segíteni a user-nek a gondolatai megfogalmazásában
|
|
103
|
-
(talán a "2. Egy nagy LLM kérdés"-be bele vehetnénk, hogy ha a user bizonytalannak tűnik, vagy nem összeszedettnek akkor javaslunk egy összeszedettebb inputot, amit ha elfogad, akkor úgy kezeljük mintha a user küldte volna)
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
PROMPT
|
|
111
|
-
Az NTS-be szeretnénk implementálni egy Operation Handler Agent-öt, ami ugye az NTS package-be fog bekerülni egy saját modulba, és ezt a modult fogjuk használni a projektek implementálásakor úgy, hogy az IO-Control-ba handleMessage-be kötjük be.
|
|
112
|
-
|
|
113
|
-
Úgy kéne beépíteni ezt az Agent-öt, ahogy most is be van építve. Szóval ez az Agent modul, ez magában lesz. Megcsinál mindent, amit leírtunk ebbe a dokumentumban, specifikációba. Azt már a projekt implementálásnál kell majd megadni, hogy a socket.io-ból behívjuk az agent-öt.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
ezt a CCAP-ba az agent-2 module-ba fejlesztjük le mint POC/prototípus (not like agent module)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
// TODO: we need to create a solution to create a maxed LLM call with 50-50% of the logs and the conversation
|
|
128
|
-
// the logs will go to the userPrompt, after the conversation, but we will need to cut them equally beside the system and control prompt (last user prompt)
|
|
129
|
-
// for the part that is before (both in log and conversation) we will need to be merged to a summary that is added as first (oldest element)
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Agent
|
|
6
|
+
|
|
7
|
+
0. A conversation listát megvágjuk, hogy beleférjen a chat-LLM hívásba (maxTokens)
|
|
8
|
+
|
|
9
|
+
1. Egy elő LLM kérdésben beköthetjük a Routine-okat (a routinok afféle felülírók, megelőzik az utolsó üzenetet, de közben meg kell oldjuk valahogy, hogy az üzenet is feldolgozásra kerüljön, és a routine is érvényesüljön ha kell (van, hogy csak hozzá kell adjunk valamit a parancshoz))
|
|
10
|
+
- mik alapján keresünk routine-okat:
|
|
11
|
+
- session doing/goal/intent alapú micro routine-ok (vektor keresés; mindig amikor...)
|
|
12
|
+
- egyéb micro routine-ok (vektor keresés; mindig amikor...)
|
|
13
|
+
- idő alapú triggering
|
|
14
|
+
- ???
|
|
15
|
+
|
|
16
|
+
2. Egy nagy LLM kérdésben megkérdezzük, hogy az utolsó user message teljesítéséhez...
|
|
17
|
+
- milyen operation-ök kellenek
|
|
18
|
+
- itt felsoroljuk az elérhető operation-öket
|
|
19
|
+
- Ez lehet több is.
|
|
20
|
+
- A: NONE | (operation-with-intent or get-operation-group-with-intent) list
|
|
21
|
+
- kell-e a kódbázisban keresni
|
|
22
|
+
- itt felsoroljuk az elérhető projekt-eket
|
|
23
|
+
- ha igen, mire kell vektorkeressünk
|
|
24
|
+
- A: NONE | vektor search keywords
|
|
25
|
+
- kell-e a dokumentumok között keresni keresni
|
|
26
|
+
- itt felsoroljuk az elérhető dokumentumokat/dokumentum tárakat (attól függően, hogy ne legyen túl sok opció)
|
|
27
|
+
- ha igen, mire kell vektorkeressünk
|
|
28
|
+
- A: NONE | vektor search keywords
|
|
29
|
+
- kell-e a DB context-ben keresni
|
|
30
|
+
- ha igen, mire kell vektorkeressünk
|
|
31
|
+
- A: NONE | vektor search keywords
|
|
32
|
+
- kell-e valamilyen specifikus context adat
|
|
33
|
+
- itt felsoroljuk az elérhető specifikus context adatokat
|
|
34
|
+
- ezek olyan speciális adatok amik fixek, és direkt method-okkal adjuk meg őket,
|
|
35
|
+
- pontos dátum-idő
|
|
36
|
+
- user neve/nickneve/amin szólítsa a bot
|
|
37
|
+
- user data
|
|
38
|
+
- user settings
|
|
39
|
+
- ... TODO: add more special context data keys
|
|
40
|
+
- A: NONE | special context data key
|
|
41
|
+
Mindegyik input lehet NONE, ami azt jelzi, hogy nincs rá szükség
|
|
42
|
+
|
|
43
|
+
3. Ha kell, bármilyen info, akkor először azokat gyűjtjük össze
|
|
44
|
+
- a talált info-kat beletesszük a beszélgetésbe mint assistant message-ek
|
|
45
|
+
(ezek valójában nem kerülnek elküldésre, a következő üzenet érkezésekkor nem fognak rendelkezésre állni, de elmentjük a db-be az egész conversation listát)
|
|
46
|
+
|
|
47
|
+
4. Ha kell, akkor lekérjük a kért operation-group-okat és abból újabb LLM kérdéssel összeszedjük a szükséges operation-öket
|
|
48
|
+
- az operation-group-okat különféle módon szerezhetjük be
|
|
49
|
+
- Group-olt operation-ök listázása
|
|
50
|
+
- MCP Server-ről kérés
|
|
51
|
+
- ... TODO: is there any more operation-group sources?
|
|
52
|
+
|
|
53
|
+
4. Ha kell, akkor végrehajtjuk a kért operation-öket
|
|
54
|
+
- a végrehajtás eredményéről röviden beszámolunk/értesítjük a user-t, hogy mit sikerült és nem sikerült csinálni
|
|
55
|
+
(nem csak a jelenlegi conversation listába tesszük be, hanem tényleg el is küldjük a user-nek egy message-et)
|
|
56
|
+
|
|
57
|
+
5. Egy újabb LLM kérdéssel kiszedjük az új context-et aminek be kell kerülnie a DB context-be
|
|
58
|
+
- ha kell akkor a mentendő context-et kell visszaadja, ha nem akkor a NONE
|
|
59
|
+
|
|
60
|
+
6. Megválaszoljuk a user üzenetét
|
|
61
|
+
|
|
62
|
+
7. A végeredményt elmentjük a DB-be
|
|
63
|
+
- minden llm kérdés-választ,
|
|
64
|
+
- és a result-okkal feltáplált conversation listát
|
|
65
|
+
- a vektor keresések eredményeit
|
|
66
|
+
- (not yet): ha nem messaging platformon vagyunk (discord/slack/teams), akkor chat session-ökbe mentjük az adatokat
|
|
67
|
+
- ebben az esetben külön kell válogatni azokat a message-eket amiket elküldtünk a user-nek (conversation) attól amik az operation-ök végrehajtása során keletkeznek (logs)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## Operation-ök
|
|
71
|
+
- az operation-ök lista kérésekor hangsúlyozzuk az LLM-nek, hogy mindig próbáljuk a leg apróbb lépésekből összeállítani a listát
|
|
72
|
+
- minden operation úgy működik mint egy MCP Server kérés, adott egy input schema
|
|
73
|
+
- az input-ot a conversation alapján állítjuk össze, úgy hogy az operation intent kerül bele a conversation-be mielőtt egy LLM hívással megpróbáljuk összeállítani az inputot
|
|
74
|
+
- az input-ok összeállításakor felhívjuk az LLM figyelmét, hogy a mentendő módosítandó adatokat csak akkor manipulálja, ha azt a user kérte, egyébként használjuk a user szava járását
|
|
75
|
+
- az operation-ok mindig string-et kell visszaadjanak ami szintén a conversation-be kerül bele (ha obj-et kapunk vissza, akkor azt egyszerűen string-gé alakítjuk)
|
|
76
|
+
- egyes operation-ök több lépéses operation-routine-okként hajtandóak végre (az LLM csak egy operation-t választ ki, de ha az egy operation-routine, akkor azokat hajtjuk végre sorban)
|
|
77
|
+
|
|
78
|
+
## Routine-ok
|
|
79
|
+
|
|
80
|
+
### Időalapú és Triggered routine-ok
|
|
81
|
+
- olyan routine-ok amiket egy adott időpontban/idő után/időközönként hajtunk végre
|
|
82
|
+
- ezek lehetnek olyan routine-ok is amiket nem egy felhasználói üzenet indít, hanem egy időpont, és ez után automatikusan üzenetet küld egy beállított default csatornára
|
|
83
|
+
- lehetnek webhook trigger alapúak is
|
|
84
|
+
- ezek lehetnek továbbá complex rutine-ok amik feladat folyamatokat indukálnak
|
|
85
|
+
pl.:
|
|
86
|
+
- minden reggel nézd át az email-eket és az üzeneteket és amire tudsz válaszolj, amire pedig nem, azt beszéljük át
|
|
87
|
+
- minden reggel gyűjtsd össze az aktuális top prio feladatokat és segíts megtervezni a napomat
|
|
88
|
+
- ha új task kerül a rendszerbe, tervezd meg a megvalósítást (de mindenképpen egyeztess róla a PO-val)
|
|
89
|
+
- az új task resolution plan-eket mindig validáltatssuk le a PO-val
|
|
90
|
+
- mindig amikor új PR kerül fel az xy repo-ba akkor review-zz
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
### Micro routine-ok
|
|
95
|
+
- olyan routine-ok amiket módosítanak a user input-on,
|
|
96
|
+
pl: mindig amikor kódokat generálunk, akkor figyeljünk oda, a hosszú sorok mindig törve legyenek (ilyenkor ezt mindig hozzáfűzzük a user message-hez)
|
|
97
|
+
- a micro routine-okat a DB-be mentjük, a kulcs adatokat vektorizálva
|
|
98
|
+
Adatok:
|
|
99
|
+
- goal: mindig amikor...
|
|
100
|
+
|
|
101
|
+
### Egyéb
|
|
102
|
+
- meg kell keresnünk azt a pontot és értelmezést, hogy hogyan tudunk segíteni a user-nek a gondolatai megfogalmazásában
|
|
103
|
+
(talán a "2. Egy nagy LLM kérdés"-be bele vehetnénk, hogy ha a user bizonytalannak tűnik, vagy nem összeszedettnek akkor javaslunk egy összeszedettebb inputot, amit ha elfogad, akkor úgy kezeljük mintha a user küldte volna)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
PROMPT
|
|
111
|
+
Az NTS-be szeretnénk implementálni egy Operation Handler Agent-öt, ami ugye az NTS package-be fog bekerülni egy saját modulba, és ezt a modult fogjuk használni a projektek implementálásakor úgy, hogy az IO-Control-ba handleMessage-be kötjük be.
|
|
112
|
+
|
|
113
|
+
Úgy kéne beépíteni ezt az Agent-öt, ahogy most is be van építve. Szóval ez az Agent modul, ez magában lesz. Megcsinál mindent, amit leírtunk ebbe a dokumentumban, specifikációba. Azt már a projekt implementálásnál kell majd megadni, hogy a socket.io-ból behívjuk az agent-öt.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
ezt a CCAP-ba az agent-2 module-ba fejlesztjük le mint POC/prototípus (not like agent module)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
// TODO: we need to create a solution to create a maxed LLM call with 50-50% of the logs and the conversation
|
|
128
|
+
// the logs will go to the userPrompt, after the conversation, but we will need to cut them equally beside the system and control prompt (last user prompt)
|
|
129
|
+
// for the part that is before (both in log and conversation) we will need to be merged to a summary that is added as first (oldest element)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DyFM_AnyError, DyFM_Error, DyFM_ErrorLevel, DyFM_Errors, DyFM_RelativeDate, DyFM_Paged, DyFM_SearchQuery, DyFM_SearchResult } from '@futdevpro/fsm-dynamo';
|
|
1
|
+
import { DyFM_AnyError, DyFM_Error, DyFM_ErrorLevel, DyFM_Errors, DyFM_RelativeDate, DyFM_Paged, DyFM_SearchQuery, DyFM_SearchResult, DyFM_Errors_FixAttempt } from '@futdevpro/fsm-dynamo';
|
|
2
2
|
export declare abstract class DyNTS_Errors_ControlService<T_Error extends DyFM_Error, T_Errors extends DyFM_Errors<T_Error>> {
|
|
3
3
|
debugLog: boolean;
|
|
4
4
|
readonly version: string;
|
|
@@ -10,8 +10,10 @@ export declare abstract class DyNTS_Errors_ControlService<T_Error extends DyFM_E
|
|
|
10
10
|
abstract getErrorsFromDate(date: Date, issuer: string): Promise<DyFM_Paged<T_Errors>>;
|
|
11
11
|
abstract deleteError(errorId: string, issuer: string, alwaysDelete?: boolean): Promise<void>;
|
|
12
12
|
abstract deleteAllErrors(issuer: string, alwaysDelete?: boolean): Promise<void>;
|
|
13
|
+
abstract recordFixAttempt(errorId: string, version: string, hypothesis: string, issuer: string): Promise<DyFM_Errors_FixAttempt>;
|
|
13
14
|
abstract getErrorsInRange(range: DyFM_RelativeDate, issuer: string): Promise<DyFM_Paged<T_Errors>>;
|
|
14
15
|
abstract getErrorsPaged(range: DyFM_RelativeDate, pageSize: number, pageIndex: number, issuer: string): Promise<DyFM_Paged<T_Errors>>;
|
|
16
|
+
abstract getErrorsByCategoryPaged(category: string, range: DyFM_RelativeDate, pageSize: number, pageIndex: number, issuer: string): Promise<DyFM_Paged<T_Errors>>;
|
|
15
17
|
abstract getLastErrors(range: DyFM_RelativeDate, pageSize: number, pageIndex: number, issuer: string): Promise<DyFM_Paged<T_Errors>>;
|
|
16
18
|
abstract searchErrors(searchQuery: DyFM_SearchQuery<T_Errors>, issuer: string): Promise<DyFM_SearchResult<T_Errors>>;
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.control-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/errors/errors.control-service.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,aAAa,EAEU,UAAU,EAAE,eAAe,EACX,WAAW,EAClD,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"errors.control-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/errors/errors.control-service.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,aAAa,EAEU,UAAU,EAAE,eAAe,EACX,WAAW,EAClD,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,8BAAsB,2BAA2B,CAC/C,OAAO,SAAS,UAAU,EAC1B,QAAQ,SAAS,WAAW,CAAC,OAAO,CAAC;IAErC,QAAQ,EAAE,OAAO,CAAS;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAuC;IAC/D,kBAAkB,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE3F,QAAQ,CAAC,mBAAmB,CAC1B,KAAK,EAAE,aAAa,GAAG,GAAG,EAC1B,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;IAEhB,QAAQ,CAAC,qCAAqC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc;IAExG,QAAQ,CAAC,4BAA4B,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAErF,QAAQ,CAAC,iBAAiB,CACxB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEhC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5F,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/E,QAAQ,CAAC,gBAAgB,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,CAAC;IAElC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAElG,QAAQ,CAAC,cAAc,CACrB,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEhC,QAAQ,CAAC,wBAAwB,CAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEhC,QAAQ,CAAC,aAAa,CACpB,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEhC,QAAQ,CAAC,YAAY,CACnB,WAAW,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;CACxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.control-service.js","sourceRoot":"","sources":["../../../../src/_modules/server/errors/errors.control-service.ts"],"names":[],"mappings":";;;AAIA,uFAAoF;
|
|
1
|
+
{"version":3,"file":"errors.control-service.js","sourceRoot":"","sources":["../../../../src/_modules/server/errors/errors.control-service.ts"],"names":[],"mappings":";;;AAIA,uFAAoF;AAgBpF,MAAsB,2BAA2B;IAI/C,QAAQ,GAAY,KAAK,CAAC;IACjB,OAAO,GAAW,6CAAqB,CAAC,aAAa,CAAC;IAC/D,kBAAkB,CAAS;CA0D5B;AAhED,kEAgEC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.controller.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/errors/errors.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAc,UAAU,EAAqB,WAAW,EAAqB,MAAM,uBAAuB,CAAC;AAClH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+DAA+D,CAAC;AACtG,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAIvE;;;;;;;;;GASG;AACH,MAAM,WAAW,iCAAiC;IAChD;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"errors.controller.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/errors/errors.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAc,UAAU,EAAqB,WAAW,EAAqB,MAAM,uBAAuB,CAAC;AAClH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+DAA+D,CAAC;AACtG,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAIvE;;;;;;;;;GASG;AACH,MAAM,WAAW,iCAAiC;IAChD;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAeD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,8BAAsB,uBAAuB,CAC3C,OAAO,SAAS,UAAU,EAC1B,QAAQ,SAAS,WAAW,CAAC,OAAO,CAAC,EACrC,sBAAsB,SAAS,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAC7E,SAAQ,gBAAgB;IAOxB,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CACxC,GAAG,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GACtC,sBAAsB;IACzB,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,qBAAqB,EAAE,CAAM;IAErE;;;OAGG;IACH,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,iCAAiC,CAAM;IAEpE;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,iCAAiC,GAAG,IAAI;IAIjE;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,iCAAiC;IAIzD;;OAEG;IACH,MAAM,CAAC,0BAA0B,IAAI,IAAI;IAIzC;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;IAOtG,cAAc,IAAI,IAAI;CAuRvB"}
|
|
@@ -12,7 +12,8 @@ const global_settings_const_1 = require("../../../_collections/global-settings.c
|
|
|
12
12
|
const ALL_ENDPOINT_NAMES = [
|
|
13
13
|
'logError', 'newError',
|
|
14
14
|
'markErrorDone', 'markAllErrorDone',
|
|
15
|
-
'
|
|
15
|
+
'recordFixAttempt',
|
|
16
|
+
'getErrors', 'getErrorsPaged', 'getErrorsByCategoryPaged', 'getLastErrors',
|
|
16
17
|
'searchErrors',
|
|
17
18
|
];
|
|
18
19
|
/**
|
|
@@ -173,6 +174,31 @@ class DyNTS_Errors_Controller extends controller_service_1.DyNTS_Controller {
|
|
|
173
174
|
},
|
|
174
175
|
],
|
|
175
176
|
}),
|
|
177
|
+
new endpoint_params_control_model_1.DyNTS_Endpoint_Params({
|
|
178
|
+
name: 'recordFixAttempt',
|
|
179
|
+
type: fsm_dynamo_1.DyFM_HttpCallType.post,
|
|
180
|
+
endpoint: '/error/:errorId/fix-attempt',
|
|
181
|
+
preProcesses: this.getPreProcessesFor('recordFixAttempt'),
|
|
182
|
+
tasks: [
|
|
183
|
+
async (req, res, issuer = 'unknown-issuer') => {
|
|
184
|
+
const errorId = req.params.errorId;
|
|
185
|
+
const version = req.body?.version;
|
|
186
|
+
const hypothesis = req.body?.hypothesis;
|
|
187
|
+
if (!errorId || !version || !hypothesis) {
|
|
188
|
+
res.status(400).send({
|
|
189
|
+
error: 'missing required field(s): errorId / version / hypothesis',
|
|
190
|
+
});
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const error_CS = this.getError_ControlService({ issuer });
|
|
194
|
+
const attempt = await error_CS.recordFixAttempt(errorId, version, hypothesis, issuer);
|
|
195
|
+
res.send({
|
|
196
|
+
result: 'fix attempt recorded',
|
|
197
|
+
attempt,
|
|
198
|
+
});
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
}),
|
|
176
202
|
/* new DyNTS_Endpoint_Params({
|
|
177
203
|
name: 'markErrorDone',
|
|
178
204
|
type: DyFM_HttpCallType.get,
|
|
@@ -227,6 +253,24 @@ class DyNTS_Errors_Controller extends controller_service_1.DyNTS_Controller {
|
|
|
227
253
|
},
|
|
228
254
|
],
|
|
229
255
|
}),
|
|
256
|
+
new endpoint_params_control_model_1.DyNTS_Endpoint_Params({
|
|
257
|
+
name: 'getErrorsByCategoryPaged',
|
|
258
|
+
type: fsm_dynamo_1.DyFM_HttpCallType.get,
|
|
259
|
+
endpoint: '/error/get-by-category/:category/:range/:pageSize/:pageIndex',
|
|
260
|
+
preProcesses: this.getPreProcessesFor('getErrorsByCategoryPaged'),
|
|
261
|
+
tasks: [
|
|
262
|
+
async (req, res, issuer = 'unknown-issuer') => {
|
|
263
|
+
const error_CS = this.getError_ControlService({ issuer });
|
|
264
|
+
let pageSize = req.params.pageSize ? +req.params.pageSize : 30;
|
|
265
|
+
let pageIndex = req.params.pageIndex ? +req.params.pageIndex : 0;
|
|
266
|
+
if (30 < pageSize) {
|
|
267
|
+
pageSize = 30;
|
|
268
|
+
pageIndex = 0;
|
|
269
|
+
}
|
|
270
|
+
res.send(await error_CS.getErrorsByCategoryPaged(req.params.category, req.params.range, pageSize, pageIndex, issuer));
|
|
271
|
+
},
|
|
272
|
+
],
|
|
273
|
+
}),
|
|
230
274
|
new endpoint_params_control_model_1.DyNTS_Endpoint_Params({
|
|
231
275
|
name: 'getLastErrors',
|
|
232
276
|
type: fsm_dynamo_1.DyFM_HttpCallType.get,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.controller.js","sourceRoot":"","sources":["../../../../src/_modules/server/errors/errors.controller.ts"],"names":[],"mappings":";;;AAGA,sDAAkH;AAClH,oFAA+E;AAC/E,iHAAsG;AAEtG,uFAAoF;AAkCpF;;;GAGG;AACH,MAAM,kBAAkB,GAAa;IACnC,UAAU,EAAE,UAAU;IACtB,eAAe,EAAE,kBAAkB;IACnC,WAAW,EAAE,gBAAgB,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"errors.controller.js","sourceRoot":"","sources":["../../../../src/_modules/server/errors/errors.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DyFM_AnyError, DyFM_Error, DyFM_ErrorLevel, DyFM_Errors, DyFM_RelativeDate, DyFM_Paged, DyFM_SearchQuery, DyFM_SearchResult } from '@futdevpro/fsm-dynamo';
|
|
1
|
+
import { DyFM_AnyError, DyFM_Error, DyFM_ErrorLevel, DyFM_Errors, DyFM_RelativeDate, DyFM_Paged, DyFM_SearchQuery, DyFM_SearchResult, DyFM_Errors_FixAttempt } from '@futdevpro/fsm-dynamo';
|
|
2
2
|
import { DyNTS_Errors_ControlService } from './errors.control-service';
|
|
3
3
|
import { DyNTS_DataService } from '../../../_services/base/data.service';
|
|
4
4
|
export declare class DyNTS_Errors_DataService<T_Error extends DyFM_Error, T_ErrorsRecord extends DyFM_Errors<T_Error>> extends DyNTS_DataService<T_ErrorsRecord> implements DyNTS_Errors_ControlService<T_Error, T_ErrorsRecord> {
|
|
@@ -14,8 +14,34 @@ export declare class DyNTS_Errors_DataService<T_Error extends DyFM_Error, T_Erro
|
|
|
14
14
|
getErrorsFromDate(date: Date, issuer: string): Promise<DyFM_Paged<T_ErrorsRecord>>;
|
|
15
15
|
deleteError(errorId: string, issuer: string, alwaysDelete?: boolean): Promise<void>;
|
|
16
16
|
deleteAllErrors(issuer: string, alwaysDelete?: boolean): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Record a "we think this is fixed" claim on an existing error.
|
|
19
|
+
*
|
|
20
|
+
* Append-only: every call pushes a new `DyFM_Errors_FixAttempt` to
|
|
21
|
+
* `fixAttempts[]` and updates the `last*` aliases for quick reads.
|
|
22
|
+
* Also clears `regressedAfterFix` so the dashboard treats the error as
|
|
23
|
+
* freshly-claimed-fixed; if a new occurrence arrives with a version
|
|
24
|
+
* `>= version`, `recordError` will flip the flag back on.
|
|
25
|
+
*/
|
|
26
|
+
recordFixAttempt(errorId: string, version: string, hypothesis: string, issuer: string): Promise<DyFM_Errors_FixAttempt>;
|
|
27
|
+
/**
|
|
28
|
+
* Loose numeric compare of two version strings of shape `MAJOR.MINOR.PATCH`
|
|
29
|
+
* (`01.15.117`). Pads missing segments with 0. Non-numeric segments are
|
|
30
|
+
* treated as 0 — version strings carrying prefixes like `SERVER-` from
|
|
31
|
+
* `recordError` are caller-stripped before this is invoked.
|
|
32
|
+
*
|
|
33
|
+
* Returns true when `a >= b`.
|
|
34
|
+
*/
|
|
35
|
+
static isVersionAtLeast(a: string, b: string): boolean;
|
|
17
36
|
getErrorsInRange(range: DyFM_RelativeDate, issuer: string): Promise<DyFM_Paged<T_ErrorsRecord>>;
|
|
18
37
|
getErrorsPaged(range: DyFM_RelativeDate, pageSize: number, pageIndex: number, issuer: string): Promise<DyFM_Paged<T_ErrorsRecord>>;
|
|
38
|
+
/**
|
|
39
|
+
* Paged-eredmenyek a `category` mezo szerint. A frontend "Errors" page tab-jai
|
|
40
|
+
* (Application / System Unreachable / Build Failure) ezt hivjak. Egy ures-
|
|
41
|
+
* vagy `'all'` kategoria mindent visszaad (azonos szemantikaval mint a
|
|
42
|
+
* `getErrorsPaged`-tel).
|
|
43
|
+
*/
|
|
44
|
+
getErrorsByCategoryPaged(category: string, range: DyFM_RelativeDate, pageSize: number, pageIndex: number, issuer: string): Promise<DyFM_Paged<T_ErrorsRecord>>;
|
|
19
45
|
getLastErrors(range: DyFM_RelativeDate, pageSize: number, pageIndex: number, issuer: string): Promise<DyFM_Paged<T_ErrorsRecord>>;
|
|
20
46
|
searchErrors(searchQuery: DyFM_SearchQuery<T_ErrorsRecord>, issuer: string): Promise<DyFM_SearchResult<T_ErrorsRecord>>;
|
|
21
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.data-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/errors/errors.data-service.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EAEU,UAAU,EAAE,eAAe,EACX,WAAW,EAClD,iBAAiB,EAEjB,UAAU,EAEV,gBAAgB,EAChB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"errors.data-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/errors/errors.data-service.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EAEU,UAAU,EAAE,eAAe,EACX,WAAW,EAClD,iBAAiB,EAEjB,UAAU,EAEV,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,qBAAa,wBAAwB,CACnC,OAAO,SAAS,UAAU,EAC1B,cAAc,SAAS,WAAW,CAAC,OAAO,CAAC,CAC3C,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,2BAA2B,CAAC,OAAO,EAAE,cAAc,CAAC;IAEzG,QAAQ,EAAE,OAAO,CAAS;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAuC;IAC/D,kBAAkB,EAAE,MAAM,CAAC;IAgBrB,WAAW,CACf,YAAY,EAAE,cAAc,EAC5B,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;cAuLA,iBAAiB,CAC/B,KAAK,EAAE,aAAa,GAAG,GAAG,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC;IA2CpB,mBAAmB,CACvB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;IAoBV,mBAAmB,CACvB,KAAK,EAAE,aAAa,GAAG,GAAG,EAC1B,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;IAwChB,qCAAqC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc;IA0C/F,4BAA4B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM;IA8BtD,iBAAiB,CACrB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAqBhC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnF,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB5E;;;;;;;;OAQG;IACG,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,CAAC;IAiDlC;;;;;;;OAOG;IACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAsBhD,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAuB/F,cAAc,CAClB,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAuBtC;;;;;OAKG;IACG,wBAAwB,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAwBhC,aAAa,CACjB,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAyBhC,YAAY,CAChB,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAAC,EAC7C,MAAM,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;CAehD"}
|
|
@@ -91,6 +91,17 @@ class DyNTS_Errors_DataService extends data_service_1.DyNTS_DataService {
|
|
|
91
91
|
versions: { $push: errorVersion },
|
|
92
92
|
};
|
|
93
93
|
}
|
|
94
|
+
// Regression detect — a duplicate-ag-on egy NEW occurrence érkezett.
|
|
95
|
+
// Ha mar volt fix-attempt erre az error-ra, es a jelenlegi version
|
|
96
|
+
// ujabb vagy egyenlo mint a fix-attempt verzioja, akkor a hipotezis
|
|
97
|
+
// nem zarta le a problemat → flag-eljuk a dashboardnak.
|
|
98
|
+
if (duplicateError.lastFixedInVersion &&
|
|
99
|
+
DyNTS_Errors_DataService.isVersionAtLeast(errorVersion, duplicateError.lastFixedInVersion)) {
|
|
100
|
+
duplicateRecordUpdate.$set = {
|
|
101
|
+
...(duplicateRecordUpdate.$set ?? {}),
|
|
102
|
+
regressedAfterFix: true,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
94
105
|
await this.updateData({
|
|
95
106
|
filterBy: { _id: duplicateError._id },
|
|
96
107
|
update: duplicateRecordUpdate,
|
|
@@ -285,6 +296,10 @@ class DyNTS_Errors_DataService extends data_service_1.DyNTS_DataService {
|
|
|
285
296
|
case fsm_dynamo_1.DyFM_ErrorLevel.error:
|
|
286
297
|
case fsm_dynamo_1.DyFM_ErrorLevel.serious:
|
|
287
298
|
return 100;
|
|
299
|
+
case fsm_dynamo_1.DyFM_ErrorLevel.buildFailure:
|
|
300
|
+
return 50;
|
|
301
|
+
case fsm_dynamo_1.DyFM_ErrorLevel.systemUnreachable:
|
|
302
|
+
return 20;
|
|
288
303
|
case fsm_dynamo_1.DyFM_ErrorLevel.warning:
|
|
289
304
|
return 10;
|
|
290
305
|
case fsm_dynamo_1.DyFM_ErrorLevel.info:
|
|
@@ -339,6 +354,88 @@ class DyNTS_Errors_DataService extends data_service_1.DyNTS_DataService {
|
|
|
339
354
|
});
|
|
340
355
|
}
|
|
341
356
|
}
|
|
357
|
+
/**
|
|
358
|
+
* Record a "we think this is fixed" claim on an existing error.
|
|
359
|
+
*
|
|
360
|
+
* Append-only: every call pushes a new `DyFM_Errors_FixAttempt` to
|
|
361
|
+
* `fixAttempts[]` and updates the `last*` aliases for quick reads.
|
|
362
|
+
* Also clears `regressedAfterFix` so the dashboard treats the error as
|
|
363
|
+
* freshly-claimed-fixed; if a new occurrence arrives with a version
|
|
364
|
+
* `>= version`, `recordError` will flip the flag back on.
|
|
365
|
+
*/
|
|
366
|
+
async recordFixAttempt(errorId, version, hypothesis, issuer) {
|
|
367
|
+
try {
|
|
368
|
+
if (issuer && !this.issuer) {
|
|
369
|
+
this.issuer = issuer;
|
|
370
|
+
}
|
|
371
|
+
const existing = await this.findData({ _id: errorId });
|
|
372
|
+
if (!existing) {
|
|
373
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
374
|
+
...this.getDefaultErrorSettings('recordFixAttempt', new Error(`error not found: ${errorId}`)),
|
|
375
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-EDS-RFA0`,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
const attempt = {
|
|
379
|
+
at: new Date(),
|
|
380
|
+
by: issuer,
|
|
381
|
+
version: version,
|
|
382
|
+
hypothesis: hypothesis,
|
|
383
|
+
};
|
|
384
|
+
const nextAttempts = [
|
|
385
|
+
...(existing.fixAttempts ?? []),
|
|
386
|
+
attempt,
|
|
387
|
+
];
|
|
388
|
+
await this.updateData({
|
|
389
|
+
filterBy: { _id: errorId },
|
|
390
|
+
update: {
|
|
391
|
+
$set: {
|
|
392
|
+
fixAttempts: nextAttempts,
|
|
393
|
+
lastFixedAt: attempt.at,
|
|
394
|
+
lastFixedBy: attempt.by,
|
|
395
|
+
lastFixedInVersion: attempt.version,
|
|
396
|
+
lastFixHypothesis: attempt.hypothesis,
|
|
397
|
+
regressedAfterFix: false,
|
|
398
|
+
},
|
|
399
|
+
},
|
|
400
|
+
});
|
|
401
|
+
return attempt;
|
|
402
|
+
}
|
|
403
|
+
catch (error) {
|
|
404
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
405
|
+
...this.getDefaultErrorSettings('recordFixAttempt', error),
|
|
406
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-EDS-RFA1`,
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Loose numeric compare of two version strings of shape `MAJOR.MINOR.PATCH`
|
|
412
|
+
* (`01.15.117`). Pads missing segments with 0. Non-numeric segments are
|
|
413
|
+
* treated as 0 — version strings carrying prefixes like `SERVER-` from
|
|
414
|
+
* `recordError` are caller-stripped before this is invoked.
|
|
415
|
+
*
|
|
416
|
+
* Returns true when `a >= b`.
|
|
417
|
+
*/
|
|
418
|
+
static isVersionAtLeast(a, b) {
|
|
419
|
+
if (!a || !b) {
|
|
420
|
+
return false;
|
|
421
|
+
}
|
|
422
|
+
const strip = (v) => v.replace(/^[^0-9]+/, '');
|
|
423
|
+
const parse = (v) => strip(v).split('.').map(s => Number(s) || 0);
|
|
424
|
+
const aParts = parse(a);
|
|
425
|
+
const bParts = parse(b);
|
|
426
|
+
const len = Math.max(aParts.length, bParts.length);
|
|
427
|
+
for (let i = 0; i < len; i++) {
|
|
428
|
+
const av = aParts[i] ?? 0;
|
|
429
|
+
const bv = bParts[i] ?? 0;
|
|
430
|
+
if (av > bv) {
|
|
431
|
+
return true;
|
|
432
|
+
}
|
|
433
|
+
if (av < bv) {
|
|
434
|
+
return false;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
return true;
|
|
438
|
+
}
|
|
342
439
|
async getErrorsInRange(range, issuer) {
|
|
343
440
|
try {
|
|
344
441
|
if (issuer && !this.issuer) {
|
|
@@ -373,6 +470,33 @@ class DyNTS_Errors_DataService extends data_service_1.DyNTS_DataService {
|
|
|
373
470
|
});
|
|
374
471
|
}
|
|
375
472
|
}
|
|
473
|
+
/**
|
|
474
|
+
* Paged-eredmenyek a `category` mezo szerint. A frontend "Errors" page tab-jai
|
|
475
|
+
* (Application / System Unreachable / Build Failure) ezt hivjak. Egy ures-
|
|
476
|
+
* vagy `'all'` kategoria mindent visszaad (azonos szemantikaval mint a
|
|
477
|
+
* `getErrorsPaged`-tel).
|
|
478
|
+
*/
|
|
479
|
+
async getErrorsByCategoryPaged(category, range, pageSize, pageIndex, issuer) {
|
|
480
|
+
try {
|
|
481
|
+
if (issuer && !this.issuer) {
|
|
482
|
+
this.issuer = issuer;
|
|
483
|
+
}
|
|
484
|
+
const fromDate = fsm_dynamo_1.DyFM_Time.getDateByRelativeDate(range);
|
|
485
|
+
const filter = { __lastModified: { $gte: fromDate } };
|
|
486
|
+
if (category && category !== 'all') {
|
|
487
|
+
filter.category = category;
|
|
488
|
+
}
|
|
489
|
+
let errors = await this.findDataList(filter);
|
|
490
|
+
errors = errors.sort((a, b) => b.priority - a.priority);
|
|
491
|
+
return fsm_dynamo_1.DyFM_Array.paged(errors, pageIndex, pageSize);
|
|
492
|
+
}
|
|
493
|
+
catch (error) {
|
|
494
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
495
|
+
...this.getDefaultErrorSettings('getErrorsByCategoryPaged', error),
|
|
496
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-EDS-GBCP0`,
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
}
|
|
376
500
|
async getLastErrors(range, pageSize, pageIndex, issuer) {
|
|
377
501
|
try {
|
|
378
502
|
if (issuer && !this.issuer) {
|