|
11094
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.js v#11894 on JY-18909-automated-reports-ask-liminny k vProject vToolsWindowHelp© JiminnyDebugCommanc©JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLivecoaching© Managescim-orleam.p(c Malkoanchrocnvronnl© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:C ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> Scheduling© Kernel.phpM Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› C Helpersv UHttp> MAccessTokenProviderv D ControllersV MAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsnemes> MUserAutomatedRepov DV2C ACIMINVACOnTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareContTests passed: 1 (3 minutes ago)© ReportController.php© AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]< console LUlconsole SlAGiNGAskJIminnykepor Acuivilyservice.ongACuiVilysearch.onp© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpCrealenelaAcuviyevent.onoOnDemandV2Controller.php© HistoryService.php© FilterDefinitionCollection.php© Criteria.php© AskJiminnyReportActivityServiceTest.phpC) RequestGenerateAskJiminnyReportJobTest.phpclass OnDemandV2Controller extends Controller41 M2 ^(e TrackProvidernstallled-vent.ono241public function askAnything(OnDemandAskAnythingRequest $request): StreamedResponse |JsonResp→ ounouLbala lllessauer© CreateActivityLoggedEvent.php© UserPilotActivityListener.php262'callIds' => $this->historyService->getContextIds($user,identifier: HistoryServic263'history' => $this->historyService->getHistory($user,identifier: HistoryService::• ActivityLogged.phpAutomatedReportsCallbackService.php264C RequestGenerateAskJiminnyReportJob.php265266$teamAiContext = $this->teamAiContextRepository->getByTeamId($user->getTeamId()):RequestGenerateReportJob.php© AutomatedReportResult.phpif ($teamAiContext?->getPrompt() !== null) {(C) AutomatedReport.php268"reouescvaral'teanaucontext' = "reanazcontext->deurronotoclass Automacedкeрortskepo o:A15 X4 Av20961627593114115116117118119121123LI4/**273* Retrieve all standard (non-Ask Jiminny) M274* @param string $sortColumnThe column to276*dparam string ssortulrection ine sort dire277* @return Collection<AutomatedReport>.278279*/12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {..[PHONE]84285/**286287* Retrieve all Ask Liminny reports created A288* Oodrdll usernusenIne user Ynos* @param string $sortColumnThe column te290* Oparam string $sortDirection The sort dire2911475* @return Collection<AutomatedReport>294*/-29514 usages296public function getAskJiminnyReportsByUser(User $user,298string $sortColumn = 'created_at',string ssorcbirection = "desc"): Collection {...}300301—302Z usagesprivate function buildSortedQuery(string $sor]305504/**—305306* Get all active and enabled reports with ac—307308* @param string $frequency309— 310* dreturh coLcectzon<aucomacedкeрort>31131223 usagespublic function getActiveReportsByFrequency(s)314$this->historyService->appendToUserHistory($user,identifier: HistoryService::0N_DEMAND_SERVICE,$inputData[ 'message']):$this->historyService->appendToEventHistory(user: $user,identifier: HistoryService::0N_DEMAND_SERVICE,type: HistoryService::EVENT_IN_PROGRESS_TYPE):$streamRequest = StreamRequest: :onDemandLevel($requestData);// Track active stream in Redis$this->activeStreamsRepository->start($user->getId(),$streamRequest->getId(),ttlSeconds: $streamRequest->getConnectTimeout() + $streamRequest->getReadTimeot):rerur uns-porooneroeru ce-poerotreanecuraoorteoresconsestreankeovest, "strealikecuest.onCompleted: function (string $assistantResponse,bool $clientAborted,bool $hadError,) use ($user, $streamRequest) {// Remove in-progress eventSthis->historyService->removeLastEventMessageByType($user,identifier: HistoryService: : ON_DEMAND_SERVICE,type: HistorvService::EVENT IN PROGRESS TYPE// Save to history if backend completed successfully (even if client discor// Only skip saving if there was an actual error during streamingif (! $hadError && ! empty(trim($assistantResponse))) {$this->historyService->appendToSystemHistory($user,identifier: HistoryService::0N_DEMAND_SERVICE,$assistantResponse,, 0lablf Support Daily • in 2h 48 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:12:32CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D ...Now let's run the test to verifvdesker nte/ sockces/k.osk/AuPowar/orts/artman yeportActivityserviceTest.php --no-coverageloul nor oen Indlr tler var w nunwarusandoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest. php --no-coverageCould not open input file: /app/artisanCommand dockerocker exec oocker land ioash —eSid php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker lamp 1 bash -c "find / -name artisan -maxdeoth 6 2>/dev/null | head -5"/home/jiminny/artisaniminny && php artisan testdests/unxe/servaces/K1osk/AusomatedReports/AskJ1maynyReportActivaty5erviceTest-php --no-coverage 2>61"PASSTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestreturnsfiltersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazero fsequence number to disable first ._. 0.025All 8 tests pass. Here's a summary:Root Cause & FixKoOL cause: bu1 Ldkequestraramst romsearch never set sequence number In the request params, so criterla::creater romkequest delaulted lt to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 ilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filtelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturee o.Fix: AskJiminnyReportActivityService.php:51 - added 'sequence_number' = 1 to the Criteria:: createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.sequencenumberloD1sablerirsckequestberauuus asserts that the captured uriteria ob ect nas 1srirsO filesystems.phprlleutiiong• FilterNormalizer.php app/UtilsrleutllestonoFlesvstem-xcention.ohvFileNotFoundException.php app/Exceptions/Fltervormalizerlect.ohnO Filter.phpO FileService.phpReportActivityService.php +1 -1O FilterDefinition.phpExplain it to me again. Why is there issue with that? Where is it expected and wy do I need to fork with that. How is it used in efi y+ <> CodeClaude Sonnet 4.6Öul ..Vew allliReject allAccept allWinasun leams298:48uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11094
|
|
11095
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny K vProject vToolsWindowHelp© JiminnyDebugCommanc©JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLivecoaching© Managescim-orleam.p(c Malkoanchrocnvronnl© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:C ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> Scheduling© Kernel.phpM Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› C Helpersv UHttp> MAccessTokenProviderv D Controllersv MAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsnemes> MUserAutomatedRepov DV2C ACIMINVACOnTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareContTests passed: 1 (3 minutes ago)© ReportController.php© AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]< console EUiconsole SlAGiNGAskJIminnykepor Acuivilyservice.ongACuiVilysearch.onp© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpCrealenelaAcuviyevent.onoOnDemandV2Controller.php© HistoryService.php© FilterDefinitionCollection.php© Criteria.php© AskJiminnyReportActivityServiceTest.phpC) RequestGenerateAskJiminnyReportJobTest.phpclass OnDemandV2Controller extends Controller41 M2 ^(e TrackProvidernstallled-vent.ono241public function askAnything(OnDemandAskAnythingRequest $request): StreamedResponse |JsonResp→ ounouLbala lllessauer© CreateActivityLoggedEvent.php© UserPilotActivityListener.php262'callIds' => $this->historyService->getContextIds($user,identifier: HistoryServic263'history' => $this->historyService->getHistory($user,identifier: HistoryService::• ActivityLogged.phpAutomatedReportsCallbackService.php264C RequestGenerateAskJiminnyReportJob.php265266$teamAiContext = $this->teamAiContextRepository->getByTeamId($user->getTeamId());RequestGenerateReportJob.php© AutomatedReportResult.phpif ($teamAiContext?->getPrompt() !== null) {(C) AutomatedReport.php268"reouescvaral'teanaucontext' = "reanazcontext->deurronotoclass Automacedкeрortskepo o:A15 X4 Av20%61627593114115116117118119121123LI4/**273* Retrieve all standard (non-Ask Jiminny) M274* @param string $sortColumnThe column to276*dparam string ssortulrection ine sort dire277* @return Collection<AutomatedReport>.278279*/12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {..[PHONE]84285/**286287* Retrieve all Ask Liminny reports created A288* Oodrdll usernusenIne user Ynos* @param string $sortColumnThe column te290* Oparam string $sortDirection The sort dire2911475* @return Collection<AutomatedReport>294*/-29514 usages296public function getAskJiminnyReportsByUser(User $user,298string $sortColumn = 'created_at',string ssorcbirection = "desc"): Collection {...J300301—302Z usagesprivate function buildSortedQuery(string $sor]305504/**—305306* Get all active and enabled reports with ac—307308* @param string $frequency309— 310* dreturn cocLectron<Aucomacedкeрort»31131223 usagespublic function getActiveReportsByFrequency(s)314$this->historyService->appendToUserHistory($user,identifier: HistoryService::0N_DEMAND_SERVICE,$inputData[ 'message']):$this->historyService->appendToEventHistory(user: $user,identifier: HistoryService::0N_DEMAND_SERVICE,type: HistoryService::EVENT_IN_PROGRESS_TYPE):$streamRequest = StreamRequest: :onDemandLevel($requestData);// Track active stream in Redis$this->activeStreamsRepository->start($user->getId(),$streamRequest->getId(),ttlSeconds: $streamRequest->getConnectTimeout() + $streamRequest->getReadTimeou):rerur uns-porooneroeru ce-poerotreanecuraoorteoresconsestreankeovest, "strealikecuest.onCompleted: function (string $assistantResponse,bool $clientAborted,bool $hadError,) use ($user, $streamRequest) {// Remove in-progress eventSthis->historyService->removeLastEventMessageByType($user,identifier: HistoryService: : ON_DEMAND_SERVICE,type: HistorvService::EVENT IN PROGRESS TYPE// Save to history if backend completed successfully (even if client discor// Only skip saving if there was an actual error during streamingif (! $hadError && ! empty(trim($assistantResponse))) {$this->historyService->appendToSystemHistory($user,identifier: HistoryService::0N_DEMAND_SERVICE,$assistantResponse,, 0lablf Support Daily • in 2h 48 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:12:35CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D ..Now let's run the test to verifvdesker nte/ sockces/k.osk/AuPowar/orts/artman yeportActivityserviceTest.php --no-coverageloul nor oen Indlr tler var w nunwarusandoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest. php --no-coverageCould not open input file: /app/artisanCommand dockerocker exec oocker land 1oash -dSid php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker lamp 1 bash -c "find / -name artisan -maxdeoth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan test•dests/unxe/servkces/K1osk/AusomatedReports/AskJ1maynyReportActiVatyServiceTest.php --no-coverage 2>&1"PASSTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTesta fittersemoty when no resultsperiod date filters1de handtes scalyr flttersget activity ids hassees sn zero sequence number to disable first r._ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 ilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filterThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturee o.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' » 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.lest added: testbetacc1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest() === false.Öul ..Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allExplain it to me again. Why is there issue with that? Where is it expected and wy do l need to fork with that. How is it used [EMAIL]<>CodeClaude Sonnet 4.6W Windsurf Teams298:48uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11095
|
|
11096
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 48 m100% <47Tue 14 Apr 12:12:448Today ~...
|
NULL
|
NULL
|
NULL
|
11096
|
|
11097
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.js#11894 on JY-18909-automated-reports-ask-liminny k vProject v© ReportController.phpJiminnybeouecommana.ong© AutomatedReportsCommand.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.php, 0lablf Support Daily • in 2h 48 mA100% C•Tue 14 Apr 12:12:44AskJiminnyReportActivityServiceT…Defaults© JiminnyDebugCommanc©JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironnc Mureu canzercnanner© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComi© RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› Helpersv UHttp> MAccessTokenProviderv D ControllersV DAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsnemes> MUserAutomatedRepov DV2© ActivityV2ControlAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareContlests passed:1 (s minutes ago= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]< console EUiconsole SlAGiNGAskJIminnykeporiAcuivilyservice.ong© ActivitySearch.pnp© Criteria.phpCascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D ...(e) TrackProvidernstallled-vent.onoOnDemandV2Controller.php© HistoryService.php© FilterDefinitionCollection.php© AskJiminnyReportActivityServiceTest.php© RequestGenerateAskJiminnyReportJobTest.phpsronodeclare(strict_types=1);Nowersrunthe esto vertvA1 X2 ^© CreateActivityLoggedEvent.php© UserPilotActivityListener.php• ActivityLogged.php(C) AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php© AutomatedReportResult.php(C) AutomatedReport.phpclass Automacedкeрortskepo o:815 X4 лnamespace Jiminny\Http\Controllers\API\V2;>use...class OnDemandV2Controller extends Controlleruse AurnorizeskeQvests/*** Retrieve all standard (non-Ask Jiminny) Mprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;tests/unxt/Servzces/Kiosk/Automate/keports/AskJ1minyRepprtActivityServiceTest.php --no-coverageloul nor oen ndlr Tler var ww nunbarusanCommand dockerdoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest. php --no-coverageCould not open input file: /app/artisanCommand docker•cocker exec oocker vand ioash —dSid php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan* @param string $sortColumnThe column to* @param string $sortDirection The sort direprivate const array FILTER_KEY_EXCLUDED_PARAMS = [• docker exec docker lamo 1 bash -c "find / -name artisan -maxdenth 6 2>/dev/null | head -5"61' sequence_number',/home/jiminny/artisan* @return Collection<AutomatedReport>'page',*/'per_page',12 usagesLniLTe".iminny && php artisan testpublic function getAllStandardReports(oTTset,•dests/unxe/servkces/K1osk/AusomatedReports/AskJ1maynyReportActiVatyServiceTest.php --no-coverage 2>&1"string $sortColumn = 'created_at',];PASSstring $sortDirection = 'desc'getTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestreturns): Collection {...}public function __construct(a fittersemoty when no resultsperiod date filters/**private readonly Activitysrch $activitySearch,1de handtes scalyr fltters75* Retrieve all Ask Liminny reports created&private readonly HistoryService ShistoryService,get activity ids hassees sn zero sequence number to disable first r._ 0.025private readonly ProphetService SprophetService,* Oodrdll usernusenIne user Ynosprivate readonly TeamAiContextRepository $teamAiContextRepository,All 8 tests pass. Here's a summary:* @param string $sortColumnThe column toprivate readonly ActiveStreamsRepository $activeStreamsRepository,* Oparam string $sortDirection The sort direprivace readonly evencuispaccher gevenculsparcher.Root Cause & FixKoOL cause: bu1 Ldkequestraramst romsearch never set sequence number In the request params, so criterla::creater romkequest delaulted lt to 0orivace readonly Loccerintertace ologder* @return Collection<AutomatedReport>) f...3Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:*/Activitvourat ionRande → min duration = 1 ilters ouf o-second activitiesi14 usagespublic function getAskJiminnyReportsByUser(* Cheok 1f the user's tean has the ASK. JTMIMVYLON ANYTHTNG featune enabtedActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupin → apolies user's derault croup as a tilterUser $user,*/The frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicestring $sortColumn = 'created_at',returee o.string ssorcbirection = "desc"private function checkAskJiminnyOnAnythingFeature(User $user): ?JsonResponse{..3Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria::createFromRequest merge, ensuring isFirstReque): Collection {...Jst() returns false and no implicit defaults are injected.lest added: testbetacc1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirs2 usages* Get top N activity IDs for Ask Jiminny feature based on filterstRequest () === false.private function buildSortedQuery(string $sorÖul ..114* Othrows ValidationException115/**116* Get all active and enabled reports with al* ethravs AotävityPnovzdenexcept2on117118* @param string $frequency78 (gg>public function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepositorVew allliItlle win changesv119126app/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1* dreturh coLcectzon<aucomaredкeport.Reject allAccept all121127private function hasChangedContextFilter(Request $request, User $user): boolf...}Explain it to me again. Why is there issue with that? Where is it expected and wy do l need to fork with that. How is it used in23 usages1571124public function getActiveReportsByFrequency([EMAIL]<> Code123Claude Sonnet 4.6W Windsurf Teams498:48uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11097
|
|
11098
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 48 m100% <47Tue 14 Apr 12:12:458Today ~...
|
NULL
|
NULL
|
NULL
|
11098
|
|
11099
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 48 m100% <47Tue 14 Apr 12:12:488Today ~...
|
NULL
|
NULL
|
NULL
|
11099
|
|
11100
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.js#11894 on JY-18909-automated-reports-ask-iminny K vProject v© ReportController.phpJiminnybeouecommana.ong© AutomatedReportsCommand.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.php, 0lablf Support Daily • in 2h 48 mA100% C•Tue 14 Apr 12:12:48AskJiminnyReportActivityServiceT…Defaults© JiminnyDebugCommanc©JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrocnvronnlc Mureu canzercnanner© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg› D Formats› D Guards› Helpersv UHttp> MAccessTokenProviderv D ControllersV DAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsnemes> MUserAutomatedRepov DV2© ActivityV2ControlAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareContlests passed: l(s minutes ago= custom.log< console EUi= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]console SlAGiNG© AskJiminnyReportActivityService.phg© ActivitySearch.pnp© Criteria.phpCascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..(e TrackProvidernstallled-vent.onoOnDemandV2Controller.php© HistoryService.php© FilterDefinitionCollection.php© AskJiminnyReportActivityServiceTest.php© RequestGenerateAskJiminnyReportJobTest.phpsronodeclare(strict_types=1);Now let's run the test to verifvA1 X2 ^w© CreateActivityLoggedEvent.php© UserPilotActivityListener.php• ActivityLogged.php(C) AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php© AutomatedReportResult.php(C) AutomatedReport.phpclass Automacedкeрortskepo o:A15 X4 ^namespace Jiminny\Http\Controllers\API\V2;>use...class OnDemandV2Controller extends Controller61use AurnorizeskeQvests/*** Retrieve all standard (non-Ask Jiminny) Mprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;* @param string $sortColumnThe column to* @param string $sortDirection The sort direprivate const array FILTER_KEY_EXCLUDED_PARAMS = [' sequence_number',* @return Collection<AutomatedReport>'page','per_page',12 usages'limit',public function getAllStandardReports(oTTset,string $sortColumn = 'created_at',];string $sortDirection = 'desc'): Collection {...}/*** Retrieve all Ask Liminny reports created&* Oodrdll usernusenIne user Ynos* @param string $sortColumnThe column to* Oparam string $sortDirection The sort direpublic function __construct(private readonly ActivitySearch $actfivitySearch,private readonly HistoryService ShistoryService,private readonly ProphetService SprophetService,private readonly TeamAiContextRepository $teamAiContextRepository,private readonly ActiveStreamsRepository $activeStreamsRepository,private readonly eventulspaccher pevencuispaccher,orivace readonly Loccerintertace ologder* @return Collection<AutomatedReport>*/14 usagespublic function getAskJiminnyReportsByUser(User $user,string $sortColumn = 'created_at',string ssorcbirection = "desc"): Collection {...J2 usagesprivate function buildSortedQuery(string $sor/*** Get all active and enabled reports with al* @param string $frequency* check if the usen's tean has the ASK. JTMTMIV, ON ANYTHTING featune enabted*/private function checkAskJiminnyOnAnythingFeature(User $user): ?JsonResponse{..3* Get top N activity IDs for Ask Jiminny feature based on filters* Othrows ValidationException* ethrous ActivityprovidenExceptiontests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coveragecould not open input Tile: /var/www/ncml/artisanCommand dockerdoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest.php --no-coverageCould not open input file: /app/artisanCommand docker•cocker exec oocker land ioash —d"cd /var/www&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homee/jiminny && php artisan testtests/nxt/sdrvicrs/K2psk/Autonat e"Reports/A3kiminnyReportActivatyserviceTest.php --no-coverage 2261PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazero fsequence number to disable first ._. 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 ilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupin → apolies user's derault croup as a tiltelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturned O.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.lest added: testbetacc1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest () === false.Oul .1141151161171181191211124123* dreturh coLcectzon<aucomaredкeport.23 usagespublic function getActiveReportsByFrequency(s78 (gg>public function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepositorItlle wiun changesv126app/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1127private function hasChangedContextFilter(Request $request, User $user): boolf...}Explain it to me again. Why is there issue with that? Where is it expected and wy do l need to fork with that. How is it used [EMAIL]‹> CodeClaude Sonnet 4.6Vew allliReject allAccept allW Windsurf Teams48:45uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11100
|
|
11101
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 48 m100% <47Tue 14 Apr 12:12:5086 0Today ~...
|
NULL
|
NULL
|
NULL
|
11101
|
|
11102
|
PhpStormFileFV faVsco.jsProject vEditViewNavigateC PhpStormFileFV faVsco.jsProject vEditViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny k vToolsWindowHelp© JiminnyDebugCommanc©JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironnc Mureu canzercnanner© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComi© RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› Helpersv UHttp> MAccessTokenProviderv D ControllersV DAPI> DAiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsnemes> MUserAutomatedRepov DV2© ActivityV2ControlAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareCont© ReportController.php© AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log< console LUl= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGiNG© AskJiminnyReportActivityService.phg© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php© AskJiminnyReportActivityServiceTest.phpsrono© HistoryService.phpA console [PROD]© ActivitySearch.pnp© Criteria.php© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.php(e TrackProvidernstallled-vent.onodeclare(strict_types=1);© CreateActivityLoggedEvent.php© UserPilotActivityListener.php• ActivityLogged.phpAutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php© AutomatedReportResult.php(C) AutomatedReport.phpnamespace Jiminny\Http\Controllers\API\V2;>use...class OnDemandV2Controller extends Controllerclass Automacedкeрortskepo o:A15 X4 ^6175761141151161171181191211124use Aurnorizeskeovests/*** Retrieve all standard (non-Ask Jiminny) Mprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;* @param string $sortColumnThe column to* @param string $sortDirection The sort direprivate const array FILTER_KEY_EXCLUDED_PARAMS = [' sequence_number',* @return Collection<AutomatedReport>'page',*/'per_page',12 usagesLniLTe".public function getAllStandardReports(oTTset,string $sortColumn = 'created_at',];string $sortDirection = 'desc'): Collection {...}/*** Retrieve all Ask Liminny reports created&* Oodrdll usernusenIne user Ynos* @param string $sortColumnThe column to* Oparam string $sortDirection The sort direpublic function __construct(private readonly ActivitySearch IctivitySearch,private readonly HistoryService ShistoryService,private readonly ProphetService SprophetService,private readonly TeamAiContextRepository $teamAiContextRepository,private readonly ActiveStreamsRepository $activeStreamsRepository,privace readonly evencuispaccher gevenculsparcher.orivace readonly Loccerintertace ologder* @return Collection<AutomatedReport>*/14 usagespublic function getAskJiminnyReportsByUser(User $user,string $sortColumn = 'created_at',string ssorcbirection = "desc"): Collection {...J2 usagesprivate function buildSortedQuery(string $sor/*** Get all active and enabled reports with ac* @param string $frequency78 (gg>126* dreturh coLcectzon<aucomacedкeрort>23 usages12271public function getActiveReportsByFrequency(: 157lests passed: l(s minutes ago, 0lablf Support Daily • in 2h 48 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:12:50CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..Now let's run the test to verifvA1 X2 ^wprivate function checkAskJiminnyOnAnythingFeature(User $user): ?JsonResponsef.../*** Get top N activity IDs for Ask Jiminny feature based on filters* Othrows ValidationException* Othrows ActivityProviderException*/tests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coveragelou nor oen nolr tler var w nunwarusanCommand dockerdoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest.php --no-coverageCould not open input file: /app/artisanCommand dockeroocker exec oocker vand ioash -c"cd /var/www&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homee/jiminny && php artisan testtests/nxt/ drvicrs/K2psk/Autonat e"Reports/A3kiminnyReportActivatyserviceTest,php --no-coverage 2261"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsperiod date filters1de handtes scalyr flttersids bassess snazero fsequence number to disable first ._. 0.025All 8 tests pass. Here's a summary:Root Cause & FixKoOL cause: bu1 Ldkequestraramst romsearch never set sequence number In the request params, so criterla::creater romkequest delaulted lt to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 ilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupin → apolies user's derault croup as a tiltelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturee o.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.lest added: testbetacc1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest () === false.Oul .Vew alllipublic function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepositorItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allprivate function hasChangedContextFilter(Request $request, User $user): boolf...}Explain it to me again. Why is there issue with that? Where is it expected and wy do l need to fork with that. How is it used [EMAIL]‹> CodeClaude Sonnet 4.6Winasun leams55:8uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11102
|
|
11103
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 48 m100% <47Tue 14 Apr 12:12:5386 0Today ~...
|
NULL
|
NULL
|
NULL
|
11103
|
|
11104
|
PhpStormFileFV faVsco.jsProject vEditViewNavigateC PhpStormFileFV faVsco.jsProject vEditViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelp© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironnc Mureu canzercnanner© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComi© RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr>D Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› Helpersv UHttp> MAccessTokenProviderv D ControllersV DAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsnemes> MUserAutomatedRepov DV2© ActivityV2ControlAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareContTests passed: 1 (4 minutes ago)© ReportController.php© AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log< console EUi= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGiNG© AskJiminnyReportActivityService.phgA console [PROD]© ActivitySearch.pnp© Criteria.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php© AskJiminnyReportActivityServiceTest.php© HistoryService.php© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpCc W .*THAT :(e TrackProvidernstallled-vent.onoQ- activitySearchdeclare(strict_types=1);© CreateActivityLoggedEvent.php• ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C) AutomatedReport.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.phpnamespace Jiminny\Http\Controllers\API\V2;>use...© AutomatedReportResult.phpclass OnDemandV2Controller extends Controllerclass Automacedкeрortskepo o:815 X4 л611141151161171181191211124123use Aurnorizeskeovests/*** Retrieve all standard (non-Ask Jiminny) Mprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;* @param string $sortColumnThe column to* @param string $sortDirection The sort direprivate const array FILTER_KEY_EXCLUDED_PARAMS = [' sequence_number',* @return Collection<AutomatedReport>'page',*/'per_page',12 usagesLniLTe".public function getAllStandardReports(oTTset,string $sortColumn = 'created_at',];string $sortDirection = 'desc'): Collection {...}/*** Retrieve all Ask Liminny reports created&* Oodrdll usernusenIne user Ynos* @param string $sortColumnThe column to* Oparam string $sortDirection The sort direpublic function __construct(private readonly ActivitySearch $eprivate readonly HistoryService $ExtractSurround// =private readonly ProphetService Spropnetservice,private readonly TeamAiContextRepository $teamAiContextRepository,private readonly ActiveStreamsRepository $activeStreamsRepository,privace readonly evencuispaccher gevenculsparcher.orivace readonly Loccerintertace ologder* @return Collection<AutomatedReport>*/14 usagespublic function getAskJiminnyReportsByUser(User $user,string $sortColumn = 'created_at',string ssorcbirection = "desc"): Collection {...J2 usagesprivate function buildSortedQuery(string $sor/*** Get all active and enabled reports with ac* @param string $frequency* dreturh coLcectzon<aucomacedкeрort>78 (gg>12623 usages12271public function getActiveReportsByFrequency(: 157, 0lablf Support Daily • in 2h 48 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:12:53CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..Now let's run the test to verifvwA1X2 A Vtests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coveragelou nor oen nolr tler var w nunwarusanprivate function checkAskJiminnyOnAnythingFeature(User $user): ?JsonResponsef.../*** Get top N activity IDs for Ask Jiminny feature based on filters* Othrows ValidationException* Othrows ActivityProviderException*/Command dockerdoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest.php --no-coverageCould not open input file: /app/artisanCommand dockeroocker exec oocker vand ioash -d"cd /var/www&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homee/jiminny && php artisan testtests/nxt/ drvicrs/K2psk/Autonat e"Reports/A3kiminnyReportActivatyserviceTest,php --no-coverage 2261"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsperiod date filters1de handtes scalyr flttersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 ilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupin → apolies user's derault croup as a tiltelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturee o.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.lest added: testbetacc1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest () === false.Öul ..Vew alllipublic function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepositorItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allprivate function hasChangedContextFilter(Request $request, User $user): boolf...}Explain it to me again. Why is there issue with that? Where is it expected and wy do l need to fork with that. How is it used [EMAIL]< CodeClaude Sonnet 4.6W Windsurf Teams48:0014 charsuir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11104
|
|
11105
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 48 m100% <47Tue 14 Apr 12:12:558Today ~...
|
NULL
|
NULL
|
NULL
|
11105
|
|
11106
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceT…Defaults
Run 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
Debug 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
activitySearch
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
2/2
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
+SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 48 m100% <47Tue 14 Apr 12:12:5986 0Today ~...
|
PhpStorm
|
faVsco.js – OnDemandV2Controller.php
|
NULL
|
11106
|
|
11107
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceT…Defaults
Run 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
Debug 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
activitySearch
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
2/2
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny K vProject vyJiminnyDeouecommana.ong© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComm© MakeSlackLiveCoachins© Managescim-orleam.p(c Malkoanchrocnvronnlc Mureu canzercnanner© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComi© RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> Scheduling© Kernel.phpM Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› C Helpersv UHttp> MAccessTokenProviderv C ControllersV MAPI> DAiCallScoringD AReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsnemes> MUserAutomatedRepov DV2C ACIMINVACOnTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareContTests passed: 1 (4 minutes ago)© ReportController.php© AutomatedReportsCommand.php= custom.log< console EUi= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]console SlAGiNG© AskJiminnyReportActivityService.phgActiviysearch.php© HistoryService.php© Criteria.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php© AskJiminnyReportActivityServiceTest.phpactivitySearch© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpTIT:(e TrackProvidernstallled-vent.onoclass OnDemandV2Controller extends ControllerA1X2 A Vpublic function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepositor© CreateActivityLoggedEvent.php© UserPilotActivityListener.php(©) ActivityLogged.php) Aulomaleakeporscallbackservice.ono© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C) AutomatedReport.php© AutomatedReportResult.phpclass Automacedкeрortskepo o:A15 X4 л616293114115116117118119121/*** Retrieve all standard (non-Ask Jiminny) M* @param string $sortColumnThe column to* dodron scrino osorcuurection ine sort oulre* @return Collection<AutomatedReport>12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {..+100/*** Recrieve ald Ask Jaminny reporus created* Oodrdll usernusenIne user Ynos* @param string $sortColumnThe column to* Oparam string $sortDirection The sort dire* @return Collection<AutomatedReport>110*/-11114 usages112public function getAskJiminnyReportsByUser(-113User $user,114string $sortColumn = 'created_at',115string ssorcbirection = "desc"): Collection {...J116117—118Z usagesprivate function buildSortedQuery(string $sor]1191/**-121122* Get all active and enabled reports with al124* @param string $frequency125—12k* dreturh coLcectzon<aucomacedкeрort>127/** @var User $user */$user = $request->user();if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {return $featureCheck;$topCount = $request->input( key:too count.oeraull SelT.aUrrAUL UF ALNUIC CUUNtry &// Always fetch first N (top count) IDs$onDemandActivitySearchCriteria = VO\Repository\OnDemandActivitySearch\Criteria::crarray_merge($request->all(), ['limit' => $topCount,'page' →> 11),$user->getTimezone()sfiltenSet = Sthis-ctivitySeancil-→getonDemagadPage/i1terSet(SonDemandActivitySeane$validationRules = $filterSet->getValidationRules()->merge ([excuude → array"'limit' => 'integer|min:1|max:'.$topCount,->all():$request->validate($validationRules);$hasChangedFilters = $this->hasChangedContextFilter(Srequest, $user);nacuvirvios = revositorv-›onvenanosearchlosunuvsuser, sonvenanoAcavltvsearchuranuns-omstorvseru ceeos corerontextos nuserleenuuer. Tstrorvserucer.cumiels.return new JsonResponse(['count' => count($activityIds),'changed_context_filters' => $hasChangedFilters,status: ResponseAlias: :HTTP_0K);} catch (Exception $e) {$this->logger->error('Failed to fetch activity IDs for Ask Liminny', ['error' => $e->getMessage(),"User_1d" → suser->gecla,1):return new JsonResponsedl'ids' => [1,'error' => 'Failed to fetch activity IDs',status: ResponseALias: :HTTP_INTERNAL_SERVER_ERROR);private function hasChangedContextFilter(Request $request, User $user): boolf...}23 usagespublic function getActiveReportsByFrequency(≤1571124123, 0lablf Support Daily • in 2h 48 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:12:59CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..Nowersrunthe esto vertvwtests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coverageloul nor oen ndlr Tler var ww nunbarusandecke nte/sdocxes /Losk/RuPonape/arports/ASkJ1ninyReportActivityservicetest, php --no-coverageCould not open input file: /app/artisanCommand dockeroocker exec oocker vand ioash -d"cd /var/www&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homee/jiminny && php artisan testtests/nxe erckee/Kio5/AutonateReports/5KJimamyReportActivaty ServiceTest, php --no-coverage 2561"PASSTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazero fsequence number to disable first ._. 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 Tilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupin → apolies user's derault croup as a tiltelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturee o.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria: : createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.lest added: testbetacc1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest () === false.Oul .Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allExplain it to me again. Why is there issue with that? Where is it expected and wy do l need to fork with that. How is it used [EMAIL]<> CodeClaude Sonnet 4.6W Windsurf Teams95:64uir-o( 4 spaces...
|
PhpStorm
|
faVsco.js – OnDemandV2Controller.php
|
NULL
|
11107
|
|
11108
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aa> 0ladl= Support Daily • in 2h 47 m100% <47Tue 14 Apr 12:13:038Today ~...
|
NULL
|
NULL
|
NULL
|
11108
|
|
11109
|
PhpStormFileEditFV faVsco.jsProject vViewNavigateC PhpStormFileEditFV faVsco.jsProject vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelp© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrocnvronnlc Mureu canzercnannerc PnoAom.ono© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.phpc resto eAcctvrvcimrroy© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› Helpersv DHttp> MAccessTokenProviderv D ControllersV DAPI> DAiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • ScorecardsSettingsTeamInsightsThemes> MUserAutomatedRepov DV2C ACIMINVACONTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareCont© ReportController.php© AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log< console EUi= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGiNG© AskJiminnyReportActivityService.phpA console [PROD]© ActivitySearch.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php >© HistoryService.php© AskJiminnyReportActivityServiceTest.php© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpTIT:© Criteria.php(e) TrackProvidernstallled-vent.ono© CreateActivityLoggedEvent.php• ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C) AutomatedReport.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.php© AutomatedReportResult.phpclass Automacedкeрortskepo o:A15 X4 л611141151161171181191211124123/*** Retrieve all standard (non-Ask Jiminny) M* @param string $sortColumnThe column to* dodron scrino osorcuurection ine sort oulre* @return Collection<AutomatedReport>12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...J100101/**102* Retrieve all Ask Jiminny reports created 2103.104* Oodrdll usernusenThe user whos 10s* @param string $sortColumnThe column tc106* Oparam string $sortDirection The sort dire107* @return Collection<AutomatedReport>109*/11014 usages-111public function getAskJiminnyReportsByUser(112-113User $user,string $sortColumn = 'created_at',114115string ssorcbirection = "desc"): Collection {...}1162 usagesprivate function buildSortedQuery(string $sor 119/*** Get all active and enabled reports with ac222* @param string $frequency140121124125—126* dreturh coLcectzon<aucomacedкeрort>23 usages12271public function getActiveReportsByFrequency(s157activitySearchclass OnDemandV2Controller extends ControllerA1X2 A Vpublic function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepositor: User $user */$request->user():itureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {lrnsreatureuneckIit = Srequest->input( key: 'top_count',default: self::DEFAULT_TOP_ACTIVITIES_COUNT);lways fetch first N (top count) IDslemandActivitySearchCriteria = VO\Repository\OnDemandActivitySearch\Criteria::createFromRequestiarray_merge($request->all(), ['limit' => $topCount,'page' = 1l),$user->getTimezoneterSet = $this->activitySearch->get0nDeman|dPageFiffterSet($onDemandActivitySearchCriteria, $uselidationRules= $filterSet->getValidationRules()->merge (['exclude' => 'array'.'Limit' => 'integer|min:1|max:'• $topCount,1)->alL():vest->validate($validationRules);:ChangedFilters = $this->hasChangedContextFilter($request, $user);ivityIds = $repository->onDemandSearchIds0nly($user,monvelanorcoutyoearchuteria, onureros->historyService->storeContextIds($user,identifier: HistoryService::CONTEXT_IDS, $activityIds);irn new JsonResponse(['count'=> count($activityIds),'changed_context_filters' => $hasChangedFilters,(Exception $e) {s->logger-›error('Failed to fetch activity IDs for Ask Liminnx', ['error' => $e-›getMessage(),'user_id'→User-paerloirn new JsonResponse(['ids' => [],'error"'Failed to fetch activity IDs',status: ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);Pulon nascnanceocontextUser $user): boolf..}Tests passed: 1 (4 minutes ago)Support Daily • in 2h 47 mAAskJiminnyReportActivityServiceT...Defaults v100% C•Tue 14 Apr 12:13:03CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..Now let's run the test to verifvwtests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coveragelou nor oen nolr tler var w nunwarusandecke nte/sdocxes /Losk/RuPonape/arports/ASkJ1ninyReportActivityservicetest, php --no-coverageCould not open input file: /app/artisanCommand docker•cocker exec oocker land ioasn —"cd /var/www&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisanCommand docken• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan test•dests/unxe/servkces/K1osk/AusomatedReports/AskJ1maynyReportActiVatyServiceTest.php --no-coverage 2>&1"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsperiod date filters1ds handles scrayr tittersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:ActivitvourationRande → min duration = 1 Ttlters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filtelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturned 0.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetAct:1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest () === false.Öul ..Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allExplain it to me again. Why is there issue with that? Where is it expected and wy do l need to fork with that. How is it used [EMAIL]‹> CodeClaude Sonnet 4.6W Windsur leams9o:o.uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11109
|
|
11110
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceT…Defaults
Run 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
Debug 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
activitySearch
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/2
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Exception;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Validation\ValidationException;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Component\AskAnything\HistoryService;
use Jiminny\Component\AskJiminnyAi\Exceptions\AskJiminnyException;
use Jiminny\Component\AskJiminnyAi\OnDemandLevel\Events\AskAnythingAbortedChatCompleted;
use Jiminny\Component\Prophet\ProphetService;
use Jiminny\Component\ProphetAi\StreamRequest;
use Jiminny\Events\EventDispatcher;
use Jiminny\Exceptions\ActivityProviderException;
use Jiminny\Http\Requests\API\V2\OnDemandAskAnythingRequest;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\User;
use Jiminny\Repositories\ActiveStreamsRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamAiContextRepository;
use Jiminny\Utils\FilterNormalizer;
use Jiminny\VO;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response as ResponseAlias;
use Symfony\Component\HttpFoundation\StreamedResponse;
class OnDemandV2Controller extends Controller
{
use AuthorizesRequests;
private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;
private const array FILTER_KEY_EXCLUDED_PARAMS = [
'sequence_number',
'page',
'per_page',
'limit',
'offset',
];
public function __construct(
private readonly ActivitySearch $activitySearch,
private readonly HistoryService $historyService,
private readonly ProphetService $prophetService,
private readonly TeamAiContextRepository $teamAiContextRepository,
private readonly ActiveStreamsRepository $activeStreamsRepository,
private readonly EventDispatcher $eventDispatcher,
private readonly LoggerInterface $logger,
) {
}
/**
* Check if the user's team has the ASK_JIMINNY_ON_ANYTHING feature enabled
*/
private function checkAskJiminnyOnAnythingFeature(User $user): ?JsonResponse
{
if (! $user->team->hasFeature(FeatureEnum::ASK_JIMINNY_ON_ANYTHING)) {
return new JsonResponse([
'message' => 'Feature ASK_JIMINNY_ON_ANYTHING is not enabled for this team',
], ResponseAlias::HTTP_FORBIDDEN);
}
return null;
}
/**
* Get top N activity IDs for Ask Jiminny feature based on filters
*
* @throws ValidationException
* @throws ActivityProviderException
*/
public function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
$topCount = $request->input('top_count', self::DEFAULT_TOP_ACTIVITIES_COUNT);
try {
// Always fetch first N (top count) IDs
$onDemandActivitySearchCriteria = VO\Repository\OnDemandActivitySearch\Criteria::createFromRequest(
array_merge($request->all(), ['limit' => $topCount, 'page' => 1]),
$user->getTimezone()
);
$filterSet = $this->activitySearch->getOnDemandPageFilterSet($onDemandActivitySearchCriteria, $user);
$validationRules = $filterSet->getValidationRules()
->merge([
'exclude' => 'array',
'limit' => 'integer|min:1|max:' . $topCount,
])
->all();
$request->validate($validationRules);
$hasChangedFilters = $this->hasChangedContextFilter($request, $user);
$activityIds = $repository->onDemandSearchIdsOnly($user, $onDemandActivitySearchCriteria, $filterSet);
$this->historyService->storeContextIds($user, HistoryService::CONTEXT_IDS, $activityIds);
return new JsonResponse([
'count' => count($activityIds),
'changed_context_filters' => $hasChangedFilters,
], ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to fetch activity IDs for Ask Jiminny', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'ids' => [],
'error' => 'Failed to fetch activity IDs',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
private function hasChangedContextFilter(Request $request, User $user): bool
{
$filterKey = $this->makeFilterKey($request);
$result = $this->historyService->compareAndSetFilterKeyWithHistory($user, $filterKey);
if (! $result['changed']) {
return false;
}
if ($result['matches_previous']) {
return false;
}
$history = $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE);
// If no history or last event already matches, return false
if (empty($history) || $this->historyService->hasFilteredChangedEventAsLastMessage($history)) {
return false;
}
// Append event and notify
$this->historyService->appendToEventHistory(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
type: HistoryService::EVENT_FILTERS_CHANGED_TYPE
);
return true;
}
private function makeFilterKey(Request $request): string
{
$filters = $request->except(self::FILTER_KEY_EXCLUDED_PARAMS);
try {
$normalizedFilters = FilterNormalizer::normalizeFilters($filters);
$json = json_encode(
$normalizedFilters,
JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
);
return hash('xxh3', $json);
} catch (\JsonException $e) {
$this->logger->error('Failed to encode filters', [
'error' => $e->getMessage(),
'filters_keys' => array_keys($filters),
]);
throw new AskJiminnyException('Failed to create filter key', 0, $e);
}
}
/**
* Get Ask Anything conversation history
*/
public function getAskAnythingHistory(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$history = $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE);
return new JsonResponse($history, ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to fetch Ask Anything history', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'history' => [],
'error' => 'Failed to fetch history',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* Delete Ask Anything conversation history
*/
public function deleteAskAnythingHistory(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$this->historyService->deleteHistory($user, HistoryService::ON_DEMAND_SERVICE);
return new JsonResponse([
'message' => 'History deleted successfully',
], ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to delete Ask Anything history', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'error' => 'Failed to delete history',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* Ask Anything - submit question and get AI response
*/
public function askAnything(OnDemandAskAnythingRequest $request): StreamedResponse|JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->logger->info('AskAnything request received', [
'user_id' => $user->getId(),
'team_id' => $user->getTeamId(),
'request_hash' => md5($request->input('message') . $user->getId() . floor(time() / 60)),
'message_preview' => mb_substr($request->input('message'), 0, 50),
]);
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$inputData = $request->validated();
$requestData = [
'userQuestion' => $inputData['message'],
'callIds' => $this->historyService->getContextIds($user, HistoryService::CONTEXT_IDS),
'history' => $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE),
];
$teamAiContext = $this->teamAiContextRepository->getByTeamId($user->getTeamId());
if ($teamAiContext?->getPrompt() !== null) {
$requestData['teamAiContext'] = $teamAiContext->getPrompt();
}
$this->historyService->appendToUserHistory(
$user,
HistoryService::ON_DEMAND_SERVICE,
$inputData['message']
);
$this->historyService->appendToEventHistory(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
type: HistoryService::EVENT_IN_PROGRESS_TYPE
);
$streamRequest = StreamRequest::onDemandLevel($requestData);
// Track active stream in Redis
$this->activeStreamsRepository->start(
$user->getId(),
$streamRequest->getId(),
ttlSeconds: $streamRequest->getConnectTimeout() + $streamRequest->getReadTimeout()
);
return $this->prophetService->getStreamedOrAbortedResponse(
streamRequest: $streamRequest,
onCompleted: function (
string $assistantResponse,
bool $clientAborted,
bool $hadError,
) use ($user, $streamRequest) {
// Remove in-progress event
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
// Save to history if backend completed successfully (even if client disconnected)
// Only skip saving if there was an actual error during streaming
if (! $hadError && ! empty(trim($assistantResponse))) {
$this->historyService->appendToSystemHistory(
$user,
HistoryService::ON_DEMAND_SERVICE,
$assistantResponse,
);
}
// Notify frontend if client disconnected (so it can update UI if still on page)
if ($clientAborted) {
$this->eventDispatcher->dispatch(
new AskAnythingAbortedChatCompleted(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
response: $assistantResponse,
)
);
}
// Remove active stream in Redis
$this->activeStreamsRepository->stop($user->getId(), $streamRequest->getId());
}
);
} catch (Exception $e) {
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
$this->logger->error('Failed to process Ask Anything request', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'question' => $request->input('message'),
]);
return new JsonResponse([
'error' => 'Failed to process your question',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
public function stopStream(Request $request): JsonResponse
{
$user = $request->user();
$this->activeStreamsRepository->stopByUser($user->getId());
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
return response()->json(['message' => 'Stream marked as stopped by user']);
}
}...
|
PhpStorm
|
faVsco.js – OnDemandV2Controller.php
|
NULL
|
11110
|
|
11111
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceT…Defaults
Run 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
Debug 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
activitySearch
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/2
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Exception;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Validation\ValidationException;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Component\AskAnything\HistoryService;
use Jiminny\Component\AskJiminnyAi\Exceptions\AskJiminnyException;
use Jiminny\Component\AskJiminnyAi\OnDemandLevel\Events\AskAnythingAbortedChatCompleted;
use Jiminny\Component\Prophet\ProphetService;
use Jiminny\Component\ProphetAi\StreamRequest;
use Jiminny\Events\EventDispatcher;
use Jiminny\Exceptions\ActivityProviderException;
use Jiminny\Http\Requests\API\V2\OnDemandAskAnythingRequest;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\User;
use Jiminny\Repositories\ActiveStreamsRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamAiContextRepository;
use Jiminny\Utils\FilterNormalizer;
use Jiminny\VO;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response as ResponseAlias;
use Symfony\Component\HttpFoundation\StreamedResponse;
class OnDemandV2Controller extends Controller
{
use AuthorizesRequests;
private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;
private const array FILTER_KEY_EXCLUDED_PARAMS = [
'sequence_number',
'page',
'per_page',
'limit',
'offset',
];
public function __construct(
private readonly ActivitySearch $activitySearch,
private readonly HistoryService $historyService,
private readonly ProphetService $prophetService,
private readonly TeamAiContextRepository $teamAiContextRepository,
private readonly ActiveStreamsRepository $activeStreamsRepository,
private readonly EventDispatcher $eventDispatcher,
private readonly LoggerInterface $logger,
) {
}
/**
* Check if the user's team has the ASK_JIMINNY_ON_ANYTHING feature enabled
*/
private function checkAskJiminnyOnAnythingFeature(User $user): ?JsonResponse
{
if (! $user->team->hasFeature(FeatureEnum::ASK_JIMINNY_ON_ANYTHING)) {
return new JsonResponse([
'message' => 'Feature ASK_JIMINNY_ON_ANYTHING is not enabled for this team',
], ResponseAlias::HTTP_FORBIDDEN);
}
return null;
}
/**
* Get top N activity IDs for Ask Jiminny feature based on filters
*
* @throws ValidationException
* @throws ActivityProviderException
*/
public function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
$topCount = $request->input('top_count', self::DEFAULT_TOP_ACTIVITIES_COUNT);
try {
// Always fetch first N (top count) IDs
$onDemandActivitySearchCriteria = VO\Repository\OnDemandActivitySearch\Criteria::createFromRequest(
array_merge($request->all(), ['limit' => $topCount, 'page' => 1]),
$user->getTimezone()
);
$filterSet = $this->activitySearch->getOnDemandPageFilterSet($onDemandActivitySearchCriteria, $user);
$validationRules = $filterSet->getValidationRules()
->merge([
'exclude' => 'array',
'limit' => 'integer|min:1|max:' . $topCount,
])
->all();
$request->validate($validationRules);
$hasChangedFilters = $this->hasChangedContextFilter($request, $user);
$activityIds = $repository->onDemandSearchIdsOnly($user, $onDemandActivitySearchCriteria, $filterSet);
$this->historyService->storeContextIds($user, HistoryService::CONTEXT_IDS, $activityIds);
return new JsonResponse([
'count' => count($activityIds),
'changed_context_filters' => $hasChangedFilters,
], ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to fetch activity IDs for Ask Jiminny', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'ids' => [],
'error' => 'Failed to fetch activity IDs',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
private function hasChangedContextFilter(Request $request, User $user): bool
{
$filterKey = $this->makeFilterKey($request);
$result = $this->historyService->compareAndSetFilterKeyWithHistory($user, $filterKey);
if (! $result['changed']) {
return false;
}
if ($result['matches_previous']) {
return false;
}
$history = $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE);
// If no history or last event already matches, return false
if (empty($history) || $this->historyService->hasFilteredChangedEventAsLastMessage($history)) {
return false;
}
// Append event and notify
$this->historyService->appendToEventHistory(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
type: HistoryService::EVENT_FILTERS_CHANGED_TYPE
);
return true;
}
private function makeFilterKey(Request $request): string
{
$filters = $request->except(self::FILTER_KEY_EXCLUDED_PARAMS);
try {
$normalizedFilters = FilterNormalizer::normalizeFilters($filters);
$json = json_encode(
$normalizedFilters,
JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
);
return hash('xxh3', $json);
} catch (\JsonException $e) {
$this->logger->error('Failed to encode filters', [
'error' => $e->getMessage(),
'filters_keys' => array_keys($filters),
]);
throw new AskJiminnyException('Failed to create filter key', 0, $e);
}
}
/**
* Get Ask Anything conversation history
*/
public function getAskAnythingHistory(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$history = $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE);
return new JsonResponse($history, ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to fetch Ask Anything history', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'history' => [],
'error' => 'Failed to fetch history',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* Delete Ask Anything conversation history
*/
public function deleteAskAnythingHistory(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$this->historyService->deleteHistory($user, HistoryService::ON_DEMAND_SERVICE);
return new JsonResponse([
'message' => 'History deleted successfully',
], ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to delete Ask Anything history', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'error' => 'Failed to delete history',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* Ask Anything - submit question and get AI response
*/
public function askAnything(OnDemandAskAnythingRequest $request): StreamedResponse|JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->logger->info('AskAnything request received', [
'user_id' => $user->getId(),
'team_id' => $user->getTeamId(),
'request_hash' => md5($request->input('message') . $user->getId() . floor(time() / 60)),
'message_preview' => mb_substr($request->input('message'), 0, 50),
]);
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$inputData = $request->validated();
$requestData = [
'userQuestion' => $inputData['message'],
'callIds' => $this->historyService->getContextIds($user, HistoryService::CONTEXT_IDS),
'history' => $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE),
];
$teamAiContext = $this->teamAiContextRepository->getByTeamId($user->getTeamId());
if ($teamAiContext?->getPrompt() !== null) {
$requestData['teamAiContext'] = $teamAiContext->getPrompt();
}
$this->historyService->appendToUserHistory(
$user,
HistoryService::ON_DEMAND_SERVICE,
$inputData['message']
);
$this->historyService->appendToEventHistory(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
type: HistoryService::EVENT_IN_PROGRESS_TYPE
);
$streamRequest = StreamRequest::onDemandLevel($requestData);
// Track active stream in Redis
$this->activeStreamsRepository->start(
$user->getId(),
$streamRequest->getId(),
ttlSeconds: $streamRequest->getConnectTimeout() + $streamRequest->getReadTimeout()
);
return $this->prophetService->getStreamedOrAbortedResponse(
streamRequest: $streamRequest,
onCompleted: function (
string $assistantResponse,
bool $clientAborted,
bool $hadError,
) use ($user, $streamRequest) {
// Remove in-progress event
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
// Save to history if backend completed successfully (even if client disconnected)
// Only skip saving if there was an actual error during streaming
if (! $hadError && ! empty(trim($assistantResponse))) {
$this->historyService->appendToSystemHistory(
$user,
HistoryService::ON_DEMAND_SERVICE,
$assistantResponse,
);
}
// Notify frontend if client disconnected (so it can update UI if still on page)
if ($clientAborted) {
$this->eventDispatcher->dispatch(
new AskAnythingAbortedChatCompleted(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
response: $assistantResponse,
)
);
}
// Remove active stream in Redis
$this->activeStreamsRepository->stop($user->getId(), $streamRequest->getId());
}
);
} catch (Exception $e) {
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
$this->logger->error('Failed to process Ask Anything request', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'question' => $request->input('message'),
]);
return new JsonResponse([
'error' => 'Failed to process your question',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
public function stopStream(Request $request): JsonResponse
{
$user = $request->user();
$this->activeStreamsRepository->stopByUser($user->getId());
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
return response()->json(['message' => 'Stream marked as stopped by user']);
}
}...
|
PhpStorm
|
faVsco.js – OnDemandV2Controller.php
|
NULL
|
11111
|
|
11112
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aa> 0ladl= Support Daily • in 2h 47 m100% <47Tue 14 Apr 12:13:208Today ~...
|
NULL
|
NULL
|
NULL
|
11112
|
|
11113
|
PhpStormFileEditFV faVsco.jsProject vViewNavigateC PhpStormFileEditFV faVsco.jsProject vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelp© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrocnvronnlc Mureu canzercnanner© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.phpc resto eAcctvrvcimrroy© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› Helpersv DHttp> MAccessTokenProviderv D ControllersV DAPI> DAiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • ScorecardsSettingsTeamInsightsThemes> MUserAutomatedRepov DV2C ACIMINVACONTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareCont© ReportController.phpC AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log< console EUi= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGiNG© AskJiminnyReportActivityService.phpA console [PROD]© ActivitySearch.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php >© AskJiminnyReportActivityServiceTest.php© HistoryService.php© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpTIT:© Criteria.php(e) TrackProvidernstallled-vent.ono© CreateActivityLoggedEvent.php• ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C) AutomatedReport.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.php© AutomatedReportResult.phpclass Automacedкeрortskepo o:A15 X4 л611141151161171181191211124123/*** Retrieve all standard (non-Ask Jiminny) mu* @param string $sortColumnThe column to* dodron scrino osorcuurection ine sort culre* @return Collection<AutomatedReport>12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...J100101/**102* Retrieve all Ask Jiminny reports created 2103.104* Oodrdll usernusenThe user whos 10s* @param string $sortColumnThe column tc106* Oparam string $sortDirection The sort dire107* @return Collection<AutomatedReport>109*/11014 usages-111public function getAskJiminnyReportsByUser(112-113User $user,string $sortColumn = 'created_at',114115string ssorcbirection = "desc"): Collection {...J1162 usagesprivate function buildSortedQuery(string $sor 119/*** Get all active and enabled reports with ac222* @param string $frequency140121124125—126* dreturh coLcectzon<aucomacedкeрort>23 usages12271public function getActiveReportsByFrequency(s157activitySearchCc W .*class OnDemandV2Controller extends ControllerA1X2 A Vpublic function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepositor: User $user */$request->user(0):itureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {lrnsreatureuneckIit = Srequest->input( key: 'top_count', (default: self::DEFAULT_TOP_ACTIVITIES_COUNT);lways fetch first N (top count) IDslemandActivitySearchCriteria = VO\Repository\OnDemandActivitySearch\Criteria::createFromRequestiarray_merge($request->all(), ['limit' => $topCount,'page' = 1l),$user->getTimezoneterSet = $this->activitySearch->get0nDemandPageFilterSet($onDemandActivitySearchCriteria, $usenidationRules = $filterSet->getValidationRules()->merge (['exclude' => 'array'.'Limit' => 'integer|min:1|max:'• $topCount,1)->alL():vest->validate($validationRules);:ChangedFilters = $this->hasChangedContextFilter($request, $user);ivityIds = $repository->onDemandSearchIds0nly($user,monvelanorcoutvoearchurtera, onurerois->historyService->storeContextIds($user,identifier: HistoryService::CONTEXT_IDS, $activityIds);irn new JsonResponse(['count'=> count($activityIds),'changed_context_filters' => $hasChangedFilters,status: ResponseAlias::HTTP_0K);(Exception $e) {s->logger-›error('Failed to fetch activity IDs for Ask Liminnx', ['error' => $e-›getMessage(),'user_id'→ ser-roerloirn new JsonResponse(['ids' »> [].'error"'Failed to fetch activity IDs',status: ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);Pulon nasunanceocontex:Filter(Request $request, User $user): boolf...}Support Daily • in 2h 47 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:13:20+D ..Tests passed: 1 (4 minutes ago)CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny RepNow let's run the test to verifvtests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coverageloul nor oen Indlr tler var w nunwarusandecke nte/sdocxes /kLosk/Ruonape/arports/ASkJ1ninyReportActivityservicetest. php --no-coverageCould not open input file: /app/artisanCommand docker•cocker exec oocker land ioasn —Sid php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisanCommand docken• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan test•dests/unxe/servkces/K1osk/AusomatedReports/AskJ1maynyReportActiVatyServiceTest.php --no-coverage 2>&1"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsperiod date filters1ds handles scrayr tittersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:ActivitvourationRande → min duration = 1 tlters ouf o-second activifiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filterThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturned 0.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' » 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetActi/cylasPassesnonzerosequencenumberlobisablerarsckequestberaulus asserts that the captured uriterla oblect nas 1srirstRequest () === false.Öul ..Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allEColoimianovzcontro, Uer-iS there isue with that? Where is it expected and wty do I need to forx with that. How is it used [EMAIL]‹> CodeClaude Sonnet 4.6Winasun leams95:67uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11113
|
|
11114
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aa> 0ladl= Support Daily • in 2h 47 m100% <47Tue 14 Apr 12:13:238Today ~...
|
NULL
|
NULL
|
NULL
|
11114
|
|
11115
|
PhpStormFileEditFV faVsco.jsProject vViewNavigateC PhpStormFileEditFV faVsco.jsProject vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny k vToolsWindowHelp© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrocnvronnlc Mureu canzercnanner© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComi© RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.phpc resto eAcctvrvcimrroy© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› Helpersv DHttp> MAccessTokenProvider~ D ControllersV DAPI> DAiCallScoringD AReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsThemes> MUserAutomatedRepov DV2C ACIMINVACONTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareContTests passed: 1 (4 minutes ago)© ReportController.phpC AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log< console EUi= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]console SlAGiNG© AskJiminnyReportActivityService.php© ActivitySearch.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php >© HistoryService.php© AskJiminnyReportActivityServiceTest.php© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpTIT:© Criteria.php(e TrackProvidernstallled-vent.ono© CreateActivityLoggedEvent.php• ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C) AutomatedReport.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.php© AutomatedReportResult.phpclass Automacedкeрortskepo o:A15 X4 л611141151161171181191211124123/*** Retrieve all standard (non-Ask Jiminny) M* @param string $sortColumnThe column to* dodron scrino osorcuurection ine sort oulre* @return Collection<AutomatedReport>12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...}100101/**102* Retrieve all Ask Jiminny reports created 2103.104* Oodrdll usernusenThe user whos 10s* @param string $sortColumnThe column tc 106* Oparam string $sortDirection The sort dire107* @return Collection<AutomatedReport>109*/11014 usages-111public function getAskJiminnyReportsByUser(112-113User $user,string $sortColumn = 'created_at',114115string ssorcbirection = "desc"): Collection {...J1162 usagesprivate function buildSortedQuery(string $sor 119/*** Get all active and enabled reports with ac 223.* @param string $frequency140121124125—126* dreturn cocLectron<Aucomacedкeрort»23 usagespublic function getActiveReportsByFrequency(s15activitySearchCc W .*class OnDemandV2Controller extends ControllerA1X2 A Vpublic function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepositor: User $user */$request->user():itureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {lrnsreatureuneckIit = Srequest->input( key: 'top_count', default: self::DEFAULT_TOP_ACTIVITIES_COUNT);lways fetch first N (top count) IDslemandActivitySearchCriteria = VO\Repository\OnDemandActivitySearch\Criteria::createFromRequestiarray_merge($request->all(), ['limit' => $topCount,'page' = 1l),$user->getTimezone)terSet = $this->activitySearch->get0nDemandPageFilterSet($onDemandActivitySearchCriteria, $uselidationRules = $filterSet->getValidationRules()->merge (['exclude' => 'array'.'Limit' => 'integer|min:1|max:'• $topCount,->alL():vest->validate($validationRules);:ChangedFilters = $this->hasChangedContextFilter($request, $user);ivityIds = $repository->onDemandSearchIds0nly($user,$onDemandActivitySearchCriteria,$filterS.s->historyService->storeContextIds($user,identifier: HistoryService::CONTEXT_IDS, $activityIds);irn new JsonResponse(['count'=> count($activityIds),'changed_context_filters' => $hasChangedFilters,status: ResponseAL1as::HTTP_0K)*(Exception $e) {s->logger-›error('Failed to fetch activity IDs for Ask Liminnx', ['error'=ne->oerressade'user_id'=> $user->getId(),irn new JsonResponse(['ids' => [],'error"'Failed to fetch activity IDs',status: ResponseAL1as::HTTP_INTERNAL_SERVER_ERROR)NloalSupport Daily • in 2h 47 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:13:23CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D ...Now let's run the test to verifvtests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coverageloul nor oen nolt tler var w nunwaru sandecke nte/sdocxes /kLosk/Ruonape/arports/ASkJ1ninyReportActivityservicetest. php --no-coverageCould not open input file: /app/artisanCommand docker•cocker exec oocker vand ioash —dSid php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisanCommand docken• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan testdests/unxe/servaces/K1osk/AusomatedReports/AskJ1maynyReportActivaty5erviceTest- php --no-coverage 2>&1"PASSNAucomaLeanepores Askstminnyneportactevilyserviceresemoty when no resultsperiod date filters1ds handles scrayr tittersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:ActivityDurationRange → min_duration = 1 (fiiters out 0-second activities)ActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filtelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturned 0.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria: : createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetActi1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirs-Requesto zzz tallse.Öul ..1 file with changesapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Vew allliReject allAccept allExplain it to me aaain. Why is there issue with that? Where is it expected and why do l need to work with that. How is it used inPSW Windsurf Teams9567uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11115
|
|
11116
|
PhpStormFileEditFV faVsco.jsProject vViewNavigateC PhpStormFileEditFV faVsco.jsProject vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelp© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrocnvronnlc Mureu canzercnanner© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.phpc resto eAcctvrvcimrroy© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› Helpersv DHttp> MAccessTokenProviderv D ControllersV DAPI> DAiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • ScorecardsSettingsTeamInsightsThemes> MUserAutomatedRepov DV2C ACIMINVACOnTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareCont© ReportController.php© AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log< console EUi= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGiNG© AskJiminnyReportActivityService.phpA console [PROD]© ActivitySearch.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php >© AskJiminnyReportActivityServiceTest.php© HistoryService.php© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpTIT:© Criteria.php(e) TrackProvidernstallled-vent.ono© CreateActivityLoggedEvent.php• ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C) AutomatedReport.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.php© AutomatedReportResult.phpclass Automacedкeрortskepo o:A15 X4 л611141151161171181191211124123/*** Retrieve all standard (non-Ask Jiminny) M* @param string $sortColumnThe column to* dodron scrino osorcuurection ine sort oulre* @return Collection<AutomatedReport>12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...J100101/**102* Retrieve all Ask Jiminny reports created 2103.104* Oodrdll usernusenThe user whos 10s* @param string $sortColumnThe column tc 106* Oparam string $sortDirection The sort dire107* @return Collection<AutomatedReport>109*/11014 usages-111public function getAskJiminnyReportsByUser(112-113User $user,string $sortColumn = 'created_at',114115string ssorcbirection = "desc"): Collection {...J1162 usagesprivate function buildSortedQuery(string $sor 119/*** Get all active and enabled reports with ac222* @param string $frequency140121124125—126* dreturh coLcectzon<aucomacedкeрort>23 usages12271public function getActiveReportsByFrequency(s157activitySearchCc W .*class OnDemandV2Controller extends ControllerA1X2 A Vpublic function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepositor: User $user */$request->user(0):itureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {lrnsreatureuneckIit = Srequest->input( key: 'top_count', (default: self::DEFAULT_TOP_ACTIVITIES_COUNT);lways fetch first N (top count) IDslemandActivitySearchCriteria = VO\Repository\OnDemandActivitySearch\Criteria::createFromRequestiarray_merge($request->all(), ['limit' => $topCount,'page' = 1l),$user->getTimezoneterSet = $this->activitySearch->get0nDemandPageFilterSet($onDemandActivitySearchCriteria, $useridationRules = $filterSet->getValidationRules()->merge (['exclude' => 'array'.'Limit' => 'integer|min:1|max:'• $topCount,1)->alL():vest->validate($validationRules);:ChangedFilters = $this->hasChangedContextFilter($request, $user);ivityIds = $repository->onDemandSearchIds0nly($user,monvelanorcoutyoearchuteria, onureros->historyService->storeContextIds($user,identifier: HistoryService::CONTEXT_IDS, $activityIds);irn new JsonResponse(['count'=> count($activityIds),'changed_context_filters' => $hasChangedFilters,status: ResponseAlias::HTTP_0K);(Exception $e) {s->logger-›error('Failed to fetch activity IDs for Ask Liminnx', ['error' => $e-›getMessage(),'user_id'→ ser-roerloirn new JsonResponse(['ids' »> [].'error"'Failed to fetch activity IDs',status: ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);Pulon nasunanceocontex:Filter(Request $request, User $user): boolf...}Support Daily • in 2h 47 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:13:26+D ..Tests passed: 1 (4 minutes ago)CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny RepNow let's run the test to verifvtests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coverageloul nor oen nolt tler var w nunwaru sandecke nte/sdocxes /Losk/RuPonape/arports/ASkJ1ninyReportActivityservicetest, php --no-coverageCould not open input file: /app/artisanCommand docker•cocker exec oocker land ioasn —Sid php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisanCommand docken• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan test•dests/unxe/servkces/K1osk/AusomatedReports/AskJ1maynyReportActiVatyServiceTest.php --no-coverage 2>&1"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestemoty when no resultsE tatt tnt hperiod date filtershand lesids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:ActivitvourationRande → min duration = 1 Ttlters ouf o-second activifiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filtelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturned 0.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria: : createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetActi1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest () === false.Öul ..Itlle wiun changesv1l/Sethicha/kios /AutomatedReports/D AskJiminyReportActivityService.,php +1 - 1Vew allliReject allAccept allExplain it to me again. Why is there issue with that? Where is it expected and why do l need to work with that. How is it used [EMAIL]‹> CodeClaude Sonnet 4.6Winasun leams95:67uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11116
|
|
11117
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorTools#1894 on.lY-18909-automated-renorts-ask-liminnvWindowHelpProject v© JiminnyDebugCommanc©JiminnySetEncryptedTo© JiminnyTokenInfoComm© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg› D Formats› D Guards> D Helpersv UHttp> DJ AccessTokenProviderv D ControllersV DAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D Settings> D Teaminsights•nemes> MUserAutomatedRepov DV2© ActivityV2ControlAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareCont© ReportController.php© AutomatedReportsCommand.phpJiminnybebuecommana.ongAutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.php(e TrackProvidernstallled-vent.ono© CreateActivityLoggedEvent.php© UserPilotActivityListener.php• ActivityLogged.phpAutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php© AutomatedReportResult.php(C) AutomatedReport.phpclass Automacedкeрortskepo o:A15 X4 ^6162/*** Retrieve all standard (non-Ask Jiminny)* @param string $sortColumnThe column* dodron scrino osorcuurection ine sor a* @return Collection<AutomatedReport>*/12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...J/*** Retrieve all Ask Liminny reports create* Oodrdll usernusenIne user* @param string $sortColumnThe column* Oparam string $sortDirection The sort a* @return Collection<AutomatedReport>*/14 usagespublic function getAskJiminnyReportsByUserUser $user,string $sortColumn = 'created_at',string ssorcbirection = "desc"): Collection {...}= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]< console LUlconsole SlAGiNG© AskJiminnyReportActivityService.php© OnDemandV2Controller.php© HistoryService.php© FilterDefinitionCollection.phpA console [PROD]© ActivitySearch.pnp© Criteria.phpFind in Flles100+ matches in 26+ fllesFile mask*.phpsequenceIn ProjectModuleDirectoryScopeI/ Expand the chunk to a valid UTF-8 sequenceProphetClient.php 162private ?int Ssequence Number = null;ActivityLog.php 16public function geiSequenceNumber(): ?intActivityLog.php 43return Sthis-> sequenceNumber;ActivityLog.php 45public function hasSequenceNumber(): boolActivityLog.php 48etum onis-›secuencerumoer == nuirActivityLog.php 50public function sefSequenceNumber(?int #sequenceNumber): ActivityLogActivityLog.php 53Sthis->sequenceNumber = $sequence Number;ActivityLog.php 55protected $sequenceNumber;Conferences/ConferenceEvent.php 36* @param nulllint #sequenceNumberConferences/ConferenceEvent.php 48public function _construct(Activity $activity, ?string $context = null, ?int $sequence Nui Conferences/ConferenceEvent.php 50Sthis->sequenceNumber = Ssequence Vumber;Conferences/ConferenceEvent.php 54public function geiSequence Number(): ?intConferences/ConferenceEvent.php 72return Sthis->seqnceNumber;Conferences/ConferenceEvent.php 74protected Ssequence Number;ConnectionEvent.php 30* @param int|null $sequenceNumberConnectionEvent.php 41->orderBy(sequence', 'asc');API/ActivityController.php 1833ActivityDurationRange.php app/Component/ActivitySearch/FilterDefinitionprivate function getLowerBoundary(): ?intif ($this->criteria->hasMinDurationO)) {retur uns-ocrrera-oetranuuraron.oreturn $this->criteria->isFirstRequest()? static::INITIAL_MIN: nult;private function getUpperBoundary(): ?intif ($this->criteria->hasMaxDurationO)) {return punis->eriterla->gechaxburactono.2 usages110093114115116117118119121private function buildSortedQuery(string $101recurn nuee./*** Get all active and enabled reports with104* @param string $frequency* dreturn cocLectron<Aucomacedкeрort»103105106107110811A9 Atprivate function getValue(): arrayreturn [$this->getLowerBoundary(), $this->getUpperBoundaryO];23 usages• Open results in new tabOpen in Find Window1124123public function getActiveReportsByFrequency(sSupport Daily • in 2h 47 mAAsk.liminnvRenortActivitvServicel.. De aults100% C•Tue 14 Apr 12:13:44CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D ...Nowersrunthe esto vertvwtests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coveragecould not open input Tile: /var/www/ncml/artisanCommand dockerdecke nte/sdocxes /Losk/RuPonape/arports/ASkJ1ninyReportActivityservicetest, php --no-coverageCould not open input file: /app/artisanCommand dockeroocker exec oocker vand ioash -c&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan test•dests/unxe/servkces/K1osk/AusomatedReports/AskJ1maynyReportActiVatyServiceTest.php --no-coverage 2>&1"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazero fsequence number to disable first ._. 0.025All 8 tests pass. Here's a summary:Root Cause & FixKoOL cause: bu1 Ldkequestraramst romsearch never set sequence number In the request params, so criterla::creater romkequest delaulted lt to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 Tilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filtelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturee o.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria: : createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.lest added: testbetacc1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest() === false.Oul .Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allExplain it to me again. Why is there issue with that? Where is it expected and why do l need to work with that. How is it used [EMAIL] | am trying to fetch the activities based on savedSearch<>CodeClaude Sonnet 4.6W Windsurf Teams95:67uir-oia 4 space...
|
NULL
|
NULL
|
NULL
|
11117
|
|
11118
|
Find in Files
100+ matches in 26+ files
File mask: Find in Files
100+ matches in 26+ files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
sequence...
|
PhpStorm
|
|
NULL
|
11118
|
|
11119
|
Find in Files
100+ matches in 26+ files
File mask: Find in Files
100+ matches in 26+ files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
sequence...
|
PhpStorm
|
|
NULL
|
11119
|
|
11120
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aa> 0ladl= Support Daily • in 2h 47 m100% <47Tue 14 Apr 12:13:548Today ~...
|
NULL
|
NULL
|
NULL
|
11120
|
|
11121
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceT…Defaults
Run 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
Debug 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
activitySearch
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/2
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Exception;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Validation\ValidationException;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Component\AskAnything\HistoryService;
use Jiminny\Component\AskJiminnyAi\Exceptions\AskJiminnyException;
use Jiminny\Component\AskJiminnyAi\OnDemandLevel\Events\AskAnythingAbortedChatCompleted;
use Jiminny\Component\Prophet\ProphetService;
use Jiminny\Component\ProphetAi\StreamRequest;
use Jiminny\Events\EventDispatcher;
use Jiminny\Exceptions\ActivityProviderException;
use Jiminny\Http\Requests\API\V2\OnDemandAskAnythingRequest;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\User;
use Jiminny\Repositories\ActiveStreamsRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamAiContextRepository;
use Jiminny\Utils\FilterNormalizer;
use Jiminny\VO;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response as ResponseAlias;
use Symfony\Component\HttpFoundation\StreamedResponse;
class OnDemandV2Controller extends Controller
{
use AuthorizesRequests;
private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;
private const array FILTER_KEY_EXCLUDED_PARAMS = [
'sequence_number',
'page',
'per_page',
'limit',
'offset',
];
public function __construct(
private readonly ActivitySearch $activitySearch,
private readonly HistoryService $historyService,
private readonly ProphetService $prophetService,
private readonly TeamAiContextRepository $teamAiContextRepository,
private readonly ActiveStreamsRepository $activeStreamsRepository,
private readonly EventDispatcher $eventDispatcher,
private readonly LoggerInterface $logger,
) {
}
/**
* Check if the user's team has the ASK_JIMINNY_ON_ANYTHING feature enabled
*/
private function checkAskJiminnyOnAnythingFeature(User $user): ?JsonResponse
{
if (! $user->team->hasFeature(FeatureEnum::ASK_JIMINNY_ON_ANYTHING)) {
return new JsonResponse([
'message' => 'Feature ASK_JIMINNY_ON_ANYTHING is not enabled for this team',
], ResponseAlias::HTTP_FORBIDDEN);
}
return null;
}
/**
* Get top N activity IDs for Ask Jiminny feature based on filters
*
* @throws ValidationException
* @throws ActivityProviderException
*/
public function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
$topCount = $request->input('top_count', self::DEFAULT_TOP_ACTIVITIES_COUNT);
try {
// Always fetch first N (top count) IDs
$onDemandActivitySearchCriteria = VO\Repository\OnDemandActivitySearch\Criteria::createFromRequest(
array_merge($request->all(), ['limit' => $topCount, 'page' => 1]),
$user->getTimezone()
);
$filterSet = $this->activitySearch->getOnDemandPageFilterSet($onDemandActivitySearchCriteria, $user);
$validationRules = $filterSet->getValidationRules()
->merge([
'exclude' => 'array',
'limit' => 'integer|min:1|max:' . $topCount,
])
->all();
$request->validate($validationRules);
$hasChangedFilters = $this->hasChangedContextFilter($request, $user);
$activityIds = $repository->onDemandSearchIdsOnly($user, $onDemandActivitySearchCriteria, $filterSet);
$this->historyService->storeContextIds($user, HistoryService::CONTEXT_IDS, $activityIds);
return new JsonResponse([
'count' => count($activityIds),
'changed_context_filters' => $hasChangedFilters,
], ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to fetch activity IDs for Ask Jiminny', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'ids' => [],
'error' => 'Failed to fetch activity IDs',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
private function hasChangedContextFilter(Request $request, User $user): bool
{
$filterKey = $this->makeFilterKey($request);
$result = $this->historyService->compareAndSetFilterKeyWithHistory($user, $filterKey);
if (! $result['changed']) {
return false;
}
if ($result['matches_previous']) {
return false;
}
$history = $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE);
// If no history or last event already matches, return false
if (empty($history) || $this->historyService->hasFilteredChangedEventAsLastMessage($history)) {
return false;
}
// Append event and notify
$this->historyService->appendToEventHistory(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
type: HistoryService::EVENT_FILTERS_CHANGED_TYPE
);
return true;
}
private function makeFilterKey(Request $request): string
{
$filters = $request->except(self::FILTER_KEY_EXCLUDED_PARAMS);
try {
$normalizedFilters = FilterNormalizer::normalizeFilters($filters);
$json = json_encode(
$normalizedFilters,
JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
);
return hash('xxh3', $json);
} catch (\JsonException $e) {
$this->logger->error('Failed to encode filters', [
'error' => $e->getMessage(),
'filters_keys' => array_keys($filters),
]);
throw new AskJiminnyException('Failed to create filter key', 0, $e);
}
}
/**
* Get Ask Anything conversation history
*/
public function getAskAnythingHistory(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$history = $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE);
return new JsonResponse($history, ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to fetch Ask Anything history', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'history' => [],
'error' => 'Failed to fetch history',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* Delete Ask Anything conversation history
*/
public function deleteAskAnythingHistory(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$this->historyService->deleteHistory($user, HistoryService::ON_DEMAND_SERVICE);
return new JsonResponse([
'message' => 'History deleted successfully',
], ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to delete Ask Anything history', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'error' => 'Failed to delete history',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* Ask Anything - submit question and get AI response
*/
public function askAnything(OnDemandAskAnythingRequest $request): StreamedResponse|JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->logger->info('AskAnything request received', [
'user_id' => $user->getId(),
'team_id' => $user->getTeamId(),
'request_hash' => md5($request->input('message') . $user->getId() . floor(time() / 60)),
'message_preview' => mb_substr($request->input('message'), 0, 50),
]);
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$inputData = $request->validated();
$requestData = [
'userQuestion' => $inputData['message'],
'callIds' => $this->historyService->getContextIds($user, HistoryService::CONTEXT_IDS),
'history' => $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE),
];
$teamAiContext = $this->teamAiContextRepository->getByTeamId($user->getTeamId());
if ($teamAiContext?->getPrompt() !== null) {
$requestData['teamAiContext'] = $teamAiContext->getPrompt();
}
$this->historyService->appendToUserHistory(
$user,
HistoryService::ON_DEMAND_SERVICE,
$inputData['message']
);
$this->historyService->appendToEventHistory(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
type: HistoryService::EVENT_IN_PROGRESS_TYPE
);
$streamRequest = StreamRequest::onDemandLevel($requestData);
// Track active stream in Redis
$this->activeStreamsRepository->start(
$user->getId(),
$streamRequest->getId(),
ttlSeconds: $streamRequest->getConnectTimeout() + $streamRequest->getReadTimeout()
);
return $this->prophetService->getStreamedOrAbortedResponse(
streamRequest: $streamRequest,
onCompleted: function (
string $assistantResponse,
bool $clientAborted,
bool $hadError,
) use ($user, $streamRequest) {
// Remove in-progress event
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
// Save to history if backend completed successfully (even if client disconnected)
// Only skip saving if there was an actual error during streaming
if (! $hadError && ! empty(trim($assistantResponse))) {
$this->historyService->appendToSystemHistory(
$user,
HistoryService::ON_DEMAND_SERVICE,
$assistantResponse,
);
}
// Notify frontend if client disconnected (so it can update UI if still on page)
if ($clientAborted) {
$this->eventDispatcher->dispatch(
new AskAnythingAbortedChatCompleted(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
response: $assistantResponse,
)
);
}
// Remove active stream in Redis
$this->activeStreamsRepository->stop($user->getId(), $streamRequest->getId());
}
);
} catch (Exception $e) {
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
$this->logger->error('Failed to process Ask Anything request', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'question' => $request->input('message'),
]);
return new JsonResponse([
'error' => 'Failed to process your question',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
public function stopStream(Request $request): JsonResponse
{
$user = $request->user();
$this->activeStreamsRepository->stopByUser($user->getId());
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
return response()->json(['message' => 'Stream marked as stopped by user']);
}
}...
|
PhpStorm
|
faVsco.js – OnDemandV2Controller.php
|
NULL
|
11121
|
|
11122
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelp#1894 on.lY-18909-automated-renorts-ask-liminnvProject v© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComm© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironn(C) Mute@raanizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComi© RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.phpc resto eAcctvrvcimrroy© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg› D Formats› D Guards> D Helpersv UHttp> DJ AccessTokenProviderv D ControllersV DAPI> DAiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsights•nemes> MUserAutomatedRepov DV2© ActivityV2ControlAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareCont© ReportController.php© AutomatedReportsCommand.phpJiminnybeouecommana.ongAutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.php(e TrackProvidernstallled-vent.ono© CreateActivityLoggedEvent.php© UserPilotActivityListener.php• ActivityLogged.phpAutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php© AutomatedReportResult.php(©) AutomatedReport.phpclass Automacedкeрortskepo o:A15 X4 л6162/*** Retrieve all standard (non-Ask Jiminny)* @param string $sortColumnThe column* dodron scrino osorcuurection ine sor a* @return Collection<AutomatedReport>12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...}/*** Retrieve all Ask Liminny reports create* Oodrdll usernusenIne user* @param string $sortColumnIne cocumn* Oparam string $sortDirection The sort a* @return Collection<AutomatedReport>*/14 usagespublic function getAskJiminnyReportsByUserUser $user,string $sortColumn = 'created_at',string ssorcbirection = "desc"): Collection {...J= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]< console LUlconsole SlAGiNG© AskJiminnyReportActivityService.php© ActivitySearch.php© OnDemandV2Controller.php© HistoryService.php© FilterDetinitionCollection.php© Criteria.phpFind in Flles100+ matches in 26 + flles* File mask:*.phpsequenceIn Project ModuleDirectoryScopepublic function se SequenceNumber(?int #sequenceNumber): ActivityLogActivityLog.php 53$this->sequnceNumber = Ssequence Number;ActivityLog.php 55protected SsequenceNiConferences/ConferenceEvent.php 36* @param nulllint $sequenceNumberConferences/ConferenceEvent.php 48ouo c Tuncron constuct ActVt baciviv Stine ocontex= nul. entsequence ui conerences conterenceEvent.php 50Sthis->sequencesecuence vumberconterences/conterencecvent.ono o4oubllc tunctionence numbero. aintConferences/ConfererIceEvent.php 72return $this->sequConferences/Conferer1ceEvent.php 74protected $sequencConnectionEvent.php 30* @param int|null $seConnectionEvent.php 41->orderBy(sequAPI/ActivityController.php 1833LayoutManagementController.php 69ence_number=1 into Srequest->get to not apply default filters.Srequest->offsetSet(sequence_number', 1);sequence_number',sequence => 'required |integer|min:0|max:100',sequence' => $this->request-> input((sequence)),PartnerController.php 111er.php 112OnDemandV2Contkoller.php 40secroncreraconolerono 45SectionCriteriaController.ohp 50ActivityDurationRange.php app/Component/ActivitySearch/FilterDefinitionprivate function getLowerBoundary(): ?intif ($this->criteria->hasMinDurationO)) {retur uns-ocrrera-oetranuuraron.oreturn $this->criteria->isFirstRequest()? static::INITIAL_MIN: nult;private function getUpperBoundary(): ?intif ($this->criteria->hasMaxDurationO)) {return punis->eriterla->gechaxburactono.2 usages110093114115116117118119121private function buildSortedQuery(string $101recurn nuee./*** Get all active and enabled reports with104* @param string $frequency* dreturh coLcectzon<aucomacedкeрort>103105106107110811A9 Atprivate function getValue(): arrayreturn [$this->getLowerBoundary(), $this->getUpperBoundaryO];23 usages• Open results in new tabOpen in Find Window1124123public function getActiveReportsByFrequency(sSupport Daily • in 2h 47 mAAsk.liminnvRenortActivitvServicel.. De aults100% |45]Tue 14 Apr 12:13:55CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..Nowersrunthe esto vertvCommand dockenwo desker nxe dovkcrs/ko3k Automwa/wports/arman yRgportActzvityserväceTest-php --no-coverageloul nor oen ndlr Tler var wi nunbarusanCommand dockerdecke nte/sdocxes /Losk/RuPonape/arports/ASkJ1ninyReportActivityservicetest, php --no-coverageCould not open input file: /app/artisanCommand dockeroocker exec oocker vand ioash -c"cd /var/www&& php artisan testtests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php --no-coverage 2>&1"Could not open input file: artisan• docker exec docker lamp 1 bash -c "find / -name artisan -maxdeoth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan test•dests/unxe/servkces/K1osk/AusomatedReports/AskJ1maynyReportActiVatyServiceTest.php --no-coverage 2>&1"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixKoOL cause: bu1 Ldkequestraramst romsearch never set sequence number In the request params, so criterla::creater romkequest delaulted lt to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 Tilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupin → apolies user's derault croup as a tiltelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturee o.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' » 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.lest added: testbetacc1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest() === false.Oul .Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allExplain it to me again. Why is there issue with that? Where is it expected and why do l need to work with that. How is it used [EMAIL] | am trying to fetch the activities based on savedSearch<>CodeClaude Sonnet 4.6W Windsurf Teams95:67uir-oia 4 space...
|
NULL
|
NULL
|
NULL
|
11122
|
|
11123
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceT…Defaults
Run 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
Debug 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
activitySearch
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/2
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Exception;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Validation\ValidationException;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Component\AskAnything\HistoryService;
use Jiminny\Component\AskJiminnyAi\Exceptions\AskJiminnyException;
use Jiminny\Component\AskJiminnyAi\OnDemandLevel\Events\AskAnythingAbortedChatCompleted;
use Jiminny\Component\Prophet\ProphetService;
use Jiminny\Component\ProphetAi\StreamRequest;
use Jiminny\Events\EventDispatcher;
use Jiminny\Exceptions\ActivityProviderException;
use Jiminny\Http\Requests\API\V2\OnDemandAskAnythingRequest;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\User;
use Jiminny\Repositories\ActiveStreamsRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamAiContextRepository;
use Jiminny\Utils\FilterNormalizer;
use Jiminny\VO;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response as ResponseAlias;
use Symfony\Component\HttpFoundation\StreamedResponse;
class OnDemandV2Controller extends Controller
{
use AuthorizesRequests;
private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;
private const array FILTER_KEY_EXCLUDED_PARAMS = [
'sequence_number',
'page',
'per_page',
'limit',
'offset',
];
public function __construct(
private readonly ActivitySearch $activitySearch,
private readonly HistoryService $historyService,
private readonly ProphetService $prophetService,
private readonly TeamAiContextRepository $teamAiContextRepository,
private readonly ActiveStreamsRepository $activeStreamsRepository,
private readonly EventDispatcher $eventDispatcher,
private readonly LoggerInterface $logger,
) {
}
/**
* Check if the user's team has the ASK_JIMINNY_ON_ANYTHING feature enabled
*/
private function checkAskJiminnyOnAnythingFeature(User $user): ?JsonResponse
{
if (! $user->team->hasFeature(FeatureEnum::ASK_JIMINNY_ON_ANYTHING)) {
return new JsonResponse([
'message' => 'Feature ASK_JIMINNY_ON_ANYTHING is not enabled for this team',
], ResponseAlias::HTTP_FORBIDDEN);
}
return null;
}
/**
* Get top N activity IDs for Ask Jiminny feature based on filters
*
* @throws ValidationException
* @throws ActivityProviderException
*/
public function getContextForAskAnythingByFilter(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
$topCount = $request->input('top_count', self::DEFAULT_TOP_ACTIVITIES_COUNT);
try {
// Always fetch first N (top count) IDs
$onDemandActivitySearchCriteria = VO\Repository\OnDemandActivitySearch\Criteria::createFromRequest(
array_merge($request->all(), ['limit' => $topCount, 'page' => 1]),
$user->getTimezone()
);
$filterSet = $this->activitySearch->getOnDemandPageFilterSet($onDemandActivitySearchCriteria, $user);
$validationRules = $filterSet->getValidationRules()
->merge([
'exclude' => 'array',
'limit' => 'integer|min:1|max:' . $topCount,
])
->all();
$request->validate($validationRules);
$hasChangedFilters = $this->hasChangedContextFilter($request, $user);
$activityIds = $repository->onDemandSearchIdsOnly($user, $onDemandActivitySearchCriteria, $filterSet);
$this->historyService->storeContextIds($user, HistoryService::CONTEXT_IDS, $activityIds);
return new JsonResponse([
'count' => count($activityIds),
'changed_context_filters' => $hasChangedFilters,
], ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to fetch activity IDs for Ask Jiminny', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'ids' => [],
'error' => 'Failed to fetch activity IDs',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
private function hasChangedContextFilter(Request $request, User $user): bool
{
$filterKey = $this->makeFilterKey($request);
$result = $this->historyService->compareAndSetFilterKeyWithHistory($user, $filterKey);
if (! $result['changed']) {
return false;
}
if ($result['matches_previous']) {
return false;
}
$history = $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE);
// If no history or last event already matches, return false
if (empty($history) || $this->historyService->hasFilteredChangedEventAsLastMessage($history)) {
return false;
}
// Append event and notify
$this->historyService->appendToEventHistory(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
type: HistoryService::EVENT_FILTERS_CHANGED_TYPE
);
return true;
}
private function makeFilterKey(Request $request): string
{
$filters = $request->except(self::FILTER_KEY_EXCLUDED_PARAMS);
try {
$normalizedFilters = FilterNormalizer::normalizeFilters($filters);
$json = json_encode(
$normalizedFilters,
JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR
);
return hash('xxh3', $json);
} catch (\JsonException $e) {
$this->logger->error('Failed to encode filters', [
'error' => $e->getMessage(),
'filters_keys' => array_keys($filters),
]);
throw new AskJiminnyException('Failed to create filter key', 0, $e);
}
}
/**
* Get Ask Anything conversation history
*/
public function getAskAnythingHistory(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$history = $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE);
return new JsonResponse($history, ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to fetch Ask Anything history', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'history' => [],
'error' => 'Failed to fetch history',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* Delete Ask Anything conversation history
*/
public function deleteAskAnythingHistory(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$this->historyService->deleteHistory($user, HistoryService::ON_DEMAND_SERVICE);
return new JsonResponse([
'message' => 'History deleted successfully',
], ResponseAlias::HTTP_OK);
} catch (Exception $e) {
$this->logger->error('Failed to delete Ask Anything history', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse([
'error' => 'Failed to delete history',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* Ask Anything - submit question and get AI response
*/
public function askAnything(OnDemandAskAnythingRequest $request): StreamedResponse|JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->logger->info('AskAnything request received', [
'user_id' => $user->getId(),
'team_id' => $user->getTeamId(),
'request_hash' => md5($request->input('message') . $user->getId() . floor(time() / 60)),
'message_preview' => mb_substr($request->input('message'), 0, 50),
]);
if ($featureCheck = $this->checkAskJiminnyOnAnythingFeature($user)) {
return $featureCheck;
}
try {
$inputData = $request->validated();
$requestData = [
'userQuestion' => $inputData['message'],
'callIds' => $this->historyService->getContextIds($user, HistoryService::CONTEXT_IDS),
'history' => $this->historyService->getHistory($user, HistoryService::ON_DEMAND_SERVICE),
];
$teamAiContext = $this->teamAiContextRepository->getByTeamId($user->getTeamId());
if ($teamAiContext?->getPrompt() !== null) {
$requestData['teamAiContext'] = $teamAiContext->getPrompt();
}
$this->historyService->appendToUserHistory(
$user,
HistoryService::ON_DEMAND_SERVICE,
$inputData['message']
);
$this->historyService->appendToEventHistory(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
type: HistoryService::EVENT_IN_PROGRESS_TYPE
);
$streamRequest = StreamRequest::onDemandLevel($requestData);
// Track active stream in Redis
$this->activeStreamsRepository->start(
$user->getId(),
$streamRequest->getId(),
ttlSeconds: $streamRequest->getConnectTimeout() + $streamRequest->getReadTimeout()
);
return $this->prophetService->getStreamedOrAbortedResponse(
streamRequest: $streamRequest,
onCompleted: function (
string $assistantResponse,
bool $clientAborted,
bool $hadError,
) use ($user, $streamRequest) {
// Remove in-progress event
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
// Save to history if backend completed successfully (even if client disconnected)
// Only skip saving if there was an actual error during streaming
if (! $hadError && ! empty(trim($assistantResponse))) {
$this->historyService->appendToSystemHistory(
$user,
HistoryService::ON_DEMAND_SERVICE,
$assistantResponse,
);
}
// Notify frontend if client disconnected (so it can update UI if still on page)
if ($clientAborted) {
$this->eventDispatcher->dispatch(
new AskAnythingAbortedChatCompleted(
user: $user,
identifier: HistoryService::ON_DEMAND_SERVICE,
response: $assistantResponse,
)
);
}
// Remove active stream in Redis
$this->activeStreamsRepository->stop($user->getId(), $streamRequest->getId());
}
);
} catch (Exception $e) {
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
$this->logger->error('Failed to process Ask Anything request', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'question' => $request->input('message'),
]);
return new JsonResponse([
'error' => 'Failed to process your question',
], ResponseAlias::HTTP_INTERNAL_SERVER_ERROR);
}
}
public function stopStream(Request $request): JsonResponse
{
$user = $request->user();
$this->activeStreamsRepository->stopByUser($user->getId());
$this->historyService->removeLastEventMessageByType(
$user,
HistoryService::ON_DEMAND_SERVICE,
HistoryService::EVENT_IN_PROGRESS_TYPE
);
return response()->json(['message' => 'Stream marked as stopped by user']);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – OnDemandV2Controller.php
|
NULL
|
11123
|
|
11124
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aa> 0ladl= Support Daily • in 2h 47 m100% <47Tue 14 Apr 12:14:008Today ~...
|
NULL
|
NULL
|
NULL
|
11124
|
|
11125
|
PhpStormFileFV faVsco.jsProject vEditViewNavigateC PhpStormFileFV faVsco.jsProject vEditViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny k vToolsWindowHelp© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironnc Mureu canzercnanner© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComi© RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards> D Helpersv UHttp> @ AccessTokenProviderv D ControllersV DAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity› O Page> • Scorecards> D SettingsTeamInsightsnemes> MUserAutomatedRepov DV2© ActivityV2ControlAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareContTests passed: 1 (5 minutes ago)© ReportController.php© AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log< console EUi= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGiNG© AskJiminnyReportActivityService.phg© HistoryService.phpA console [PROD]© ActivitySearch.pnp© Criteria.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php x© AskJiminnyReportActivityServiceTest.php© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpactivitySearchCc W.*г, Y:(e TrackProvidernstallled-vent.ono<?php© CreateActivityLoggedEvent.php• ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C) AutomatedReport.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.phpdeclare(strict_types=1);nanesoace Jaluunny tte controllens Arr© AutomatedReportResult.php› use ...class Automacedкeрortskepo o:A15 X4 ^61931141151161171181191211124123v class OnDemandV2Controller extends Controller/**use AuthorizesRequests;* Retrieve all standard (non-Ask Jiminny) M* @param string $sortColumnThe column to* @param string $sortDirection The sort direprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;* @return Collection<AutomatedReport>*/12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...}private const array [ENV_SECRET],page'per_page','limit','offset',];/*** Retrieve all Ask Liminny reports created&* Oodrdll usernusenIne user Ynos* @param string $sortColumnThe column to* Oparam string $sortDirection The sort dire* @return Collection<AutomatedReport>public function __construct(private readonly ActivitySearch SactivitySearprivate readonly HistoryService ShistoryService,onvare reaconuy rrooneberuce sorooneroeruce.privace readonty leamaiconcexckeposicory eceamaicontexcкерosiсory.orivace readoncy Acclvescreamskepository saccivescrealskepositorvprivate readonly EventDispatcher $eventDispatcher,private readonly LoggerInterface $logger,*/14 usagespublic function getAskJiminnyReportsByUser(User $user,string $sortColumn = 'created_at',string ssorcbirection = "desc"): Collection {...J2 usagesprivate function buildSortedQuery(string $sor/*** Get all active and enabled reports with ac* @param string $frequency* dreturn cocLectron<Aucomacedкeрort»189v23 usagespublic function getActiveReportsByFrequency(s/**Support Daily • in 2h 47 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:14:00CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..Now let's run the test to verifvwA1X2 AVo desker nxe dovkcrs/ko3k Automwa/wports/arman yRgportActzvityserväceTest-php --no-coverageloul nor oen Indlr tler var w nunwarusan* Check if the usen's tean has the ASK.JTMTMNY.ON ANYTHING featune enabledprivate function checkAskJiminnyOnAnythingFeature(User $user): ?JsonResponse{…* Get top N activity IDs for Ask Jiminny feature based on filters* Ethrons VaridationException* Ethrous ActivityProvädenExceptzonCommand dockerdockerdesks/nxe/ ervke /nosk/Autonape/aeport/ASkJiminnyReportActivityServiceTest.php --n-coverageCould not open input file: /app/artisanCommand docker•cocker exec oocker vand ioash —d"cd /var/www&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker lamp 1 bash -c "find / -name artisan -maxdeoth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan testtests/unxt/servaces/KLosk/AusomatedReports/AskJimaynyReportActiVatyServiceTest.php --no-coverage 2›&1"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat sonRande → min duration = 1 Ttllters ouf o-second acrivitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filtelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the serviceretumee uFix: AskJiminnyReportActivityService.php:51—added 'sequence_number' » 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetAct:1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest() === false.Oul .Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allpubLic tunction gectontexcrorAskanychingbyrilter request prequest, ElasccAculvityrepositor/** @var User $user */Explain it to me again. Why is there issue with that? Where is it expected and why do l need to work with that. How is it used [EMAIL] | am trying to fetch the activities based on savedSearch< CodeClaude Sonnet 4.6W Windsurf Teams39:01.26 charsuir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11125
|
|
11126
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 46 m100% <47Tue 14 Apr 12:14:028Today ~...
|
NULL
|
NULL
|
NULL
|
11126
|
|
11127
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vProject vToolsWindowHelp© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComm© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironnc Mureu canzercnanner© PhpApm.php(C) PropagateCoachingFee© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.phpc resto eAcctvrvcimrroy© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards> D Helpersv UHttp> @ AccessTokenProviderv D ControllersV DAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsD Themes> MUserAutomatedRepov DV2C ACIMINVACOnTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareCont© ReportController.php© AutomatedReportsCommand.phpyJiminnyDeouecommana.ong= custom.log< console LUl= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGiNG© AskJiminnyReportActivityService.phgA console [PROD]© ActivitySearch.pnp© Criteria.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php >© HistoryService.php© AskJiminnyReportActivityServiceTest.phpCc W .*© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpTIT:(e) TrackProvidernstallled-vent.ono© CreateActivityLoggedEvent.php• ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C) AutomatedReport.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.php© AutomatedReportResult.phpactivitySearch2.10.25 Kovalik2.10.25Kovalik2.10.25Kovalik2.10.25Kovalik2.10.25Kovalik2.10.25KovalikKovalik2.10.25KOVallKI<?phpA1X2 A Vdeclare(strict_types=1);mnamesoace Jalmnny htte controulens Ar> use ...class Automacedкeрortskepo o:A15 X4 ^61931141151161171181191211124123L.lU.Lonovallk2.10.25novallk2.10.25Kovalik2.10.25Kovalik* Retrieve all standard (non-Ask Jiminny) Mclass OnDemandV2Controller extends Controlleruse AuthorizesRequests;* @param string $sortColumnThe column tc31.10.25 Ivanov* Oparam string $sortDirection The sort dire 2.10.25Kovalikprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;* @return Collection<AutomatedReport>12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...J19.12.25Tolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolovprivate const array FILTER_KEY_EXCLUDED_PARAMS| = [sequence_nunber'page','per_page','limit','offset',/*** Retrieve all Ask Liminny reports created2.10.25Kovalik2.10.25Kovalik* Oodrdll usernusenIne user Ynos2.10.25Kovalik* @param string $sortColumnThe column tc 2.10.25Kovalik* Oparam string $sortDirection The sort dire2.10.25KOVallKIzu.ll.zo Ivanov* @return Collection<AutomatedReport>8.10.25novallk*/2.10.25Kovalik14 usages2.10.25Kovalikpublic function getAskJiminnyReportsByUser(2.10.25KovalikUser $user,2.10.25Kovalikstring $sortColumn = 'created_at',17.10.25 Kovalikstring ssorcbirection = "desc"17.10.25 Kovalik): Collection {...}17.10.25 Kovalikpublic function __construct(private readonly ActivitySearch Saprivate readonly HistoryService ShistoryService,privace readonty rropnetservice spropnetservice,privace readonty leamaiconcexckepostcory preamaiconcexckeposicory.orivace readoncy Acclvescreamskepository saccivescrealskepositorvprivate readonly EventDispatcher $eventDispatcher,private readonly LoggerInterface $logger,) 1/*** Check if the user's team has the ASK_JIMINNY_ON_ANYTHING feature enabled*/Ordo KoVallk2 usagesprivate function buildSortedQuery(string $sor17.10.25 Kovalik2.10.25novallk2.10.25Kovalik* Get all active and enabled reports with ac2.10.25Kovalik2.10.25* @param string $frequency2.10.25Kovalik2.10.25Kovalikonvare Tuncron checkastunnvunanyum norectureluser "user, rusonkescons* Get top N activity IDs for Ask Jiminny feature based on filters* Othrows ValidationException* Othrows ActivityProviderException* dreturh coLcectzon<aucomacedкeрort>2.10.25Kovalik78 gPvpubuic tunccion gecconcexcrorAskanychingbyrilter kequest grequest, ElasulcA23 usagesZ.10.23Kovalikpublic function getActiveReportsByFrequency(s2.10.25Kovalik/** @var User $user */2.10.25KovalikTests passed: 1 (5 minutes ago), 0lablf Support Daily • in 2h 46 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:14:05CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..Now let's run the test to verifywo desker nxe dovkcrs/ko3k Automwa/wports/arman yRgportActzvityserväceTest-php --no-coverageloul nor oen ndlr Tler var wi nunbarusanCommand dockerdoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest. php --no-coverageCould not open input file: /app/artisanCommand dockeroocker exec oocker vand ioash -d"cd /var/www&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homee/jiminny && php artisan testtests/nxt/ drvicrs/K2psk/Autonat e"Reports/A3kiminnyReportActivatyserviceTest,php --no-coverage 2261"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazero fsequence number to disable first ._. 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:ActivityDurationRange → min_duration = 1 (filters out 0-second activities)ActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filtelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturned O.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' » 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetAct:1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest() === false.Öul ..Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allExplain it to me again. Why is there issue with that? Where is it expected and why do l need to work with that. How is it used [EMAIL] | am trying to fetch the activities based on savedSearch‹> CodeClaude Sonnet 4.6W Windsurf Teams39:01 26 charsuir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11127
|
|
11128
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 46 m100% <47Tue 14 Apr 12:14:068Today ~...
|
NULL
|
NULL
|
NULL
|
11128
|
|
11129
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vProject vToolsWindowHelp© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironnc Mureu canzercnanner© PhpApm.php(C) PropagateCoachingFee© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.phpc resto eAcctvrvcimrroy© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards> D Helpersv UHttp> @ AccessTokenProviderv D ControllersV DAPI> DAiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsD Themes> MUserAutomatedRepov DV2C ACIMINVACONTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Cor© PlaylistController.© PlaylistShareCont© ReportController.php© AutomatedReportsCommand.phpyJiminnyDeouecommana.ong= custom.log< console LUl= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGiNG© AskJiminnyReportActivityService.phgA console [PROD]© ActivitySearch.pnp© Criteria.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php >© HistoryService.php© AskJiminnyReportActivityServiceTest.php© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpCc W .*TIT:(e) TrackProvidernstallled-vent.ono© CreateActivityLoggedEvent.php• ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C) AutomatedReport.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.php© AutomatedReportResult.phpactivitySearch2.10.25 Kovalik2.10.25Kovalik2.10.25Kovalik2.10.25Kovalik2.10.25KovalikZ.10.23KovalikKovalik2.10.25KOVallKI<?phpA1X2 A Vdeclare(strict_types=1);mnamesoace Jalmnny htte controulens Ar>use ...class Automacedкeрortskepo o:A15 X4 ^61931141151161171181191211124123L.lU.Lonovallk2.10.25novallk2.10.25Kovalik2.10.25Kovalik* Retrieve all standard (non-Ask Jiminny) Mclass OnDemandV2Controller extends Controlleruse AuthorizesRequests;* @param string $sortColumnThe column tc31.10.25 Ivanov* Oparam string $sortDirection The sort dire 2.10.25Kovalikprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;* @return Collection<AutomatedReport>12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...J19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolovprivate const array FILTER_KEY JE&CLUDED_PARAMS = [sequence_nunber'page','per_page','limit','offset',/*** Retrieve all Ask Liminny reports created2.10.25Kovalik2.10.25Kovalik* Oodrdll usernusenIne user Ynos2.10.25Kovalik* @param string $sortColumnThe column tc 2.10.25Kovalik* Oparam string $sortDirection The sort dire2.10.25KOVallKIzu.ll.zo Ivanov* @return Collection<AutomatedReport>8.10.25novallk*/2.10.25Kovalik14 usages2.10.25Kovalikpublic function getAskJiminnyReportsByUser(2.10.25KovalikUser $user,2.10.25Kovalikstring $sortColumn = 'created_at',17.10.25 Kovalikstring ssorcbirection = "desc"17.10.25 Kovalik): Collection {...}17.10.25 Kovalikpublic function __construct(private readonly ActivitySearch Saprivate readonly HistoryService ShistoryService,privace readonty Propnetservice spropnetservice,privace readonty leamaiconcexckepostcory preamaiconcexckeposicory.private readonly ActiveStreamsRepository $activeStreamsRepository,private readonly EventDispatcher $eventDispatcher,private readonly LoggerInterface $logger,/*** Check if the user's team has the ASK_JIMINNY_ON_ANYTHING feature enabled*/Ordo KoVallk2 usagesprivate function buildSortedQuery(string $sor17.10.25 Kovalik2.10.25novallk2.10.25Kovalik* Get all active and enabled reports with ac2.10.25Kovalik2.10.25* @param string $frequency2.10.25Kovalik2.10.25onvare Tuncron checkastunnvunanyum norectureluser "user, rusonkescons* Get top N activity IDs for Ask Jiminny feature based on filters* Othrows ValidationException* Othrows ActivityProviderException* dreturh coLcectzon<aucomacedкeрort>2.10.25Kovalik78 (LPpubuic tunccion gecconcexcrorAskanychingbyrilter kequest grequest, ElasulcA23 usagesZ.10.23Kovalikpublic function getActiveReportsByFrequency(s2.10.25Kovalik/** @var User $user */2.10.25KovalikTests passed: 1 (5 minutes ago), 0lablf Support Daily • in 2h 46 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:14:07CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..Now let's run the test to verifvwo desker nxe dovkcrs/ko3k Automwa/wports/arman yRgportActzvityserväceTest-php --no-coverageloul nor oen ndlr Tler var wi nunbarusanCommand dockerdoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest.php --no-coverageCould not open input file: /app/artisanCommand dockeroocker exec oocker vand ioash -d"cd /var/www&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homee/jiminny && php artisan testtests/ext/ drvicrs/K2psk/Autonat eReports/A5KDiman ReportActivatyServiceTest,php --no-coverage 261"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 Tilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupin → apolies user's derault croup as a tiltelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturned O.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' » 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetAct.1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest() === false.Öul ..Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allExplain it to me again. Why is there issue with that? Where is it expected and why do l need to work with that. How is it used [EMAIL] | am trying to fetch the activities based on savedSearch‹> CodeClaude Sonnet 4.6winasun leams39:36uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11129
|
|
11130
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 46 m100% <47Tue 14 Apr 12:14:118Today ~...
|
NULL
|
NULL
|
NULL
|
11130
|
|
11131
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.js#11894 on JY-18909-automated-reports-ask-iminny K vProject vToolsWindowHelp© JiminnyDebugCommanc©JiminnySetEncryptedTo© JiminnyTokenInfoComm© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrocnvronnlc Mureu canzercnanner© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.phpc resto eAcctvrvcimrroy© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.php> D Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards› Helpersv UHttp> @ AccessTokenProviderv D ControllersV DAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsD Themes> MUserAutomatedRepov DV2C ACIMINVACOnTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Cor© PlaylistController.© PlaylistShareContNavicale lo the next occurrence© ReportController.php© AutomatedReportsCommand.phpyJiminnyDeouecommana.ong= custom.log< console EUi= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGiNG© AskJiminnyReportActivityService.phgA console [PROD]© ActivitySearch.pnp© Criteria.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php© HistoryService.php© AskJiminnyReportActivityServiceTest.phpFILIER KLY EXCLUDED PARAMS© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpcc w .*TAT :(e) TrackProvidernstallled-vent.ono© CreateActivityLoggedEvent.php• ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C) AutomatedReport.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.php© AutomatedReportResult.phpZ.10.23KovalikKovallik4.10.40Kovallk2.10.25Kovallk2.10.25Kovalik2.10.25Kovalik2.10.25Kovalik2.10.25Kovalik<?phpA1X2 A Vaeclare strict types-1namespace Jiminny\Http\Controllers\API\V2;› use ..class Automacedкeрortskepo o:A15 X4 A619311411511611711811912111241232.10.25Kovalik2.10.25KovalikZ.10.23Kovalik* Retrieve all standard (non-Ask Jiminny) M2.10.25Kovalikclass OnDemandV2Controller extends Controlleruse Authorizeskequests)* @param string $sortColumnThe column tc 31.10.25 Ivanov* Cparam string $sortDirection The sort dire 2.10.25 Kovalikprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;* @return Collection<AutomatedReport>12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...J19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 Nikolov19.12.25 NikolovN.L NKOOYprivate const array [ENV_SECRET],'per_page','limit','offset',/*** Retrieve all Ask Liminny reports created & 2.10.25Kovallk2.10.25Kovalik* Oodrdll usernusenThe user whos 2.10.25novallk* @param string $sortColumnThe column tc 2.10.25Kovalik* Oparam string $sortDirection The sort dire 2.10.25Kovalik20.11.25 Ivanov* @return Collection<AutomatedReport>8.10.25Kovalik2.10.252.10.25KovalikKovalikpublic function __construct(private readonly ActivitySearch $activitySearch,private readonly HistoryService ShistoryService,private readonly ProphetService $prophetService,private readonly TeamAiContextRepository $teamAiContextRepository,private readonly ActiveStreamsRepository $activeStreamsRepository,private readonly EventDispatcher $eventDispatcher,private readonly LoggerInterface $logger,*/14 usagespublic function getAskJiminnyReportsByUser(User $user,string $sortColumn = 'created_at'string ssorcbirection = "desc"): Collection {...}2.10.2517.10.25 Kovalik17.10.25 Kovalik17.10.25 Kovalik* Check if the user's team has the ASK_JIMINNY_ON_ANYTHING feature enabled2 usages17.10.25 Kovalikprivate function buildSortedQuery(string $sor 17.10.25 Kovalik2.10.25Kovalik/**2.10.25Kovalik* Get all active and enabled reports with ac 2.10.25KovalikKovalik* @param string $frequency2.10.25Kovallik4.10.40Kovallkprivate function checkAskJiminnyOnAnythingFeature(User $user): ?JsonRespons/*** Get top N activity IDs for Ask Jiminny feature based on filtersx ocnrows vecocronexcenronx ocnrows Acenurrovloerxceorron* dreturh coLcectzon<aucomacedкeрort>23 usages2.10.25 Kovalik78 Qg >public function getContextForAskAnythingByFilter(Request $request,ElasticA2.10.25Kovalikpublic function getActiveReportsByFrequency(s7.10.25 Kovalik, 0lablf Support Daily • in 2h 46 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:14:11CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..Now let's run the test to verifvmand dockenwo desker nxe dovkcrs/ko3k Automwa/wports/arman yRgportActzvityserväceTest-php --no-coveragecould not open input Tile: /var/www/ncml/artisanCommand dockerdockerdesks/nxe/ ervke /nosk/Autonape/aeport/ASkJiminnyReportActivityServiceTest.php --n-coverageCould not open input file: /app/artisarCommand dockeroocker exec oocker lano oash—e"cd /var/www&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homee/jiminny && php artisan testtests/nxt/sdrvicrs/K2psk/Autonat e"Reports/A3kiminnyReportActivatyserviceTest.php --no-coverage 2261PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsr get activityE tatt tnt hperiod date filters•der aculvicvids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 Tilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filtelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturned O.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria: : createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetAct:1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest() === false.Öul ..Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allExplain it to me again. Why is there issue with that? Where is it expected and why do l need to work with that. How is it used [EMAIL] | am trying to fetch the activities based on savedSearch‹ CodeClaude Sonnet 4.6W Windsurf Teams39:01.26 charsuir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11131
|
|
11132
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vProject v© ReportController.phpyJiminnyDeouecommana.ong© AutomatedReportsCommand.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.php, 0lablf Support Daily • in 2h 46 mA100% C•Tue 14 Apr 12:14:14AskJiminnyReportActivityServiceT…Defaults© JiminnyDebugCommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComm© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironn(C) Mute@raanizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.phpM Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards> D Helpersv UHttp> @ AccessTokenProviderv D ControllersV DAPI> DAiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeaminsightsnemes> MUserAutomatedRepov DV2C ACIMINVACOnTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Cor© PlaylistController.© PlaylistShareContTests passed: 1 (5 minutes ago)= custom.log< console LUl= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]console SlAGiNG© AskJiminnyReportActivityService.php© ActivitySearch.phpCascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D..OnDemandV2Controller.php x© HistoryService.php© FilterDefinitionCollection.php© Criteria.php© AskJiminnyReportActivityServiceTest.php© RequestGenerateAskJiminnyReportJobTest.phpFILIER KEY EXCLUDED PARAMScc w .*TIT:class OnDemandV2Controller extends ControllerA1X2^private function checkAskJiminnyOnAnythingFeature(User $user): ?Jsonkespons/**Now let's run the test to verifvw(e) TrackProvidernstallled-vent.ono© CreateActivityLoggedEvent.php© UserPilotActivityListener.php• ActivityLogged.php(C) AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php© AutomatedReportResult.php(C) AutomatedReport.phpclass Automacedкeрortskepo o:B15 V.4 ^2.10.25WlU.co novalik17.10.25 Kovalik2.10.25Kovalik2.10.25Kovalik2.10.25Kovalik2.10.25Kovalik2.10.25KovalikKovalik4.10.40Kovallk78 Qg >L.lU.LOnovallk 140desker nte/ sockces/k.osk/AuPowar/orts/artman yeportActivityserviceTest.php --no-coveragecould not open input Tile: /var/www/ncml/artisan6162931141151161171181191211124123* Retrieve all standard (non-Ask Jiminny) M7.10.25Kovalik 1277.10.25 Kovalik 157* @param string $sortColumnThe column tc* @param string $sortDirection The sort dire7.10.25Kovalik1587.10.25Kovalik* @return Collection<AutomatedReport>15919.12.25 Nikolov16012 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...}/**10.5Kovalik161Kovalik1621/.l0.zo Kovallk1637.10.25Kovalik1647.10.25Kovalik1657.10.25Kovalik1667.10.25Kovalik1677.10.25Kovalik168* Retrieve all Ask Liminny reports created7.10.25Kovalik169* Oodrdll usernusenIne user Ynos7.10.25Kovalik1707.10.25Kovalik* @param string $sortColumnThe column to171* Oparam string $sortDirection The sort dire10.5KovalikKovalikKovalik* @return Collection<AutomatedReport>7.10.25Kovallk*/9.10.2514 usages7.10.25novallkpublic function getAskJiminnyReportsByUser(7.10.25KovalikUser $user,7.10.25Kovalik179string $sortColumn = 'created_at',7.10.25180string ssorcbirection = "desc"): Collection {...J2.10.25Kovalik1812.10.25Kovalik1822 usagesZ.10.23Kovalik183private function buildSortedQuery(string $sorKovalik184k/**2.10.25KovallkZ0d2.10.25* Get all active and enabled reports with acKovallk2092.10.25novallkL102.10.25Kovalik* @param string $frequency2.10.25Kovalik212 (kg >* dreturh coLcectzon<aucomacedкeрort>23 usages2.10.25Kovalik2372.10.25Kovalik238public function getActiveReportsByFrequency(s2.10.25Kovalik2392.10.25Kovalik248* Get top N activity IDs for Ask Jiminny feature based on filters* Othrows ValidationException* lochrows AcuIvityProv1derexcept1onpublic function getContextForAskAnythingByFilter(Request $request, ElasticACommand dockeldoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest.php --no-coverageCould not open input file: /app/artisanCommand dockeroocker exec oocker lano oash—e"cd /var/www&& php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisanprivate function hasChangedContextFilter(Request $request, User $user): booCommand docken• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"prävate functzon makerziterkey (Request Srequest): stringCascade &e TIiminny/artisanCommand 281sfiltens = Srequest-Bexcept( keys: self::FIILTER KEYL EXCLUDED .PARAMSD ;iminny && php artisan testtests/ext/ drvicrs/K2psk/Autonat eReports/A5KDiman ReportActivatyServiceTest,php --no-coverage 261"$normalizedFilters = FilterNormalizer: :normalizeFilters($filters);$json = json_encode($normalizedFilters,flags: JSON_UNESCAPED_SLASHES/ JSON_UNESCAPED_UNICODE | JSON_THPASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestreturnsa fittersemoty when no results):get activityget activityE tatt tnt hperiod date filtersr get activityids bassess snazer fsequence number to disable first _ 0.025return hash(algo:"xxh3', $json);} catch (\JsonException $e) {$this->logger-›error('Failed to encode filters', ["error => se->gechessage),'filters_keys'→ array kevs oruters1):throw new AskJiminnyException( message: 'Failed to create filter key* Get Ask Anything conversation historyAll 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 Tilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filterThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturee o.Fix: AskJiminnyReportActivityService.php:51 - added 'sequence_number' = 1 to the Criteria:: createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetAct:/cylasPassesnonzerosequencenumberlobisablerarsckequestberaulus asserts that the captured uriterla oblect nas 1srirstRequest() === false.Öul ..public function getAskAnythingHistory(Request $request): JsonResponsef...}/*** Delete Ask Anything conversation history*/public function deleteAskAnythingHistory(Request $request): JsonResponse{../**Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept all* Ask Anything - submit question and get AI responseExplain it to me again. Why is there issue with that? Where is it expected and why do l need to work with that. How is it used [EMAIL] | am trying to fetch the activities based on savedSearch<>CodeClaude Sonnet 4.6Winasun leams160:09 2o charsuir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11132
|
|
11133
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 46 m100% <47Tue 14 Apr 12:14:168Today ~...
|
NULL
|
NULL
|
NULL
|
11133
|
|
11134
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 46 m100% <47Tue 14 Apr 12:14:228Today ~...
|
NULL
|
NULL
|
NULL
|
11134
|
|
11135
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vProject vToolsWindowHelp© JiminnyDebugCommanc©JiminnySetEncryptedTo© JiminnyTokenInfoComm© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironn(C) Mute@raanizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComiC RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.phpc resto eAcctvrvcimrroy© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.phpM Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards> D Helpersv UHttp> @ AccessTokenProviderv D ControllersV DAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsnemes> MUserAutomatedRepov DV2C ACIMINVACOnTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareCont© ReportController.phpC AutomatedReportsCommand.phpyJiminnyDeouecommana.ong= custom.log< console EUi= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]console SlAGiNG© AskJiminnyReportActivityService.php© ActivitySearch.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.phpOnDemandV2Controller.php x© HistoryService.php© FilterDefinitionCollection.php© AskJiminnyReportActivityServiceTest.php© RequestGenerateAskJiminnyReportJobTest.phpFILIER KLY EXCLUDED PARAMSx 5 cc w.*TIT:© Criteria.php(e) TrackProvidernstallled-vent.onoclass unbemandvzconcroller excenas controtlenA1X2 A Vonvare tuncron checkastmunnvunanyun norectureluser "user, rusonkesconser.© CreateActivityLoggedEvent.php• ActivityLogged.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php© AutomatedReportResult.php(C) AutomatedReport.php* Get top N activity IDs for Ask Jiminny feature based on filters* Othrows ValidationException* Othrows ActivityProviderExceptionclass Automacedкeрortskepo o:815 X4 л61629311411511611711811912111241232.10.25KovalikO.Lo KoVallk17.10.25 Kovalik4.10.40Kovallk2.10.25novallk2.10.25Kovalik2.10.252.10.25Kovalik2.10.25KovalikKovalik78 (gg>pubLic tunction gectoncexcrorAskanychingbyrilter request prequest, ElasclcactlvZ.10.23Kovalik* Retrieve all standard (non-Ask Jiminny) MKovallk* @param string $sortColumnThe column tc7.10.25Kovallk157* @param string $sortDirection The sort direprivate function hasChangedContextFilter(Request $request, User $user): boolf.7.10.25 Kovalik* @return Collection<AutomatedReport>7.10.25 Kovalik19.12.25 Nikolov16012 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...}7.10.25Kovalik7.10.25Kovalik17.10.25 Kovalik16310.5Kovalik7.10.25KovalikKovalik/**/.10.40Kovalik* Retrieve all Ask Liminny reports created & 7.10.25Kovallk7.10.25novallk169* Oodrdll usernusenThe user whos 7.10.25Kovalik170* @param string $sortColumnThe column tc 7.10.25Kovalik171* Oparam string $sortDirection The sort dire 7.10.25Kovalik7.10.25* @return Collection<AutomatedReport>7.10.257.10.259.10.25Kovalikprivate function makeFilterKey(Request $request): string$filters = $request->except( keys: self::FILTER_KEY_EXCLUDED_PARANtry f$normalizedFilters = FilterNormalizer::normaLikzeFilters($filters);$ison = json_encode(snormauizedrilters,flags: JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_return hash( algo:'xxh3', $json);7 catch (\JsonException $e) {$this->logger-›error('Failed to encode filters', ['error' => $e-›getMessage(),'filters_keys' = array_keys($filters),1):*/14 usagespublic function getAskJiminnyReportsByUser(User $user,string $sortColumn = 'created_at'string ssorcbirection = "desc"): Collection {...Jchrow new Askuiminnyexceptionl message: "ralled to create tilter key,7.10.25Kovalllk7.10.25Kovalik7.10.25novallk2.10.25Kovalik2.10.25Kovalik2.10.25Kovalik* Get Ask Anything conversation history*12 usagesprivate function buildSortedQuery(string $sor2.10.25 Kovalik/**2.10.25Kovalik208* Get all active and enabled reports with al2.10.25Kovalik2092.10.25Kovalik210* @param string $frequencyKovallikpublic function getAskAnythingHistory(Request Srequest): JsonResponsef...}* Delete Ask Anuthing conversation historu* dreturh coLcectzon<aucomacedкeрort>2.10.25Kovallk2.10.25Kovalik23 usages2.10.25 Kovalikpublic function getActiveReportsByFrequency(s [IP_ADDRESS].25Kovalik240public function deleteAskAnythingHistory(Request $request): JsonResponse{...}* Ask Anything - submit question and get AI responseTests passed: 1 (5 minutes ago), 0lablf Support Daily • in 2h 46 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:14:22CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D ...Now let's run the test to verifvwdesker nte/ sockces/k.o3k/AuPo/war/orts/artiman yReportActivityserviceTest.php --no-coverageloul nor oen ndlr Tler var wi nunbarusanCommand dockeldoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest.php --no-coverageCould not open input file: /app/artisarCommand dockerocker exec oocker lano oasn —Sid php artisan testtests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php --no-coverage 2>&1"Could not open input file: artisanCommand docken• docker exec docker lamp 1 bash -c "find / -name artisan -maxdenth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan testdests/unxe/servaces/Klosk/AusomatedReports/AskJ1maynyReportActiVatyserviceTest.php --no-coverage 2>&1"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 Tilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filtelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturned O.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' » 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetAct:/cylasPassesnonzerosequencenumberlobisablerarsckequestberaulus asserts that the captured uriterla oblect nas 1srirstRequest() === false.Öul ..Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allSynlain it to me again Whv is there iccue with that? Where is it aynected and why do nepd to work with that low is it liced [EMAIL] | am trying to fetch the activities based on savedSearch< CodeClaude Sonnet 4.6Winasun leams163.09uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11135
|
|
11136
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 46 m100% <47Tue 14 Apr 12:14:258Today ~...
|
NULL
|
NULL
|
NULL
|
11136
|
|
11137
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vProject vToolsWindowHelp© JiminnyDebugCommanc©JiminnySetEncryptedTo© JiminnyTokenInfoComm© MakeSlackLiveCoachins© ManageScimForTeam.p(c Malkoanchrorenvironn(C) Mute@raanizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComi© RecalculateDealRisksCa© RemoveDeleteMarkersC© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticsearch.phpc resto eAcctvrvcimrroy© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php©Tracklmported.php© UpdateActivitiesAverag© WhichWorkerlsWorkingr> D Scheduling© Kernel.phpM Contracts> M Domain> MDTO> M Emails› _ Enums> D Events> D Exceptions> DJ FFMpeg>D Formats› D Guards> D Helpersv UHttp> @ AccessTokenProviderv D ControllersV DAPI> D AiCallScoringAiReports> D Deallnsights> D Opportunity> C Page> • Scorecards> D SettingsTeamInsightsnemes> MUserAutomatedRepov DV2C ACIMINVACOnTOAskAnythingCont© AskJiminnyReporl© DealsV2Controlle:© OnDemandV2Con© PlaylistController.© PlaylistShareContTests passed: 1 (5 minutes ago)© ReportController.php© AutomatedReportsCommand.phpyJiminnyDeouecommana.ong= custom.log< console LUl= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]console SlAGiNG© AskJiminnyReportActivityService.php© ActivitySearch.php© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.php(e) TrackProvidernstallled-vent.onoOnDemandV2Controller.php x© HistoryService.php© FilterDefinitionCollection.php© Criteria.php© AskJiminnyReportActivityServiceTest.php© RequestGenerateAskJiminnyReportJobTest.phpFILIER KLY EXCLUDED PARAMScc w .*TIT:class unbemandvzconcroller excenas controtlenA1X2 A Vonvare tuncron checkastmunnvunanyun norectureluser "user, rusonkesconser.© CreateActivityLoggedEvent.php• ActivityLogged.php© UserPilotActivityListener.php(C) AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php© AutomatedReportResult.php(C) AutomatedReport.php* Get top N activity IDs for Ask Jiminny feature based on filters* Othrows ValidationException* Othrows ActivityProviderExceptionclass Automacedкeрortskepo o:815 X4 л61629311411511611711811912111241232.10.25KovalikU.do Kovallk17.10.25 Kovalik4.10.40Kovallk2.10.25novallk2.10.25Kovalik2.10.252.10.25Kovalik2.10.25KovalikKovalik78 (gg>pubLic tunction gectoncexcrorAskanychingbyrilter request prequest, ElasclcactlvZ.10.23Kovalik* Retrieve all standard (non-Ask Jiminny) MKovallk* @param string $sortColumnThe column tc7.10.25Kovallk157* @param string $sortDirection The sort direprivate function hasChangedContextFilter(Request $request, User $user): boolf.7.10.25 Kovalik* @return Collection<AutomatedReport>7.10.25 Kovalik19.12.25 Nikolov16012 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...}7.10.25Kovalik7.10.25Kovalik17.10.25 Kovalik16310.5Kovalik7.10.25KovalikKovalik/**/.10.40Kovalik* Retrieve all Ask Liminny reports created & 7.10.25Kovallk7.10.25novallk169* Oodrdll usernusenThe user whos 7.10.25Kovalik170* @param string $sortColumnThe column tc 7.10.25Kovalik171* Oparam string $sortDirection The sort dire 7.10.25Kovalik7.10.25* @return Collection<AutomatedReport>7.10.257.10.259.10.25Kovalikprivate function makeFilterKey(Request $request): string$filters = $request->except( keys: self::FILTER_KEY_EXCLUDED_PARANtryf$normalizedFilters = FilterNormalizer::normalizeFilters($filters);$ison = json_encode(snormauizedrilters,flags: JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_return hash( algo:'xxh3', $json);} catch (\JsonException $e) {$this->logger-›error('Failed to encode filters', ['error' => $e-›getMessage(),'filters_keys' = array_keys($filters),1):*/14 usagespublic function getAskJiminnyReportsByUser(User $user,string $sortColumn = 'created_at'string ssorcbirection = "desc"): Collection {...Jchrow new Askuiminnyexceptionl message: "ralled to create tilter key,7.10.25Kovalllk7.10.25Kovalik7.10.25novallk2.10.25Kovalik2.10.25Kovalik2.10.25Kovalik* Get Ask Anything conversation history2 usagesprivate function buildSortedQuery(string $sor2.10.25 Kovalik/**2.10.25Kovalik208* Get all active and enabled reports with al2.10.25Kovalik2092.10.25Kovalik210* @param string $frequencyKovallikpublic function getAskAnythingHistory(Request Srequest): JsonResponsef...}* Delete Ask Anuthing conversation historu* dreturh coLcectzon<aucomacedкeрort>2.10.25Kovallk2.10.2523 usages2.10.25 Kovalikpublic function getActiveReportsByFrequency(s [IP_ADDRESS].25Kovalik240public function deleteAskAnythingHistory(Request $request): JsonResponse{...}* Ask Anything - submit question and get AI response, 0lablf Support Daily • in 2h 46 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:14:25CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D ...Now let's run the test to verifvdesker nte/ sockces/k.o3k/AuPo/war/orts/artiman yReportActivityserviceTest.php --no-coverageloul nor oen ndlr Tler var wi nunbarusanCommand dockeldoster nxe ceockes /kJosk/AuPo/ape/a/ports/ASkJ1minyReportActivityServiceTest. php --no-coverageCould not open input file: /app/artisarCommand dockerocker exec oocker land ioash —eSid php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisanCommand docken• docker exec docker lamp 1 bash -c "find / -name artisan -maxdenth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan testdests/unxe/servzces/K1osk/ AusomatedReports/AskJ1maynyReportActiVatyServiceTest.php --no-coverage 2>61"PASSgetTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTestfiltersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:ActivityDurationRange → min_duration = 1 (filters out 0-second activities)ActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupIn → applies user's default group as a filtelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the servicereturned O.Fix: AskJiminnyReportActivityService.php:51—added 'sequence_number' » 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.Test added: testGetAct:/cylasPassesnonzerosequencenumberlobisablerarsckequestberaulus asserts that the captured uriterla oblect nas 1srirstRequest() === false.Öul ..Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allExplain it to me again. Why is there issue with that? Where is it expected and why do l need to work with that. How is it used [EMAIL] | am trying to fetch the activities based on savedSearch< CodeClaude Sonnet 4.6Winasun leams163.09uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11137
|
|
11138
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceT…Defaults
Run 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
Debug 'AskJiminnyReportActivityServiceTest.tes…uenceNumberToDisableFirstRequestDefaults'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityService
{
private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;
private const array DATE_FILTER_KEYS = [
ActivityActualDate::PARAM_START_DATE,
ActivityActualDate::PARAM_END_DATE,
ActivityUpdatedDate::PARAM_UPDATED_FROM,
ActivityUpdatedDate::PARAM_UPDATED_TO,
ClosingPeriodFilter::KEY_START_DATE,
ClosingPeriodFilter::KEY_END_DATE,
];
public function __construct(
private readonly ActivitySearch $activitySearch,
private readonly ElasticActivityRepository $elasticRepository,
private readonly LoggerInterface $logger,
) {
}
/**
* Fetch activity IDs for a saved search, passing its filters as-is to Criteria.
* Date filters stored on the saved search are excluded; if no other filters exist,
* no date constraint is applied — matching the behaviour of getContextForAskAnythingByFilter.
*
* @return string[] Activity IDs
*/
public function getActivityIdsForSavedSearch(
Search $savedSearch,
User $user,
): array {
$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);
$criteria = Criteria::createFromRequest(
array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1, 'sequence_number' => 1]),
$user->getTimezone()
);
$filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);
$activityIds = $this->elasticRepository->onDemandSearchIdsOnly($user, $criteria, $filterSet);
$this->logger->info('[AskJiminnyReport] Fetched activity IDs for saved search', [
'saved_search_id' => $savedSearch->getId(),
'user_id' => $user->getId(),
'activity_count' => count($activityIds),
]);
return $activityIds;
}
private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array
{
$params = [];
$arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);
foreach ($savedSearch->getFilters() as $filter) {
$key = $filter->getFilterProperty();
$value = $filter->getFilterValue();
if (in_array($key, self::DATE_FILTER_KEYS, true)) {
continue;
}
if (isset($params[$key])) {
$params[$key][] = $value;
} elseif (in_array($key, $arrayFilterKeys, true)) {
$params[$key] = [$value];
} else {
$params[$key] = $value;
}
}
return $params;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All...
|
PhpStorm
|
faVsco.js – AskJiminnyReportActivityService.php
|
NULL
|
11138
|
|
11139
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 46 m100% <47Tue 14 Apr 12:14:408Today ~...
|
PhpStorm
|
faVsco.js – AskJiminnyReportActivityService.php
|
NULL
|
11139
|
|
11140
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 46 m100% <47Tue 14 Apr 12:14:438Today ~...
|
NULL
|
NULL
|
NULL
|
11140
|
|
11141
|
PhpStormFileEditFV faVsco.jsProject vViewNavigateC PhpStormFileEditFV faVsco.jsProject vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelp© DeviceRepository.php© ElasticActivityRepository.pl© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.php(C) InboxEmailBatchRepositon)InboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.php© NotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php® PlaylistActivityRepository.fPlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.php©RoleChangeEventRepositol© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.TaskRepository.php© TeamAiContextRepository.TeamDomainsRepository.p©TeamInsightsRepository.pt©TeamRepository.php©ThemeRepository.php© TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.phC) TranscriptionSummarvRep© UserRepository.php© VocabularyRepository.pnp› D Rulesv D Services> [ Activity> C AjReports› D AvatarcalendarD ConferenceD Crm>MImport> MInternallv → Kioskv D AutomatedReports© ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsStTests passed: 1 (5 minutes ago)© ReportController.php© AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]< console LUlconsole SlAGiNGASkJiminnykeportAcuivilyservice.ono xACuiVilysearch.onp© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.php(e TrackProvidernstallled-vent.ono© OnDemandV2Controller.php© HistoryService.php© AskJiminnyReportActivityServiceTest.php© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpclass AskJiminnyReportActivityService1 usagepublic function __construct(private readonly ActivitySearch $activitySearch,private readonly ElasticActivityRepository $elasticRepository,private readonly LoggerInterface $logger,© Criteria.php© CreateActivityLoggedEvent.php© UserPilotActivityListener.php(©) ActivityLogged.phpAutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php© AutomatedReportResult.php(C) AutomatedReport.phpclass Automacedkeportskepo ofA15 V4 ^ V 3958114115116117118119120/*** Retrieve all standard (non-Ask Jiminny) m 43* @param string $sortColumnThe column to44* @param string $sortDirection The sort dire 45*orerurn coccectlonsauromcreoreooro12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...}/**53* Retrieve all Ask Liminny reports created f55* Oodrdll usernusenIne user Ynos* @param string $sortColumnThe column tc* Oparam string $sortDirection The sort dire* @return Collection<AutomatedReport>*/14 usagespublic function getAskJiminnyReportsByUser(User $user,string $sortColumn = 'created_at',string ssorcbirection = "desc"): Collection {...J2 usagesprivate function buildSortedQuery(string $sor]— 68-71/*** Get all active and enabled reports with al* @param string $frequency— 76* dreturn cocLectron<Aucomacedкeрort»23 usagespublic function getActiveReportsByFrequency(s/*** Fetch activity IDs for a saved search, passing its filters as-is to Criteria.* Date filters stored on the saved search are excluded; if no other filters exist,* no dace conscraint is applled - maucning che benavrour of geccontextroraskangchingbyrilte* Oreturn string[] Activity IDs14 usagespublic function getActivityIdsForSavedSearch(Search $savedSearch,User $user,): array €$requestParams = Sthis->buildRequestParamsFromSearch($savedSearch, Suser);=ururerta.:credcerronkedvestmargee ($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page'array_merge ($requestParams,['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page'$user->getTimezone()$filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);SactivityIds = $this->elasticRepository->onDemandSearchIds0nLy($user, $criteria, $filter$this->logger->info('lAskJiminnxReport] Fetched activity IDs for saved search'. L"saveo sealrcin 10→nsaveosearci-poeclou.'user id => Suser->getido'activity_count' => count($activityIds),1):return $activityIds;1 usageonivate tuncrion outuoreduestrarans-ronsearchsearch savedsearch. user "user): arrav$params = []:$arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);foreach ($savedSearch->getFilters() as $filter) {$key = $filter->getFilterPropertyO;$valve = $filter->getFilterValve();if (in_array($key,haystack: self::DATE_FILTER_KEYS,strict: true)) {continue;X Reject File 0* €, 0lablf Support Daily • in 2h 46 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:14:43Fixing Ask Jiminny Rep+D ...CascadeFixing ReportControllerAutomated Report MarNow let's run the test to verifvwtests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coverageloul nor oen ndlr Tler var ww nunbarusandoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest.php --no-coverageCould not open input file: /app/artisanCommand dockerocker exec oocker land 1oash -dSid php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker_lamp_1 bash -c "find / -name artisan -maxdepth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan testtests/unxt/servaces/KLosk/AusomatedReports/AskJimaynyReportActiVatyServiceTest.php --no-coverage 2›&1"PASSTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTesta fittersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 Tilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupin → apolies user's derault croup as a tiltelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the serviceretumee uFix: AskJiminnyReportActivityService.php:51—added 'sequence_number' → 1 to the Criteria: : createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.lest added: testbetacc/cylasPassesnonzerosequencenumberlobisablerarsckequestberaulus asserts that the captured uriterla oblect nas 1srirstRequest() === false.Oul .Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allconDemandv2Controller- i5p l aem trying to tetch the activities basedd on savedSearch. THe ids in on demand and int usea [EMAIL] | am trying to fetch the activities based on savedSearch. THe ids in on demand and in<> CodeClaude Sonnet 4.6W Windsurf Teams55:54uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11141
|
|
11142
|
+SlackEDHomeDMSActivityFilesLater..•More+FileEditV +SlackEDHomeDMSActivityFilesLater..•More+FileEditViewGoHistoryWindowHelpJiminny ...# Starredplatform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesAneliya Angelova, ...Steliyan GeorgievAdelina Petrova, Ili.... Adelina PetrovaO. Calea Dimitravo→Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan GeorgievMessagesAdd canvas+Nikolay Yankov 10:45 AMпиши кат оя рьннешLukas Kovalik 10:52 AMзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреNikolay Yankov 11:39 AMя рьнни пак LukasLukas Kovalik 11:43 AMготовосьщотоCompetitive pitches беше втория нали такаNikolay Yankov 12:04 PMДа, там има 14 активитита, защо не сработи този пьт?Lukas Kovalik 12:05 PMпак изглежда sequenceгледам гоMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aalal]Support Daily - in 2h 46 m100% <47Tue 14 Apr 12:14:458Today ~...
|
NULL
|
NULL
|
NULL
|
11142
|
|
11143
|
PhpStormFileEditFV faVsco.jsProject vViewNavigateC PhpStormFileEditFV faVsco.jsProject vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelp© DeviceRepository.php© ElasticActivityRepository.pl© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.php(C) InboxEmailBatchRepositon)InboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.php© NotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php® PlaylistActivityRepository.fPlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.php© RoleChangeEventRepositor© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.TaskRepository.php© TeamAiContextRepository.TeamDomainsRepository.p©TeamInsightsRepository.pt©TeamRepository.php©ThemeRepository.php© TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.phC) TranscriptionSummarvRep© UserRepository.php© VocabularyRepository.pnp› D Rulesv D Services> [ Activity> C AjReports› D AvatarcalendarD ConferenceD Crm>MImport> MInternallv → Kioskv D AutomatedReports© ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsStTests passed: 1 (5 minutes ago)© ReportController.php© AutomatedReportsCommand.phpJiminnybeouecommana.ong= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console [PROD]< console EUiconsole SlAGiNGAskJiminnykeportAcuivilyservice.ono xACuiVilysearch.onp© AutomatedReportsSendCommand.php© AddLayoutEntities.php© Team.php© AutomatedReportsRepository.php X© AutomatedReportsService.phpC CreateHeldActivityEvent.php(e TrackProvidernstallled-vent.ono© OnDemandV2Controller.php© HistoryService.php© AskJiminnyReportActivityServiceTest.php© FilterDefinitionCollection.php© RequestGenerateAskJiminnyReportJobTest.phpclass AskJiminnyReportActivityService1 usagepublic function __construct(private readonly ActivitySearch $activitySearch,private readonly ElasticActivityRepository $elasticRepository,private readonly LoggerInterface $logger,© Criteria.php© CreateActivityLoggedEvent.php© UserPilotActivityListener.php(©) ActivityLogged.phpAutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php© AutomatedReportResult.php(C) AutomatedReport.phpclass Automacedkeportskepo ofA15 V4 ^ V 3959114115116117118119120/*** Retrieve all standard (non-Ask Jiminny) m 43* @param string $sortColumnThe column to44* @param string $sortDirection The sort dire 45*orerur coccecconsauromareoreoor12 usagespublic function getAllStandardReports(string $sortColumn = 'created_at',string $sortDirection = 'desc'): Collection {...}/**53* Retrieve all Ask Liminny reports created f55* Oodrdll usernusenIne user Ynos* @param string $sortColumnThe column tc* Oparam string $sortDirection The sort dire* @return Collection<AutomatedReport>*/14 usagespublic function getAskJiminnyReportsByUser(User $user,string $sortColumn = 'created_at',string ssorcbirection = "desc"): Collection {...J2 usagesprivate function buildSortedQuery(string $sor]— 68-71/*** Get all active and enabled reports with al* @param string $frequency— 76* dreturn cocLectron<Aucomacedкeрort»23 usagespublic function getActiveReportsByFrequency(s/*** Fetch activity IDs for a saved search, passing its filters as-is to Criteria.* Date filters stored on the saved search are excluded; if no other filters exist,* no dace conscraint is applled - maucning che benavrour of geccontextroraskangchingbyrilte* @return string[] Activity IDsIpublic function getActivityIdsForSavedSearch(Search $savedSearch,User $user,): array €$requestParams = Sthis->buildRequestParamsFromSearch($savedSearch, Suser);=ururerta.:credcerronkedvestmargee ($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page'array_merge ($requestParams,['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page'$user->getTimezone()$filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);SactivityIds = $this->elasticRepository->onDemandSearchIds0nly($user, $criteria, $filter$this->logger->info('lAskJiminnxReport] Fetched activity IDs for saved search'. L"saveo sealrcin 10→nsaveosearci-poeclou.'user id => Suser->getido'activity_count' => count($activityIds),1):return $activityIds;1 usageonivate tuncrion outuoreduestrarans-ronsearchsearch savedsearch. user "user): arrav$params = []:$arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);foreach ($savedSearch->getFilters() as $filter) {$key = $filter->getFilterPropertyO;$valve = $filter->getFilterValve();if (in_array($key,haystack: self::DATE_FILTER_KEYS,strict: true)) {continue;X Reject File 0* €, 0lablf Support Daily • in 2h 46 mAAskJiminnyReportActivityServiceT…Defaults100% C•Tue 14 Apr 12:14:45CascadeFixing ReportControllerAutomated Report MarFixing Ask Jiminny Rep+D ..Now let's run the test to verifvtests/Unxt/Servsces/Kiosk/Automate/meports/AskJ1minnyreportActivätyserviceTest-php --no-coverageloul nor oen Indlr tler var w nunwarusandoster nxe ceockes /kJosk/AuP /ape/a/poras/A5kJ1minyReportActivityServiceTest. php --no-coverageCould not open input file: /app/artisanCommand dockerocker exec oocker land 1oash -dSid php artisan testLests unlu services Klosk Aucomaceakeporcs AskJiminnykeportAccivityservicelest.ono =-no-coverade D&l'Could not open input file: artisan• docker exec docker lamp 1 bash -c "find / -name artisan -maxdeoth 6 2>/dev/null | head -5"/home/jiminny/artisan"cd /homeiminny && php artisan testtests/unxt/servaces/KLosk/AusomatedReports/AskJimaynyReportActiVatyServiceTest.php --no-coverage 2›&1"PASSTests\Unit\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityServiceTesta fittersemoty when no resultsE tatt tnt hperiod date filtersids bassess snazer fsequence number to disable first _ 0.025All 8 tests pass. Here's a summary:Root Cause & FixRoot cause: buildRequestParamsFromSearch never set sequence number in the request params, so Criteria::createFromRequest defaulted it to 0Since isFirstRequest() returns true when sequenceNumber === 0, several implicit defaults were silently applied:Activitvourat ionRande → min duration = 1 Tilters ouf o-second activitiesiActivityRecorded → only_recorded = 1 (restricts to recorded activities only)OrganiserGroupin → apolies user's derault croup as a tiltelThe frontend URL you noticed uses sequence_number=4, which disables these defaults - explaining why the frontend returned activities but the serviceretumee uFix: AskJiminnyReportActivityService.php:51—added 'sequence_number' » 1 to the Criteria::createFromRequest merge, ensuring isFirstRequest() returns false and no implicit defaults are injected.lest added: testbetacc1cylasPassesNonzerosequencenumberloDisablerarsckequestberaulus assers that the captured uriteria ob ect nas 1srirstRequest() === false.Öul ..Vew allliItlle wiun changesvapp/Services/Kiosk/AutomatedReports/D AskJiminnyReportActivityService.php +1 -1Reject allAccept allSynlain it to me again Whv is there iccue with that? Where is it aynected and why do nepd to work with that low is it liced [EMAIL] | am trying to fetch the activities based on savedSearch. THe ids in on demand and in<> CodeClaude Sonnet 4.6W Windsurf Teams55:54uir-o( 4 spaces...
|
NULL
|
NULL
|
NULL
|
11143
|