reviewflow 3.33.0 → 3.35.0
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/CHANGELOG.md +36 -0
- package/dist/dashboard/index.html +16 -2
- package/dist/dashboard/setup.html +17 -1
- package/dist/dashboard/styles.css +75 -0
- package/dist/main/routes.d.ts.map +1 -1
- package/dist/main/routes.js +60 -31
- package/dist/main/routes.js.map +1 -1
- package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.guard.d.ts +1 -1
- package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.schema.d.ts +2 -0
- package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.schema.d.ts.map +1 -1
- package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.schema.js +1 -1
- package/dist/modules/claude-invocation/entities/claudeSession/claudeSession.schema.js.map +1 -1
- package/dist/modules/{ember-chat/interface-adapters/gateways/emberStreamJson.parser.d.ts → claude-invocation/interface-adapters/gateways/transcriptStreamJson.parser.d.ts} +1 -1
- package/dist/modules/claude-invocation/interface-adapters/gateways/transcriptStreamJson.parser.d.ts.map +1 -0
- package/dist/modules/{ember-chat/interface-adapters/gateways/emberStreamJson.parser.js → claude-invocation/interface-adapters/gateways/transcriptStreamJson.parser.js} +1 -1
- package/dist/modules/claude-invocation/interface-adapters/gateways/transcriptStreamJson.parser.js.map +1 -0
- package/dist/modules/ember-chat/interface-adapters/gateways/emberAnswerTransport.claude.gateway.js +1 -1
- package/dist/modules/ember-chat/interface-adapters/gateways/emberAnswerTransport.claude.gateway.js.map +1 -1
- package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.d.ts +4 -0
- package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.d.ts.map +1 -1
- package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.js +54 -46
- package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.js.map +1 -1
- package/dist/modules/platform-integration/interface-adapters/gateways/cli/noteCommentPost.github.cli.gateway.d.ts.map +1 -1
- package/dist/modules/platform-integration/interface-adapters/gateways/cli/noteCommentPost.github.cli.gateway.js +4 -1
- package/dist/modules/platform-integration/interface-adapters/gateways/cli/noteCommentPost.github.cli.gateway.js.map +1 -1
- package/dist/modules/platform-integration/interface-adapters/gateways/cli/noteCommentPost.gitlab.cli.gateway.d.ts.map +1 -1
- package/dist/modules/platform-integration/interface-adapters/gateways/cli/noteCommentPost.gitlab.cli.gateway.js +4 -1
- package/dist/modules/platform-integration/interface-adapters/gateways/cli/noteCommentPost.gitlab.cli.gateway.js.map +1 -1
- package/dist/modules/platform-integration/interface-adapters/gateways/threadFetch.gitlab.gateway.d.ts.map +1 -1
- package/dist/modules/platform-integration/interface-adapters/gateways/threadFetch.gitlab.gateway.js +3 -0
- package/dist/modules/platform-integration/interface-adapters/gateways/threadFetch.gitlab.gateway.js.map +1 -1
- package/dist/modules/platform-integration/services/scopedExecutorEnvironment.d.ts +1 -0
- package/dist/modules/platform-integration/services/scopedExecutorEnvironment.d.ts.map +1 -1
- package/dist/modules/platform-integration/services/scopedExecutorEnvironment.js +10 -3
- package/dist/modules/platform-integration/services/scopedExecutorEnvironment.js.map +1 -1
- package/dist/modules/review-execution/interface-adapters/controllers/http/pendingReviews.routes.d.ts.map +1 -1
- package/dist/modules/review-execution/interface-adapters/controllers/http/pendingReviews.routes.js +5 -1
- package/dist/modules/review-execution/interface-adapters/controllers/http/pendingReviews.routes.js.map +1 -1
- package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.d.ts.map +1 -1
- package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.js +6 -4
- package/dist/modules/review-execution/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.js.map +1 -1
- package/dist/modules/review-execution/services/contextActionsExecutor.d.ts.map +1 -1
- package/dist/modules/review-execution/services/contextActionsExecutor.js +23 -1
- package/dist/modules/review-execution/services/contextActionsExecutor.js.map +1 -1
- package/dist/modules/review-execution/usecases/confirmPendingReview.usecase.d.ts +4 -0
- package/dist/modules/review-execution/usecases/confirmPendingReview.usecase.d.ts.map +1 -1
- package/dist/modules/review-execution/usecases/confirmPendingReview.usecase.js +6 -1
- package/dist/modules/review-execution/usecases/confirmPendingReview.usecase.js.map +1 -1
- package/dist/modules/setup-wizard/interface-adapters/controllers/http/setupWizard.routes.d.ts.map +1 -1
- package/dist/modules/setup-wizard/interface-adapters/controllers/http/setupWizard.routes.js +9 -0
- package/dist/modules/setup-wizard/interface-adapters/controllers/http/setupWizard.routes.js.map +1 -1
- package/dist/modules/setup-wizard/usecases/streamSetupRun.usecase.d.ts +14 -1
- package/dist/modules/setup-wizard/usecases/streamSetupRun.usecase.d.ts.map +1 -1
- package/dist/modules/setup-wizard/usecases/streamSetupRun.usecase.js +50 -6
- package/dist/modules/setup-wizard/usecases/streamSetupRun.usecase.js.map +1 -1
- package/dist/modules/statistics-insights/entities/insight/aiInsightsSession.gateway.d.ts +13 -0
- package/dist/modules/statistics-insights/entities/insight/aiInsightsSession.gateway.d.ts.map +1 -0
- package/dist/modules/statistics-insights/entities/insight/aiInsightsSession.gateway.js +2 -0
- package/dist/modules/statistics-insights/entities/insight/aiInsightsSession.gateway.js.map +1 -0
- package/dist/modules/statistics-insights/interface-adapters/controllers/http/insights.routes.d.ts +4 -2
- package/dist/modules/statistics-insights/interface-adapters/controllers/http/insights.routes.d.ts.map +1 -1
- package/dist/modules/statistics-insights/interface-adapters/controllers/http/insights.routes.js +6 -4
- package/dist/modules/statistics-insights/interface-adapters/controllers/http/insights.routes.js.map +1 -1
- package/dist/modules/statistics-insights/interface-adapters/gateways/aiInsightsSession.claude.gateway.d.ts +31 -0
- package/dist/modules/statistics-insights/interface-adapters/gateways/aiInsightsSession.claude.gateway.d.ts.map +1 -0
- package/dist/modules/statistics-insights/interface-adapters/gateways/aiInsightsSession.claude.gateway.js +105 -0
- package/dist/modules/statistics-insights/interface-adapters/gateways/aiInsightsSession.claude.gateway.js.map +1 -0
- package/dist/modules/statistics-insights/usecases/insights/{generateAiInsights.usecase.d.ts → generateAiInsightsViaSession.usecase.d.ts} +7 -13
- package/dist/modules/statistics-insights/usecases/insights/generateAiInsightsViaSession.usecase.d.ts.map +1 -0
- package/dist/modules/statistics-insights/usecases/insights/generateAiInsightsViaSession.usecase.js +49 -0
- package/dist/modules/statistics-insights/usecases/insights/generateAiInsightsViaSession.usecase.js.map +1 -0
- package/dist/modules/statistics-insights/usecases/insights/parseAiInsightsResponse.d.ts +3 -0
- package/dist/modules/statistics-insights/usecases/insights/parseAiInsightsResponse.d.ts.map +1 -0
- package/dist/modules/statistics-insights/usecases/insights/parseAiInsightsResponse.js +20 -0
- package/dist/modules/statistics-insights/usecases/insights/parseAiInsightsResponse.js.map +1 -0
- package/dist/modules/statistics-insights/usecases/insights/persistAiInsights.usecase.d.ts +12 -0
- package/dist/modules/statistics-insights/usecases/insights/persistAiInsights.usecase.d.ts.map +1 -0
- package/dist/modules/statistics-insights/usecases/insights/persistAiInsights.usecase.js +14 -0
- package/dist/modules/statistics-insights/usecases/insights/persistAiInsights.usecase.js.map +1 -0
- package/dist/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.d.ts.map +1 -1
- package/dist/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.js +14 -6
- package/dist/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.js.map +1 -1
- package/dist/tests/acceptance/174-semi-auto-review-trigger-mode.acceptance.test.js +1 -0
- package/dist/tests/acceptance/174-semi-auto-review-trigger-mode.acceptance.test.js.map +1 -1
- package/dist/tests/acceptance/191-team-insights-bg-migration.acceptance.test.d.ts +2 -0
- package/dist/tests/acceptance/191-team-insights-bg-migration.acceptance.test.d.ts.map +1 -0
- package/dist/tests/acceptance/191-team-insights-bg-migration.acceptance.test.js +121 -0
- package/dist/tests/acceptance/191-team-insights-bg-migration.acceptance.test.js.map +1 -0
- package/dist/tests/acceptance/202-confirm-pending-review-runs-review.acceptance.test.d.ts +2 -0
- package/dist/tests/acceptance/202-confirm-pending-review-runs-review.acceptance.test.d.ts.map +1 -0
- package/dist/tests/acceptance/202-confirm-pending-review-runs-review.acceptance.test.js +173 -0
- package/dist/tests/acceptance/202-confirm-pending-review-runs-review.acceptance.test.js.map +1 -0
- package/dist/tests/factories/pendingReviewRequest.factory.d.ts +1 -0
- package/dist/tests/factories/pendingReviewRequest.factory.d.ts.map +1 -1
- package/dist/tests/factories/pendingReviewRequest.factory.js +22 -0
- package/dist/tests/factories/pendingReviewRequest.factory.js.map +1 -1
- package/dist/tests/stubs/aiInsightsSession.stub.d.ts +8 -0
- package/dist/tests/stubs/aiInsightsSession.stub.d.ts.map +1 -0
- package/dist/tests/stubs/aiInsightsSession.stub.js +15 -0
- package/dist/tests/stubs/aiInsightsSession.stub.js.map +1 -0
- package/dist/tests/stubs/claudeSession.stub.d.ts +8 -0
- package/dist/tests/stubs/claudeSession.stub.d.ts.map +1 -1
- package/dist/tests/stubs/claudeSession.stub.js +24 -2
- package/dist/tests/stubs/claudeSession.stub.js.map +1 -1
- package/dist/tests/units/architecture/noClaudePInProduction.test.js +0 -1
- package/dist/tests/units/architecture/noClaudePInProduction.test.js.map +1 -1
- package/dist/tests/units/entities/insight/teamInsight.guard.test.d.ts +2 -0
- package/dist/tests/units/entities/insight/teamInsight.guard.test.d.ts.map +1 -0
- package/dist/tests/units/entities/insight/teamInsight.guard.test.js +45 -0
- package/dist/tests/units/entities/insight/teamInsight.guard.test.js.map +1 -0
- package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.js +6 -4
- package/dist/tests/units/interface-adapters/controllers/http/insights.routes.test.js.map +1 -1
- package/dist/tests/units/interface-adapters/controllers/http/stats.routes.test.d.ts +2 -0
- package/dist/tests/units/interface-adapters/controllers/http/stats.routes.test.d.ts.map +1 -0
- package/dist/tests/units/interface-adapters/controllers/http/stats.routes.test.js +208 -0
- package/dist/tests/units/interface-adapters/controllers/http/stats.routes.test.js.map +1 -0
- package/dist/tests/units/interface-adapters/controllers/mcp/addAction.handler.test.js +92 -0
- package/dist/tests/units/interface-adapters/controllers/mcp/addAction.handler.test.js.map +1 -1
- package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js +303 -0
- package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js.map +1 -1
- package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js +359 -1
- package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js.map +1 -1
- package/dist/tests/units/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.test.js +10 -3
- package/dist/tests/units/interface-adapters/gateways/cli/reviewAction.github.cli.gateway.test.js.map +1 -1
- package/dist/tests/units/modules/claude-invocation/gateways/transcriptStreamJson.parser.test.d.ts +2 -0
- package/dist/tests/units/modules/claude-invocation/gateways/transcriptStreamJson.parser.test.d.ts.map +1 -0
- package/dist/tests/units/modules/{ember-chat/gateways/emberStreamJson.parser.test.js → claude-invocation/gateways/transcriptStreamJson.parser.test.js} +2 -2
- package/dist/tests/units/modules/claude-invocation/gateways/transcriptStreamJson.parser.test.js.map +1 -0
- package/dist/tests/units/modules/claude-invocation/usecases/awaitSessionCompletion.usecase.test.js +66 -0
- package/dist/tests/units/modules/claude-invocation/usecases/awaitSessionCompletion.usecase.test.js.map +1 -1
- package/dist/tests/units/modules/claude-invocation/usecases/cleanupClaudeSession.usecase.test.js +62 -0
- package/dist/tests/units/modules/claude-invocation/usecases/cleanupClaudeSession.usecase.test.js.map +1 -1
- package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/cliStatus.routes.test.d.ts +2 -0
- package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/cliStatus.routes.test.d.ts.map +1 -0
- package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/cliStatus.routes.test.js +182 -0
- package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/cliStatus.routes.test.js.map +1 -0
- package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.test.js +225 -0
- package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.test.js.map +1 -1
- package/dist/tests/units/modules/ember-chat/gateways/emberAnswerTransport.claude.gateway.test.d.ts +2 -0
- package/dist/tests/units/modules/ember-chat/gateways/emberAnswerTransport.claude.gateway.test.d.ts.map +1 -0
- package/dist/tests/units/modules/ember-chat/gateways/emberAnswerTransport.claude.gateway.test.js +171 -0
- package/dist/tests/units/modules/ember-chat/gateways/emberAnswerTransport.claude.gateway.test.js.map +1 -0
- package/dist/tests/units/modules/platform-integration/controllers/githubProcessorProvenance.test.d.ts +2 -0
- package/dist/tests/units/modules/platform-integration/controllers/githubProcessorProvenance.test.d.ts.map +1 -0
- package/dist/tests/units/modules/platform-integration/controllers/githubProcessorProvenance.test.js +70 -0
- package/dist/tests/units/modules/platform-integration/controllers/githubProcessorProvenance.test.js.map +1 -0
- package/dist/tests/units/modules/platform-integration/entities/transport/cidr.test.d.ts +2 -0
- package/dist/tests/units/modules/platform-integration/entities/transport/cidr.test.d.ts.map +1 -0
- package/dist/tests/units/modules/platform-integration/entities/transport/cidr.test.js +51 -0
- package/dist/tests/units/modules/platform-integration/entities/transport/cidr.test.js.map +1 -0
- package/dist/tests/units/modules/platform-integration/gateways/scopedGitLabExecutor.test.js +4 -0
- package/dist/tests/units/modules/platform-integration/gateways/scopedGitLabExecutor.test.js.map +1 -1
- package/dist/tests/units/modules/platform-integration/interface-adapters/gateways/cli/noteCommentPost.cli.shellSafety.test.d.ts +2 -0
- package/dist/tests/units/modules/platform-integration/interface-adapters/gateways/cli/noteCommentPost.cli.shellSafety.test.d.ts.map +1 -0
- package/dist/tests/units/modules/platform-integration/interface-adapters/gateways/cli/noteCommentPost.cli.shellSafety.test.js +39 -0
- package/dist/tests/units/modules/platform-integration/interface-adapters/gateways/cli/noteCommentPost.cli.shellSafety.test.js.map +1 -0
- package/dist/tests/units/modules/platform-integration/services/scopedExecutorEnvironment.test.js +15 -2
- package/dist/tests/units/modules/platform-integration/services/scopedExecutorEnvironment.test.js.map +1 -1
- package/dist/tests/units/modules/review-execution/entities/reviewRequest/reviewRequest.guard.test.d.ts +2 -0
- package/dist/tests/units/modules/review-execution/entities/reviewRequest/reviewRequest.guard.test.d.ts.map +1 -0
- package/dist/tests/units/modules/review-execution/entities/reviewRequest/reviewRequest.guard.test.js +34 -0
- package/dist/tests/units/modules/review-execution/entities/reviewRequest/reviewRequest.guard.test.js.map +1 -0
- package/dist/tests/units/modules/review-execution/interface-adapters/controllers/http/pendingReviews.routes.test.js +21 -2
- package/dist/tests/units/modules/review-execution/interface-adapters/controllers/http/pendingReviews.routes.test.js.map +1 -1
- package/dist/tests/units/modules/review-execution/interface-adapters/controllers/http/reviews.routes.test.d.ts +2 -0
- package/dist/tests/units/modules/review-execution/interface-adapters/controllers/http/reviews.routes.test.d.ts.map +1 -0
- package/dist/tests/units/modules/review-execution/interface-adapters/controllers/http/reviews.routes.test.js +210 -0
- package/dist/tests/units/modules/review-execution/interface-adapters/controllers/http/reviews.routes.test.js.map +1 -0
- package/dist/tests/units/modules/review-execution/interface-adapters/gateways/fileSystem/reviewFile.fileSystem.test.d.ts +2 -0
- package/dist/tests/units/modules/review-execution/interface-adapters/gateways/fileSystem/reviewFile.fileSystem.test.d.ts.map +1 -0
- package/dist/tests/units/modules/review-execution/interface-adapters/gateways/fileSystem/reviewFile.fileSystem.test.js +103 -0
- package/dist/tests/units/modules/review-execution/interface-adapters/gateways/fileSystem/reviewFile.fileSystem.test.js.map +1 -0
- package/dist/tests/units/modules/review-execution/usecases/confirmPendingReview.usecase.test.js +25 -0
- package/dist/tests/units/modules/review-execution/usecases/confirmPendingReview.usecase.test.js.map +1 -1
- package/dist/tests/units/modules/setup-wizard/gateways/serverConfig.fileSystem.gateway.test.d.ts +2 -0
- package/dist/tests/units/modules/setup-wizard/gateways/serverConfig.fileSystem.gateway.test.d.ts.map +1 -0
- package/dist/tests/units/modules/setup-wizard/gateways/serverConfig.fileSystem.gateway.test.js +98 -0
- package/dist/tests/units/modules/setup-wizard/gateways/serverConfig.fileSystem.gateway.test.js.map +1 -0
- package/dist/tests/units/modules/setup-wizard/interface-adapters/controllers/http/setupWizard.routes.test.js +12 -0
- package/dist/tests/units/modules/setup-wizard/interface-adapters/controllers/http/setupWizard.routes.test.js.map +1 -1
- package/dist/tests/units/modules/setup-wizard/interface-adapters/gateways/skillTemplate.fileSystem.gateway.test.d.ts +2 -0
- package/dist/tests/units/modules/setup-wizard/interface-adapters/gateways/skillTemplate.fileSystem.gateway.test.d.ts.map +1 -0
- package/dist/tests/units/modules/setup-wizard/interface-adapters/gateways/skillTemplate.fileSystem.gateway.test.js +51 -0
- package/dist/tests/units/modules/setup-wizard/interface-adapters/gateways/skillTemplate.fileSystem.gateway.test.js.map +1 -0
- package/dist/tests/units/modules/setup-wizard/interface-adapters/gateways/validation.adapter.gateway.test.d.ts +2 -0
- package/dist/tests/units/modules/setup-wizard/interface-adapters/gateways/validation.adapter.gateway.test.d.ts.map +1 -0
- package/dist/tests/units/modules/setup-wizard/interface-adapters/gateways/validation.adapter.gateway.test.js +70 -0
- package/dist/tests/units/modules/setup-wizard/interface-adapters/gateways/validation.adapter.gateway.test.js.map +1 -0
- package/dist/tests/units/modules/setup-wizard/usecases/streamSetupRun.usecase.test.js +60 -1
- package/dist/tests/units/modules/setup-wizard/usecases/streamSetupRun.usecase.test.js.map +1 -1
- package/dist/tests/units/modules/statistics-insights/entities/insight/developerInsight.guard.test.d.ts +2 -0
- package/dist/tests/units/modules/statistics-insights/entities/insight/developerInsight.guard.test.d.ts.map +1 -0
- package/dist/tests/units/modules/statistics-insights/entities/insight/developerInsight.guard.test.js +49 -0
- package/dist/tests/units/modules/statistics-insights/entities/insight/developerInsight.guard.test.js.map +1 -0
- package/dist/tests/units/modules/statistics-insights/entities/insight/persistedInsightsData.guard.test.d.ts +2 -0
- package/dist/tests/units/modules/statistics-insights/entities/insight/persistedInsightsData.guard.test.d.ts.map +1 -0
- package/dist/tests/units/modules/statistics-insights/entities/insight/persistedInsightsData.guard.test.js +29 -0
- package/dist/tests/units/modules/statistics-insights/entities/insight/persistedInsightsData.guard.test.js.map +1 -0
- package/dist/tests/units/modules/statistics-insights/gateways/aiInsightsSession.claude.gateway.test.d.ts +2 -0
- package/dist/tests/units/modules/statistics-insights/gateways/aiInsightsSession.claude.gateway.test.d.ts.map +1 -0
- package/dist/tests/units/modules/statistics-insights/gateways/aiInsightsSession.claude.gateway.test.js +63 -0
- package/dist/tests/units/modules/statistics-insights/gateways/aiInsightsSession.claude.gateway.test.js.map +1 -0
- package/dist/tests/units/modules/statistics-insights/gateways/stats.fileSystem.test.d.ts +2 -0
- package/dist/tests/units/modules/statistics-insights/gateways/stats.fileSystem.test.d.ts.map +1 -0
- package/dist/tests/units/modules/statistics-insights/gateways/stats.fileSystem.test.js +73 -0
- package/dist/tests/units/modules/statistics-insights/gateways/stats.fileSystem.test.js.map +1 -0
- package/dist/tests/units/modules/statistics-insights/interface-adapters/presenters/overview.presenter.test.js +99 -0
- package/dist/tests/units/modules/statistics-insights/interface-adapters/presenters/overview.presenter.test.js.map +1 -1
- package/dist/tests/units/modules/supervisor-management/gateways/supervisorLock.fileSystem.gateway.test.js +60 -2
- package/dist/tests/units/modules/supervisor-management/gateways/supervisorLock.fileSystem.gateway.test.js.map +1 -1
- package/dist/tests/units/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.test.js +499 -18
- package/dist/tests/units/modules/tracking/interface-adapters/controllers/http/mrTrackingAdvanced.routes.test.js.map +1 -1
- package/dist/tests/units/modules/tracking/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.test.d.ts +2 -0
- package/dist/tests/units/modules/tracking/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.test.d.ts.map +1 -0
- package/dist/tests/units/modules/tracking/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.test.js +273 -0
- package/dist/tests/units/modules/tracking/interface-adapters/gateways/fileSystem/reviewRequestTracking.fileSystem.test.js.map +1 -0
- package/dist/tests/units/modules/worktree-management/entities/worktree/worktree.test.js +47 -1
- package/dist/tests/units/modules/worktree-management/entities/worktree/worktree.test.js.map +1 -1
- package/dist/tests/units/modules/worktree-management/usecases/sweepStaleWorktrees.usecase.test.js +98 -0
- package/dist/tests/units/modules/worktree-management/usecases/sweepStaleWorktrees.usecase.test.js.map +1 -1
- package/dist/tests/units/services/contextActionsExecutor.test.js +67 -0
- package/dist/tests/units/services/contextActionsExecutor.test.js.map +1 -1
- package/dist/tests/units/services/statsService.branches.test.d.ts +2 -0
- package/dist/tests/units/services/statsService.branches.test.d.ts.map +1 -0
- package/dist/tests/units/services/statsService.branches.test.js +266 -0
- package/dist/tests/units/services/statsService.branches.test.js.map +1 -0
- package/dist/tests/units/shared/services/logFileReader.test.d.ts +2 -0
- package/dist/tests/units/shared/services/logFileReader.test.d.ts.map +1 -0
- package/dist/tests/units/shared/services/logFileReader.test.js +70 -0
- package/dist/tests/units/shared/services/logFileReader.test.js.map +1 -0
- package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.js +206 -0
- package/dist/tests/units/usecases/insights/buildAiInsightsPrompt.test.js.map +1 -1
- package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.js +40 -0
- package/dist/tests/units/usecases/insights/computeDeveloperInsights.usecase.test.js.map +1 -1
- package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.js +204 -0
- package/dist/tests/units/usecases/insights/computeInsightsWithPersistence.usecase.test.js.map +1 -1
- package/dist/tests/units/usecases/insights/generateAiInsightsViaSession.usecase.test.d.ts +2 -0
- package/dist/tests/units/usecases/insights/generateAiInsightsViaSession.usecase.test.d.ts.map +1 -0
- package/dist/tests/units/usecases/insights/generateAiInsightsViaSession.usecase.test.js +114 -0
- package/dist/tests/units/usecases/insights/generateAiInsightsViaSession.usecase.test.js.map +1 -0
- package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.js +57 -0
- package/dist/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.js.map +1 -1
- package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.js +391 -1
- package/dist/tests/units/usecases/insights/insightLevelComputation.service.test.js.map +1 -1
- package/dist/tests/units/usecases/insights/parseAiInsightsResponse.test.d.ts +2 -0
- package/dist/tests/units/usecases/insights/parseAiInsightsResponse.test.d.ts.map +1 -0
- package/dist/tests/units/usecases/insights/parseAiInsightsResponse.test.js +45 -0
- package/dist/tests/units/usecases/insights/parseAiInsightsResponse.test.js.map +1 -0
- package/dist/tests/units/usecases/insights/persistAiInsights.usecase.test.d.ts +2 -0
- package/dist/tests/units/usecases/insights/persistAiInsights.usecase.test.d.ts.map +1 -0
- package/dist/tests/units/usecases/insights/persistAiInsights.usecase.test.js +87 -0
- package/dist/tests/units/usecases/insights/persistAiInsights.usecase.test.js.map +1 -0
- package/package.json +12 -2
- package/dist/frameworks/claude/claudeInsightsInvoker.d.ts +0 -3
- package/dist/frameworks/claude/claudeInsightsInvoker.d.ts.map +0 -1
- package/dist/frameworks/claude/claudeInsightsInvoker.js +0 -58
- package/dist/frameworks/claude/claudeInsightsInvoker.js.map +0 -1
- package/dist/modules/ember-chat/interface-adapters/gateways/emberStreamJson.parser.d.ts.map +0 -1
- package/dist/modules/ember-chat/interface-adapters/gateways/emberStreamJson.parser.js.map +0 -1
- package/dist/modules/statistics-insights/usecases/insights/generateAiInsights.usecase.d.ts.map +0 -1
- package/dist/modules/statistics-insights/usecases/insights/generateAiInsights.usecase.js +0 -65
- package/dist/modules/statistics-insights/usecases/insights/generateAiInsights.usecase.js.map +0 -1
- package/dist/tests/units/modules/ember-chat/gateways/emberStreamJson.parser.test.d.ts +0 -2
- package/dist/tests/units/modules/ember-chat/gateways/emberStreamJson.parser.test.d.ts.map +0 -1
- package/dist/tests/units/modules/ember-chat/gateways/emberStreamJson.parser.test.js.map +0 -1
- package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.d.ts +0 -2
- package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.d.ts.map +0 -1
- package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.js +0 -253
- package/dist/tests/units/usecases/insights/generateAiInsights.usecase.test.js.map +0 -1
|
@@ -137,6 +137,63 @@ describe('getInsightsWithAiStatus', () => {
|
|
|
137
137
|
});
|
|
138
138
|
expect(result.hasNewReviewsSinceAiGeneration).toBe(false);
|
|
139
139
|
});
|
|
140
|
+
it('should return null aiInsights and false flag when no stats but persisted data has no AI insights', () => {
|
|
141
|
+
const persistedData = PersistedInsightsDataFactory.create({
|
|
142
|
+
processedReviewIds: ['r1', 'r2', 'r3'],
|
|
143
|
+
aiInsights: null,
|
|
144
|
+
reviewCountAtAiGeneration: 0,
|
|
145
|
+
});
|
|
146
|
+
insightsGateway.savePersistedInsights('/test/project', persistedData);
|
|
147
|
+
const result = getInsightsWithAiStatus({
|
|
148
|
+
projectPath: '/test/project',
|
|
149
|
+
statsGateway,
|
|
150
|
+
insightsGateway,
|
|
151
|
+
});
|
|
152
|
+
expect(result.aiInsights).toBeNull();
|
|
153
|
+
expect(result.hasNewReviewsSinceAiGeneration).toBe(false);
|
|
154
|
+
});
|
|
155
|
+
it('should detect new reviews since AI generation when no stats but persisted count is below processed reviews', () => {
|
|
156
|
+
const persistedData = PersistedInsightsDataFactory.create({
|
|
157
|
+
processedReviewIds: ['r1', 'r2', 'r3', 'r4', 'r5'],
|
|
158
|
+
aiInsights: validAiInsights,
|
|
159
|
+
reviewCountAtAiGeneration: 3,
|
|
160
|
+
});
|
|
161
|
+
insightsGateway.savePersistedInsights('/test/project', persistedData);
|
|
162
|
+
const result = getInsightsWithAiStatus({
|
|
163
|
+
projectPath: '/test/project',
|
|
164
|
+
statsGateway,
|
|
165
|
+
insightsGateway,
|
|
166
|
+
});
|
|
167
|
+
expect(result.aiInsights).toEqual(validAiInsights);
|
|
168
|
+
expect(result.hasNewReviewsSinceAiGeneration).toBe(true);
|
|
169
|
+
});
|
|
170
|
+
it('should persist null aiInsights and zero count when no stats but persisted data lacks AI insights', () => {
|
|
171
|
+
const persistedData = PersistedInsightsDataFactory.create({
|
|
172
|
+
processedReviewIds: ['r1'],
|
|
173
|
+
aiInsights: null,
|
|
174
|
+
reviewCountAtAiGeneration: 0,
|
|
175
|
+
});
|
|
176
|
+
insightsGateway.savePersistedInsights('/test/project', persistedData);
|
|
177
|
+
getInsightsWithAiStatus({
|
|
178
|
+
projectPath: '/test/project',
|
|
179
|
+
statsGateway,
|
|
180
|
+
insightsGateway,
|
|
181
|
+
});
|
|
182
|
+
const saved = insightsGateway.loadPersistedInsights('/test/project');
|
|
183
|
+
expect(saved?.aiInsights).toBeNull();
|
|
184
|
+
expect(saved?.reviewCountAtAiGeneration).toBe(0);
|
|
185
|
+
});
|
|
186
|
+
it('should treat an empty reviews array as no stats and return empty insights', () => {
|
|
187
|
+
statsGateway.saveProjectStats('/test/project', ProjectStatsFactory.withReviews([]));
|
|
188
|
+
const result = getInsightsWithAiStatus({
|
|
189
|
+
projectPath: '/test/project',
|
|
190
|
+
statsGateway,
|
|
191
|
+
insightsGateway,
|
|
192
|
+
});
|
|
193
|
+
expect(result.developerInsights).toEqual([]);
|
|
194
|
+
expect(result.aiInsights).toBeNull();
|
|
195
|
+
expect(result.hasNewReviewsSinceAiGeneration).toBe(false);
|
|
196
|
+
});
|
|
140
197
|
it('should save updated persisted data', () => {
|
|
141
198
|
const reviews = [
|
|
142
199
|
ReviewStatsFactory.create({ id: 'r1', assignedBy: 'alice', score: 8 }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInsightsWithAiStatus.usecase.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getInsightsWithAiStatus.usecase.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/insights/getInsightsWithAiStatus.usecase.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oFAAoF,CAAC;AAC7H,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,EAAE,4BAA4B,EAAE,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AAGpI,MAAM,eAAe,GAAqB;IACxC,UAAU,EAAE;QACV;YACE,aAAa,EAAE,OAAO;YACtB,KAAK,EAAE,uBAAuB;YAC9B,gBAAgB,EAAE,wBAAwB;YAC1C,SAAS,EAAE,CAAC,yBAAyB,CAAC;YACtC,UAAU,EAAE,CAAC,wBAAwB,CAAC;YACtC,eAAe,EAAE,CAAC,4BAA4B,CAAC;YAC/C,OAAO,EAAE,kCAAkC;SAC5C;KACF;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,uBAAuB;QAChC,SAAS,EAAE,CAAC,wBAAwB,CAAC;QACrC,UAAU,EAAE,CAAC,oBAAoB,CAAC;QAClC,eAAe,EAAE,CAAC,6BAA6B,CAAC;QAChD,QAAQ,EAAE,qBAAqB;KAChC;IACD,WAAW,EAAE,sBAAsB;CACpC,CAAC;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,YAAkC,CAAC;IACvC,IAAI,eAAwC,CAAC;IAE7C,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC1C,eAAe,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,WAAW,EAAE,eAAe;YAC5B,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,MAAM,UAAU,GAAG;YACjB,gCAAgC,CAAC,MAAM,CAAC;gBACtC,aAAa,EAAE,OAAO;gBACtB,YAAY,EAAE,CAAC;gBACf,aAAa,EAAE;oBACb,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;oBAC5D,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;oBAC5D,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;oBAC5D,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;oBAC5D,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;iBAC7D;aACF,CAAC;SACH,CAAC;QACF,MAAM,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC;YACxD,UAAU;YACV,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClD,UAAU,EAAE,eAAe;YAC3B,yBAAyB,EAAE,CAAC;SAC7B,CAAC,CAAC;QACH,eAAe,CAAC,qBAAqB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,WAAW,EAAE,eAAe;YAC5B,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAG;YACd,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SACvE,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,eAAe,EAAE,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzF,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,WAAW,EAAE,eAAe;YAC5B,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,OAAO,GAAG;YACd,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SACvE,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,eAAe,EAAE,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzF,MAAM,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC;YACxD,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACtC,UAAU,EAAE,eAAe;YAC3B,yBAAyB,EAAE,CAAC;SAC7B,CAAC,CAAC;QACH,eAAe,CAAC,qBAAqB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,WAAW,EAAE,eAAe;YAC5B,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;QAC/F,MAAM,OAAO,GAAG;YACd,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SACvE,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,eAAe,EAAE,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzF,MAAM,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC;YACxD,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YAChC,UAAU,EAAE,IAAI;YAChB,yBAAyB,EAAE,CAAC;SAC7B,CAAC,CAAC;QACH,eAAe,CAAC,qBAAqB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,WAAW,EAAE,eAAe;YAC5B,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kGAAkG,EAAE,GAAG,EAAE;QAC1G,MAAM,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC;YACxD,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACtC,UAAU,EAAE,IAAI;YAChB,yBAAyB,EAAE,CAAC;SAC7B,CAAC,CAAC;QACH,eAAe,CAAC,qBAAqB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,WAAW,EAAE,eAAe;YAC5B,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4GAA4G,EAAE,GAAG,EAAE;QACpH,MAAM,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC;YACxD,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAClD,UAAU,EAAE,eAAe;YAC3B,yBAAyB,EAAE,CAAC;SAC7B,CAAC,CAAC;QACH,eAAe,CAAC,qBAAqB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,WAAW,EAAE,eAAe;YAC5B,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kGAAkG,EAAE,GAAG,EAAE;QAC1G,MAAM,aAAa,GAAG,4BAA4B,CAAC,MAAM,CAAC;YACxD,kBAAkB,EAAE,CAAC,IAAI,CAAC;YAC1B,UAAU,EAAE,IAAI;YAChB,yBAAyB,EAAE,CAAC;SAC7B,CAAC,CAAC;QACH,eAAe,CAAC,qBAAqB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QAEtE,uBAAuB,CAAC;YACtB,WAAW,EAAE,eAAe;YAC5B,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,eAAe,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,YAAY,CAAC,gBAAgB,CAAC,eAAe,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpF,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,WAAW,EAAE,eAAe;YAC5B,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,OAAO,GAAG;YACd,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACtE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SACvE,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,eAAe,EAAE,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzF,uBAAuB,CAAC;YACtB,WAAW,EAAE,eAAe;YAC5B,YAAY;YACZ,eAAe;SAChB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,eAAe,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { normalizeHigherIsBetter, normalizeLowerIsBetter, computeDeveloperMetrics, computeTeamMetrics, computeCategoryLevels, } from '../../../../modules/statistics-insights/usecases/insights/insightLevelComputation.service.js';
|
|
2
|
+
import { normalizeHigherIsBetter, normalizeLowerIsBetter, computeDeveloperMetrics, computeTeamMetrics, computeCategoryLevels, average, averageOfScores, averageCodeVolume, clampLevel, trendToScore, invertTrend, computeTrendForMetric, computeCodeVolumeTrend, identifyStrengths, identifyWeaknesses, identifyTopPriority, computeTitle, computeOverallLevel, } from '../../../../modules/statistics-insights/usecases/insights/insightLevelComputation.service.js';
|
|
3
3
|
import { ReviewStatsFactory } from '../../../../tests/factories/projectStats.factory.js';
|
|
4
|
+
function categoryLevel(level, trend = 'stable') {
|
|
5
|
+
return { level, trend };
|
|
6
|
+
}
|
|
7
|
+
function createCategoryLevels(overrides = {}) {
|
|
8
|
+
return {
|
|
9
|
+
quality: categoryLevel(5),
|
|
10
|
+
responsiveness: categoryLevel(5),
|
|
11
|
+
codeVolume: categoryLevel(5),
|
|
12
|
+
iteration: categoryLevel(5),
|
|
13
|
+
...overrides,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
4
16
|
function createReviewsForDeveloper(developerName, count, overrides = {}) {
|
|
5
17
|
return Array.from({ length: count }, (_, index) => ReviewStatsFactory.create({
|
|
6
18
|
id: `${developerName}-${index}`,
|
|
@@ -122,4 +134,382 @@ describe('level calibration with real-world data', () => {
|
|
|
122
134
|
expect(lowLevels.quality.level).toBeLessThanOrEqual(3);
|
|
123
135
|
});
|
|
124
136
|
});
|
|
137
|
+
describe('average', () => {
|
|
138
|
+
it('should return 0 for an empty array', () => {
|
|
139
|
+
expect(average([])).toBe(0);
|
|
140
|
+
});
|
|
141
|
+
it('should return the arithmetic mean for a non-empty array', () => {
|
|
142
|
+
expect(average([2, 4, 6])).toBe(4);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
describe('averageOfScores', () => {
|
|
146
|
+
it('should return the neutral fallback of 5 when no review has a score', () => {
|
|
147
|
+
const reviews = [
|
|
148
|
+
ReviewStatsFactory.create({ score: null }),
|
|
149
|
+
ReviewStatsFactory.create({ score: null }),
|
|
150
|
+
];
|
|
151
|
+
expect(averageOfScores(reviews)).toBe(5);
|
|
152
|
+
});
|
|
153
|
+
it('should average only the scored reviews', () => {
|
|
154
|
+
const reviews = [
|
|
155
|
+
ReviewStatsFactory.create({ score: 8 }),
|
|
156
|
+
ReviewStatsFactory.create({ score: null }),
|
|
157
|
+
ReviewStatsFactory.create({ score: 6 }),
|
|
158
|
+
];
|
|
159
|
+
expect(averageOfScores(reviews)).toBe(7);
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
describe('averageCodeVolume', () => {
|
|
163
|
+
it('should return 0 when no review has diff stats', () => {
|
|
164
|
+
const reviews = [
|
|
165
|
+
ReviewStatsFactory.create({ diffStats: null }),
|
|
166
|
+
ReviewStatsFactory.create({ diffStats: undefined }),
|
|
167
|
+
];
|
|
168
|
+
expect(averageCodeVolume(reviews)).toBe(0);
|
|
169
|
+
});
|
|
170
|
+
it('should sum additions and deletions across reviews with diff stats', () => {
|
|
171
|
+
const reviews = [
|
|
172
|
+
ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 100, deletions: 20 }),
|
|
173
|
+
ReviewStatsFactory.create({ diffStats: null }),
|
|
174
|
+
ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 30, deletions: 10 }),
|
|
175
|
+
];
|
|
176
|
+
expect(averageCodeVolume(reviews)).toBe(80);
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
describe('clampLevel', () => {
|
|
180
|
+
it('should clamp below the minimum to 1', () => {
|
|
181
|
+
expect(clampLevel(-3)).toBe(1);
|
|
182
|
+
});
|
|
183
|
+
it('should clamp above the maximum to 10', () => {
|
|
184
|
+
expect(clampLevel(42)).toBe(10);
|
|
185
|
+
});
|
|
186
|
+
it('should pass through values inside the range', () => {
|
|
187
|
+
expect(clampLevel(6)).toBe(6);
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
describe('trendToScore', () => {
|
|
191
|
+
it('should map improving to 0.8', () => {
|
|
192
|
+
expect(trendToScore('improving')).toBe(0.8);
|
|
193
|
+
});
|
|
194
|
+
it('should map stable to 0.5', () => {
|
|
195
|
+
expect(trendToScore('stable')).toBe(0.5);
|
|
196
|
+
});
|
|
197
|
+
it('should map declining to 0.2', () => {
|
|
198
|
+
expect(trendToScore('declining')).toBe(0.2);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
describe('invertTrend', () => {
|
|
202
|
+
it('should invert improving to declining', () => {
|
|
203
|
+
expect(invertTrend('improving')).toBe('declining');
|
|
204
|
+
});
|
|
205
|
+
it('should invert declining to improving', () => {
|
|
206
|
+
expect(invertTrend('declining')).toBe('improving');
|
|
207
|
+
});
|
|
208
|
+
it('should keep stable unchanged', () => {
|
|
209
|
+
expect(invertTrend('stable')).toBe('stable');
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
describe('computeTrendForMetric', () => {
|
|
213
|
+
const extractScore = (review) => review.score ?? 0;
|
|
214
|
+
function reviewsWithScores(scores) {
|
|
215
|
+
return scores.map((score, index) => ReviewStatsFactory.create({
|
|
216
|
+
id: `r-${index}`,
|
|
217
|
+
score,
|
|
218
|
+
timestamp: `2024-01-${String(index + 1).padStart(2, '0')}T10:00:00Z`,
|
|
219
|
+
}));
|
|
220
|
+
}
|
|
221
|
+
it('should return stable when there are fewer reviews than the trend window', () => {
|
|
222
|
+
const reviews = reviewsWithScores([5, 6, 7]);
|
|
223
|
+
expect(computeTrendForMetric(reviews, extractScore)).toBe('stable');
|
|
224
|
+
});
|
|
225
|
+
it('should return stable when the previous window is empty', () => {
|
|
226
|
+
const reviews = reviewsWithScores(new Array(10).fill(5));
|
|
227
|
+
expect(computeTrendForMetric(reviews, extractScore)).toBe('stable');
|
|
228
|
+
});
|
|
229
|
+
it('should return stable when both windows average exactly 0', () => {
|
|
230
|
+
const reviews = reviewsWithScores(new Array(15).fill(0));
|
|
231
|
+
expect(computeTrendForMetric(reviews, extractScore)).toBe('stable');
|
|
232
|
+
});
|
|
233
|
+
it('should return improving when the recent window is clearly higher', () => {
|
|
234
|
+
const reviews = reviewsWithScores([1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9]);
|
|
235
|
+
expect(computeTrendForMetric(reviews, extractScore)).toBe('improving');
|
|
236
|
+
});
|
|
237
|
+
it('should return declining when the recent window is clearly lower', () => {
|
|
238
|
+
const reviews = reviewsWithScores([9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]);
|
|
239
|
+
expect(computeTrendForMetric(reviews, extractScore)).toBe('declining');
|
|
240
|
+
});
|
|
241
|
+
it('should return stable when the change stays within the threshold', () => {
|
|
242
|
+
const reviews = reviewsWithScores(new Array(15).fill(5));
|
|
243
|
+
expect(computeTrendForMetric(reviews, extractScore)).toBe('stable');
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
describe('computeCodeVolumeTrend', () => {
|
|
247
|
+
function volumeReviews(volumes) {
|
|
248
|
+
return volumes.map((volume, index) => ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: volume, deletions: 0 }, { id: `v-${index}`, timestamp: `2024-01-${String(index + 1).padStart(2, '0')}T10:00:00Z` }));
|
|
249
|
+
}
|
|
250
|
+
it('should return stable when there are fewer reviews than the trend window', () => {
|
|
251
|
+
expect(computeCodeVolumeTrend(volumeReviews([10, 20]))).toBe('stable');
|
|
252
|
+
});
|
|
253
|
+
it('should return stable when the previous window is empty', () => {
|
|
254
|
+
expect(computeCodeVolumeTrend(volumeReviews(new Array(10).fill(100)))).toBe('stable');
|
|
255
|
+
});
|
|
256
|
+
it('should return stable when the previous window volume is 0', () => {
|
|
257
|
+
const reviews = [
|
|
258
|
+
...new Array(5).fill(0).map((_, index) => ReviewStatsFactory.create({
|
|
259
|
+
id: `z-${index}`,
|
|
260
|
+
diffStats: null,
|
|
261
|
+
timestamp: `2024-01-0${index + 1}T10:00:00Z`,
|
|
262
|
+
})),
|
|
263
|
+
...volumeReviews(new Array(10).fill(100)).map((review, index) => ({
|
|
264
|
+
...review,
|
|
265
|
+
timestamp: `2024-01-${String(index + 6).padStart(2, '0')}T10:00:00Z`,
|
|
266
|
+
})),
|
|
267
|
+
];
|
|
268
|
+
expect(computeCodeVolumeTrend(reviews)).toBe('stable');
|
|
269
|
+
});
|
|
270
|
+
it('should return improving when recent volume grows beyond 15%', () => {
|
|
271
|
+
const reviews = volumeReviews([
|
|
272
|
+
100, 100, 100, 100, 100, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
|
|
273
|
+
]);
|
|
274
|
+
expect(computeCodeVolumeTrend(reviews)).toBe('improving');
|
|
275
|
+
});
|
|
276
|
+
it('should return declining when recent volume drops beyond 15%', () => {
|
|
277
|
+
const reviews = volumeReviews([
|
|
278
|
+
300, 300, 300, 300, 300, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
|
|
279
|
+
]);
|
|
280
|
+
expect(computeCodeVolumeTrend(reviews)).toBe('declining');
|
|
281
|
+
});
|
|
282
|
+
it('should return stable when the volume change stays within 15%', () => {
|
|
283
|
+
const reviews = volumeReviews(new Array(15).fill(100));
|
|
284
|
+
expect(computeCodeVolumeTrend(reviews)).toBe('stable');
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
describe('identifyStrengths', () => {
|
|
288
|
+
it('should include a category whose level meets the strength threshold', () => {
|
|
289
|
+
const levels = createCategoryLevels({ quality: categoryLevel(8) });
|
|
290
|
+
expect(identifyStrengths(levels)).toContain('quality');
|
|
291
|
+
});
|
|
292
|
+
it('should include a category improving above the trend threshold even below the level threshold', () => {
|
|
293
|
+
const levels = createCategoryLevels({
|
|
294
|
+
responsiveness: categoryLevel(5, 'improving'),
|
|
295
|
+
});
|
|
296
|
+
expect(identifyStrengths(levels)).toContain('responsiveness');
|
|
297
|
+
});
|
|
298
|
+
it('should return an empty array when no category qualifies', () => {
|
|
299
|
+
const levels = createCategoryLevels({
|
|
300
|
+
quality: categoryLevel(4, 'declining'),
|
|
301
|
+
responsiveness: categoryLevel(4, 'declining'),
|
|
302
|
+
codeVolume: categoryLevel(4, 'declining'),
|
|
303
|
+
iteration: categoryLevel(4, 'declining'),
|
|
304
|
+
});
|
|
305
|
+
expect(identifyStrengths(levels)).toEqual([]);
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
describe('identifyWeaknesses', () => {
|
|
309
|
+
it('should include a category whose level is at or below the weakness threshold', () => {
|
|
310
|
+
const levels = createCategoryLevels({ quality: categoryLevel(4) });
|
|
311
|
+
expect(identifyWeaknesses(levels)).toContain('quality');
|
|
312
|
+
});
|
|
313
|
+
it('should include a declining category below the trend threshold even above the level threshold', () => {
|
|
314
|
+
const levels = createCategoryLevels({
|
|
315
|
+
responsiveness: categoryLevel(6, 'declining'),
|
|
316
|
+
});
|
|
317
|
+
expect(identifyWeaknesses(levels)).toContain('responsiveness');
|
|
318
|
+
});
|
|
319
|
+
it('should return an empty array when no category qualifies', () => {
|
|
320
|
+
const levels = createCategoryLevels({
|
|
321
|
+
quality: categoryLevel(8, 'improving'),
|
|
322
|
+
responsiveness: categoryLevel(8, 'improving'),
|
|
323
|
+
codeVolume: categoryLevel(8, 'improving'),
|
|
324
|
+
iteration: categoryLevel(8, 'improving'),
|
|
325
|
+
});
|
|
326
|
+
expect(identifyWeaknesses(levels)).toEqual([]);
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
describe('identifyTopPriority', () => {
|
|
330
|
+
it('should return the lowest category when it is at or below 6', () => {
|
|
331
|
+
const levels = createCategoryLevels({
|
|
332
|
+
quality: categoryLevel(8),
|
|
333
|
+
responsiveness: categoryLevel(3),
|
|
334
|
+
codeVolume: categoryLevel(7),
|
|
335
|
+
iteration: categoryLevel(9),
|
|
336
|
+
});
|
|
337
|
+
expect(identifyTopPriority(levels)).toBe('responsiveness');
|
|
338
|
+
});
|
|
339
|
+
it('should weight a declining category by lowering its priority score', () => {
|
|
340
|
+
const levels = createCategoryLevels({
|
|
341
|
+
quality: categoryLevel(5),
|
|
342
|
+
responsiveness: categoryLevel(6, 'declining'),
|
|
343
|
+
codeVolume: categoryLevel(7),
|
|
344
|
+
iteration: categoryLevel(8),
|
|
345
|
+
});
|
|
346
|
+
expect(identifyTopPriority(levels)).toBe('responsiveness');
|
|
347
|
+
});
|
|
348
|
+
it('should return null when the lowest category is still above 6', () => {
|
|
349
|
+
const levels = createCategoryLevels({
|
|
350
|
+
quality: categoryLevel(7),
|
|
351
|
+
responsiveness: categoryLevel(8),
|
|
352
|
+
codeVolume: categoryLevel(9),
|
|
353
|
+
iteration: categoryLevel(10),
|
|
354
|
+
});
|
|
355
|
+
expect(identifyTopPriority(levels)).toBeNull();
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
describe('computeTitle', () => {
|
|
359
|
+
it('should return polyvalent when the level spread is within the balanced threshold', () => {
|
|
360
|
+
const levels = createCategoryLevels({
|
|
361
|
+
quality: categoryLevel(6),
|
|
362
|
+
responsiveness: categoryLevel(7),
|
|
363
|
+
codeVolume: categoryLevel(8),
|
|
364
|
+
iteration: categoryLevel(6),
|
|
365
|
+
});
|
|
366
|
+
expect(computeTitle(levels)).toBe('polyvalent');
|
|
367
|
+
});
|
|
368
|
+
it('should return risingStar when the lowest category is improving', () => {
|
|
369
|
+
const levels = createCategoryLevels({
|
|
370
|
+
quality: categoryLevel(9),
|
|
371
|
+
responsiveness: categoryLevel(8),
|
|
372
|
+
codeVolume: categoryLevel(2, 'improving'),
|
|
373
|
+
iteration: categoryLevel(7),
|
|
374
|
+
});
|
|
375
|
+
expect(computeTitle(levels)).toBe('risingStar');
|
|
376
|
+
});
|
|
377
|
+
it('should map a dominant quality category to architect', () => {
|
|
378
|
+
const levels = createCategoryLevels({
|
|
379
|
+
quality: categoryLevel(10),
|
|
380
|
+
responsiveness: categoryLevel(4),
|
|
381
|
+
codeVolume: categoryLevel(3),
|
|
382
|
+
iteration: categoryLevel(5),
|
|
383
|
+
});
|
|
384
|
+
expect(computeTitle(levels)).toBe('architect');
|
|
385
|
+
});
|
|
386
|
+
it('should map a dominant responsiveness category to firefighter', () => {
|
|
387
|
+
const levels = createCategoryLevels({
|
|
388
|
+
quality: categoryLevel(4),
|
|
389
|
+
responsiveness: categoryLevel(10),
|
|
390
|
+
codeVolume: categoryLevel(3),
|
|
391
|
+
iteration: categoryLevel(5),
|
|
392
|
+
});
|
|
393
|
+
expect(computeTitle(levels)).toBe('firefighter');
|
|
394
|
+
});
|
|
395
|
+
it('should map a dominant codeVolume category to workhorse', () => {
|
|
396
|
+
const levels = createCategoryLevels({
|
|
397
|
+
quality: categoryLevel(4),
|
|
398
|
+
responsiveness: categoryLevel(3),
|
|
399
|
+
codeVolume: categoryLevel(10),
|
|
400
|
+
iteration: categoryLevel(5),
|
|
401
|
+
});
|
|
402
|
+
expect(computeTitle(levels)).toBe('workhorse');
|
|
403
|
+
});
|
|
404
|
+
it('should map a dominant iteration category to sentinel', () => {
|
|
405
|
+
const levels = createCategoryLevels({
|
|
406
|
+
quality: categoryLevel(4),
|
|
407
|
+
responsiveness: categoryLevel(3),
|
|
408
|
+
codeVolume: categoryLevel(5),
|
|
409
|
+
iteration: categoryLevel(10),
|
|
410
|
+
});
|
|
411
|
+
expect(computeTitle(levels)).toBe('sentinel');
|
|
412
|
+
});
|
|
413
|
+
});
|
|
414
|
+
describe('computeOverallLevel', () => {
|
|
415
|
+
it('should clamp the rounded average of all category levels', () => {
|
|
416
|
+
const levels = createCategoryLevels({
|
|
417
|
+
quality: categoryLevel(8),
|
|
418
|
+
responsiveness: categoryLevel(7),
|
|
419
|
+
codeVolume: categoryLevel(6),
|
|
420
|
+
iteration: categoryLevel(7),
|
|
421
|
+
});
|
|
422
|
+
expect(computeOverallLevel(levels)).toBe(7);
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
describe('computeDeveloperMetrics', () => {
|
|
426
|
+
it('should report zero code volume and zero correlation when no diff stats exist', () => {
|
|
427
|
+
const reviews = [
|
|
428
|
+
ReviewStatsFactory.create({ diffStats: null }),
|
|
429
|
+
ReviewStatsFactory.create({ diffStats: undefined }),
|
|
430
|
+
];
|
|
431
|
+
const metrics = computeDeveloperMetrics(reviews);
|
|
432
|
+
expect(metrics.averageCodeVolume).toBe(0);
|
|
433
|
+
expect(metrics.codeVolumeScoreCorrelation).toBe(0);
|
|
434
|
+
});
|
|
435
|
+
it('should return zero correlation with fewer than three scored reviews carrying diff stats', () => {
|
|
436
|
+
const reviews = [
|
|
437
|
+
ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 50, deletions: 10 }, { score: 8 }),
|
|
438
|
+
ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 30, deletions: 5 }, { score: 6 }),
|
|
439
|
+
];
|
|
440
|
+
expect(computeDeveloperMetrics(reviews).codeVolumeScoreCorrelation).toBe(0);
|
|
441
|
+
});
|
|
442
|
+
it('should return zero correlation when volume has no variance', () => {
|
|
443
|
+
const reviews = new Array(4).fill(0).map((_, index) => ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 100, deletions: 0 }, { id: `c-${index}`, score: index + 1 }));
|
|
444
|
+
expect(computeDeveloperMetrics(reviews).codeVolumeScoreCorrelation).toBe(0);
|
|
445
|
+
});
|
|
446
|
+
it('should compute a positive correlation when score grows with volume', () => {
|
|
447
|
+
const reviews = [
|
|
448
|
+
ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 10, deletions: 0 }, { id: 'p-1', score: 2 }),
|
|
449
|
+
ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 50, deletions: 0 }, { id: 'p-2', score: 5 }),
|
|
450
|
+
ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 100, deletions: 0 }, { id: 'p-3', score: 9 }),
|
|
451
|
+
];
|
|
452
|
+
expect(computeDeveloperMetrics(reviews).codeVolumeScoreCorrelation).toBeGreaterThan(0);
|
|
453
|
+
});
|
|
454
|
+
});
|
|
455
|
+
describe('computeTeamMetrics', () => {
|
|
456
|
+
it('should aggregate reviews across all developers', () => {
|
|
457
|
+
const reviewsByDeveloper = new Map();
|
|
458
|
+
reviewsByDeveloper.set('alice', [
|
|
459
|
+
ReviewStatsFactory.create({ id: 'a-1', score: 8, blocking: 0, warnings: 1 }),
|
|
460
|
+
]);
|
|
461
|
+
reviewsByDeveloper.set('bob', [
|
|
462
|
+
ReviewStatsFactory.create({ id: 'b-1', score: 6, blocking: 2, warnings: 3 }),
|
|
463
|
+
]);
|
|
464
|
+
const metrics = computeTeamMetrics(reviewsByDeveloper);
|
|
465
|
+
expect(metrics.averageScore).toBe(7);
|
|
466
|
+
expect(metrics.averageBlocking).toBe(1);
|
|
467
|
+
expect(metrics.averageWarnings).toBe(2);
|
|
468
|
+
});
|
|
469
|
+
it('should fall back to neutral score and zero volume for an empty team', () => {
|
|
470
|
+
const metrics = computeTeamMetrics(new Map());
|
|
471
|
+
expect(metrics.averageScore).toBe(5);
|
|
472
|
+
expect(metrics.averageCodeVolume).toBe(0);
|
|
473
|
+
});
|
|
474
|
+
});
|
|
475
|
+
describe('computeCategoryLevels code volume and iteration branches', () => {
|
|
476
|
+
it('should use the neutral volume score when the team code volume is 0', () => {
|
|
477
|
+
const reviews = [ReviewStatsFactory.create({ diffStats: null })];
|
|
478
|
+
const metrics = computeDeveloperMetrics(reviews);
|
|
479
|
+
const teamMetrics = computeTeamMetrics(new Map([['solo', reviews]]));
|
|
480
|
+
const levels = computeCategoryLevels(reviews, metrics, teamMetrics);
|
|
481
|
+
expect(levels.codeVolume.level).toBeGreaterThanOrEqual(1);
|
|
482
|
+
expect(levels.codeVolume.level).toBeLessThanOrEqual(10);
|
|
483
|
+
});
|
|
484
|
+
it('should use the neutral suggestion fallback when reviews carry no suggestions', () => {
|
|
485
|
+
const reviews = [
|
|
486
|
+
ReviewStatsFactory.create({ id: 'it-1', suggestions: undefined, blocking: 0, warnings: 0 }),
|
|
487
|
+
ReviewStatsFactory.create({ id: 'it-2', suggestions: undefined, blocking: 0, warnings: 0 }),
|
|
488
|
+
];
|
|
489
|
+
const metrics = computeDeveloperMetrics(reviews);
|
|
490
|
+
const teamMetrics = computeTeamMetrics(new Map([['solo', reviews]]));
|
|
491
|
+
const levels = computeCategoryLevels(reviews, metrics, teamMetrics);
|
|
492
|
+
expect(levels.iteration.level).toBeGreaterThanOrEqual(1);
|
|
493
|
+
expect(levels.iteration.level).toBeLessThanOrEqual(10);
|
|
494
|
+
});
|
|
495
|
+
it('should fall back to neutral iteration scores for an empty review set', () => {
|
|
496
|
+
const metrics = computeDeveloperMetrics([]);
|
|
497
|
+
const teamMetrics = computeTeamMetrics(new Map());
|
|
498
|
+
const levels = computeCategoryLevels([], metrics, teamMetrics);
|
|
499
|
+
expect(levels.iteration.level).toBeGreaterThanOrEqual(1);
|
|
500
|
+
expect(levels.iteration.level).toBeLessThanOrEqual(10);
|
|
501
|
+
});
|
|
502
|
+
it('should reward a positive code volume correlation', () => {
|
|
503
|
+
const reviews = [
|
|
504
|
+
ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 10, deletions: 0 }, { id: 'cv-1', score: 2 }),
|
|
505
|
+
ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 50, deletions: 0 }, { id: 'cv-2', score: 5 }),
|
|
506
|
+
ReviewStatsFactory.withDiffStats({ commitsCount: 1, additions: 100, deletions: 0 }, { id: 'cv-3', score: 9 }),
|
|
507
|
+
];
|
|
508
|
+
const metrics = computeDeveloperMetrics(reviews);
|
|
509
|
+
const teamMetrics = computeTeamMetrics(new Map([['solo', reviews]]));
|
|
510
|
+
const levels = computeCategoryLevels(reviews, metrics, teamMetrics);
|
|
511
|
+
expect(levels.codeVolume.level).toBeGreaterThanOrEqual(1);
|
|
512
|
+
expect(metrics.codeVolumeScoreCorrelation).toBeGreaterThan(0);
|
|
513
|
+
});
|
|
514
|
+
});
|
|
125
515
|
//# sourceMappingURL=insightLevelComputation.service.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insightLevelComputation.service.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/insights/insightLevelComputation.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,oFAAoF,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAG/E,SAAS,yBAAyB,CAChC,aAAqB,EACrB,KAAa,EACb,YAAkC,EAAE;IAEpC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAChD,kBAAkB,CAAC,MAAM,CAAC;QACxB,EAAE,EAAE,GAAG,aAAa,IAAI,KAAK,EAAE;QAC/B,UAAU,EAAE,aAAa;QACzB,QAAQ,EAAE,KAAK,GAAG,CAAC;QACnB,GAAG,SAAS;KACb,CAAC,CACH,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAErD,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAErD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,uBAAuB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACtD,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,EAAE,EAAE,EAAE;YAC5D,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,EAAE,EAAE,EAAE;YACtD,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,EAAE,EAAE,EAAE;YAC5D,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,EAAE,CAAC,EAAE;YAC3D,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC5D,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAChD,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAChD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEhD,MAAM,WAAW,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAE7D,MAAM,YAAY,GAAG,qBAAqB,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QACtF,MAAM,YAAY,GAAG,qBAAqB,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QAEtF,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,aAAa,GAAG,yBAAyB,CAAC,MAAM,EAAE,EAAE,EAAE;YAC1D,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,yBAAyB,CAAC,KAAK,EAAE,EAAE,EAAE;YACxD,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC5D,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC9C,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAE5C,MAAM,WAAW,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;QAEzD,MAAM,UAAU,GAAG,qBAAqB,CAAC,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAClF,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAE/E,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"insightLevelComputation.service.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/insights/insightLevelComputation.service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseAiInsightsResponse.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/insights/parseAiInsightsResponse.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { parseAiInsightsResponse } from '../../../../modules/statistics-insights/usecases/insights/parseAiInsightsResponse.js';
|
|
3
|
+
const validAiResult = {
|
|
4
|
+
developers: [
|
|
5
|
+
{
|
|
6
|
+
developerName: 'alice',
|
|
7
|
+
title: 'Le Chirurgien du Code',
|
|
8
|
+
titleExplanation: 'Precise and methodical',
|
|
9
|
+
strengths: ['Excellent test coverage'],
|
|
10
|
+
weaknesses: ['Slow review turnaround'],
|
|
11
|
+
recommendations: ['Automate repetitive checks'],
|
|
12
|
+
summary: 'Alice is a meticulous developer.',
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
team: {
|
|
16
|
+
summary: 'A well-balanced team.',
|
|
17
|
+
strengths: ['Strong testing culture'],
|
|
18
|
+
weaknesses: ['Documentation gaps'],
|
|
19
|
+
recommendations: ['Establish review guidelines'],
|
|
20
|
+
dynamics: 'Good team dynamics.',
|
|
21
|
+
},
|
|
22
|
+
generatedAt: '2026-03-15T10:00:00Z',
|
|
23
|
+
};
|
|
24
|
+
describe('parseAiInsightsResponse', () => {
|
|
25
|
+
it('parses a raw JSON answer into the insights shape', () => {
|
|
26
|
+
const result = parseAiInsightsResponse(JSON.stringify(validAiResult));
|
|
27
|
+
expect(result.developers[0].developerName).toBe('alice');
|
|
28
|
+
expect(result.team.summary).toBe('A well-balanced team.');
|
|
29
|
+
});
|
|
30
|
+
it('strips a ```json fence before parsing', () => {
|
|
31
|
+
const result = parseAiInsightsResponse('```json\n' + JSON.stringify(validAiResult) + '\n```');
|
|
32
|
+
expect(result.developers).toHaveLength(1);
|
|
33
|
+
});
|
|
34
|
+
it('strips a bare ``` fence before parsing', () => {
|
|
35
|
+
const result = parseAiInsightsResponse('```\n' + JSON.stringify(validAiResult) + '\n```');
|
|
36
|
+
expect(result.team.dynamics).toBe('Good team dynamics.');
|
|
37
|
+
});
|
|
38
|
+
it('throws on a non-JSON answer', () => {
|
|
39
|
+
expect(() => parseAiInsightsResponse('this is not JSON')).toThrow();
|
|
40
|
+
});
|
|
41
|
+
it('throws when the JSON does not match the insights schema', () => {
|
|
42
|
+
expect(() => parseAiInsightsResponse('{"developers":"nope"}')).toThrow();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=parseAiInsightsResponse.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseAiInsightsResponse.test.js","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/insights/parseAiInsightsResponse.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,4EAA4E,CAAC;AAGrH,MAAM,aAAa,GAAqB;IACtC,UAAU,EAAE;QACV;YACE,aAAa,EAAE,OAAO;YACtB,KAAK,EAAE,uBAAuB;YAC9B,gBAAgB,EAAE,wBAAwB;YAC1C,SAAS,EAAE,CAAC,yBAAyB,CAAC;YACtC,UAAU,EAAE,CAAC,wBAAwB,CAAC;YACtC,eAAe,EAAE,CAAC,4BAA4B,CAAC;YAC/C,OAAO,EAAE,kCAAkC;SAC5C;KACF;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,uBAAuB;QAChC,SAAS,EAAE,CAAC,wBAAwB,CAAC;QACrC,UAAU,EAAE,CAAC,oBAAoB,CAAC;QAClC,eAAe,EAAE,CAAC,6BAA6B,CAAC;QAChD,QAAQ,EAAE,qBAAqB;KAChC;IACD,WAAW,EAAE,sBAAsB;CACpC,CAAC;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QAEtE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,uBAAuB,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC;QAE9F,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC;QAE1F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistAiInsights.usecase.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/units/usecases/insights/persistAiInsights.usecase.test.ts"],"names":[],"mappings":""}
|