|
75685
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceReportGen…tionTest
Run 'AutomatedReportsServiceReportGenerationTest'
Debug 'AutomatedReportsServiceReportGenerationTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
\Log
New Line
Match Case
Words
Regex
Replace History
Replace
PhpStormFileEditViewNavigateCodeLaravelRefactorRunToolsGitWindowHelpAPP (-zsh)APP (-zsh)• Daily - Platform - in 1 mA100% <8Fri 24 Apr 9:44:18181DOCKERDEV (docker)$82jiminny-worker-processing-2:jiminny-worker-processing-2_00:startedjiminny-worker-processing-3:jiminny-worker-processing-3_00:startedjiminny-worker-processing-4:jiminny-worker-processing-4_00:startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00:startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: started*3What's next:Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ csfixdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHP runtime: 8.3.30Running analysis on 7 cores with 10 files per process.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loadedconfig default from".php-cs-fixer.dist.php".5616/5616 [g100%screDaily - Platformin 1m - 09:45-10:05Ci Join Google MeetAPPFixed 0 of 5616 files in 40.863 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image + docker debug docker_lamp_1Learn more at https://docs.docker.com/go/debug-cli/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ I...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75685
|
|
75759
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
549
Previous Highlighted Error
Next Highlighted Error
[2026-04-24 06:42:16] local.NOTICE: Monitoring start {"correlation_id":"bb32ae99-fbf6-4e1a-9596-ead610ad3d8c","trace_id":"5ff3312f-33f1-4248-b7f6-f5ae7659959c"}
[2026-04-24 06:42:16] local.NOTICE: Monitoring end {"correlation_id":"bb32ae99-fbf6-4e1a-9596-ead610ad3d8c","trace_id":"5ff3312f-33f1-4248-b7f6-f5ae7659959c"}
[2026-04-24 06:42:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"a14a2757-0d5f-456b-9a18-0d41dd2f5801","trace_id":"27ff8ffa-0691-4f23-a3a5-eb15884688f2"}
[2026-04-24 06:42:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"a14a2757-0d5f-456b-9a18-0d41dd2f5801","trace_id":"27ff8ffa-0691-4f23-a3a5-eb15884688f2"}
[2026-04-24 06:42:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"22050899-721e-4c17-93ea-c3727257bed6","trace_id":"a2f9db9e-d4c7-4cad-9b18-0b139c47af8a"}
[2026-04-24 06:42:19] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22050899-721e-4c17-93ea-c3727257bed6","trace_id":"a2f9db9e-d4c7-4cad-9b18-0b139c47af8a"}
[2026-04-24 06:42:19] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22050899-721e-4c17-93ea-c3727257bed6","trace_id":"a2f9db9e-d4c7-4cad-9b18-0b139c47af8a"}
[2026-04-24 06:42:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"22050899-721e-4c17-93ea-c3727257bed6","trace_id":"a2f9db9e-d4c7-4cad-9b18-0b139c47af8a"}
[2026-04-24 06:42:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"9d4ed5f2-e60f-4c83-86f1-d29831ff7216","trace_id":"aab161de-f0e3-42e2-a5f1-a69b62e98638"}
[2026-04-24 06:42:20] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 06:40:00, 2026-04-24 06:42:00] {"correlation_id":"9d4ed5f2-e60f-4c83-86f1-d29831ff7216","trace_id":"aab161de-f0e3-42e2-a5f1-a69b62e98638"}
[2026-04-24 06:42:20] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 06:40:00, 2026-04-24 06:42:00] {"correlation_id":"9d4ed5f2-e60f-4c83-86f1-d29831ff7216","trace_id":"aab161de-f0e3-42e2-a5f1-a69b62e98638"}
[2026-04-24 06:42:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"9d4ed5f2-e60f-4c83-86f1-d29831ff7216","trace_id":"aab161de-f0e3-42e2-a5f1-a69b62e98638"}
[2026-04-24 06:42:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"99c49560-0cd9-449f-bbe6-20a0797de5a4","trace_id":"ecee0848-9356-4562-bb76-eda4e4567282"}
[2026-04-24 06:42:21] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"99c49560-0cd9-449f-bbe6-20a0797de5a4","trace_id":"ecee0848-9356-4562-bb76-eda4e4567282"}
[2026-04-24 06:42:21] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"99c49560-0cd9-449f-bbe6-20a0797de5a4","trace_id":"ecee0848-9356-4562-bb76-eda4e4567282"}
[2026-04-24 06:42:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"99c49560-0cd9-449f-bbe6-20a0797de5a4","trace_id":"ecee0848-9356-4562-bb76-eda4e4567282"}
[2026-04-24 06:42:21] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 1 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"45adac22-5f1a-4c7a-9dbd-4172ad4bc0f0","trace_id":"ecee0848-9356-4562-bb76-eda4e4567282"}
[2026-04-24 06:43:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"434fbb37-7ed3-46d9-93eb-c8b778594974","trace_id":"f145a699-21e2-4f45-a81b-c71f38d8dc24"}
[2026-04-24 06:43:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"434fbb37-7ed3-46d9-93eb-c8b778594974","trace_id":"f145a699-21e2-4f45-a81b-c71f38d8dc24"}
[2026-04-24 06:43:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"434fbb37-7ed3-46d9-93eb-c8b778594974","trace_id":"f145a699-21e2-4f45-a81b-c71f38d8dc24"}
[2026-04-24 06:43:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"9e8890c2-980a-4595-a6f9-58339e2fcdcd","trace_id":"dc32efad-fc30-4db1-8928-9993082fa829"}
[2026-04-24 06:43:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"9e8890c2-980a-4595-a6f9-58339e2fcdcd","trace_id":"dc32efad-fc30-4db1-8928-9993082fa829"}
[2026-04-24 06:43:17] local.NOTICE: Monitoring start {"correlation_id":"1d74bd76-416a-48fa-b462-021fea6bfc55","trace_id":"e3cde397-340b-4c3d-bf47-1a0a4b8fd991"}
[2026-04-24 06:43:17] local.NOTICE: Monitoring end {"correlation_id":"1d74bd76-416a-48fa-b462-021fea6bfc55","trace_id":"e3cde397-340b-4c3d-bf47-1a0a4b8fd991"}
[2026-04-24 06:43:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"a61ecc8a-2467-43b0-8f9a-99a9c900de26","trace_id":"8d05f268-4f59-49c3-a471-422e0c68b9b2"}
[2026-04-24 06:43:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"a61ecc8a-2467-43b0-8f9a-99a9c900de26","trace_id":"8d05f268-4f59-49c3-a471-422e0c68b9b2"}
[2026-04-24 06:43:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:31] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:31] local.INFO: Processing email batch 98433 for inbox 212 {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.WARNING: An error occurred, which caused fetch emails to stop. {"message":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.","code":0,"inbox_id":212} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: No email messages were fetched {"batch_id":98433} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"batch_id":98433} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":1} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:38] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ad499ccb-446a-4a64-9334-5896d961e3f2","trace_id":"029630a7-2b46-4f93-82e3-c2f6591c2775"}
[2026-04-24 06:43:38] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:38] local.NOTICE: Calendar sync start {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:38] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ad499ccb-446a-4a64-9334-5896d961e3f2","trace_id":"029630a7-2b46-4f93-82e3-c2f6591c2775"}
[2026-04-24 06:43:38] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:38] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:38] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1368,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1368,"provider":"google","refreshToken":"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1365,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1365,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1365,"provider":"google","refreshToken":"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1364,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1364,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1364,"provider":"google","refreshToken":"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1370,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1370,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1370,"provider":"office","refreshToken":"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4893e180-87c3-4c3d-85af-cc56e5fb5a00 Correlation ID: 52e51e36-d9d2-4fe4-ab5f-03bd47640c27 Timestamp: 2026-04-24 06:43:42Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-04-24 06:43:42Z\",\"trace_id\":\"4893e180-87c3-4c3d-85af-cc56e5fb5a00\",\"correlation_id\":\"52e51e36-d9d2-4fe4-ab5f-03bd47640c27\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1202,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1202,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1202,"provider":"office","refreshToken":"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 00ac1e48-93b0-4d54-bd97-7755eee84500 Correlation ID: d812b160-0ad7-4a6a-bc99-03c10b29db3f Timestamp: 2026-04-24 06:43:43Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-04-24 06:43:43Z\",\"trace_id\":\"00ac1e48-93b0-4d54-bd97-7755eee84500\",\"correlation_id\":\"d812b160-0ad7-4a6a-bc99-03c10b29db3f\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1502,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1502,"provider":"google","refreshToken":"d417c92ebaa137295a04675f715d0511ae8acac9d779b102eac50d6300116d3e","state":"connected"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1502,"provider":"google","state":"connected"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: Calendar sync job dispatched {"calendar_id":501} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1300,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1300,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1300,"provider":"google","refreshToken":"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1409,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1409,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1409,"provider":"google","refreshToken":"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1352,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1352,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1352,"provider":"google","refreshToken":"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1296,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1296,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1296,"provider":"office","refreshToken":"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"534bb3d1-3867-4f68-b92e-4a259c48299a","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:45] local.ERROR: [SocialAccountServi...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75759
|
|
75760
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
549
Previous Highlighted Error
Next Highlighted Error
[2026-04-24 06:42:16] local.NOTICE: Monitoring start {"correlation_id":"bb32ae99-fbf6-4e1a-9596-ead610ad3d8c","trace_id":"5ff3312f-33f1-4248-b7f6-f5ae7659959c"}
[2026-04-24 06:42:16] local.NOTICE: Monitoring end {"correlation_id":"bb32ae99-fbf6-4e1a-9596-ead610ad3d8c","trace_id":"5ff3312f-33f1-4248-b7f6-f5ae7659959c"}
[2026-04-24 06:42:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"a14a2757-0d5f-456b-9a18-0d41dd2f5801","trace_id":"27ff8ffa-0691-4f23-a3a5-eb15884688f2"}
[2026-04-24 06:42:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"a14a2757-0d5f-456b-9a18-0d41dd2f5801","trace_id":"27ff8ffa-0691-4f23-a3a5-eb15884688f2"}
[2026-04-24 06:42:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"22050899-721e-4c17-93ea-c3727257bed6","trace_id":"a2f9db9e-d4c7-4cad-9b18-0b139c47af8a"}
[2026-04-24 06:42:19] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"22050899-721e-4c17-93ea-c3727257bed6","trace_id":"a2f9db9e-d4c7-4cad-9b18-0b139c47af8a"}
[2026-04-24 06:42:19] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"22050899-721e-4c17-93ea-c3727257bed6","trace_id":"a2f9db9e-d4c7-4cad-9b18-0b139c47af8a"}
[2026-04-24 06:42:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"22050899-721e-4c17-93ea-c3727257bed6","trace_id":"a2f9db9e-d4c7-4cad-9b18-0b139c47af8a"}
[2026-04-24 06:42:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"9d4ed5f2-e60f-4c83-86f1-d29831ff7216","trace_id":"aab161de-f0e3-42e2-a5f1-a69b62e98638"}
[2026-04-24 06:42:20] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 06:40:00, 2026-04-24 06:42:00] {"correlation_id":"9d4ed5f2-e60f-4c83-86f1-d29831ff7216","trace_id":"aab161de-f0e3-42e2-a5f1-a69b62e98638"}
[2026-04-24 06:42:20] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 06:40:00, 2026-04-24 06:42:00] {"correlation_id":"9d4ed5f2-e60f-4c83-86f1-d29831ff7216","trace_id":"aab161de-f0e3-42e2-a5f1-a69b62e98638"}
[2026-04-24 06:42:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"9d4ed5f2-e60f-4c83-86f1-d29831ff7216","trace_id":"aab161de-f0e3-42e2-a5f1-a69b62e98638"}
[2026-04-24 06:42:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"99c49560-0cd9-449f-bbe6-20a0797de5a4","trace_id":"ecee0848-9356-4562-bb76-eda4e4567282"}
[2026-04-24 06:42:21] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"99c49560-0cd9-449f-bbe6-20a0797de5a4","trace_id":"ecee0848-9356-4562-bb76-eda4e4567282"}
[2026-04-24 06:42:21] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"99c49560-0cd9-449f-bbe6-20a0797de5a4","trace_id":"ecee0848-9356-4562-bb76-eda4e4567282"}
[2026-04-24 06:42:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"99c49560-0cd9-449f-bbe6-20a0797de5a4","trace_id":"ecee0848-9356-4562-bb76-eda4e4567282"}
[2026-04-24 06:42:21] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 2 inboxes and created 1 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"45adac22-5f1a-4c7a-9dbd-4172ad4bc0f0","trace_id":"ecee0848-9356-4562-bb76-eda4e4567282"}
[2026-04-24 06:43:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"434fbb37-7ed3-46d9-93eb-c8b778594974","trace_id":"f145a699-21e2-4f45-a81b-c71f38d8dc24"}
[2026-04-24 06:43:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"434fbb37-7ed3-46d9-93eb-c8b778594974","trace_id":"f145a699-21e2-4f45-a81b-c71f38d8dc24"}
[2026-04-24 06:43:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"434fbb37-7ed3-46d9-93eb-c8b778594974","trace_id":"f145a699-21e2-4f45-a81b-c71f38d8dc24"}
[2026-04-24 06:43:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"9e8890c2-980a-4595-a6f9-58339e2fcdcd","trace_id":"dc32efad-fc30-4db1-8928-9993082fa829"}
[2026-04-24 06:43:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"9e8890c2-980a-4595-a6f9-58339e2fcdcd","trace_id":"dc32efad-fc30-4db1-8928-9993082fa829"}
[2026-04-24 06:43:17] local.NOTICE: Monitoring start {"correlation_id":"1d74bd76-416a-48fa-b462-021fea6bfc55","trace_id":"e3cde397-340b-4c3d-bf47-1a0a4b8fd991"}
[2026-04-24 06:43:17] local.NOTICE: Monitoring end {"correlation_id":"1d74bd76-416a-48fa-b462-021fea6bfc55","trace_id":"e3cde397-340b-4c3d-bf47-1a0a4b8fd991"}
[2026-04-24 06:43:23] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"a61ecc8a-2467-43b0-8f9a-99a9c900de26","trace_id":"8d05f268-4f59-49c3-a471-422e0c68b9b2"}
[2026-04-24 06:43:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"a61ecc8a-2467-43b0-8f9a-99a9c900de26","trace_id":"8d05f268-4f59-49c3-a471-422e0c68b9b2"}
[2026-04-24 06:43:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:31] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:31] local.INFO: Processing email batch 98433 for inbox 212 {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.WARNING: An error occurred, which caused fetch emails to stop. {"message":"Your Salesforce account has become disconnected. Please login to Jiminny to reconnect.","code":0,"inbox_id":212} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: No email messages were fetched {"batch_id":98433} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"batch_id":98433} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":1} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:32] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cba3b1f5-c69b-4e42-92d5-663be8911178","trace_id":"15657c68-8db9-4307-a355-5fdd30c51d98"}
[2026-04-24 06:43:38] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ad499ccb-446a-4a64-9334-5896d961e3f2","trace_id":"029630a7-2b46-4f93-82e3-c2f6591c2775"}
[2026-04-24 06:43:38] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:38] local.NOTICE: Calendar sync start {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:38] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ad499ccb-446a-4a64-9334-5896d961e3f2","trace_id":"029630a7-2b46-4f93-82e3-c2f6591c2775"}
[2026-04-24 06:43:38] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:38] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:38] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1368,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1368,"provider":"google","refreshToken":"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1365,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1365,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1365,"provider":"google","refreshToken":"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1364,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1364,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1364,"provider":"google","refreshToken":"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1370,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1370,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:41] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1370,"provider":"office","refreshToken":"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 4893e180-87c3-4c3d-85af-cc56e5fb5a00 Correlation ID: 52e51e36-d9d2-4fe4-ab5f-03bd47640c27 Timestamp: 2026-04-24 06:43:42Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-04-24 06:43:42Z\",\"trace_id\":\"4893e180-87c3-4c3d-85af-cc56e5fb5a00\",\"correlation_id\":\"52e51e36-d9d2-4fe4-ab5f-03bd47640c27\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1202,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1202,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1202,"provider":"office","refreshToken":"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:42] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 00ac1e48-93b0-4d54-bd97-7755eee84500 Correlation ID: d812b160-0ad7-4a6a-bc99-03c10b29db3f Timestamp: 2026-04-24 06:43:43Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-04-24 06:43:43Z\",\"trace_id\":\"00ac1e48-93b0-4d54-bd97-7755eee84500\",\"correlation_id\":\"d812b160-0ad7-4a6a-bc99-03c10b29db3f\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1502,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1502,"provider":"google","refreshToken":"d417c92ebaa137295a04675f715d0511ae8acac9d779b102eac50d6300116d3e","state":"connected"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:43] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1502,"provider":"google","state":"connected"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: Calendar sync job dispatched {"calendar_id":501} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1300,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1300,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1300,"provider":"google","refreshToken":"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1409,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1409,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1409,"provider":"google","refreshToken":"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1352,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1352,"provider":"google"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1352,"provider":"google","refreshToken":"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1296,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1296,"provider":"office"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:44] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1296,"provider":"office","refreshToken":"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5","state":"full-refresh"} {"correlation_id":"dc3cc4cf-3ccc-433f-b7ea-5260721a0ba8","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"534bb3d1-3867-4f68-b92e-4a259c48299a","trace_id":"e36badce-b547-4f00-8a12-de5b4396fa22"}
[2026-04-24 06:43:45] local.ERROR: [SocialAccountServi...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75760
|
|
75763
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75763
|
|
75764
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75764
|
|
75765
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75765
|
|
75766
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75766
|
|
75769
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75769
|
|
75770
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75770
|
|
75771
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
20
Previous Highlighted Error
Next Highlighted Error
[2026-04-24 06:48:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"56544ba5-de8a-4826-9181-c1f98b641c2d","trace_id":"0d23b863-4f54-4038-a81e-1e6b14b68993"}
[2026-04-24 06:48:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"56544ba5-de8a-4826-9181-c1f98b641c2d","trace_id":"0d23b863-4f54-4038-a81e-1e6b14b68993"}
[2026-04-24 06:48:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"56544ba5-de8a-4826-9181-c1f98b641c2d","trace_id":"0d23b863-4f54-4038-a81e-1e6b14b68993"}
[2026-04-24 06:48:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"57b8f721-5f9c-4555-b09f-7b30b6bb53bd","trace_id":"ac32f526-cd51-4a22-9072-6555fd1d93ce"}
[2026-04-24 06:48:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"57b8f721-5f9c-4555-b09f-7b30b6bb53bd","trace_id":"ac32f526-cd51-4a22-9072-6555fd1d93ce"}
[2026-04-24 06:48:07] local.NOTICE: Monitoring start {"correlation_id":"0b7c3dc7-b6c4-472c-ae7d-ecef8343b516","trace_id":"4f7f4930-fb6f-4bba-aecd-eb890ad2b5ee"}
[2026-04-24 06:48:07] local.NOTICE: Monitoring end {"correlation_id":"0b7c3dc7-b6c4-472c-ae7d-ecef8343b516","trace_id":"4f7f4930-fb6f-4bba-aecd-eb890ad2b5ee"}
[2026-04-24 06:48:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"84127380-7279-44d6-862c-15b2b5cba112","trace_id":"c6aa7cf2-9521-4a71-b23b-cf1fa98ea707"}
[2026-04-24 06:48:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"84127380-7279-44d6-862c-15b2b5cba112","trace_id":"c6aa7cf2-9521-4a71-b23b-cf1fa98ea707"}
[2026-04-24 06:48:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:11] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:11] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:12] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 06:46:00, 2026-04-24 06:48:00] {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:12] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 06:46:00, 2026-04-24 06:48:00] {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f7242472-e47d-4264-b55d-829ff8be2c5b","trace_id":"5eebd870-6b02-484c-b745-10409d1fe0c5"}
[2026-04-24 06:48:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f7242472-e47d-4264-b55d-829ff8be2c5b","trace_id":"5eebd870-6b02-484c-b745-10409d1fe0c5"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75771
|
|
75772
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
20
Previous Highlighted Error
Next Highlighted Error
[2026-04-24 06:48:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"56544ba5-de8a-4826-9181-c1f98b641c2d","trace_id":"0d23b863-4f54-4038-a81e-1e6b14b68993"}
[2026-04-24 06:48:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"56544ba5-de8a-4826-9181-c1f98b641c2d","trace_id":"0d23b863-4f54-4038-a81e-1e6b14b68993"}
[2026-04-24 06:48:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"56544ba5-de8a-4826-9181-c1f98b641c2d","trace_id":"0d23b863-4f54-4038-a81e-1e6b14b68993"}
[2026-04-24 06:48:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"57b8f721-5f9c-4555-b09f-7b30b6bb53bd","trace_id":"ac32f526-cd51-4a22-9072-6555fd1d93ce"}
[2026-04-24 06:48:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"57b8f721-5f9c-4555-b09f-7b30b6bb53bd","trace_id":"ac32f526-cd51-4a22-9072-6555fd1d93ce"}
[2026-04-24 06:48:07] local.NOTICE: Monitoring start {"correlation_id":"0b7c3dc7-b6c4-472c-ae7d-ecef8343b516","trace_id":"4f7f4930-fb6f-4bba-aecd-eb890ad2b5ee"}
[2026-04-24 06:48:07] local.NOTICE: Monitoring end {"correlation_id":"0b7c3dc7-b6c4-472c-ae7d-ecef8343b516","trace_id":"4f7f4930-fb6f-4bba-aecd-eb890ad2b5ee"}
[2026-04-24 06:48:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"84127380-7279-44d6-862c-15b2b5cba112","trace_id":"c6aa7cf2-9521-4a71-b23b-cf1fa98ea707"}
[2026-04-24 06:48:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"84127380-7279-44d6-862c-15b2b5cba112","trace_id":"c6aa7cf2-9521-4a71-b23b-cf1fa98ea707"}
[2026-04-24 06:48:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:11] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:11] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:12] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 06:46:00, 2026-04-24 06:48:00] {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:12] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 06:46:00, 2026-04-24 06:48:00] {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f7242472-e47d-4264-b55d-829ff8be2c5b","trace_id":"5eebd870-6b02-484c-b745-10409d1fe0c5"}
[2026-04-24 06:48:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f7242472-e47d-4264-b55d-829ff8be2c5b","trace_id":"5eebd870-6b02-484c-b745-10409d1fe0c5"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
75772
|
|
77258
|
Project: faVsco.js, menu
JY-20738-debug-AJ-trackin Project: faVsco.js, menu
JY-20738-debug-AJ-tracking-UP, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
115
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-04-24 06:48:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"56544ba5-de8a-4826-9181-c1f98b641c2d","trace_id":"0d23b863-4f54-4038-a81e-1e6b14b68993"}
[2026-04-24 06:48:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"56544ba5-de8a-4826-9181-c1f98b641c2d","trace_id":"0d23b863-4f54-4038-a81e-1e6b14b68993"}
[2026-04-24 06:48:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"56544ba5-de8a-4826-9181-c1f98b641c2d","trace_id":"0d23b863-4f54-4038-a81e-1e6b14b68993"}
[2026-04-24 06:48:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"57b8f721-5f9c-4555-b09f-7b30b6bb53bd","trace_id":"ac32f526-cd51-4a22-9072-6555fd1d93ce"}
[2026-04-24 06:48:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"57b8f721-5f9c-4555-b09f-7b30b6bb53bd","trace_id":"ac32f526-cd51-4a22-9072-6555fd1d93ce"}
[2026-04-24 06:48:07] local.NOTICE: Monitoring start {"correlation_id":"0b7c3dc7-b6c4-472c-ae7d-ecef8343b516","trace_id":"4f7f4930-fb6f-4bba-aecd-eb890ad2b5ee"}
[2026-04-24 06:48:07] local.NOTICE: Monitoring end {"correlation_id":"0b7c3dc7-b6c4-472c-ae7d-ecef8343b516","trace_id":"4f7f4930-fb6f-4bba-aecd-eb890ad2b5ee"}
[2026-04-24 06:48:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"84127380-7279-44d6-862c-15b2b5cba112","trace_id":"c6aa7cf2-9521-4a71-b23b-cf1fa98ea707"}
[2026-04-24 06:48:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"84127380-7279-44d6-862c-15b2b5cba112","trace_id":"c6aa7cf2-9521-4a71-b23b-cf1fa98ea707"}
[2026-04-24 06:48:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:11] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:11] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"48ee9d4b-28ae-434f-98c1-370869a770f3","trace_id":"24b268f4-e271-446f-9128-d2c93e688267"}
[2026-04-24 06:48:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:12] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 06:46:00, 2026-04-24 06:48:00] {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:12] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 06:46:00, 2026-04-24 06:48:00] {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"9f6b9c79-fd3b-49e7-9569-92581a34675d","trace_id":"c29e3d24-0809-4cec-a901-51862bce4478"}
[2026-04-24 06:48:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f7242472-e47d-4264-b55d-829ff8be2c5b","trace_id":"5eebd870-6b02-484c-b745-10409d1fe0c5"}
[2026-04-24 06:48:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f7242472-e47d-4264-b55d-829ff8be2c5b","trace_id":"5eebd870-6b02-484c-b745-10409d1fe0c5"}
[2026-04-24 06:49:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"aff99469-890e-4cba-8180-94bde4d3534c","trace_id":"790b556a-cbe9-45e9-810a-17bf7c990890"}
[2026-04-24 06:49:06] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"aff99469-890e-4cba-8180-94bde4d3534c","trace_id":"790b556a-cbe9-45e9-810a-17bf7c990890"}
[2026-04-24 06:49:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"aff99469-890e-4cba-8180-94bde4d3534c","trace_id":"790b556a-cbe9-45e9-810a-17bf7c990890"}
[2026-04-24 06:49:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"a3c6d64e-f5b0-4121-b91b-fbfe9af7099a","trace_id":"11a3f95e-d63b-4cb5-aba4-b9e58ff8934e"}
[2026-04-24 06:49:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"a3c6d64e-f5b0-4121-b91b-fbfe9af7099a","trace_id":"11a3f95e-d63b-4cb5-aba4-b9e58ff8934e"}
[2026-04-24 06:49:09] local.NOTICE: Monitoring start {"correlation_id":"f4d7c718-edf2-483e-ad2b-9169874c562e","trace_id":"f0359ff4-fa71-4aac-9608-628afec9169c"}
[2026-04-24 06:49:09] local.NOTICE: Monitoring end {"correlation_id":"f4d7c718-edf2-483e-ad2b-9169874c562e","trace_id":"f0359ff4-fa71-4aac-9608-628afec9169c"}
[2026-04-24 06:49:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"e223f369-299d-468b-b8ce-dc7baba9d1b7","trace_id":"f752f93d-7539-47e9-a382-2a3c05e3f5f5"}
[2026-04-24 06:49:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"e223f369-299d-468b-b8ce-dc7baba9d1b7","trace_id":"f752f93d-7539-47e9-a382-2a3c05e3f5f5"}
[2026-04-24 06:49:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"1aea0c69-a12a-4dea-9086-5025cc2acf9a","trace_id":"88150f1a-58ff-4630-b3cc-d046385ce8e6"}
[2026-04-24 06:49:13] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"1aea0c69-a12a-4dea-9086-5025cc2acf9a","trace_id":"88150f1a-58ff-4630-b3cc-d046385ce8e6"}
[2026-04-24 06:49:13] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"1aea0c69-a12a-4dea-9086-5025cc2acf9a","trace_id":"88150f1a-58ff-4630-b3cc-d046385ce8e6"}
[2026-04-24 06:49:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"1aea0c69-a12a-4dea-9086-5025cc2acf9a","trace_id":"88150f1a-58ff-4630-b3cc-d046385ce8e6"}
[2026-04-24 06:50:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"847362a0-e64a-4911-b1df-1cae17602e06","trace_id":"00e228dc-31e4-435b-be9d-82fbdc420e85"}
[2026-04-24 06:50:05] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"847362a0-e64a-4911-b1df-1cae17602e06","trace_id":"00e228dc-31e4-435b-be9d-82fbdc420e85"}
[2026-04-24 06:50:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"847362a0-e64a-4911-b1df-1cae17602e06","trace_id":"00e228dc-31e4-435b-be9d-82fbdc420e85"}
[2026-04-24 06:50:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"4919f2fc-ac0f-49ef-9b0f-e26b2a0b7912","trace_id":"721f8235-dddd-40de-90a8-9a14a32d856f"}
[2026-04-24 06:50:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"4919f2fc-ac0f-49ef-9b0f-e26b2a0b7912","trace_id":"721f8235-dddd-40de-90a8-9a14a32d856f"}
[2026-04-24 06:50:08] local.NOTICE: Monitoring start {"correlation_id":"897a3f0a-6c49-460e-bd18-6f91dfbd5a67","trace_id":"2efbe337-2fd0-4211-b476-f17b55af1d55"}
[2026-04-24 06:50:08] local.NOTICE: Monitoring end {"correlation_id":"897a3f0a-6c49-460e-bd18-6f91dfbd5a67","trace_id":"2efbe337-2fd0-4211-b476-f17b55af1d55"}
[2026-04-24 06:50:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"e163137d-4641-448c-a413-f3ead863e146","trace_id":"d2880d91-f696-4bca-a02c-6ed81132a670"}
[2026-04-24 06:50:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"e163137d-4641-448c-a413-f3ead863e146","trace_id":"d2880d91-f696-4bca-a02c-6ed81132a670"}
[2026-04-24 06:50:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f1ce5bf8-b183-40c2-bb1d-68a91e8635cc","trace_id":"7a286103-dbbf-4be9-88e4-3c006ebd5bf2"}
[2026-04-24 06:50:12] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f1ce5bf8-b183-40c2-bb1d-68a91e8635cc","trace_id":"7a286103-dbbf-4be9-88e4-3c006ebd5bf2"}
[2026-04-24 06:50:12] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f1ce5bf8-b183-40c2-bb1d-68a91e8635cc","trace_id":"7a286103-dbbf-4be9-88e4-3c006ebd5bf2"}
[2026-04-24 06:50:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f1ce5bf8-b183-40c2-bb1d-68a91e8635cc","trace_id":"7a286103-dbbf-4be9-88e4-3c006ebd5bf2"}
[2026-04-24 06:50:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3ab50ecc-1705-4147-a4ac-3eafadffea4c","trace_id":"8ae2174e-9bfd-416d-9c90-2e0a38574878"}
[2026-04-24 06:50:14] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 06:48:00, 2026-04-24 06:50:00] {"correlation_id":"3ab50ecc-1705-4147-a4ac-3eafadffea4c","trace_id":"8ae2174e-9bfd-416d-9c90-2e0a38574878"}
[2026-04-24 06:50:14] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 06:48:00, 2026-04-24 06:50:00] {"correlation_id":"3ab50ecc-1705-4147-a4ac-3eafadffea4c","trace_id":"8ae2174e-9bfd-416d-9c90-2e0a38574878"}
[2026-04-24 06:50:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3ab50ecc-1705-4147-a4ac-3eafadffea4c","trace_id":"8ae2174e-9bfd-416d-9c90-2e0a38574878"}
[2026-04-24 06:50:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"90fffe11-1dfe-4e38-89b9-2b4cf1e84d98","trace_id":"29726f94-b499-4d08-832c-899ec6292a1d"}
[2026-04-24 06:50:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"90fffe11-1dfe-4e38-89b9-2b4cf1e84d98","trace_id":"29726f94-b499-4d08-832c-899ec6292a1d"}
[2026-04-24 06:50:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"60579884-4b2f-4267-985b-5b54d4b9b059","trace_id":"5ec898f5-f766-429e-8119-44757f963437"}
[2026-04-24 06:50:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"60579884-4b2f-4267-985b-5b54d4b9b059","trace_id":"5ec898f5-f766-429e-8119-44757f963437"}
[2026-04-24 06:50:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6177223e-e80f-44b7-bbab-c013be68b64b","trace_id":"74d0758b-a03f-46f9-a2c3-d84a637888c8"}
[2026-04-24 06:50:22] local.INFO: Running pre-meeting notification command {"correlation_id":"6177223e-e80f-44b7-bbab-c013be68b64b","trace_id":"74d0758b-a03f-46f9-a2c3-d84a637888c8"}
[2026-04-24 06:50:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6177223e-e80f-44b7-bbab-c013be68b64b","trace_id":"74d0758b-a03f-46f9-a2c3-d84a637888c8"}
[2026-04-24 06:50:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"5cf42365-673c-408b-8264-25f09c8f7df3","trace_id":"e6a7e6cd-e7c3-4f93-a0db-967b6b3636ef"}
[2026-04-24 06:50:24] local.INFO: Running conference:monitor:start command for activities in (2026-04-24 06:40:00, 2026-04-24 06:45:00] {"correlation_id":"5cf42365-673c-408b-8264-25f09c8f7df3","trace_id":"e6a7e6cd-e7c3-4f93-a0db-967b6b3636ef"}
[2026-04-24 06:50:24] local.INFO: [conference:monitor:start] No activities found in (2026-04-24 06:40:00, 2026-04-24 06:45:00] {"correlation_id":"5cf42365-673c-408b-8264-25f09c8f7df3","trace_id":"e6a7e6cd-e7c3-4f93-a0db-967b6b3636ef"}
[2026-04-24 06:50:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"5cf42365-673c-408b-8264-25f09c8f7df3","trace_id":"e6a7e6cd-e7c3-4f93-a0db-967b6b3636ef"}
[2026-04-24 06:50:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"a18f4c7a-1d0e-484c-ae9e-f167ca35d418","trace_id":"bab2b18f-3f07-4c39-8ead-026abb19e766"}
[2026-04-24 06:50:26] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"06:45","to":"06:50"} {"correlation_id":"a18f4c7a-1d0e-484c-ae9e-f167ca35d418","trace_id":"bab2b18f-3f07-4c39-8ead-026abb19e766"}
[2026-04-24 06:50:26] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"20:40","to":"20:45"} {"correlation_id":"a18f4c7a-1d0e-484c-ae9e-f167ca35d418","trace_id":"bab2b18f-3f07-4c39-8ead-026abb19e766"}
[2026-04-24 06:50:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"a18f4c7a-1d0e-484c-ae9e-f167ca35d418","trace_id":"bab2b18f-3f07-4c39-8ead-026abb19e766"}
[2026-04-24 06:50:28] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:28] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:29] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:29] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"c3ba63e5-b66d-4a59-8ee1-3f16fe1faf00","trace_id":"dac7d476-b81b-4c1a-ab51-821580fd2f6c"}
[2026-04-24 06:50:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"jiminny:transcription:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"b2f7d272-6a89-46d8-a0b9-0ea318be4ec3","trace_id":"cc9fe585-ff61-4b31-b1a9-bac245936991"}
[2026-04-24 06:50:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cf52a9f1-990c-4062-b672-29f0e31335ed","trace_id":"8912612b-445e-4e60-ae30-6dea50b3459e"}
[2026-04-24 06:50:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"jiminny:transcription:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"b2f7d272-6a89-46d8-a0b9-0ea318be4ec3","trace_id":"cc9fe585-ff61-4b31-b1a9-bac245936991"}
[2026-04-24 06:50:37] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:37] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:37] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":60.0} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:37] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-04-24T06:52:37.250784Z"} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:37] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:37] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:37] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cf52a9f1-990c-4062-b672-29f0e31335ed","trace_id":"8912612b-445e-4e60-ae30-6dea50b3459e"}
[2026-04-24 06:50:37] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:reset-governor","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"11a84c4d-d7e6-45d9-9513-37b3e4f9c361","trace_id":"a5f194f2-6a15-427c-8b55-c345bba64be1"}
[2026-04-24 06:50:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:reset-governor","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"11a84c4d-d7e6-45d9-9513-37b3e4f9c361","trace_id":"a5f194f2-6a15-427c-8b55-c345bba64be1"}
[2026-04-24 06:50:42] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:42] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:42] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"69ec5131-626f-4032-834c-aae55e30375e","trace_id":"bb9eeafb-c653-46c7-bd0d-6e189a7cf3e8"}
[2026-04-24 06:50:42] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:42] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"69ec5131-626f-4032-834c-aae55e30375e","trace_id":"bb9eeafb-c653-46c7-bd0d-6e189a7cf3e8"}
[2026-04-24 06:50:47] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:47] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:50:48] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:51:03] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:51:03] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:51:03] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"0082489b-e294-4b1f-bb8b-9d81683a0529","trace_id":"4e675f97-ff51-4eb4-94c8-496cdb55a7cb"}
[2026-04-24 06:51:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3d38e19f-9c1d-4716-abe3-f3fa52688866","trace_id":"a95d6ac0-77ea-4ba9-86ce-8173ff9ddeba"}
[2026-04-24 06:51:08] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"3d38e19f-9c1d-4716-abe3-f3fa52688866","trace_id":"a95d6ac0-77ea-4ba9-86ce-8173ff9ddeba"}
[2026-04-24 06:51:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3d38e19f-9c1d-4716-abe3-f3fa52688866","trace_id":"a95d6ac0-77ea-4ba9-86ce-8173ff9ddeba"}
[2026-04-24 06:51:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"64383c80-935d-4836-a38c-237aaca2447e","trace_id":"ae2e500e-a92f-4be9-aa36-51e5d929a23d"}
[2026-04-24 06:51:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"64383c80-935d-4836-a38c-237aaca2447e","trace_id":"ae2e500e-a92f-4be9-aa36-51e5d929a23d"}
[2026-04-24 06:51:11] local.NOTICE: Monitoring start {"correlation_id":"9469d008-ae9e-41df-b967-0fefb7c1e0d4","trace_id":"9a703161-5be2-4308-a059-36f4ef1b63bf"}
[2026-04-24 06:51:11] local.NOTICE: Monitoring end {"correlation_id":"9469d008-ae9e-41df-b967-0fefb7c1e0d4","trace_id":"9a703161-5be2-4308-a059-36f4ef1b63bf"}
[2026-04-24 06:51:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"9a8c4795-c661-4ca2-b90c-0a0a149c56ea","trace_id":"a5350177-5015-48b2-a131-1e738f0fe25b"}
[2026-04-24 06:51:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"9a8c4795-c661-4ca2-b90c-0a0a149c56ea","trace_id":"a5350177-5015-48b2-a131-1e738f0fe25b"}
[2026-04-24 06:51:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"61f0b96d-fd95-4d02-b49f-17d9a25168e2","trace_id":"83e93c01-ee7a-4b71-992e-c480f6194e8d"}
[2026-04-24 06:51:15] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"61f0b96d-fd95-4d02-b49f-17d9a25168e2","trace_id":"83e93c01-ee7a-4b71-992e-c480f6194e8d"}
[2026-04-24 06:51:15] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"61f0b96d-fd95-4d02-b49f-17d9a25168e2","trace_id":"83e93c01-ee7a-4b71-992e-c480f6194e8d"}
[2026-04-24 06:51:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"61f0b96d-fd95-4d02-b49f-17d9a25168e2","trace_id":"83e93c01-ee7a-4b71-992e-c480f6194e8d"}
[2026-04-24 06:51:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"e2f07f3c-9553-449f-96ec-3a70467700d5","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"e2f07f3c-9553-449f-96ec-3a70467700d5","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":22518264,"real_usage":62914560,"pid":13878} {"correlation_id":"f29b7acf-4d77-4d7e-ae5f-30d96ef0e1eb","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"f29b7acf-4d77-4d7e-ae5f-30d96ef0e1eb","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"f29b7acf-4d77-4d7e-ae5f-30d96ef0e1eb","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"f29b7acf-4d77-4d7e-ae5f-30d96ef0e1eb","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"f29b7acf-4d77-4d7e-ae5f-30d96ef0e1eb","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"f29b7acf-4d77-4d7e-ae5f-30d96ef0e1eb","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.55,"average_seconds_per_request":0.55} {"correlation_id":"f29b7acf-4d77-4d7e-ae5f-30d96ef0e1eb","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":567.03} {"correlation_id":"f29b7acf-4d77-4d7e-ae5f-30d96ef0e1eb","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":646.09,"usage":22605856,"real_usage":62914560,"pid":13878} {"correlation_id":"f29b7acf-4d77-4d7e-ae5f-30d96ef0e1eb","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":22583856,"real_usage":62914560,"pid":13878} {"correlation_id":"0bf228bc-2868-4073-8c52-cfb0e00f9f52","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"0bf228bc-2868-4073-8c52-cfb0e00f9f52","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"0bf228bc-2868-4073-8c52-cfb0e00f9f52","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"0bf228bc-2868-4073-8c52-cfb0e00f9f52","trace_id":"ef2acdf9-6f1b-4137-b651-109f51df894f"}
[2026-04-24 06:51:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"0bf228bc-2868-4073-8c52-cfb0e00f9f52","trace_id":"ef2acdf9-6f1b-4137-b651...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
77258
|
|
77262
|
Project: faVsco.js, menu
JY-20738-debug-AJ-trackin Project: faVsco.js, menu
JY-20738-debug-AJ-tracking-UP, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
115
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-04-24 09:01:22] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"bc159143-0c7f-48c9-a899-0e489969ecbf","trace_id":"06431955-f079-450f-b3ae-55daac9f2e00"}
[2026-04-24 09:01:22] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"bc159143-0c7f-48c9-a899-0e489969ecbf","trace_id":"06431955-f079-450f-b3ae-55daac9f2e00"}
[2026-04-24 09:01:22] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"bc159143-0c7f-48c9-a899-0e489969ecbf","trace_id":"06431955-f079-450f-b3ae-55daac9f2e00"}
[2026-04-24 09:01:22] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"bc159143-0c7f-48c9-a899-0e489969ecbf","trace_id":"06431955-f079-450f-b3ae-55daac9f2e00"}
[2026-04-24 09:01:22] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"bc159143-0c7f-48c9-a899-0e489969ecbf","trace_id":"06431955-f079-450f-b3ae-55daac9f2e00"}
[2026-04-24 09:01:22] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":56,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":266.4,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.72} {"correlation_id":"bc159143-0c7f-48c9-a899-0e489969ecbf","trace_id":"06431955-f079-450f-b3ae-55daac9f2e00"}
[2026-04-24 09:01:22] local.INFO: [HubSpot Journal Polling] Released polling lock {"correlation_id":"bc159143-0c7f-48c9-a899-0e489969ecbf","trace_id":"06431955-f079-450f-b3ae-55daac9f2e00"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
77262
|
|
77673
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Reports;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Collection;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\RequestGenerateReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
class AutomatedReportsCommand extends Command
{
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[automated-reports]';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'automated-reports
{--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly).
Use --report-id to manually trigger a specific report by ID or UUID.';
public function __construct(
private readonly LoggerInterface $logger,
private readonly BusDispatcher $dispatcher,
private readonly AutomatedReportsRepository $reportRepository
) {
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle(): int
{
$this->logger->info(self::LOG_PREFIX . ' Started');
$this->disableExpiredAskJiminnyReports();
$now = Carbon::now();
$isMonday = $now->isMonday();
$isWeekend = $now->isWeekend();
$isFirstDayOfMonth = $now->day === 1;
$currentMonth = $now->month;
$isManualTrigger = $this->option('report-id') !== null;
// Check if the current month is a quarterly month (January, April, July, October)
$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);
$this->logger->info(self::LOG_PREFIX . ' Checking conditions', [
'isMonday' => $isMonday,
'isWeekend' => $isWeekend,
'isFirstDayOfMonth' => $isFirstDayOfMonth,
'currentMonth' => $currentMonth,
'isQuarterlyMonth' => $isQuarterlyMonth,
]);
// Process daily reports on weekdays only (skip Saturday/Sunday).
// Manual triggers via --report-id bypass the weekend skip.
if (! $isWeekend || $isManualTrigger) {
$this->processReports(AutomatedReportsService::FREQUENCY_DAILY);
} else {
$this->logger->info(self::LOG_PREFIX . ' Skipping daily reports on weekend');
}
// Process weekly reports on Mondays
if ($isMonday) {
$this->processReports(AutomatedReportsService::FREQUENCY_WEEKLY);
}
// Process monthly reports on the first day of the month
if ($isFirstDayOfMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_MONTHLY);
}
// Process quarterly reports on the first day of January, April, July, and October
if ($isFirstDayOfMonth && $isQuarterlyMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_QUARTERLY);
}
$this->logger->info(self::LOG_PREFIX . ' Completed');
return 0;
}
private function disableExpiredAskJiminnyReports(): void
{
$expiredReports = $this->reportRepository->getExpiredActiveAskJiminnyReports();
foreach ($expiredReports as $report) {
$this->logger->info(self::LOG_PREFIX . ' Disabling expired Ask Jiminny report', [
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'expiresAt' => $report->getExpiresAt()?->toDateString(),
]);
$this->reportRepository->update($report, ['status' => false]);
}
}
/**
* Process reports for a specific frequency.
*
* @param string $frequency
*
* @return void
*/
private function processReports(string $frequency): void
{
$this->logger->info(self::LOG_PREFIX . " Processing $frequency reports");
$reportId = $this->option('report-id');
if ($reportId !== null) {
$reports = $this->getReportById($reportId);
} else {
// Get all enabled, not deleted reports with active teams for the specified frequency
$reports = $this->reportRepository->getActiveReportsByFrequency($frequency);
}
$this->logger->info(self::LOG_PREFIX . " Found {$reports->count()} $frequency reports to process");
/** @var AutomatedReport $report */
foreach ($reports as $report) {
$this->logger->info(self::LOG_PREFIX . ' Dispatching Generate Report job for report', [
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'frequency' => $report->getFrequency(),
'type' => $report->getType(),
]);
$job = $report->isAskJiminnyReport()
? new RequestGenerateAskJiminnyReportJob($report->getUuid())
: new RequestGenerateReportJob($report->getUuid());
$this->dispatcher->dispatch($job);
}
}
private function getReportById(string $reportId): Collection
{
$report = $this->reportRepository->findByIdOrUuid($reportId);
if ($report === null) {
$this->logger->warning(self::LOG_PREFIX . ' Report not found for --report-id', ['reportId' => $reportId]);
$this->warn("Report not found: {$reportId}");
return collect();
}
if (! $report->getStatus()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is inactive, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
]);
$this->warn('Report is inactive — processing anyway (manual override).');
}
$team = $report->getTeam();
if ($team->getStatus() !== Team::STATUS_ACTIVE) {
$this->logger->warning(self::LOG_PREFIX . ' Team is not active, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'teamStatus' => $team->getStatus(),
]);
$this->warn("Team #{$report->getTeamId()} is not active — processing anyway (manual override).");
}
if ($report->isExpired()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is expired, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'expiresAt' => $report->getExpiresAt()?->toDateString(),
]);
$this->warn('Report is expired (expires_at: ' . $report->getExpiresAt()?->toDateString()
. ') — processing anyway (manual override).');
}
$this->info(self::LOG_PREFIX . ' Automated report found ' . $report->getCustomName());
return collect([$report]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
8
Previous Highlighted Error
Next Highlighted Error
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
77673
|
|
77674
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
2
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Reports;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Collection;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\RequestGenerateReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
class AutomatedReportsCommand extends Command
{
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[automated-reports]';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'automated-reports
{--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly).
Use --report-id to manually trigger a specific report by ID or UUID.';
public function __construct(
private readonly LoggerInterface $logger,
private readonly BusDispatcher $dispatcher,
private readonly AutomatedReportsRepository $reportRepository
) {
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle(): int
{
$this->logger->info(self::LOG_PREFIX . ' Started');
$this->disableExpiredAskJiminnyReports();
$now = Carbon::now();
$isMonday = $now->isMonday();
$isWeekend = $now->isWeekend();
$isFirstDayOfMonth = $now->day === 1;
$currentMonth = $now->month;
$isManualTrigger = $this->option('report-id') !== null;
// Check if the current month is a quarterly month (January, April, July, October)
$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);
$this->logger->info(self::LOG_PREFIX . ' Checking conditions', [
'isMonday' => $isMonday,
'isWeekend' => $isWeekend,
'isFirstDayOfMonth' => $isFirstDayOfMonth,
'currentMonth' => $currentMonth,
'isQuarterlyMonth' => $isQuarterlyMonth,
]);
// Process daily reports on weekdays only (skip Saturday/Sunday).
// Manual triggers via --report-id bypass the weekend skip.
if (! $isWeekend || $isManualTrigger) {
$this->processReports(AutomatedReportsService::FREQUENCY_DAILY);
} else {
$this->logger->info(self::LOG_PREFIX . ' Skipping daily reports on weekend');
}
// Process weekly reports on Mondays
if ($isMonday) {
$this->processReports(AutomatedReportsService::FREQUENCY_WEEKLY);
}
// Process monthly reports on the first day of the month
if ($isFirstDayOfMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_MONTHLY);
}
// Process quarterly reports on the first day of January, April, July, and October
if ($isFirstDayOfMonth && $isQuarterlyMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_QUARTERLY);
}
$this->logger->info(self::LOG_PREFIX . ' Completed');
return 0;
}
private function disableExpiredAskJiminnyReports(): void
{
$expiredReports = $this->reportRepository->getExpiredActiveAskJiminnyReports();
foreach ($expiredReports as $report) {
$this->logger->info(self::LOG_PREFIX . ' Disabling expired Ask Jiminny report', [
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'expiresAt' => $report->getExpiresAt()?->toDateString(),
]);
$this->reportRepository->update($report, ['status' => false]);
}
}
/**
* Process reports for a specific frequency.
*
* @param string $frequency
*
* @return void
*/
private function processReports(string $frequency): void
{
$this->logger->info(self::LOG_PREFIX . " Processing $frequency reports");
$reportId = $this->option('report-id');
if ($reportId !== null) {
$reports = $this->getReportById($reportId);
} else {
// Get all enabled, not deleted reports with active teams for the specified frequency
$reports = $this->reportRepository->getActiveReportsByFrequency($frequency);
}
$this->logger->info(self::LOG_PREFIX . " Found {$reports->count()} $frequency reports to process");
/** @var AutomatedReport $report */
foreach ($reports as $report) {
$this->logger->info(self::LOG_PREFIX . ' Dispatching Generate Report job for report', [
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'frequency' => $report->getFrequency(),
'type' => $report->getType(),
]);
$job = $report->isAskJiminnyReport()
? new RequestGenerateAskJiminnyReportJob($report->getUuid())
: new RequestGenerateReportJob($report->getUuid());
$this->dispatcher->dispatch($job);
}
}
private function getReportById(string $reportId): Collection
{
$report = $this->reportRepository->findByIdOrUuid($reportId);
if ($report === null) {
$this->logger->warning(self::LOG_PREFIX . ' Report not found for --report-id', ['reportId' => $reportId]);
$this->warn("Report not found: {$reportId}");
return collect();
}
if (! $report->getStatus()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is inactive, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
]);
$this->warn('Report is inactive — processing anyway (manual override).');
}
$team = $report->getTeam();
if ($team->getStatus() !== Team::STATUS_ACTIVE) {
$this->logger->warning(self::LOG_PREFIX . ' Team is not active, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'teamStatus' => $team->getStatus(),
]);
$this->warn("Team #{$report->getTeamId()} is not active — processing anyway (manual override).");
}
if ($report->isExpired()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is expired, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'expiresAt' => $report->getExpiresAt()?->toDateString(),
]);
$this->warn('Report is expired (expires_at: ' . $report->getExpiresAt()?->toDateString()
. ') — processing anyway (manual override).');
}
$this->info(self::LOG_PREFIX . ' Automated report found ' . $report->getCustomName());
return collect([$report]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
8
Previous Highlighted Error
Next Highlighted Error
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
77674
|
|
77677
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
PhpStormVIeWINavigarecodeLaravelKeractorJOOISWindowmelpFV faVsco.js v#12011 on JY-20157-AJ-report-not-send-notificationProleteyphe logging.phpphp logos.phppip mall.onppip maxio.onppip meala-streaming.onppip proonel"al.ondphp queue.phppnp salestorce.onpphp Samiz.onpphp secure-neaders.ongphp services.onpphp slack.onophp testina.ohophp timezones.ohophp webhook-server.ohp> D contrib→ database› O docsM front-end> 0 lang>O node_modules library root> O phpstan> M nublic› Dresourcesv D routesphp api.phpphp api_v2.phppnp console.onopnp customer_api.onppnp embedded.ongpnp nealtn.onppnp scim.onophp uprotectedweb.phpphp web.phpphp webhook.php>O scripts~D storage•aoo>D debugbar… M frameworkv Mloas.aitianoreD audio.wav= custom.loal=hubsnot-iournal-noll.log= laravel logus tht is© AutomatedReportsCommand.php x© AutomatedReportsSendCommand.php© TrackAutomatedReportGeneratedEvent.phpcreatenuagecreatedevent.ong© TrackAutomatedReportGeneratedEventTest.php© SendRe© ActivityController.php© Kernel.phpclass AutomatedReportscommand extends command39 đprivate const string LOG_PREFIX = '[automated-reports]' ;* The name and sianature of the console command.* @var stringorotected Sstonature = 'automated-renortsi{--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';* The console command descrintioni* @var stringprotected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly).Use --report-id to manually trigger a specific report by ID or UUID.';pudLic tunction__construct(private readonly LoggerInterface $logger,private readonly BusDispatcher $dispatcher,private readonly AutomatedReportskepository Sreportrepositoryparent:: constructo* Execute the console command.* dreturn intpublic function handle): intSthis->loagen.sinfo/colf..InG pRESTy " Stanted!)»Sthis->disahleFyninedAck.liminnvRenontcoSnow = Carbon: :now();CicMondav - Cnow-sicMondavd•) sendkeportJob.pnpA2X2 AYLukas/Stefka 121 • in 35 m100% (42Fri 24 Apr 13:25:27E custom.logE laravel.log XA SF (jiminny@localhost]A console (PROD]console [STAGING][2026-04-24 10:24:09] Local. INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5", "trace_id" :"6af075f9-940e-4789-b9b4-ct[2026-04-24 10:24:09] Local. INFO: [automated-reports] Checking conditions {"isMonday":false, "isWeekend":false,"isFirstDay0fMonth":false, "currentMonth" :4, "isQU[2026-04-24 10:24:09] Local. INFO:Laucomaced-reports Processing darly reports i correlatton lo. 4etoezs2-8802-4755-8705-02ttyscobz05", thace 20. батбурту-[2026-04-24 10:24:10] Local. INFO:[automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5", "trace_id":"€12020-04-24 10.24.10 Local.INFU.mus urspacchne benenare керогидоо тог перомь зпесомсииам, чтосакро-туб-чода-умас-воотут5о45"Сеатна[2026-04-24 10:24:10] Local. INFO:2026-04-24 10:24:111 Local.INFU:AskJiminnyRepont:Genenate Stanted automatedkeportuu1d":"4t6ca205-1993-48aa-99ad-b6ot19t150457 1"connelatzon 1d": "00ca4[2026-04-24 10:24:15] Local. INF0:[AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"U2026-04-24 10:24:151AskJiminnyReport.Genenate Fetched actavity los automatedkepontuu1d":"4t6ca205-1993-48aa-[CREDIT_CARD]"Act 1v1tyCou[2026-04-24 10:24:15] Local. INFO:[AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUvid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43", "ac2026-04-24 10:24:15 Local.INF0:AskJ1minnyReport:Generatel Dispatched not-generated notifications "automatedReportUu1d":"4t6ca2b5-1993-48aa99ad-b66f19F19[2026-04-24 10:24:18]Local. INFO:[Send Report Not Generated Mail] Email12026-04-24 10:24118LocaLaNFo: Jamanny console Commands Command: * runi[2026-04-24 10:24:18]Local. INFO:[ScheduleBotCommand] Number of activities to be captured: 012026-04-24 10:24:181nenIeWEiR aiminny Vonsolle commands TommandRanun Memony usade for command "commanda"meetaino-hotaschedm le-hotu"memonveronecommandi ni[2026-04-24 10:24:26]local. INFO: Jiminny\Console\Commands\Command: :run Memory usage before starting command {"cor2026-04-24 10:24:261local.INFO: Jiminny \Console\Commands \Command::run Memory usage for command {"command":"dialers:monitor-activities", "memoryBeforeCommand][2026-04-24 10:24:35]Local.NOTICE: Monitoring start12026-04-24 19•24•3571Local.NOTICE: Monitoring end{"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771", "trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b*[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command: :run Memory usage before starting command {"co[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command: :run Memory usage for command {"command" : "mailbox: skip-lists:refresh", "memoryBeforeCommand][2026-04-24 10:24:53] local. INFO: Jiminny\Console\Commands\Command: :run Memory usage before starting command {"cr[2026-04-24 10:24:53] Local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d". "tr[2026-04-24 10:24:53] Local. INFO:[EmailSchedule] FINISHED batch process {"host":"docker_Lamp_1", "processed" :0} {"correlation_id":"ebdfa028-0918-4dff-8eec-baf[2026-04-24 10:24:53] Local. INFO: Jiminny\Console\Commands\Command: :run Memory usage for command {"command" : "mailbox:batch:process", "memoryBeforeCommandInMb" :[2026-04-24 10:25:01] Local. INFO: Jiminny\Console\Commands\Command: :run Memory usage before starting command {"cor[2026-04-24 10:25:01] Local. INFO: Running conference:monitor:count command for activities in (2026-04-24 10:23:00,f"correlation_id". "6a[2026-04-24 10:25:01] Local. INFO:[conference:monitor:count] No activities found in (2026-04-24 10:23:00, 2026-04-24 10:25:00][2026-04-24 10:25:01] Local. INFO: Jiminny\Console\Commands\Command: :run Memory usage for command {"commnd" : "conference:monitor:count" "memoryBeforeCommandIn![2026-04-24 10:25:09] Local. INFO:Jiminny\Console\Commands\Command: :run Memory usage before starting command {"com[2026-04-24 10:25:10] Local.INFO:[SocialAccountService] Fetching token ("socialAccountId":1496, Norovider": "aircall"' f"correlation_id": "11e8b9cf-a3f0-49b8-9€[2026-04-24 10:25:10] Local.INFO:[SocialAccountService] Token retrieved {"socialAccountId":1496, "provider": "aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-s)[2026-04-24 10:25:10] Local. INFO: [EncryptedTokenManager] Generating access token.[2026-04-24 10:25:10] Local.ERROR: [Aircall] Re-activating webhooks failed {"team_¡d":1,"reason":"{\"message\";\"Forbidden\"}"} {"correLation_¡d";"11e8b9cf-a?[2026-04-24 10:25:10] Local. INFO: Jiminny\Console\Commands\Command: :run Memory usage for command {"cond":"activitv.aircall:check-and-renew". "memoryßeforecdf 4 spaces...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
77677
|
|
77678
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp• 0DOCKER381Last login: Fri Apr 24 12:59:23 on ttys009DEV (docker)O $82Poetry could not find a pyproject.toml file in /Users/lukas or its parentspuktse.coa5-Kovt fks-MacBoorofrot, tmimmf l in /Users/lukas or its parents-zshAPP (-zsh)$0• Lukas/Stefka 121 - in 35 m100% <78• *3screenpipe"• ₴4-zshFri 24 Apr 13:25:28T81*5...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
77678
|
|
78180
|
PreviewFileEditViewGoToolsWindowHelpDOCKER381Last PreviewFileEditViewGoToolsWindowHelpDOCKER381Last login: Fri Apr 24 12:59:23 on ttys009DEV (-zsh)O $82Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $l-zshAPP (-zsh)§ Lukas/Stefka 121 • in 15 m100% <47*• *3screenpipe"• *4-zshFri 24 Apr 13:45:32181*5...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
78180
|
|
78181
|
PreviewFileEditViewGoToolsWindowHelpDOCKER381Last PreviewFileEditViewGoToolsWindowHelpDOCKER381Last login: Fri Apr 24 12:59:23 on ttys009DEV (-zsh)O $82Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $l-zshAPP (-zsh)§ Lukas/Stefka 121 • in 15 m100% <47*• *3screenpipe"• *4-zshFri 24 Apr 13:45:32181*5...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
78181
|
|
78182
|
ActivityMoreJiminny... vTMore unrea# product lau# ActivityMoreJiminny... vTMore unrea# product lau# random# releases# sofia-office# support# thank-yous"the neonle^ Direct message. Nikolay NikP. Galya DimitrAneliya Ange& Stefka StoyaP. Adelina PetreeVasil Vasiler.8. Stoyan TomofP. Nikolay Yank3 Dotka KachirP. Aneliya Angei. Mario Georg%: Todor StamaR Gabriela Dur#:Apps© Jira Cloud® Toast• Describe what you are looking rorGalya Dimitrova •FavouritesE jiminny® AirDrop• RecentsA Applications• Documents• Downloads.1n lukasiCloudiCloud Drive999 Svnc folderLocationsO DXP4800PLUS-B5F 4® Network• CRM• Orange• Red• Yellow• Green• Blue• PurpleO All Tags...screenpipe> #recyclevi data> 2026-04-22• 2026-04-222026-04-20> # 2026-04-21• 2026-04-17> 2026-04-162026-04-15•2026-04-14archive.dba db.salite-shm•appdb salitedb.sqlite-wal• screenpipe_sync.shapp settinas.ison• screenpipe.db› • pipesCopvina 3 items to "Test"2,8 MB of 54,3 MB - About 28 minutesRelaunch to update& Lukas Kovalik•• ШDate ModitiedToday at 12:14Today at 12:07Today at 12:08Today at 12:0722 Apr 2026 at 18:44Zz Apr 2026 at 9:1618 Aor 2026 at 13:3517 Apr 2026 at 8:5716 Apr 2026 at 9:1315 Aor 2026 at 9:59Today at 9:3522 Apr 2026 at 21:0022 Apr 2026 at 20:3522 Anr 2026 at 20:3522 Apr 2026 at 20:0518 Apr 2026 at 18:3518 Aor 2026 at 17:4213 Apr 2026 at 17:2111 Apr 2026 at 16:5119 items, 1,99 TB [EMAIL]/mail/u/0/#irM Gmailv Size25,59 GB Folder6,18 GBFolderZ65,5 MBFolder171,8 MB Folder400,8 Mbrolder699.6 MB Folden837,2 MB Folder2,15 GBFolder1.09 GBFolder6,48 GB Document33 KB163 KBrolder6.64 GR 1DocumentZero bytes15 KBlerminal scripts31 bvtesJSONZero bytes Document13 KBFolder1,6085,519|101,197Ask GmailApril 2026 Week17Mon 20Tue 21Chloe Cross (Parental Leave - 256 days)Your 'Not enpougThe Jiminny Team <no-replto me+06:0007:00l09:0012:00|13:00la JiminnyP AirDrop|© RecentsA ApplicationsDocumentsDownloadsA lukas@ iCloud Drivel288 Sync folderDXP4800PLUS-B5F@ Network• CRMI• Orange• Red• Yellow• Green• Blue• Purple@ All Tags…..TestiJazyky› i #recycle› SyncDatav screenpipedib salltearchive.db› dataoioesscreenpipe-day.sh• screenpipe.dbtest write→ Ckole› Computer ScienceD ubuntu-24.04.4-live-server-amd64.iso→COD:> P Citarastart machine.wavlocation-historv.ison• location-history (1).json1910229e6394bdc9...2141382106f.ug-tmpThuzeLukas stetka 121 • In 10mFri 24100% 5F11 24 Aor 13.40.34Week vTodaySat 25(0 - 1 dav)PTO - 1 day)Sun 2616 Mar 2026 at 10:3211 Apr 2026 at 15:5320 Apr 2026 at 21:09loday at g.3.22 Aor 2026 at 20:351Today at 9:35Today at 9:3611 Aor 2026 at 16:5111 Apr 2026 at 17:0013 Apr 2026 at 17:2111 Apr 2026 at 1/•2028 Jan 2026 at 19:5622 Nov 2025 at 14:176 Mar 2026 at 20:5316 Oct 2025 at 14:5128 Jan 2026 at 19:5516 Mar 2026 at 6.4316 Mar 2026 at 6:52.28 Feb 2026 at 9:08Todav at 13:4382.19 GBFolder76,94 GB Folder36,64 GB19,29 GBrolder6.64 GBDocument6,48 GB6,18 GBrolder13 KB3KBTerminal scriptsZero bytesLero bytesUnix Ex...ble File8.3 GRFolder7,54 GB3,41 GBIsu Disk Image578.8 MB3,1 MB Folder2 MBWaveform audio1.2MEJSON1,2 MBZero bytesDocumentAlfred. ferences22 items, 1.99 TB availabl!1 Reply→ ForEnable desktop notifications for Jiminny Mail.OK No thanks...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
78182
|
|
78698
|
Project: faVsco.js, menu
JY-20508-notify-before-AJ Project: faVsco.js, menu
JY-20508-notify-before-AJ-report-expiration, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview (hold Shift to open a local file URL)
Chrome (hold Shift to open a local file URL)
Firefox (hold Shift to open a local file URL)
Safari (hold Shift to open a local file URL)
Sync Changes
Hide This Notification
Code changed:
Hide
3
12
Previous Highlighted Error
Next Highlighted Error
<!doctype html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta charset="utf-8" />
<title>{{app.title}}</title>
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no"
/>
<link
rel="apple-touch-icon"
sizes="180x180"
href="/img/ico/apple-touch-icon.png"
/>
<link
href="/img/splashscreen/iphone5_splash.png"
media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)"
rel="apple-touch-startup-image"
/>
<link
href="/img/splashscreen/iphone6_splash.png"
media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)"
rel="apple-touch-startup-image"
/>
<link
href="/img/splashscreen/iphoneplus_splash.png"
media="(device-width: 621px) and (device-height: 1104px) and (-webkit-device-pixel-ratio: 3)"
rel="apple-touch-startup-image"
/>
<link
href="/img/splashscreen/iphonex_splash.png"
media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)"
rel="apple-touch-startup-image"
/>
<link
href="/img/splashscreen/iphonexr_splash.png"
media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2)"
rel="apple-touch-startup-image"
/>
<link
href="/img/splashscreen/iphonexsmax_splash.png"
media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3)"
rel="apple-touch-startup-image"
/>
<link
href="/img/splashscreen/ipad_splash.png"
media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2)"
rel="apple-touch-startup-image"
/>
<link
href="/img/splashscreen/ipadpro1_splash.png"
media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2)"
rel="apple-touch-startup-image"
/>
<link
href="/img/splashscreen/ipadpro3_splash.png"
media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2)"
rel="apple-touch-startup-image"
/>
<link
href="/img/splashscreen/ipadpro2_splash.png"
media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2)"
rel="apple-touch-startup-image"
/>
<link rel="icon shortcut" href="{{ app.favicon }}" />
<link rel="manifest" href="/manifest-mobile.json" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="msapplication-TileImage" content="/img/ms-icon-144x144.png" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-touch-fullscreen" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="format-detection" content="telephone=no" />
<meta content="" name="description" />
<meta content="" name="author" />
<meta name="slack-app-id" content="{{ app.slackAppId }}" />
{{ app.chromeExtensionLink }}
<!-- Import fonts start (Lato + Roboto) -->
<link rel="preconnect" href="[URL_WITH_CREDENTIALS]
/>
<link
rel="stylesheet"
href="[URL_WITH_CREDENTIALS]
media="print"
onload="this.media='all'"
/>
<noscript>
<link
rel="stylesheet"
href="[URL_WITH_CREDENTIALS]
/>
</noscript>
<script>
Object.assign(window,
{{pageData}}
);
</script>
</head>
<body class="fixed-header {{ app.bodyClass }}">
<div id="app" v-cloak></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
Code changed:
Hide
Sync Changes
Hide This Notification
209
Previous Highlighted Error
Next Highlighted Error
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring start {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring end {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:18] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"6b84611f-1af3-4e64-8c1c-c963ed5bcfa7","trace_id":"056c6533-0c1b-480c-93bb-4b7c788b5dc4"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring start {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring end {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":23540024,"real_usage":65011712,"pid":13878} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":38.25,"usage":23605688,"real_usage":65011712,"pid":13878,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":23563904,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.6,"average_seconds_per_request":0.6} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":635.09} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":2129.8,"usage":23740736,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":23715400,"real_usage":65011712,"pid":13878} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":51.31,"usage":23689016,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":23649656,"real_usage":65011712,"pid":13878} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":18.47,"usage":23692568,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring start {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring end {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:45] local.NOTICE: Calendar sync start {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAc...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
78698
|
|
79248
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp<100% <APP (docker)APP (docker)DOCKER₴81DEV (-zsh)O 882worker-crm-sync:worker-crm-sync_00:stoppedworker-download:worker-download_00:stoppedworker-emails:worker-emails_00: stoppedworker-nudges:worker-nudges_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00:startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: startedworker:worker_00:startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00:startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20508-notify-before-AJ-report-expiration) $ csfixdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHP runtime: 8.3.30Running analysis on 7 cores with 10 files per process.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loaded config default from ".php-cs-fixer.dist.php".screenpipe"O ₴4-zshFri 24 Apr 18:47:06T&1*5APP...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79248
|
|
79249
|
PhostormVIewINavigarecode°9 JY-20508-notify-before PhostormVIewINavigarecode°9 JY-20508-notify-before-AJ-r© RequestGenerateAskJiminnyReportJob© kequestGeneratekeportJoo.ongsenakeportexpiringsoonmallJoo.ong© senakeportJob.onp© SendReportMailJob.php07 Calenda0 Crm›→ Delete>C Hubspot>W Salestorce(c) AutoloaDelavedTocrm.ohpC) CheckAndRetrvRemoteMatch.ohcc) createFollowuoActiviv.oho(C) [EMAIL]) MatchActivitvCrmData.onvC) SaveActivitv.oho(c) SaveTranscrintion.nhr(c) Sotunl avout nhnl© SyncActivity.php© SyncFieldMetadata.php© SyncHubspotObjects.php© SyncLeads.php© SyncObjects.php© SyncOpportunitiesJob.php© SyncOpportunity.php© SyncProfileMetadata.php© SyncTeamFieldsJob.php© SyncTeamMetadata.php© UpdateOpportunitySpecifications.phpc) Updatestage.phoC DealRisks100% 5F11 24 Aor 10.4/*00+0 ..#ask-senakeportJoe.onp© AskJiminnyReportExpiringMail.phpsenakeportexpiringsoonmaliJoblest.onp<> index.html© UserAutoclass SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueuenanalesluyyer wartingloetr..Luosrncren . clealor clate llootny tl"renortlluid' = Sthis->renortlui.di"creatorid' => Screaton->aetIdo.1):recurn,$reportName = $report->getCustomName0) ?? "*;$expiresAt = Sreport->getExpiresAt0:$expiresAtFormatted = SexpiresAt !== null ? $expiresAt->format( format: 'jS F') : **:$reportsPageUrl = SurlGenerator->route( name:'ai.reports.show' FrontendController@render ):try {Mail::mailer( name: 'postmark')->to(ScreatorEmail)->send(new_AskJiminnvReportExpiringMaildexpiresAtFormatted: SexoiresAtFormattedislogden->infolself.:L0G PrEsix. " Email sent'. ]'renortluid' => Sthis->renortluidl'creatorid' => Screator->oetIdo.'emarl' => ScreatorEmail= SexniresAt?->toDateStrina0} catch (Throwable $e) {$logger->error(self::L06_PREFIX ."nenontlluid= Sthis-snenontlluidError sending email', ['emaili => ScnoatonEmaill'error' => $e->getMessageO.Itnacol => Ce-saetTnaceAcStnina(Sentry:: captureException(Se)if (Sthis-›attempts( < Sthis-›tries) {Sbackoffindex = mind value: Sthis->attemptso -1.valuoe. hount/tthie.shonlofo).?sthis->release(Sth1s->backofflSbackoffindex.0else <sthis->farl(Se):= laravel.log X 4 SF jiminny@localhost]A HS_local (jiminny@localhost]console [PKol)# console leu)A console [STAGING)2026-04-24 10:28:49] local.ERROR: [SocialAccountService] Failed to 1m2026-04-24 10:28:49] local.INFO: [SocialAccount0bserver] Saving model{"c1020-04-24 10.20.47Lsoca Laccountservicel rarled to rerresh4020-04-24 10.20.47 Local. LNFU.soclaLAccountservice recchino coken ""s2026-04-24 10:28:491Local.INF0: [SocialAccountServicel Token needs refres2026-04-24 10:28:49] local.INF0:[EncryptedTokenManager] Generating access2026-04-24 10:28:4912026-04-24 10:28:491 Local.ERROR:Local.INFU:Soc1aLAccountService Retreshing token fr[SocialAccountServicel Failed to refresh2026-04-24 10:28:501Soc1aLAccountUbserver Saving model*"C2026-04-24 10:28:501 LoOcOL, ERROR:[SocialAccountService] Failed to refresh2026-04-241LoCOLINFO:SociaLAccountService Fetchino token *"sc[SocialAccountService] Token retrieved {"Local. INFO:lEncrvotedtokenManager Generatina access10:28:501 Local.INFO: Calendar svnc iob dispatched «"calendar id2026-04-24 10:28•501 Local. 1NF0:SocialAccountServicel Fetchina token «"sa2026-04-24 10:28-501 Zoca1.INF0:[SocialAccountService] Token needs refrest2026-04-24 10-28-501 Toco. TNS0+[EncryptedTokenManager] Generating access2026-04-24 10:28:50] local.INF0: [SocialAccountService) Refreshing token fr2026-04-24 10-28-501 10601 ERROR•[SocialAccountService] Failed to refreshlocal.INFO: [SocialAccount0bserver] Saving modelf"cc2026-04-24 10:28:50] local.ERROR: [SocialAccountService] Failed to refreshlocal.INF0: [SocialAccountService] Fetching token {"scCocialAccoun+Convicol Tolon noode nofnoch221222223225local.INF0: [EncryptedTokenManager] Generating access2004-04-04 10.29-501 1o601 TNCO•[SocialAccountService] Refreshing token fr2004-04-04 10.29-5011local.INF0: [SocialAccountServicel Fetching token {"sc2004-04-04 10.29-501 10601 TACO•[SocialAccountServicel Token retrieved {"2004-04-04 16.29-5011local.INF0: [EncryptedTokenManaqer] Generating access2026-04-24 10:28:50] local.INFO: [Calendar] Processing sync {"calendarId":2026-04-24 10:28:501Local.ERROR: [SocialAccountServicel Failed to refresh2026-04-24 10:28:501 local.INF0:[CrmOwnerResolver] Integration owner matct2026-04-24 10:28:501SociaLAccountServiceretchino token *"sc2026-04-24 10:28:501 local, INF0:[SocialAccount0bserver] Saving model2026-04-24 10:28:501SocialAccountServicel Failed to refresh2026-04-24 10:28:501 local, INF0:[SocialAccountService] Token retrieved {"2026-04-24 10:28:501 local, INF0:EncrvotedtokenManager Generating access2026-04-24 10:28:501 LocaL. INFOS[SocialAccountService] Fetching token {"s2026-04-24 10:28:501 ZocaL. INF0S2026-04-24 10:28•501 1ocal. TNE0•SocialAccountServicel Token needs refres[EncryptedTokenManager] Generating access2026-04-24 10-28•5011Tocal. TNEO•SocialAccountService Refreching token fr2026-04-24 10-28•501 local ERROR•[SocialAccountService] Failed to refresh2026-04-24 10-28-5011Tocal. TNEO•[SocialAccountObserver) Saving model"edl[SocialAccountServicel Failed to refrechFetchina token &"scToken needs refres(EnenvntodTakonMananon Gononatina accoccJocal TNSO.fGooale Calondanl Cailod to watch channolFixing Favicon InconsAutomated Reports ExRead SendRenortExoirinaSoonMail.JobTest.ono #L1-20All tests pass. Here's the review:ReviewFiles changed• AskJiminnyReportExpiringMail.php - removed ShouldQueue, Queueable, SerializesModels . Minimal mailable•ask-jiminny-report-expiring.blade.php - matches the designAutomatedReportsRepository-php — added getActiveAskJiminnyReportsExpiringOn(CarbonImnutable $date) using whereDateindexed, correct for expires at date column).• AutomatedReportsCommand.php — new notifyASkJiminnyReportsExpiringSoon() with REPORT_EXPIRING_SOON_DAYS = 7 const, runsevery day. dispatches SendReportExp1r1ngsoonMa1lJob.• SendReportExpiringSoonMailJob-php - ShouldBeUnique / ShouldQueue , tries=3 with (60,300, 600] backoff, resolves creator, formatsdate is F. sends sunchronousiv. loas + Sentry on tallure• SendReportExpiringSoonMailJobTest-php - new, 7 tests / 39 assertions, all passingTest coverage for SendReportExpiringSoonMailJobuniqueld returns the report uuid• Happy path: sends mail to creator• Early returns: report not found, creator missina, creator email emptv• Failure: release/") called with first backoff on excention• Failure: fail() called when attempts reach maxNot tested (intentionallv)• AutomatedReportsCommand - per the rule not to unit test console commands• New repository method getActiveAskJiminnyReportsExpiring0n - repository tests in the codebase only cover delegation/SQLaccertions. Eloauent static querv methods are not mocked in unit tectc here (eyictina ciblina methods like det FyniredActivelckliminrvReports are also not covered. and the file explicitlv skips tests "that require more complex mockina of Eloquent static calls"). Happv tMlelaloiasWolwlwcshealunirechelllollletenialesiulsvinmaeNotes / potential concerns• The outer command also calis disableFxniredAsk liminnvRenorts@ which disables anv renort whose exnires at < todav . Tihnotification for "7 days left" uses whereDate('expires at'. today + 7) . so creators will get exactly one email on the day expires at -7 davs = todav. If the cron misses a dav. that report simolv won't aet an email — accentable per the requirement "oniv once wherethere is 7 days".eynires at cactic "datel in the model coherelate comnarina acainct CarbonImmutahle:.now()_saddDavs(7)_sctart0f0avl)_stohareString() is correct regardless of timezone drift. Subiect emoll MufAEAE21 ie DHD 7e native literal — cafe on DHD 9 2Tests: 7, Assertions: 39, PHPUnit Warnings: 1 (no code coverage driver - unrelated).TelephonvMUserc) chandeSmaillob.ohn@ Deactivatellser.lob.nhn(C) DeleteScheduledUserActivitiesForinsial@ SetunDefaultSavedSearches.nhnC) SvncTolntercom.nhn(C) SvncToPlanhat.nhn© SyncToUserPilot.phpc RacoDrococcina lnh nhn(e Nummy loh nhn© ImportRecallAlRecordingsJob.php© ImportRemoteTrackJob.phpAol anuthinn 190A1Claude Qnus 1.7 MedinPo 4 sp...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79249
|
|
79250
|
Project: faVsco.js, menu
JY-20508-notify-before-AJ Project: faVsco.js, menu
JY-20508-notify-before-AJ-report-expiration, menu
Start Listening for PHP Debug Connections
SendReportExpiringSoonMailJobTest
Run 'SendReportExpiringSoonMailJobTest'
Debug 'SendReportExpiringSoonMailJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Analyzing…
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Routing\UrlGenerator;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
use Jiminny\Component\Queue\Constants;
use Jiminny\Mail\Reports\AskJiminnyReportExpiringMail;
use Jiminny\Repositories\AutomatedReportsRepository;
use Psr\Log\LoggerInterface;
use Sentry\Laravel\Facade as Sentry;
use Throwable;
class SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
private const string LOG_PREFIX = '[Send Report Expiring Soon Mail]';
public int $tries = 3;
/** @var array<int, int> */
public array $backoff = [60, 300, 600];
public int $timeout = 120;
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
LoggerInterface $logger,
AutomatedReportsRepository $reportRepository,
UrlGenerator $urlGenerator,
): void {
$report = $reportRepository->findByUuid($this->reportUuid);
if ($report === null) {
$logger->warning(self::LOG_PREFIX . ' Report not found', [
'reportUuid' => $this->reportUuid,
]);
return;
}
$creator = $report->getCreator();
if ($creator === null) {
$logger->warning(self::LOG_PREFIX . ' Creator missing', [
'reportUuid' => $this->reportUuid,
'teamId' => $report->getTeamId(),
]);
return;
}
$creatorEmail = $creator->getEmailAddress();
if (empty($creatorEmail)) {
$logger->warning(self::LOG_PREFIX . ' Creator email missing', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
]);
return;
}
$reportName = $report->getCustomName() ?? '';
$expiresAt = $report->getExpiresAt();
$expiresAtFormatted = $expiresAt !== null ? $expiresAt->format('jS F') : '';
$reportsPageUrl = $urlGenerator->route('ai.reports.show');
try {
Mail::mailer('postmark')
->to($creatorEmail)
->send(new AskJiminnyReportExpiringMail(
reportName: $reportName,
expiresAtFormatted: $expiresAtFormatted,
reportsPageUrl: $reportsPageUrl,
));
$logger->info(self::LOG_PREFIX . ' Email sent', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
'email' => $creatorEmail,
'expiresAt' => $expiresAt?->toDateString(),
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error sending email', [
'reportUuid' => $this->reportUuid,
'email' => $creatorEmail,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
Sentry::captureException($e);
if ($this->attempts() < $this->tries) {
$backoffIndex = min($this->attempts() - 1, count($this->backoff) - 1);
$this->release($this->backoff[$backoffIndex]);
} else {
$this->fail($e);
}
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring start {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring end {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:18] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"6b84611f-1af3-4e64-8c1c-c963ed5bcfa7","trace_id":"056c6533-0c1b-480c-93bb-4b7c788b5dc4"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring start {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring end {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":23540024,"real_usage":65011712,"pid":13878} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":38.25,"usage":23605688,"real_usage":65011712,"pid":13878,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":23563904,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.6,"average_seconds_per_request":0.6} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":635.09} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":2129.8,"usage":23740736,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":23715400,"real_usage":65011712,"pid":13878} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":51.31,"usage":23689016,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":23649656,"real_usage":65011712,"pid":13878} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":18.47,"usage":23692568,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring start {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring end {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:45] local.NOTICE: Calendar sync start {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs re...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79250
|
|
79251
|
Project: faVsco.js, menu
JY-20508-notify-before-AJ Project: faVsco.js, menu
JY-20508-notify-before-AJ-report-expiration, menu
Start Listening for PHP Debug Connections
SendReportExpiringSoonMailJobTest
Run 'SendReportExpiringSoonMailJobTest'
Debug 'SendReportExpiringSoonMailJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
Analyzing…
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Routing\UrlGenerator;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
use Jiminny\Component\Queue\Constants;
use Jiminny\Mail\Reports\AskJiminnyReportExpiringMail;
use Jiminny\Repositories\AutomatedReportsRepository;
use Psr\Log\LoggerInterface;
use Sentry\Laravel\Facade as Sentry;
use Throwable;
class SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
private const string LOG_PREFIX = '[Send Report Expiring Soon Mail]';
public int $tries = 3;
/** @var array<int, int> */
public array $backoff = [60, 300, 600];
public int $timeout = 120;
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
LoggerInterface $logger,
AutomatedReportsRepository $reportRepository,
UrlGenerator $urlGenerator,
): void {
$report = $reportRepository->findByUuid($this->reportUuid);
if ($report === null) {
$logger->warning(self::LOG_PREFIX . ' Report not found', [
'reportUuid' => $this->reportUuid,
]);
return;
}
$creator = $report->getCreator();
if ($creator === null) {
$logger->warning(self::LOG_PREFIX . ' Creator missing', [
'reportUuid' => $this->reportUuid,
'teamId' => $report->getTeamId(),
]);
return;
}
$creatorEmail = $creator->getEmailAddress();
if (empty($creatorEmail)) {
$logger->warning(self::LOG_PREFIX . ' Creator email missing', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
]);
return;
}
$reportName = $report->getCustomName() ?? '';
$expiresAt = $report->getExpiresAt();
$expiresAtFormatted = $expiresAt !== null ? $expiresAt->format('jS F') : '';
$reportsPageUrl = $urlGenerator->route('ai.reports.show');
try {
Mail::mailer('postmark')
->to($creatorEmail)
->send(new AskJiminnyReportExpiringMail(
reportName: $reportName,
expiresAtFormatted: $expiresAtFormatted,
reportsPageUrl: $reportsPageUrl,
));
$logger->info(self::LOG_PREFIX . ' Email sent', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
'email' => $creatorEmail,
'expiresAt' => $expiresAt?->toDateString(),
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error sending email', [
'reportUuid' => $this->reportUuid,
'email' => $creatorEmail,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
Sentry::captureException($e);
if ($this->attempts() < $this->tries) {
$backoffIndex = min($this->attempts() - 1, count($this->backoff) - 1);
$this->release($this->backoff[$backoffIndex]);
} else {
$this->fail($e);
}
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring start {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring end {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:18] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"6b84611f-1af3-4e64-8c1c-c963ed5bcfa7","trace_id":"056c6533-0c1b-480c-93bb-4b7c788b5dc4"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring start {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring end {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":23540024,"real_usage":65011712,"pid":13878} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":38.25,"usage":23605688,"real_usage":65011712,"pid":13878,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":23563904,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.6,"average_seconds_per_request":0.6} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":635.09} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":2129.8,"usage":23740736,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":23715400,"real_usage":65011712,"pid":13878} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":51.31,"usage":23689016,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":23649656,"real_usage":65011712,"pid":13878} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":18.47,"usage":23692568,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring start {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring end {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:45] local.NOTICE: Calendar sync start {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs re...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79251
|
|
79252
|
Project: faVsco.js, menu
JY-20508-notify-before-AJ Project: faVsco.js, menu
JY-20508-notify-before-AJ-report-expiration, menu
Start Listening for PHP Debug Connections
SendReportExpiringSoonMailJobTest
Run 'SendReportExpiringSoonMailJobTest'
Debug 'SendReportExpiringSoonMailJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Routing\UrlGenerator;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
use Jiminny\Component\Queue\Constants;
use Jiminny\Mail\Reports\AskJiminnyReportExpiringMail;
use Jiminny\Repositories\AutomatedReportsRepository;
use Psr\Log\LoggerInterface;
use Sentry\Laravel\Facade as Sentry;
use Throwable;
class SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
private const string LOG_PREFIX = '[Send Report Expiring Soon Mail]';
public int $tries = 3;
/** @var array<int, int> */
public array $backoff = [60, 300, 600];
public int $timeout = 120;
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
LoggerInterface $logger,
AutomatedReportsRepository $reportRepository,
UrlGenerator $urlGenerator,
): void {
$report = $reportRepository->findByUuid($this->reportUuid);
if ($report === null) {
$logger->warning(self::LOG_PREFIX . ' Report not found', [
'reportUuid' => $this->reportUuid,
]);
return;
}
$creator = $report->getCreator();
if ($creator === null) {
$logger->warning(self::LOG_PREFIX . ' Creator missing', [
'reportUuid' => $this->reportUuid,
'teamId' => $report->getTeamId(),
]);
return;
}
$creatorEmail = $creator->getEmailAddress();
if (empty($creatorEmail)) {
$logger->warning(self::LOG_PREFIX . ' Creator email missing', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
]);
return;
}
$reportName = $report->getCustomName() ?? '';
$expiresAt = $report->getExpiresAt();
$expiresAtFormatted = $expiresAt !== null ? $expiresAt->format('jS F') : '';
$reportsPageUrl = $urlGenerator->route('ai.reports.show');
try {
Mail::mailer('postmark')
->to($creatorEmail)
->send(new AskJiminnyReportExpiringMail(
reportName: $reportName,
expiresAtFormatted: $expiresAtFormatted,
reportsPageUrl: $reportsPageUrl,
));
$logger->info(self::LOG_PREFIX . ' Email sent', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
'email' => $creatorEmail,
'expiresAt' => $expiresAt?->toDateString(),
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error sending email', [
'reportUuid' => $this->reportUuid,
'email' => $creatorEmail,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
Sentry::captureException($e);
if ($this->attempts() < $this->tries) {
$backoffIndex = min($this->attempts() - 1, count($this->backoff) - 1);
$this->release($this->backoff[$backoffIndex]);
} else {
$this->fail($e);
}
}
}
}
Code changed:
Hide...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79252
|
|
79253
|
Project: faVsco.js, menu
JY-20508-notify-before-AJ Project: faVsco.js, menu
JY-20508-notify-before-AJ-report-expiration, menu
Start Listening for PHP Debug Connections
SendReportExpiringSoonMailJobTest
Run 'SendReportExpiringSoonMailJobTest'
Debug 'SendReportExpiringSoonMailJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Routing\UrlGenerator;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
use Jiminny\Component\Queue\Constants;
use Jiminny\Mail\Reports\AskJiminnyReportExpiringMail;
use Jiminny\Repositories\AutomatedReportsRepository;
use Psr\Log\LoggerInterface;
use Sentry\Laravel\Facade as Sentry;
use Throwable;
class SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
private const string LOG_PREFIX = '[Send Report Expiring Soon Mail]';
public int $tries = 3;
/** @var array<int, int> */
public array $backoff = [60, 300, 600];
public int $timeout = 120;
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
LoggerInterface $logger,
AutomatedReportsRepository $reportRepository,
UrlGenerator $urlGenerator,
): void {
$report = $reportRepository->findByUuid($this->reportUuid);
if ($report === null) {
$logger->warning(self::LOG_PREFIX . ' Report not found', [
'reportUuid' => $this->reportUuid,
]);
return;
}
$creator = $report->getCreator();
if ($creator === null) {
$logger->warning(self::LOG_PREFIX . ' Creator missing', [
'reportUuid' => $this->reportUuid,
'teamId' => $report->getTeamId(),
]);
return;
}
$creatorEmail = $creator->getEmailAddress();
if (empty($creatorEmail)) {
$logger->warning(self::LOG_PREFIX . ' Creator email missing', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
]);
return;
}
$reportName = $report->getCustomName() ?? '';
$expiresAt = $report->getExpiresAt();
$expiresAtFormatted = $expiresAt !== null ? $expiresAt->format('jS F') : '';
$reportsPageUrl = $urlGenerator->route('ai.reports.show');
try {
Mail::mailer('postmark')
->to($creatorEmail)
->send(new AskJiminnyReportExpiringMail(
reportName: $reportName,
expiresAtFormatted: $expiresAtFormatted,
reportsPageUrl: $reportsPageUrl,
));
$logger->info(self::LOG_PREFIX . ' Email sent', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
'email' => $creatorEmail,
'expiresAt' => $expiresAt?->toDateString(),
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error sending email', [
'reportUuid' => $this->reportUuid,
'email' => $creatorEmail,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
Sentry::captureException($e);
if ($this->attempts() < $this->tries) {
$backoffIndex = min($this->attempts() - 1, count($this->backoff) - 1);
$this->release($this->backoff[$backoffIndex]);
} else {
$this->fail($e);
}
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring start {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring end {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:18] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"6b84611f-1af3-4e64-8c1c-c963ed5bcfa7","trace_id":"056c6533-0c1b-480c-93bb-4b7c788b5dc4"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring start {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring end {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":23540024,"real_usage":65011712,"pid":13878} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":38.25,"usage":23605688,"real_usage":65011712,"pid":13878,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":23563904,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.6,"average_seconds_per_request":0.6} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":635.09} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":2129.8,"usage":23740736,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":23715400,"real_usage":65011712,"pid":13878} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":51.31,"usage":23689016,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":23649656,"real_usage":65011712,"pid":13878} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":18.47,"usage":23692568,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring start {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring end {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:45] local.NOTICE: Calendar sync start {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"so...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79253
|
|
79254
|
Project: faVsco.js, menu
JY-20508-notify-before-AJ Project: faVsco.js, menu
JY-20508-notify-before-AJ-report-expiration, menu
Start Listening for PHP Debug Connections
SendReportExpiringSoonMailJobTest
Run 'SendReportExpiringSoonMailJobTest'
Debug 'SendReportExpiringSoonMailJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Routing\UrlGenerator;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
use Jiminny\Component\Queue\Constants;
use Jiminny\Mail\Reports\AskJiminnyReportExpiringMail;
use Jiminny\Repositories\AutomatedReportsRepository;
use Psr\Log\LoggerInterface;
use Sentry\Laravel\Facade as Sentry;
use Throwable;
class SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
private const string LOG_PREFIX = '[Send Report Expiring Soon Mail]';
public int $tries = 3;
/** @var array<int, int> */
public array $backoff = [60, 300, 600];
public int $timeout = 120;
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
LoggerInterface $logger,
AutomatedReportsRepository $reportRepository,
UrlGenerator $urlGenerator,
): void {
$report = $reportRepository->findByUuid($this->reportUuid);
if ($report === null) {
$logger->warning(self::LOG_PREFIX . ' Report not found', [
'reportUuid' => $this->reportUuid,
]);
return;
}
$creator = $report->getCreator();
if ($creator === null) {
$logger->warning(self::LOG_PREFIX . ' Creator missing', [
'reportUuid' => $this->reportUuid,
'teamId' => $report->getTeamId(),
]);
return;
}
$creatorEmail = $creator->getEmailAddress();
if (empty($creatorEmail)) {
$logger->warning(self::LOG_PREFIX . ' Creator email missing', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
]);
return;
}
$reportName = $report->getCustomName() ?? '';
$expiresAt = $report->getExpiresAt();
$expiresAtFormatted = $expiresAt !== null ? $expiresAt->format('jS F') : '';
$reportsPageUrl = $urlGenerator->route('ai.reports.show');
try {
Mail::mailer('postmark')
->to($creatorEmail)
->send(new AskJiminnyReportExpiringMail(
reportName: $reportName,
expiresAtFormatted: $expiresAtFormatted,
reportsPageUrl: $reportsPageUrl,
));
$logger->info(self::LOG_PREFIX . ' Email sent', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
'email' => $creatorEmail,
'expiresAt' => $expiresAt?->toDateString(),
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error sending email', [
'reportUuid' => $this->reportUuid,
'email' => $creatorEmail,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
Sentry::captureException($e);
if ($this->attempts() < $this->tries) {
$backoffIndex = min($this->attempts() - 1, count($this->backoff) - 1);
$this->release($this->backoff[$backoffIndex]);
} else {
$this->fail($e);
}
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring start {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring end {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:18] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"6b84611f-1af3-4e64-8c1c-c963ed5bcfa7","trace_id":"056c6533-0c1b-480c-93bb-4b7c788b5dc4"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring start {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring end {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":23540024,"real_usage":65011712,"pid":13878} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":38.25,"usage":23605688,"real_usage":65011712,"pid":13878,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":23563904,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.6,"average_seconds_per_request":0.6} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":635.09} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":2129.8,"usage":23740736,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":23715400,"real_usage":65011712,"pid":13878} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":51.31,"usage":23689016,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":23649656,"real_usage":65011712,"pid":13878} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":18.47,"usage":23692568,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring start {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring end {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:45] local.NOTICE: Calendar sync start {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"so...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79254
|
|
79255
|
Project: faVsco.js, menu
JY-20508-notify-before-AJ Project: faVsco.js, menu
JY-20508-notify-before-AJ-report-expiration, menu
Start Listening for PHP Debug Connections
SendReportExpiringSoonMailJobTest
Run 'SendReportExpiringSoonMailJobTest'
Debug 'SendReportExpiringSoonMailJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Routing\UrlGenerator;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
use Jiminny\Component\Queue\Constants;
use Jiminny\Mail\Reports\AskJiminnyReportExpiringMail;
use Jiminny\Repositories\AutomatedReportsRepository;
use Psr\Log\LoggerInterface;
use Sentry\Laravel\Facade as Sentry;
use Throwable;
class SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
private const string LOG_PREFIX = '[Send Report Expiring Soon Mail]';
public int $tries = 3;
/** @var array<int, int> */
public array $backoff = [60, 300, 600];
public int $timeout = 120;
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
LoggerInterface $logger,
AutomatedReportsRepository $reportRepository,
UrlGenerator $urlGenerator,
): void {
$report = $reportRepository->findByUuid($this->reportUuid);
if ($report === null) {
$logger->warning(self::LOG_PREFIX . ' Report not found', [
'reportUuid' => $this->reportUuid,
]);
return;
}
$creator = $report->getCreator();
if ($creator === null) {
$logger->warning(self::LOG_PREFIX . ' Creator missing', [
'reportUuid' => $this->reportUuid,
'teamId' => $report->getTeamId(),
]);
return;
}
$creatorEmail = $creator->getEmailAddress();
if (empty($creatorEmail)) {
$logger->warning(self::LOG_PREFIX . ' Creator email missing', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
]);
return;
}
$reportName = $report->getCustomName() ?? '';
$expiresAt = $report->getExpiresAt();
$expiresAtFormatted = $expiresAt !== null ? $expiresAt->format('jS F') : '';
$reportsPageUrl = $urlGenerator->route('ai.reports.show');
try {
Mail::mailer('postmark')
->to($creatorEmail)
->send(new AskJiminnyReportExpiringMail(
reportName: $reportName,
expiresAtFormatted: $expiresAtFormatted,
reportsPageUrl: $reportsPageUrl,
));
$logger->info(self::LOG_PREFIX . ' Email sent', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
'email' => $creatorEmail,
'expiresAt' => $expiresAt?->toDateString(),
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error sending email', [
'reportUuid' => $this->reportUuid,
'email' => $creatorEmail,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
Sentry::captureException($e);
if ($this->attempts() < $this->tries) {
$backoffIndex = min($this->attempts() - 1, count($this->backoff) - 1);
$this->release($this->backoff[$backoffIndex]);
} else {
$this->fail($e);
}
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring start {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring end {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:18] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"6b84611f-1af3-4e64-8c1c-c963ed5bcfa7","trace_id":"056c6533-0c1b-480c-93bb-4b7c788b5dc4"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring start {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring end {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":23540024,"real_usage":65011712,"pid":13878} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":38.25,"usage":23605688,"real_usage":65011712,"pid":13878,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":23563904,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.6,"average_seconds_per_request":0.6} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":635.09} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":2129.8,"usage":23740736,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":23715400,"real_usage":65011712,"pid":13878} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":51.31,"usage":23689016,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":23649656,"real_usage":65011712,"pid":13878} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":18.47,"usage":23692568,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring start {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring end {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:45] local.NOTICE: Calendar sync start {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"so...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79255
|
|
79325
|
.O BPhpStormViewNavigateCodeLaravelKeractorToolsWi .O BPhpStormViewNavigateCodeLaravelKeractorToolsWindowHel°9 JY-20508-notify-before-AJ-reC) SendReportJob.ong© RequestGenerateAskJiminnyReportJob© RequestGenerateReportJob.php© SendReportExpiringSoonMailJob.php© SendReportJob.php© SendReportMailJob.php07 CalendaD Crm>@ Delete>C Hubspot> 0 Salesforce© SendReportMailJob.php© AskJiminnyReportExpiringMail.php© SendReportExpiringSoonMailJobTest.php#ask-<> index.html© UserAutomatedReportsController.phgclass SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueueDUDLICfunction handle(Mail::marler name: "postmark')->to(ScreatorEmail)->sendinew_Ask.iminnvRenortExoirinaMa1.drenortName: SrenortName.exoinesAtFormatted: SexninesAtFormattedireportsPageUrl: SreportsPageUrl(c) AutoloaDelavedTocrm.ohpC) CheckAndRetrvRemoteMatch.ohc)):c) createFollowuoActiviiv.ohoc) createNotes.ono© MatchActivitiesToNewOpnortunitv.ohnC) MatchActivitvCrmData.onv€) NoteObiect.oho$logger->info(self::LOG_PREFIX. ' Email sent', ['reportUuid' => Sthis->reportUuid'creatorId' => $creator->getId()'email' => $creatorEmail'expiresAt' => SexpiresAt?->toDateStringolC) SaveActivitv.oho@ SaveTranccrintion nhr101(c) Sotunl avout nhnl© SyncActivity.php© SyncFieldMetadata.php} catch (Throwable $e) {$logger->error(self::L0G_PREFIX. ' Error sending email'.'reportUuid' => Sthis->reportUuid'email' => ScreatorEmailLocal ChangesShelConsoleLoa XChandes 12 filed= .env.local app© ActivityController.php app/Http/Controllers/APask-jiminny-report-expiring.blade.php resources/views/emails/reports© AskJiminnyReportExpiringMail.php app/Mail/Reports© AutomatedReportsCommand.php app/Console/Commands/Reports© AutomatedReportsRepository.php app/Repositories© JiminnyDebugCommand.php app/Console/Commandsphp logaing.php confic© PlavbackService.php app/Services© SendReportExpirinaSoonMailJob.php app/Jobs/AutomatedReports© SendReportExpiringSoonMailJobTest.php tests/Unit/Jobs/AutomatedReports@ SvncTolntercom.ohp app/.Jobs/TeamUnversioned Files 9 files= env.nikilocal apdE env.other appC CanAccessAiReportsTest.pho tests/Unit/Policies@ CreateMockAskJiminnvReportResultCommand.oho app/Console/Commands/ReF favicon.ico publid+1 0+→ Side-by-side viewer +Current version tests/Unit/Do not ignoreHighlight wordsy ?dRenortExoirinaSoonMail.lobTest.ohoSthic->loanen-seynectc/Sthis->onceobl->method("warning')->with(Sthis->stringContains('Report not found'), $this->anythingO):Sthis->job->handle(Sthis->loqger, Sthis->reportRepository. $this->urlGenerator)Mail::assertNothingSentO:public function testHandleReturnsEarlyWhenCreatorMissingO: voidSrenort= sthis->createrockAutomatedrenort..class)sSrenort->methodc'cetcreaton')->wll.Returninu.o:Sreport->method('qetTeamId')->willReturn(7):Sthis->renortReoositorv->expects(Sthis->onceoblids tyt annToraw_sqLquery.sql appC) SimulateWehhooksCommand.nhn ann/Console/Commands/Crm/Hubsnotl->method('findBvUuid'))->withSthis->renortlluidh->wnln Return (Srenort)•MLWERHOOK SIL TERING IMPI EMENTATION.md annSthis->loagen->pynects/Sthis->onceobl->method( "warnina!)->withSthis->stninafontains("Cnpaton micsing") Sthis-sanvthing0)•Sthis->job->handle(Sthis->logger, $this->reportRepository, $this->urlGenerator):SendReportExpiringSoonMailJobTestF11 24 Aor 19:04:01+0...= custom.log= laravel.log X 4 SF jiminny@localhost]A HS_local (jiminny@localhost]A console [PROD]194197205206207A console (EU]A console [STAGING)2026-04-24 10:28:49] local.ERROR: [SocialAccountService] Fail ~™2026-04-24 10:28:49] local.INF0: [SocialAccount0bserver] Saving model4020-04-24 10.20.47[SocialAccountService] Failed to refresh1020-04-24 10.20.4% Local. LNFU.soclaLAccountservice recchino coken ""s2026-04-24 10:28:492026-04-24 10:28:49] local.INF0:2026-04-24 10:28:491Local.INFU:Soc1aLAccountService Token needs retres[EncryptedTokenManager] Generating accessSoc1aLAccountService Retreshing token fr7026-04-24 10:28:49 Local.ERROR:Soc1aLAccountServicel Falled to refreshSoc1aLAccountUbserver Saving model*"C2026-04-24 10:28:501 local, ERROR:2026-04-241LoCOLINFO:2026-04-24 10:28:501 local, INF0:Soc1aLAccountServiceFetchino token ""s[SocialAccountServicel Token retrieved {"2026-04-2410:28:5011Local. INFO:lEncrvotedtokenManager Generatina access2026-04-24 10:28:50] Local.INF0: Calendar sync job dispatched {"calendar_ic2026-04-24 10:28:501 LocaL.INF0:SocialAccountServicel Fetchina token «"sa2026-04-24 10:28:50] local.INFO:SocialAccountServicel Token needs refrest2026-04-24 10-28•501 TocolTNS0• EncrvntedtokenManagen Genenatina accoso2026-04-24 10:28:50] local.INF0: [SocialAccountService] Refreshing token fr2026-04-24 10:28:50] local.ERROR: [SocialAccountService] Failed to refresh2026-04-24 10:28:50] local.INF0: [SocialAccount0bserver] Saving model {"cc2026-04-24 10:28:50] local.ERROR: [SocialAccountService] Failed to refreshCascadeFixing Favicon InconsAutomated Reports ExThought for 1sRead SendRenortExoirinaSoonMail.JobTest.ono #L1-20All tests pass. Here's the review:ReviewFiles changed• AskJiminnyReportExpiringMail.php - removed ShouldQueue, Queueable, SerializesModels . Minimal mailable•ask=11m1nny=report-exp1r1nq.blade.onp — matches the desianAutomatedReportsRepository-php - added getActiveAskJiminnyReportsExpiring0n(CarbonImmutable $date) using whereDateindexed, correct for expires at date column).•AutomatedRenortsCond. oho — new not ifvAskliminnvRenortsExoirinaSoon with REPORT EXPTRING SOON DAYS = 7 const. runsevery day, dispatches SendReportExp1ringsocSendReportExpiringSoonMailJob-php - ShouldBeUnique / ShouldQueue, tries=3 with [60,300,600] backoff, resolves creator, formatsdate is F. sends sunchronousiv. loas + Sentry on tallure• SendReportExpiringSoonMailJobTest-php - new, 7 tests / 39 assertions, all passingTest coverage for SendReportExpiringSoonMailJobAsk anything (&+L)Claude Oous 4.7 Mediumio 4 spaces...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79325
|
|
79326
|
Project: faVsco.js, menu
JY-20508-notify-before-AJ Project: faVsco.js, menu
JY-20508-notify-before-AJ-report-expiration, menu
Start Listening for PHP Debug Connections
SendReportExpiringSoonMailJobTest
Run 'SendReportExpiringSoonMailJobTest'
Debug 'SendReportExpiringSoonMailJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Routing\UrlGenerator;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
use Jiminny\Component\Queue\Constants;
use Jiminny\Mail\Reports\AskJiminnyReportExpiringMail;
use Jiminny\Repositories\AutomatedReportsRepository;
use Psr\Log\LoggerInterface;
use Sentry\Laravel\Facade as Sentry;
use Throwable;
class SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
private const string LOG_PREFIX = '[Send Report Expiring Soon Mail]';
public int $tries = 3;
/** @var array<int, int> */
public array $backoff = [60, 300, 600];
public int $timeout = 120;
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
LoggerInterface $logger,
AutomatedReportsRepository $reportRepository,
UrlGenerator $urlGenerator,
): void {
$report = $reportRepository->findByUuid($this->reportUuid);
if ($report === null) {
$logger->warning(self::LOG_PREFIX . ' Report not found', [
'reportUuid' => $this->reportUuid,
]);
return;
}
$creator = $report->getCreator();
if ($creator === null) {
$logger->warning(self::LOG_PREFIX . ' Creator missing', [
'reportUuid' => $this->reportUuid,
'teamId' => $report->getTeamId(),
]);
return;
}
$creatorEmail = $creator->getEmailAddress();
if (empty($creatorEmail)) {
$logger->warning(self::LOG_PREFIX . ' Creator email missing', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
]);
return;
}
$reportName = $report->getCustomName() ?? '';
$expiresAt = $report->getExpiresAt();
$expiresAtFormatted = $expiresAt !== null ? $expiresAt->format('jS F') : '';
$reportsPageUrl = $urlGenerator->route('ai.reports.show');
try {
Mail::mailer('postmark')
->to($creatorEmail)
->send(new AskJiminnyReportExpiringMail(
reportName: $reportName,
expiresAtFormatted: $expiresAtFormatted,
reportsPageUrl: $reportsPageUrl,
));
$logger->info(self::LOG_PREFIX . ' Email sent', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
'email' => $creatorEmail,
'expiresAt' => $expiresAt?->toDateString(),
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error sending email', [
'reportUuid' => $this->reportUuid,
'email' => $creatorEmail,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
Sentry::captureException($e);
if ($this->attempts() < $this->tries) {
$backoffIndex = min($this->attempts() - 1, count($this->backoff) - 1);
$this->release($this->backoff[$backoffIndex]);
} else {
$this->fail($e);
}
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
Analyzing…
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring start {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring end {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:18] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"6b84611f-1af3-4e64-8c1c-c963ed5bcfa7","trace_id":"056c6533-0c1b-480c-93bb-4b7c788b5dc4"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring start {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring end {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":23540024,"real_usage":65011712,"pid":13878} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":38.25,"usage":23605688,"real_usage":65011712,"pid":13878,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":23563904,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.6,"average_seconds_per_request":0.6} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":635.09} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":2129.8,"usage":23740736,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":23715400,"real_usage":65011712,"pid":13878} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":51.31,"usage":23689016,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":23649656,"real_usage":65011712,"pid":13878} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":18.47,"usage":23692568,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring start {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring end {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:45] local.NOTICE: Calendar sync start {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs re...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79326
|
|
79353
|
Project: faVsco.js, menu
JY-20508-notify-before-AJ Project: faVsco.js, menu
JY-20508-notify-before-AJ-report-expiration, menu
Start Listening for PHP Debug Connections
SendReportExpiringSoonMailJobTest
Run 'SendReportExpiringSoonMailJobTest'
Debug 'SendReportExpiringSoonMailJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Routing\UrlGenerator;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
use Jiminny\Component\Queue\Constants;
use Jiminny\Mail\Reports\AskJiminnyReportExpiringMail;
use Jiminny\Repositories\AutomatedReportsRepository;
use Psr\Log\LoggerInterface;
use Sentry\Laravel\Facade as Sentry;
use Throwable;
class SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
private const string LOG_PREFIX = '[Send Report Expiring Soon Mail]';
public int $tries = 3;
/** @var array<int, int> */
public array $backoff = [60, 300, 600];
public int $timeout = 120;
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
LoggerInterface $logger,
AutomatedReportsRepository $reportRepository,
UrlGenerator $urlGenerator,
): void {
$report = $reportRepository->findByUuid($this->reportUuid);
if ($report === null) {
$logger->warning(self::LOG_PREFIX . ' Report not found', [
'reportUuid' => $this->reportUuid,
]);
return;
}
$creator = $report->getCreator();
if ($creator === null) {
$logger->warning(self::LOG_PREFIX . ' Creator missing', [
'reportUuid' => $this->reportUuid,
'teamId' => $report->getTeamId(),
]);
return;
}
$creatorEmail = $creator->getEmailAddress();
if (empty($creatorEmail)) {
$logger->warning(self::LOG_PREFIX . ' Creator email missing', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
]);
return;
}
$reportName = $report->getCustomName() ?? '';
$expiresAt = $report->getExpiresAt();
$expiresAtFormatted = $expiresAt !== null ? $expiresAt->format('jS F') : '';
$reportsPageUrl = $urlGenerator->route('ai.reports.show');
try {
Mail::mailer('postmark')
->to($creatorEmail)
->send(new AskJiminnyReportExpiringMail(
reportName: $reportName,
expiresAtFormatted: $expiresAtFormatted,
reportsPageUrl: $reportsPageUrl,
));
$logger->info(self::LOG_PREFIX . ' Email sent', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
'email' => $creatorEmail,
'expiresAt' => $expiresAt?->toDateString(),
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error sending email', [
'reportUuid' => $this->reportUuid,
'email' => $creatorEmail,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
Sentry::captureException($e);
if ($this->attempts() < $this->tries) {
$backoffIndex = min($this->attempts() - 1, count($this->backoff) - 1);
$this->release($this->backoff[$backoffIndex]);
} else {
$this->fail($e);
}
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring start {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring end {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:18] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"6b84611f-1af3-4e64-8c1c-c963ed5bcfa7","trace_id":"056c6533-0c1b-480c-93bb-4b7c788b5dc4"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring start {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring end {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":23540024,"real_usage":65011712,"pid":13878} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":38.25,"usage":23605688,"real_usage":65011712,"pid":13878,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":23563904,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.6,"average_seconds_per_request":0.6} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":635.09} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":2129.8,"usage":23740736,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":23715400,"real_usage":65011712,"pid":13878} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":51.31,"usage":23689016,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":23649656,"real_usage":65011712,"pid":13878} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":18.47,"usage":23692568,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring start {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring end {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:45] local.NOTICE: Calendar sync start {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"so...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79353
|
|
79354
|
Project: faVsco.js, menu
JY-20508-notify-before-AJ Project: faVsco.js, menu
JY-20508-notify-before-AJ-report-expiration, menu
Start Listening for PHP Debug Connections
SendReportExpiringSoonMailJobTest
Run 'SendReportExpiringSoonMailJobTest'
Debug 'SendReportExpiringSoonMailJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Routing\UrlGenerator;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Mail;
use Jiminny\Component\Queue\Constants;
use Jiminny\Mail\Reports\AskJiminnyReportExpiringMail;
use Jiminny\Repositories\AutomatedReportsRepository;
use Psr\Log\LoggerInterface;
use Sentry\Laravel\Facade as Sentry;
use Throwable;
class SendReportExpiringSoonMailJob implements ShouldBeUnique, ShouldQueue
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
private const string LOG_PREFIX = '[Send Report Expiring Soon Mail]';
public int $tries = 3;
/** @var array<int, int> */
public array $backoff = [60, 300, 600];
public int $timeout = 120;
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
LoggerInterface $logger,
AutomatedReportsRepository $reportRepository,
UrlGenerator $urlGenerator,
): void {
$report = $reportRepository->findByUuid($this->reportUuid);
if ($report === null) {
$logger->warning(self::LOG_PREFIX . ' Report not found', [
'reportUuid' => $this->reportUuid,
]);
return;
}
$creator = $report->getCreator();
if ($creator === null) {
$logger->warning(self::LOG_PREFIX . ' Creator missing', [
'reportUuid' => $this->reportUuid,
'teamId' => $report->getTeamId(),
]);
return;
}
$creatorEmail = $creator->getEmailAddress();
if (empty($creatorEmail)) {
$logger->warning(self::LOG_PREFIX . ' Creator email missing', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
]);
return;
}
$reportName = $report->getCustomName() ?? '';
$expiresAt = $report->getExpiresAt();
$expiresAtFormatted = $expiresAt !== null ? $expiresAt->format('jS F') : '';
$reportsPageUrl = $urlGenerator->route('ai.reports.show');
try {
Mail::mailer('postmark')
->to($creatorEmail)
->send(new AskJiminnyReportExpiringMail(
reportName: $reportName,
expiresAtFormatted: $expiresAtFormatted,
reportsPageUrl: $reportsPageUrl,
));
$logger->info(self::LOG_PREFIX . ' Email sent', [
'reportUuid' => $this->reportUuid,
'creatorId' => $creator->getId(),
'email' => $creatorEmail,
'expiresAt' => $expiresAt?->toDateString(),
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error sending email', [
'reportUuid' => $this->reportUuid,
'email' => $creatorEmail,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
Sentry::captureException($e);
if ($this->attempts() < $this->tries) {
$backoffIndex = min($this->attempts() - 1, count($this->backoff) - 1);
$this->release($this->backoff[$backoffIndex]);
} else {
$this->fail($e);
}
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-04-24 10:24:09] local.INFO: [automated-reports] Started {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Checking conditions {"isMonday":false,"isWeekend":false,"isFirstDayOfMonth":false,"currentMonth":4,"isQuarterlyMonth":true} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:09] local.INFO: [automated-reports] Processing daily reports {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Found 1 daily reports to process {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Dispatching Generate Report job for report {"reportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","teamId":1,"frequency":"weekly","type":"ask_jiminny"} {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:10] local.INFO: [automated-reports] Completed {"correlation_id":"4ef6e232-88d2-4935-87d3-62ff95c3b2d5","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:11] local.INFO: [AskJiminnyReport:Generate] Started {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43"} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport] Fetched activity IDs for saved search {"saved_search_id":1977,"user_id":143,"activity_count":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Fetched activity IDs {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Not enough activities, skipped {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","activityCount":0} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:15] local.INFO: [AskJiminnyReport:Generate] Dispatched not-generated notifications {"automatedReportUuid":"4f6ca2b5-1993-48aa-99ad-b66f19f15d43","recipientsCount":1} {"correlation_id":"00ca4f00-8a80-4bdd-b401-804183825595","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: [Send Report Not Generated Mail] Email sent {"uuid":"dcb12181-9de1-4ef0-9d45-fb4ea6fd0778","email":"[EMAIL]"} {"correlation_id":"27ada0cc-4eb3-49c4-9115-19ece9e24576","trace_id":"6af075f9-940e-4789-b9b4-cb42649b2cf5"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d9261d90-9df8-4eb4-8dcc-54b29d8e39cb","trace_id":"5c4d23da-1340-4066-b354-55bfb79c0f4a"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:26] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cdcdc062-b51a-4f27-9d4c-95ef48442391","trace_id":"e7701141-f61a-431e-8fac-697bccd67630"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring start {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:35] local.NOTICE: Monitoring end {"correlation_id":"862cdf2d-46ca-4f7b-966b-79a5f2648771","trace_id":"961d76fe-7891-42e6-9d2e-c1dec32ec53b"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3529a427-eebb-4c61-9efb-be7b720d4dc3","trace_id":"63b1fd43-6c0e-44d1-a8d4-a7aaa509815d"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:24:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"ebdfa028-0918-4dff-8eec-bafc1d997f9d","trace_id":"dd8b3479-50fa-4fc2-b3f9-581a6250baea"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:23:00, 2026-04-24 10:25:00] {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:01] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6ace59e3-341b-49e4-8e3f-36ea22423005","trace_id":"53678e7f-c854-4c0f-bc6d-c1ad8ba49696"}
[2026-04-24 10:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1496,"provider":"aircall"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.ERROR: [Aircall] Re-activating webhooks failed {"team_id":1,"reason":"{\"message\":\"Forbidden\"}"} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:10] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:aircall:check-and-renew","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"11e8b9cf-a3f0-49b8-9066-e1f16e743f68","trace_id":"15598fe3-5b2f-49a6-84e3-48c9ab2a0d35"}
[2026-04-24 10:25:18] local.INFO: [RetryFailedDownloads] Starting {"options":{"from":null,"to":null,"help":false,"silent":false,"quiet":false,"verbose":false,"version":false,"ansi":null,"no-interaction":false,"env":null}} {"correlation_id":"6b84611f-1af3-4e64-8c1c-c963ed5bcfa7","trace_id":"056c6533-0c1b-480c-93bb-4b7c788b5dc4"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cef03617-e15a-498b-8751-efa9b8808ec9","trace_id":"793af5d4-ea14-4e7d-bf10-bdf65c4b41b9"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d916f4b2-7912-4b9d-a733-794daab3d108","trace_id":"75dc6489-d592-4de8-968d-4f9e9c4a2a57"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring start {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:23] local.NOTICE: Monitoring end {"correlation_id":"9e9c1b30-7cf9-4944-9e1e-5a81e68a65df","trace_id":"000992c5-8e61-4246-a35f-09f1d832ddd1"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"f8026235-b956-4aaf-9600-b7b93e3d9c74","trace_id":"759b3dbc-2e19-46cd-91c9-9065e063d32e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"4669b9f7-c3b1-4147-b391-8f8314c25042","trace_id":"aff20f19-1f01-4fed-98d7-8ecafcae8c6e"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:24:00, 2026-04-24 10:26:00] {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"23076007-fc54-415a-9900-2270769cd622","trace_id":"ffefe56f-2881-4273-9dd1-93b8efff8334"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cd5d0352-aec8-49be-8730-433061921ee7","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":23540024,"real_usage":65011712,"pid":13878} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":38.25,"usage":23605688,"real_usage":65011712,"pid":13878,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"f65fbc87-0ff6-49b0-bb0f-2b6edf95b900","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":23563904,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:45] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:46] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.6,"average_seconds_per_request":0.6} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":635.09} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":2129.8,"usage":23740736,"real_usage":65011712,"pid":13878} {"correlation_id":"281cf1ba-d862-4a45-aaf6-26a340bc2bfd","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":23715400,"real_usage":65011712,"pid":13878} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":51.31,"usage":23689016,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"09262b7b-a2e2-41d5-b42b-25f31846d7a8","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":23649656,"real_usage":65011712,"pid":13878} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:47] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":18.47,"usage":23692568,"real_usage":65011712,"pid":13878,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"70df60f3-aed6-4daa-a246-71fb82f49d68","trace_id":"594c907f-7401-4dd2-8ba1-59e5857f0d4c"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"42acc0c5-3653-49d1-a44a-19758cc28092","trace_id":"c0b07036-9e27-4742-a009-69972c67bced"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:26:59] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"55eab912-4003-455b-813c-4e3f8383acc8","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"be91dd09-c8e5-4e5d-a1e8-e1cc9979a32f","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-04-24 06:38:47"}}} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:27:00] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"da707eb9-3c1d-487e-8c92-1d018e0ca29d","trace_id":"cf803936-d9cd-4a75-b022-49f4b9a758da"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1e33635-9ed1-4df1-86f1-8a9fbb4a9aad","trace_id":"c6abf4b5-1c8f-4bdf-a4ee-99e15a883fdc"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"62e59e15-b6bd-4952-be03-365a8341880d","trace_id":"ef3bd6bb-ab65-4e80-82cd-5e91b176b702"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring start {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:18] local.NOTICE: Monitoring end {"correlation_id":"fde8ab81-2a83-4068-9a10-f407d3a55d8e","trace_id":"5bad50f3-1b72-4f42-82d1-01b230b9c096"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"3b9652a6-4242-49c2-a3c5-a0ff70d13469","trace_id":"8a1a2a8c-7fa6-4a35-b189-6165f66e1ae9"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:33] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"983ba273-68c0-472a-bd0f-83c4705711a3","trace_id":"382d4d84-d0e5-4f63-96f1-bfb6c0b366ea"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Running conference:monitor:count command for activities in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: [conference:monitor:count] No activities found in (2026-04-24 10:26:00, 2026-04-24 10:28:00] {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"26102185-655f-4837-ba5d-ed80e510f81b","trace_id":"8eca9c30-8319-480b-b138-c96d558f3930"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:45] local.NOTICE: Calendar sync start {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6daa2a6a-4861-4a83-97d1-720d8627b90c","trace_id":"1a8fc095-aca6-48d5-91f7-775fb9010d5b"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:46] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b9d8fda5-07a8-4e2e-aed6-dfc9e429c454","trace_id":"3f0ebfa1-5cdd-43d4-8bf2-1836de106d27"}
[2026-04-24 10:28:47] local.INFO: [SocialAccountService] Token needs refreshing {"so...
|
PhpStorm
|
faVsco.js – laravel.log
|
NULL
|
79354
|
|
11664
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11664
|
|
11666
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11666
|
|
11667
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11667
|
|
11668
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11668
|
|
11670
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11670
|
|
11671
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11671
|
|
11672
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11672
|
|
11673
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11673
|
|
11674
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11674
|
|
11675
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11675
|
|
11676
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11676
|
|
11677
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11677
|
|
11680
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11680
|
|
11681
|
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
5
Previous Highlighted Error
Next Highlighted Error
[2026-04-09 07:49:23] local.INFO: $payload
Array
(
[user_question] => Are these activities and give me the most insightful information about them
[call_ids] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[team_id] => 1
[request_id] => ff55bec0-961d-493f-b8fb-dbc2e1d25279
[callback_url] => [URL_WITH_CREDENTIALS] 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 – custom.log
|
NULL
|
11681
|
|
11737
|
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
Editor for custom.log
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 – custom.log
|
NULL
|
11737
|
|
41567
|
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
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
8
1
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Carbon;
use Jiminny\Traits\RequiresUUID;
/**
* Jiminny\Models\AutomatedReportResult
*
* @property int $id
* @property string $uuid
* @property int $report_id
* @property string|null $name
* @property int $status
* @property int $reason
* @property string $media_type
* @property int|null $parent_id
* @property array|null $payload
* @property array|null $response
* @property Carbon|null $requested_at
* @property Carbon|null $generated_at
* @property Carbon|null $sent_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read \Jiminny\Models\AutomatedReport $report
* @property-read AutomatedReportResult|null $parent
* @property-read \Illuminate\Database\Eloquent\Collection<int, AutomatedReportResult> $children
*/
class AutomatedReportResult extends Model
{
use RequiresUUID;
/**
* Status constants
*/
public const int STATUS_DEFAULT = 0;
public const int STATUS_REQUESTED = 1;
public const int STATUS_GENERATED = 2;
public const int STATUS_SENT = 3;
public const int STATUS_FAILED = 4;
/**
* Reason constants
*/
public const int REASON_DEFAULT = 0;
public const int REASON_NOT_ENOUGH_ACTIVITIES = 1;
public const int REASON_PROPHET_API_ERROR = 2;
protected $table = 'automated_report_results';
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'report_id',
'name',
'status',
'reason',
'media_type',
'parent_id',
'payload',
'response',
'requested_at',
'generated_at',
'sent_at',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'payload' => 'array',
'response' => 'array',
'requested_at' => 'datetime',
'generated_at' => 'datetime',
'sent_at' => 'datetime',
];
}
/**
* Get the automated report that owns this result.
*
* @return BelongsTo
*/
public function report(): BelongsTo
{
return $this->belongsTo(AutomatedReport::class, 'report_id')->withTrashed();
}
/**
* Get the parent report result.
*
* @return BelongsTo
*/
public function parent(): BelongsTo
{
return $this->belongsTo(self::class, 'parent_id');
}
/**
* Get the child report results.
*
* @return HasMany
*/
public function children(): HasMany
{
return $this->hasMany(self::class, 'parent_id');
}
/**
* Get the ID of the automated report result.
*
* @return int
*/
public function getId(): int
{
return $this->getAttribute('id');
}
/**
* Get the UUID of the automated report result.
*
* @return string
*/
public function getUuid(): string
{
return $this->getAttribute('id_string');
}
/**
* Get the report ID of the automated report result.
*
* @return int
*/
public function getReportId(): int
{
return $this->getAttribute('report_id');
}
/**
* Get the name of the automated report result.
*
* @return ?string
*/
public function getName(): ?string
{
return $this->getAttribute('name');
}
/**
* Get the status of the automated report result.
*
* @return int
*/
public function getStatus(): int
{
return $this->getAttribute('status');
}
/**
* Get the reason of the automated report result.
*
* @return int
*/
public function getReason(): int
{
return $this->getAttribute('reason');
}
/**
* Get the media type of the automated report result.
*
* @return string
*/
public function getMediaType(): ?string
{
return $this->getAttribute('media_type');
}
/**
* Get the parent ID of the automated report result.
*
* @return int|null
*/
public function getParentId(): ?int
{
return $this->getAttribute('parent_id');
}
/**
* Get the payload of the automated report result.
*
* @return array|null
*/
public function getPayload(): ?array
{
return $this->getAttribute('payload');
}
/**
* Get the response of the automated report result.
*
* @return array|null
*/
public function getResponse(): ?array
{
return $this->getAttribute('response');
}
/**
* Get the requested at date of the automated report result.
*
* @return Carbon|null
*/
public function getRequestedAt(): ?Carbon
{
return $this->getAttribute('requested_at');
}
/**
* Get the generated at date of the automated report result.
*
* @return Carbon|null
*/
public function getGeneratedAt(): ?Carbon
{
return $this->getAttribute('generated_at');
}
/**
* Get the sent at date of the automated report result.
*
* @return Carbon|null
*/
public function getSentAt(): ?Carbon
{
return $this->getAttribute('sent_at');
}
/**
* Get the created at date of the automated report result.
*
* @return Carbon
*/
public function getCreatedAt(): Carbon
{
return $this->getAttribute('created_at');
}
/**
* Get the updated at date of the automated report result.
*
* @return Carbon
*/
public function getUpdatedAt(): Carbon
{
return $this->getAttribute('updated_at');
}
/**
* Check if the report result is in requested status.
*
* @return bool
*/
public function isRequested(): bool
{
return $this->getStatus() === self::STATUS_REQUESTED;
}
/**
* Check if the report result is in generated status.
*
* @return bool
*/
public function isGenerated(): bool
{
return $this->getStatus() === self::STATUS_GENERATED;
}
/**
* Check if the report result is in sent status.
*
* @return bool
*/
public function isSent(): bool
{
return $this->getStatus() === self::STATUS_SENT;
}
/**
* Check if the report result is in failed status.
*
* @return bool
*/
public function isFailed(): bool
{
return $this->getStatus() === self::STATUS_FAILED;
}
public function getStatusLabel(): string
{
return match ($this->getStatus()) {
self::STATUS_REQUESTED => 'Requested',
self::STATUS_GENERATED => 'Generated',
self::STATUS_SENT => 'Sent',
self::STATUS_FAILED => 'Failed',
default => 'Default',
};
}
public function getReport(): AutomatedReport
{
return $this->getAttribute('report');
}
public function getFromDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['from_date'])) {
return null;
}
return Carbon::parse($payload['from_date']);
}
public function getToDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['to_date'])) {
return null;
}
return Carbon::parse($payload['to_date']);
}
public function getReportType(): ?string
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['report_type'])) {
return null;
}
return $payload['report_type'];
}
public function getGroups(): array
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['group_ids'])) {
return [];
}
return $payload['group_ids'];
}
public function getPdfUrl(): ?string
{
$response = $this->getResponse();
return $response['pdf_url'] ?? null;
}
public function getPodcastAudioUrl(): ?string
{
$response = $this->getResponse();
return $response['podcast_audio_url'] ?? null;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
4
Previous Highlighted Error
Next Highlighted Error
{
"request_id":"822fa41b-afd3-43a9-a248-86b0e36f3131",
"status":"completed",
"timestamp":"2026-04-13T01:11:48.648399+00:00",
"s3_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/822fa41b-afd3-43a9-a248-86b0e36f3131.MD",
"report_type":"coaching_profiles",
"podcast_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/822fa41b-afd3-43a9-a248-86b0e36f3131_podcast.txt",
"podcast_audio_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/822fa41b-afd3-43a9-a248-86b0e36f3131_podcast.mp3",
"podcast_ssml_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/822fa41b-afd3-43a9-a248-86b0e36f3131_podcast.ssml"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – custom.log
|
NULL
|
41567
|
|
41568
|
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
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
8
1
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Carbon;
use Jiminny\Traits\RequiresUUID;
/**
* Jiminny\Models\AutomatedReportResult
*
* @property int $id
* @property string $uuid
* @property int $report_id
* @property string|null $name
* @property int $status
* @property int $reason
* @property string $media_type
* @property int|null $parent_id
* @property array|null $payload
* @property array|null $response
* @property Carbon|null $requested_at
* @property Carbon|null $generated_at
* @property Carbon|null $sent_at
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read \Jiminny\Models\AutomatedReport $report
* @property-read AutomatedReportResult|null $parent
* @property-read \Illuminate\Database\Eloquent\Collection<int, AutomatedReportResult> $children
*/
class AutomatedReportResult extends Model
{
use RequiresUUID;
/**
* Status constants
*/
public const int STATUS_DEFAULT = 0;
public const int STATUS_REQUESTED = 1;
public const int STATUS_GENERATED = 2;
public const int STATUS_SENT = 3;
public const int STATUS_FAILED = 4;
/**
* Reason constants
*/
public const int REASON_DEFAULT = 0;
public const int REASON_NOT_ENOUGH_ACTIVITIES = 1;
public const int REASON_PROPHET_API_ERROR = 2;
protected $table = 'automated_report_results';
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'report_id',
'name',
'status',
'reason',
'media_type',
'parent_id',
'payload',
'response',
'requested_at',
'generated_at',
'sent_at',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'payload' => 'array',
'response' => 'array',
'requested_at' => 'datetime',
'generated_at' => 'datetime',
'sent_at' => 'datetime',
];
}
/**
* Get the automated report that owns this result.
*
* @return BelongsTo
*/
public function report(): BelongsTo
{
return $this->belongsTo(AutomatedReport::class, 'report_id')->withTrashed();
}
/**
* Get the parent report result.
*
* @return BelongsTo
*/
public function parent(): BelongsTo
{
return $this->belongsTo(self::class, 'parent_id');
}
/**
* Get the child report results.
*
* @return HasMany
*/
public function children(): HasMany
{
return $this->hasMany(self::class, 'parent_id');
}
/**
* Get the ID of the automated report result.
*
* @return int
*/
public function getId(): int
{
return $this->getAttribute('id');
}
/**
* Get the UUID of the automated report result.
*
* @return string
*/
public function getUuid(): string
{
return $this->getAttribute('id_string');
}
/**
* Get the report ID of the automated report result.
*
* @return int
*/
public function getReportId(): int
{
return $this->getAttribute('report_id');
}
/**
* Get the name of the automated report result.
*
* @return ?string
*/
public function getName(): ?string
{
return $this->getAttribute('name');
}
/**
* Get the status of the automated report result.
*
* @return int
*/
public function getStatus(): int
{
return $this->getAttribute('status');
}
/**
* Get the reason of the automated report result.
*
* @return int
*/
public function getReason(): int
{
return $this->getAttribute('reason');
}
/**
* Get the media type of the automated report result.
*
* @return string
*/
public function getMediaType(): ?string
{
return $this->getAttribute('media_type');
}
/**
* Get the parent ID of the automated report result.
*
* @return int|null
*/
public function getParentId(): ?int
{
return $this->getAttribute('parent_id');
}
/**
* Get the payload of the automated report result.
*
* @return array|null
*/
public function getPayload(): ?array
{
return $this->getAttribute('payload');
}
/**
* Get the response of the automated report result.
*
* @return array|null
*/
public function getResponse(): ?array
{
return $this->getAttribute('response');
}
/**
* Get the requested at date of the automated report result.
*
* @return Carbon|null
*/
public function getRequestedAt(): ?Carbon
{
return $this->getAttribute('requested_at');
}
/**
* Get the generated at date of the automated report result.
*
* @return Carbon|null
*/
public function getGeneratedAt(): ?Carbon
{
return $this->getAttribute('generated_at');
}
/**
* Get the sent at date of the automated report result.
*
* @return Carbon|null
*/
public function getSentAt(): ?Carbon
{
return $this->getAttribute('sent_at');
}
/**
* Get the created at date of the automated report result.
*
* @return Carbon
*/
public function getCreatedAt(): Carbon
{
return $this->getAttribute('created_at');
}
/**
* Get the updated at date of the automated report result.
*
* @return Carbon
*/
public function getUpdatedAt(): Carbon
{
return $this->getAttribute('updated_at');
}
/**
* Check if the report result is in requested status.
*
* @return bool
*/
public function isRequested(): bool
{
return $this->getStatus() === self::STATUS_REQUESTED;
}
/**
* Check if the report result is in generated status.
*
* @return bool
*/
public function isGenerated(): bool
{
return $this->getStatus() === self::STATUS_GENERATED;
}
/**
* Check if the report result is in sent status.
*
* @return bool
*/
public function isSent(): bool
{
return $this->getStatus() === self::STATUS_SENT;
}
/**
* Check if the report result is in failed status.
*
* @return bool
*/
public function isFailed(): bool
{
return $this->getStatus() === self::STATUS_FAILED;
}
public function getStatusLabel(): string
{
return match ($this->getStatus()) {
self::STATUS_REQUESTED => 'Requested',
self::STATUS_GENERATED => 'Generated',
self::STATUS_SENT => 'Sent',
self::STATUS_FAILED => 'Failed',
default => 'Default',
};
}
public function getReport(): AutomatedReport
{
return $this->getAttribute('report');
}
public function getFromDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['from_date'])) {
return null;
}
return Carbon::parse($payload['from_date']);
}
public function getToDate(): ?Carbon
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['to_date'])) {
return null;
}
return Carbon::parse($payload['to_date']);
}
public function getReportType(): ?string
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['report_type'])) {
return null;
}
return $payload['report_type'];
}
public function getGroups(): array
{
$payload = $this->getPayload();
if (empty($payload) || empty($payload['group_ids'])) {
return [];
}
return $payload['group_ids'];
}
public function getPdfUrl(): ?string
{
$response = $this->getResponse();
return $response['pdf_url'] ?? null;
}
public function getPodcastAudioUrl(): ?string
{
$response = $this->getResponse();
return $response['podcast_audio_url'] ?? null;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
4
Previous Highlighted Error
Next Highlighted Error
{
"request_id":"822fa41b-afd3-43a9-a248-86b0e36f3131",
"status":"completed",
"timestamp":"2026-04-13T01:11:48.648399+00:00",
"s3_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/822fa41b-afd3-43a9-a248-86b0e36f3131.MD",
"report_type":"coaching_profiles",
"podcast_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/822fa41b-afd3-43a9-a248-86b0e36f3131_podcast.txt",
"podcast_audio_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/822fa41b-afd3-43a9-a248-86b0e36f3131_podcast.mp3",
"podcast_ssml_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/822fa41b-afd3-43a9-a248-86b0e36f3131_podcast.ssml"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
PhpStorm
|
faVsco.js – custom.log
|
NULL
|
41568
|