|
31464
|
636
|
8
|
2026-04-15T15:48:43.412269+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776268123412_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp@ Not Securehttp://[IP_ADDRESS]:8767/video_chunks/content/~ Google Geminip! Western Digital Red Plus 3.5 6TB 5400rpm 256MB SAiSl I SeneticТвърд диск, Western Digital Red 6TB Plus ( 3.5". 256N* SQLite Web: db.sqlitew Screenpipe DashboardV Welcome to Steam+ New Tabmenoe c re ermmlal vomridileIf you already have Terminal open, or preferusing it, you can command Finder to open thefolder for you.1. Open the Terminal app (you can find itby pressing Command + Space to openSpotlight and typing "Terminal").2. Type the following command: open~/. screenpipe3. Press Return. A new Finder window willimmediately pop up showing thecontents of the folder.Method 3: Unhide All Files in Your HomeDirectoryIf you want to be able to see the folderalongside your normal files so you can clickinto it manually.1. Open Finder.2. Go to your Home folder by pressingCommand + Shift + H (this is what the~ symbol represents).3. Press Command + Shift + . (Command,Shift, and the Period key at the sametime).4. You will see all your hidden files andfolders fade into view. Scroll down to findthe .screenpipe folder and double-click5. Note: You can press Command + Shift +• again to hide the files when you aredone to keep your folders looking clean.Eс :Ask GeminiPro vGemini is Al and can make mistakes, including about people.Your privacy and GeminiSummarize pagesqlite-web 0.7.2table name…saix miarationsaudio_chunksaudio_tagsaudio_transcriptionsaudio_transcriptions_fts (v)audio_transcriptions_audio_transcriptions_audio_transcriptions_..elementselements_fts (v)elements_fts_configelements_fts_dataelements_fts_idxframesframes_fts (v)frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheauler_statespeaker_embeddingsspeakerssqlite_sequencetagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxvideo_chunksvision_lagsToggle helper tablesdb.sqlite video_chunks 392 rows, showing page 1StructureContentQueryExport49file_path/Users/lukas/.screenpipe/data/data/2026-04-09/comp/Users/lukas/.screenpipe/data/data/2026-04-09/comp…/Users/lukas/.screenpipe/data/data/2026-04-09/comp/users/lukas/.screenolpe/data/data/20zo-04-09/comp …users/lunds/.screenorpe/adld/adla2uzo-u4-us/comoJusers/uras/.screen.loe/daraldaralzu2o-04-0y/come,/Users/lukas/.screenpipe/data/data/2026-04-09/comp ./Users/lukas/.screenplpe/data/data/2020-04-09/comp/Users/lukas/.screenpipe/data/data/2026-04-09/comp./Users/lukas/.screenpipe/data/data/2026-04-09/comp ./Users/lukas/.screenpipe/data/data/2026-04-09/comp../Users/lukas/.screenpipe/data/data/2026-04-09/comp.users/lunds/.screenorpe/adld/adla2uzo-04-ll/como./Users/lukas/.screenpipe/data/data/2026-04-11/comp.../Users/lukas/.screenpipe/data/data/2026-04-11/comp ...Jusers/uras/.screen.loe/daraldaralzuzo-04-/como ../Users/lukas/.screenpipe/data/data/2026-04-11/comp ..../Users/lukas/.screenpipe/data/data/2026-04-11/comp …/Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp …./Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp.../Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp.../Users/lukas/.screenpipe/data/data/2026-04-11/comp ...Jusers/uras/.screen.loe/daraldaralzuzo-04-/como ..users/lukas/.screenolpe/data/data/2020-04-11/comp ./Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp.../Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp/Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp …/Users/lukas/.screenpipe/data/data/2026-04-11/comp ../Users/lukas/.screenpipe/data/data/2026-04-11/compJusers/uras/screenoloe/dara/daralzu2o-04- 4 como ./Users/lukas/.screenpipe/data/data/2026-04-12/comp .../Users/lukas/.screenpipe/data/data/2026-04-12/comp .../Users/lukas/.screenpipe/data/data/2026-04-12/comp/Users/lukas/.screenpipe/data/data/2026-04-12/comp .../Users/lukas/.screenpipe/data/data/2026-04-12/comp/Users/lukas/.screenpipe/data/data/2026-04-12/comp …/Users/lukas/.screenpipe/data/data/2026-04-12/comp …/users/lukas/.screenolpe/data/data/2020-04-12/comp .Jusers/uras/.screenoloe/daraldaralzuzo-04- 4 como ..Jusers/uras/screenoloe/oaralcaralzu2o-04- Z come/Users/lukas/.screenpipe/data/data/2026-04-12/comp ….« < | Page 1/8device_namemonitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitormonitor_monitor_2monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor ?monitor_1monitor_1sync_idNULLNULLNULLNULLNULLNULLNULUNULLNUILITNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULUNULLNULLNULLNULLNULLNULLNULLmachine_idNULLNULLNULLNULLNULL: NULUNULL: NULU:NIUITNUI.IE NIUTE NIITNULLNULLNULLNULLNULL: NULUNULLNULLNULLNULLNULLNULLNULL: NULUNULL: NULU:NIUITNULINIUIATNULLNULLNULUNULINULLNULLNULLNULLNULLNULLNULLNULI40halA100% CWed 15 Apr 18:48:43Querysynced_atNULLNULLNULLNULLNULLNULINULINULINLJIITNULLNULLNULLNULINULLNULLNULLNULLNULLNULLNULINULLNULINULLNULLNULLNULLNULLfps0.155172413793103450.150793650793650790.154340836012861750.150170648464163840.118421052631578940.211638461638461640.1008869179600887018/90091700799070.148148148148148140184708/9708742080.3750.17607973421926910.166089965397923870.22475570032573290.10963455149501661090/020/020/0702020.1316614420062695910.10921601/064840410.10.205128205128205120.22421524663677130.10.155555555555555560.17508417508417510.14347202295552366038096/[CREDIT_CARD] 0016052511060.16993464092875820.19867549668874170.22368421052630.300330033003300360.163265306122448970.1259370311484257860.148//3006134969330.106060606060606060.112627986348122860.10.10.174342105263157880.154838709677419360.18581081081081080.20005/3/7044180340.313131313131313150.2693866666290102cloud_blob_idNULLNULLNULLNULLNULLNULLNULLNULINULLNULLNUL...
|
NULL
|
-9119410612102145133
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp@ Not Securehttp://[IP_ADDRESS]:8767/video_chunks/content/~ Google Geminip! Western Digital Red Plus 3.5 6TB 5400rpm 256MB SAiSl I SeneticТвърд диск, Western Digital Red 6TB Plus ( 3.5". 256N* SQLite Web: db.sqlitew Screenpipe DashboardV Welcome to Steam+ New Tabmenoe c re ermmlal vomridileIf you already have Terminal open, or preferusing it, you can command Finder to open thefolder for you.1. Open the Terminal app (you can find itby pressing Command + Space to openSpotlight and typing "Terminal").2. Type the following command: open~/. screenpipe3. Press Return. A new Finder window willimmediately pop up showing thecontents of the folder.Method 3: Unhide All Files in Your HomeDirectoryIf you want to be able to see the folderalongside your normal files so you can clickinto it manually.1. Open Finder.2. Go to your Home folder by pressingCommand + Shift + H (this is what the~ symbol represents).3. Press Command + Shift + . (Command,Shift, and the Period key at the sametime).4. You will see all your hidden files andfolders fade into view. Scroll down to findthe .screenpipe folder and double-click5. Note: You can press Command + Shift +• again to hide the files when you aredone to keep your folders looking clean.Eс :Ask GeminiPro vGemini is Al and can make mistakes, including about people.Your privacy and GeminiSummarize pagesqlite-web 0.7.2table name…saix miarationsaudio_chunksaudio_tagsaudio_transcriptionsaudio_transcriptions_fts (v)audio_transcriptions_audio_transcriptions_audio_transcriptions_..elementselements_fts (v)elements_fts_configelements_fts_dataelements_fts_idxframesframes_fts (v)frames_fts_configframes_fts_dataframes_fts_idxmeetingsmemoriesmemories_fts (v)memories_fts_configmemories_fts_datamemories_fts_idxocr_textpipe_executionspipe_scheauler_statespeaker_embeddingsspeakerssqlite_sequencetagsui_eventsui_events_fts (v)ui_events_fts_configui_events_fts_dataui_events_fts_idxvideo_chunksvision_lagsToggle helper tablesdb.sqlite video_chunks 392 rows, showing page 1StructureContentQueryExport49file_path/Users/lukas/.screenpipe/data/data/2026-04-09/comp/Users/lukas/.screenpipe/data/data/2026-04-09/comp…/Users/lukas/.screenpipe/data/data/2026-04-09/comp/users/lukas/.screenolpe/data/data/20zo-04-09/comp …users/lunds/.screenorpe/adld/adla2uzo-u4-us/comoJusers/uras/.screen.loe/daraldaralzu2o-04-0y/come,/Users/lukas/.screenpipe/data/data/2026-04-09/comp ./Users/lukas/.screenplpe/data/data/2020-04-09/comp/Users/lukas/.screenpipe/data/data/2026-04-09/comp./Users/lukas/.screenpipe/data/data/2026-04-09/comp ./Users/lukas/.screenpipe/data/data/2026-04-09/comp../Users/lukas/.screenpipe/data/data/2026-04-09/comp.users/lunds/.screenorpe/adld/adla2uzo-04-ll/como./Users/lukas/.screenpipe/data/data/2026-04-11/comp.../Users/lukas/.screenpipe/data/data/2026-04-11/comp ...Jusers/uras/.screen.loe/daraldaralzuzo-04-/como ../Users/lukas/.screenpipe/data/data/2026-04-11/comp ..../Users/lukas/.screenpipe/data/data/2026-04-11/comp …/Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp …./Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp.../Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp.../Users/lukas/.screenpipe/data/data/2026-04-11/comp ...Jusers/uras/.screen.loe/daraldaralzuzo-04-/como ..users/lukas/.screenolpe/data/data/2020-04-11/comp ./Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp.../Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp/Users/lukas/.screenpipe/data/data/2026-04-11/comp .../Users/lukas/.screenpipe/data/data/2026-04-11/comp …/Users/lukas/.screenpipe/data/data/2026-04-11/comp ../Users/lukas/.screenpipe/data/data/2026-04-11/compJusers/uras/screenoloe/dara/daralzu2o-04- 4 como ./Users/lukas/.screenpipe/data/data/2026-04-12/comp .../Users/lukas/.screenpipe/data/data/2026-04-12/comp .../Users/lukas/.screenpipe/data/data/2026-04-12/comp/Users/lukas/.screenpipe/data/data/2026-04-12/comp .../Users/lukas/.screenpipe/data/data/2026-04-12/comp/Users/lukas/.screenpipe/data/data/2026-04-12/comp …/Users/lukas/.screenpipe/data/data/2026-04-12/comp …/users/lukas/.screenolpe/data/data/2020-04-12/comp .Jusers/uras/.screenoloe/daraldaralzuzo-04- 4 como ..Jusers/uras/screenoloe/oaralcaralzu2o-04- Z come/Users/lukas/.screenpipe/data/data/2026-04-12/comp ….« < | Page 1/8device_namemonitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitormonitor_monitor_2monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor_1monitor ?monitor_1monitor_1sync_idNULLNULLNULLNULLNULLNULLNULUNULLNUILITNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULUNULLNULLNULLNULLNULLNULLNULLmachine_idNULLNULLNULLNULLNULL: NULUNULL: NULU:NIUITNUI.IE NIUTE NIITNULLNULLNULLNULLNULL: NULUNULLNULLNULLNULLNULLNULLNULL: NULUNULL: NULU:NIUITNULINIUIATNULLNULLNULUNULINULLNULLNULLNULLNULLNULLNULLNULI40halA100% CWed 15 Apr 18:48:43Querysynced_atNULLNULLNULLNULLNULLNULINULINULINLJIITNULLNULLNULLNULINULLNULLNULLNULLNULLNULLNULINULLNULINULLNULLNULLNULLNULLfps0.155172413793103450.150793650793650790.154340836012861750.150170648464163840.118421052631578940.211638461638461640.1008869179600887018/90091700799070.148148148148148140184708/9708742080.3750.17607973421926910.166089965397923870.22475570032573290.10963455149501661090/020/020/0702020.1316614420062695910.10921601/064840410.10.205128205128205120.22421524663677130.10.155555555555555560.17508417508417510.14347202295552366038096/[CREDIT_CARD] 0016052511060.16993464092875820.19867549668874170.22368421052630.300330033003300360.163265306122448970.1259370311484257860.148//3006134969330.106060606060606060.112627986348122860.10.10.174342105263157880.154838709677419360.18581081081081080.20005/3/7044180340.313131313131313150.2693866666290102cloud_blob_idNULLNULLNULLNULLNULLNULLNULLNULINULLNULLNUL...
|
31463
|
|
76856
|
1927
|
34
|
2026-04-24T08:30:19.613596+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777019419613_m1.jpg...
|
PhpStorm
|
faVsco.js – ReportControllerTest.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
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
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
declare(strict_types=1);
namespace Tests\Unit\Http\Controllers\Webhook;
use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Http\Controllers\Webhook\ReportController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Mockery;
use Mockery\MockInterface;
use Psr\Log\LoggerInterface;
use Tests\TestCase;
class ReportControllerTest extends TestCase
{
private AutomatedReportsService|MockInterface $reportService;
private Dispatcher|MockInterface $dispatcher;
private LoggerInterface|MockInterface $logger;
private AutomatedReportsCallbackService|MockInterface $callbackService;
private EventDispatcher|MockInterface $eventDispatcher;
private ReportController $controller;
protected function setUp(): void
{
parent::setUp();
$this->reportService = Mockery::mock(AutomatedReportsService::class);
$this->dispatcher = Mockery::mock(Dispatcher::class);
$this->logger = Mockery::mock(LoggerInterface::class);
$this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);
$this->eventDispatcher = Mockery::mock(EventDispatcher::class);
$this->logger->shouldReceive('info'); // Allow info logs
$this->controller = new ReportController(
$this->reportService,
$this->dispatcher,
$this->logger,
$this->callbackService,
$this->eventDispatcher,
);
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
public function testReadyMethodSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn(null);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));
$this->callbackService->shouldReceive('pushToDatadog')->once();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller
$this->dispatcher->shouldReceive('dispatch')->twice();
$this->callbackService->shouldReceive('pushToDatadog')->twice();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastFailure(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(false);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->never();
$this->callbackService->shouldReceive('pushToDatadog')->never();
$this->logger->shouldReceive('warning')->once();
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?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));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20738-debug-AJ-tracking-UP, menu","depth":5,"help_text":"Git Branch: JY-20738-debug-AJ-tracking-UP","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"ReportControllerTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'ReportControllerTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'ReportControllerTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Http\\Controllers\\Webhook;\n\nuse Illuminate\\Contracts\\Bus\\Dispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Http\\Controllers\\Webhook\\ReportController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Mockery;\nuse Mockery\\MockInterface;\nuse Psr\\Log\\LoggerInterface;\nuse Tests\\TestCase;\n\nclass ReportControllerTest extends TestCase\n{\n private AutomatedReportsService|MockInterface $reportService;\n private Dispatcher|MockInterface $dispatcher;\n private LoggerInterface|MockInterface $logger;\n private AutomatedReportsCallbackService|MockInterface $callbackService;\n private EventDispatcher|MockInterface $eventDispatcher;\n private ReportController $controller;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n $this->reportService = Mockery::mock(AutomatedReportsService::class);\n $this->dispatcher = Mockery::mock(Dispatcher::class);\n $this->logger = Mockery::mock(LoggerInterface::class);\n $this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);\n $this->eventDispatcher = Mockery::mock(EventDispatcher::class);\n\n $this->logger->shouldReceive('info'); // Allow info logs\n\n $this->controller = new ReportController(\n $this->reportService,\n $this->dispatcher,\n $this->logger,\n $this->callbackService,\n $this->eventDispatcher,\n );\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n public function testReadyMethodSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn(null);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));\n $this->callbackService->shouldReceive('pushToDatadog')->once();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller\n $this->dispatcher->shouldReceive('dispatch')->twice();\n $this->callbackService->shouldReceive('pushToDatadog')->twice();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastFailure(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(false);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->never();\n $this->callbackService->shouldReceive('pushToDatadog')->never();\n\n $this->logger->shouldReceive('warning')->once();\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Http\\Controllers\\Webhook;\n\nuse Illuminate\\Contracts\\Bus\\Dispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Http\\Controllers\\Webhook\\ReportController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Mockery;\nuse Mockery\\MockInterface;\nuse Psr\\Log\\LoggerInterface;\nuse Tests\\TestCase;\n\nclass ReportControllerTest extends TestCase\n{\n private AutomatedReportsService|MockInterface $reportService;\n private Dispatcher|MockInterface $dispatcher;\n private LoggerInterface|MockInterface $logger;\n private AutomatedReportsCallbackService|MockInterface $callbackService;\n private EventDispatcher|MockInterface $eventDispatcher;\n private ReportController $controller;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n $this->reportService = Mockery::mock(AutomatedReportsService::class);\n $this->dispatcher = Mockery::mock(Dispatcher::class);\n $this->logger = Mockery::mock(LoggerInterface::class);\n $this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);\n $this->eventDispatcher = Mockery::mock(EventDispatcher::class);\n\n $this->logger->shouldReceive('info'); // Allow info logs\n\n $this->controller = new ReportController(\n $this->reportService,\n $this->dispatcher,\n $this->logger,\n $this->callbackService,\n $this->eventDispatcher,\n );\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n public function testReadyMethodSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn(null);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));\n $this->callbackService->shouldReceive('pushToDatadog')->once();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller\n $this->dispatcher->shouldReceive('dispatch')->twice();\n $this->callbackService->shouldReceive('pushToDatadog')->twice();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastFailure(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(false);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->never();\n $this->callbackService->shouldReceive('pushToDatadog')->never();\n\n $this->logger->shouldReceive('warning')->once();\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"43","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-9119193263002051277
|
-4836123811583001719
|
click
|
accessibility
|
NULL
|
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
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
declare(strict_types=1);
namespace Tests\Unit\Http\Controllers\Webhook;
use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Http\Controllers\Webhook\ReportController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Mockery;
use Mockery\MockInterface;
use Psr\Log\LoggerInterface;
use Tests\TestCase;
class ReportControllerTest extends TestCase
{
private AutomatedReportsService|MockInterface $reportService;
private Dispatcher|MockInterface $dispatcher;
private LoggerInterface|MockInterface $logger;
private AutomatedReportsCallbackService|MockInterface $callbackService;
private EventDispatcher|MockInterface $eventDispatcher;
private ReportController $controller;
protected function setUp(): void
{
parent::setUp();
$this->reportService = Mockery::mock(AutomatedReportsService::class);
$this->dispatcher = Mockery::mock(Dispatcher::class);
$this->logger = Mockery::mock(LoggerInterface::class);
$this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);
$this->eventDispatcher = Mockery::mock(EventDispatcher::class);
$this->logger->shouldReceive('info'); // Allow info logs
$this->controller = new ReportController(
$this->reportService,
$this->dispatcher,
$this->logger,
$this->callbackService,
$this->eventDispatcher,
);
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
public function testReadyMethodSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn(null);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));
$this->callbackService->shouldReceive('pushToDatadog')->once();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller
$this->dispatcher->shouldReceive('dispatch')->twice();
$this->callbackService->shouldReceive('pushToDatadog')->twice();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastFailure(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(false);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->never();
$this->callbackService->shouldReceive('pushToDatadog')->never();
$this->logger->shouldReceive('warning')->once();
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?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));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
76857
|
1928
|
32
|
2026-04-24T08:30:19.516656+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777019419516_m2.jpg...
|
PhpStorm
|
faVsco.js – ReportControllerTest.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
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
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
declare(strict_types=1);
namespace Tests\Unit\Http\Controllers\Webhook;
use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Http\Controllers\Webhook\ReportController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Mockery;
use Mockery\MockInterface;
use Psr\Log\LoggerInterface;
use Tests\TestCase;
class ReportControllerTest extends TestCase
{
private AutomatedReportsService|MockInterface $reportService;
private Dispatcher|MockInterface $dispatcher;
private LoggerInterface|MockInterface $logger;
private AutomatedReportsCallbackService|MockInterface $callbackService;
private EventDispatcher|MockInterface $eventDispatcher;
private ReportController $controller;
protected function setUp(): void
{
parent::setUp();
$this->reportService = Mockery::mock(AutomatedReportsService::class);
$this->dispatcher = Mockery::mock(Dispatcher::class);
$this->logger = Mockery::mock(LoggerInterface::class);
$this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);
$this->eventDispatcher = Mockery::mock(EventDispatcher::class);
$this->logger->shouldReceive('info'); // Allow info logs
$this->controller = new ReportController(
$this->reportService,
$this->dispatcher,
$this->logger,
$this->callbackService,
$this->eventDispatcher,
);
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
public function testReadyMethodSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn(null);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));
$this->callbackService->shouldReceive('pushToDatadog')->once();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller
$this->dispatcher->shouldReceive('dispatch')->twice();
$this->callbackService->shouldReceive('pushToDatadog')->twice();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastFailure(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(false);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->never();
$this->callbackService->shouldReceive('pushToDatadog')->never();
$this->logger->shouldReceive('warning')->once();
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?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));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20738-debug-AJ-tracking-UP, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.08510638,"height":0.025538707},"help_text":"Git Branch: JY-20738-debug-AJ-tracking-UP","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8400931,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"ReportControllerTest","depth":6,"bounds":{"left":0.85538566,"top":0.019952115,"width":0.06017287,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'ReportControllerTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'ReportControllerTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Http\\Controllers\\Webhook;\n\nuse Illuminate\\Contracts\\Bus\\Dispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Http\\Controllers\\Webhook\\ReportController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Mockery;\nuse Mockery\\MockInterface;\nuse Psr\\Log\\LoggerInterface;\nuse Tests\\TestCase;\n\nclass ReportControllerTest extends TestCase\n{\n private AutomatedReportsService|MockInterface $reportService;\n private Dispatcher|MockInterface $dispatcher;\n private LoggerInterface|MockInterface $logger;\n private AutomatedReportsCallbackService|MockInterface $callbackService;\n private EventDispatcher|MockInterface $eventDispatcher;\n private ReportController $controller;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n $this->reportService = Mockery::mock(AutomatedReportsService::class);\n $this->dispatcher = Mockery::mock(Dispatcher::class);\n $this->logger = Mockery::mock(LoggerInterface::class);\n $this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);\n $this->eventDispatcher = Mockery::mock(EventDispatcher::class);\n\n $this->logger->shouldReceive('info'); // Allow info logs\n\n $this->controller = new ReportController(\n $this->reportService,\n $this->dispatcher,\n $this->logger,\n $this->callbackService,\n $this->eventDispatcher,\n );\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n public function testReadyMethodSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn(null);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));\n $this->callbackService->shouldReceive('pushToDatadog')->once();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller\n $this->dispatcher->shouldReceive('dispatch')->twice();\n $this->callbackService->shouldReceive('pushToDatadog')->twice();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastFailure(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(false);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->never();\n $this->callbackService->shouldReceive('pushToDatadog')->never();\n\n $this->logger->shouldReceive('warning')->once();\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n}","depth":4,"bounds":{"left":0.3799867,"top":0.14684756,"width":0.2819149,"height":0.8324022},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Http\\Controllers\\Webhook;\n\nuse Illuminate\\Contracts\\Bus\\Dispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Http\\Controllers\\Webhook\\ReportController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Mockery;\nuse Mockery\\MockInterface;\nuse Psr\\Log\\LoggerInterface;\nuse Tests\\TestCase;\n\nclass ReportControllerTest extends TestCase\n{\n private AutomatedReportsService|MockInterface $reportService;\n private Dispatcher|MockInterface $dispatcher;\n private LoggerInterface|MockInterface $logger;\n private AutomatedReportsCallbackService|MockInterface $callbackService;\n private EventDispatcher|MockInterface $eventDispatcher;\n private ReportController $controller;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n $this->reportService = Mockery::mock(AutomatedReportsService::class);\n $this->dispatcher = Mockery::mock(Dispatcher::class);\n $this->logger = Mockery::mock(LoggerInterface::class);\n $this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);\n $this->eventDispatcher = Mockery::mock(EventDispatcher::class);\n\n $this->logger->shouldReceive('info'); // Allow info logs\n\n $this->controller = new ReportController(\n $this->reportService,\n $this->dispatcher,\n $this->logger,\n $this->callbackService,\n $this->eventDispatcher,\n );\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n public function testReadyMethodSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn(null);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));\n $this->callbackService->shouldReceive('pushToDatadog')->once();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller\n $this->dispatcher->shouldReceive('dispatch')->twice();\n $this->callbackService->shouldReceive('pushToDatadog')->twice();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastFailure(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(false);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->never();\n $this->callbackService->shouldReceive('pushToDatadog')->never();\n\n $this->logger->shouldReceive('warning')->once();\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"43","depth":4,"bounds":{"left":0.96210104,"top":0.10055866,"width":0.010305851,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.09896249,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.98138297,"top":0.09896249,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-9119193263002051277
|
-4836123811583001719
|
click
|
accessibility
|
NULL
|
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
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
declare(strict_types=1);
namespace Tests\Unit\Http\Controllers\Webhook;
use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Http\Controllers\Webhook\ReportController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Mockery;
use Mockery\MockInterface;
use Psr\Log\LoggerInterface;
use Tests\TestCase;
class ReportControllerTest extends TestCase
{
private AutomatedReportsService|MockInterface $reportService;
private Dispatcher|MockInterface $dispatcher;
private LoggerInterface|MockInterface $logger;
private AutomatedReportsCallbackService|MockInterface $callbackService;
private EventDispatcher|MockInterface $eventDispatcher;
private ReportController $controller;
protected function setUp(): void
{
parent::setUp();
$this->reportService = Mockery::mock(AutomatedReportsService::class);
$this->dispatcher = Mockery::mock(Dispatcher::class);
$this->logger = Mockery::mock(LoggerInterface::class);
$this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);
$this->eventDispatcher = Mockery::mock(EventDispatcher::class);
$this->logger->shouldReceive('info'); // Allow info logs
$this->controller = new ReportController(
$this->reportService,
$this->dispatcher,
$this->logger,
$this->callbackService,
$this->eventDispatcher,
);
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
public function testReadyMethodSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn(null);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));
$this->callbackService->shouldReceive('pushToDatadog')->once();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller
$this->dispatcher->shouldReceive('dispatch')->twice();
$this->callbackService->shouldReceive('pushToDatadog')->twice();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastFailure(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(false);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->never();
$this->callbackService->shouldReceive('pushToDatadog')->never();
$this->logger->shouldReceive('warning')->once();
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?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));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
76855
|
|
76860
|
NULL
|
0
|
2026-04-24T08:30:26.446802+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777019426446_m1.jpg...
|
PhpStorm
|
faVsco.js – ReportControllerTest.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
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
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
declare(strict_types=1);
namespace Tests\Unit\Http\Controllers\Webhook;
use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Http\Controllers\Webhook\ReportController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Mockery;
use Mockery\MockInterface;
use Psr\Log\LoggerInterface;
use Tests\TestCase;
class ReportControllerTest extends TestCase
{
private AutomatedReportsService|MockInterface $reportService;
private Dispatcher|MockInterface $dispatcher;
private LoggerInterface|MockInterface $logger;
private AutomatedReportsCallbackService|MockInterface $callbackService;
private EventDispatcher|MockInterface $eventDispatcher;
private ReportController $controller;
protected function setUp(): void
{
parent::setUp();
$this->reportService = Mockery::mock(AutomatedReportsService::class);
$this->dispatcher = Mockery::mock(Dispatcher::class);
$this->logger = Mockery::mock(LoggerInterface::class);
$this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);
$this->eventDispatcher = Mockery::mock(EventDispatcher::class);
$this->logger->shouldReceive('info'); // Allow info logs
$this->controller = new ReportController(
$this->reportService,
$this->dispatcher,
$this->logger,
$this->callbackService,
$this->eventDispatcher,
);
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
public function testReadyMethodSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn(null);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));
$this->callbackService->shouldReceive('pushToDatadog')->once();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller
$this->dispatcher->shouldReceive('dispatch')->twice();
$this->callbackService->shouldReceive('pushToDatadog')->twice();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastFailure(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(false);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->never();
$this->callbackService->shouldReceive('pushToDatadog')->never();
$this->logger->shouldReceive('warning')->once();
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?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));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20738-debug-AJ-tracking-UP, menu","depth":5,"help_text":"Git Branch: JY-20738-debug-AJ-tracking-UP","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"ReportControllerTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'ReportControllerTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'ReportControllerTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Http\\Controllers\\Webhook;\n\nuse Illuminate\\Contracts\\Bus\\Dispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Http\\Controllers\\Webhook\\ReportController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Mockery;\nuse Mockery\\MockInterface;\nuse Psr\\Log\\LoggerInterface;\nuse Tests\\TestCase;\n\nclass ReportControllerTest extends TestCase\n{\n private AutomatedReportsService|MockInterface $reportService;\n private Dispatcher|MockInterface $dispatcher;\n private LoggerInterface|MockInterface $logger;\n private AutomatedReportsCallbackService|MockInterface $callbackService;\n private EventDispatcher|MockInterface $eventDispatcher;\n private ReportController $controller;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n $this->reportService = Mockery::mock(AutomatedReportsService::class);\n $this->dispatcher = Mockery::mock(Dispatcher::class);\n $this->logger = Mockery::mock(LoggerInterface::class);\n $this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);\n $this->eventDispatcher = Mockery::mock(EventDispatcher::class);\n\n $this->logger->shouldReceive('info'); // Allow info logs\n\n $this->controller = new ReportController(\n $this->reportService,\n $this->dispatcher,\n $this->logger,\n $this->callbackService,\n $this->eventDispatcher,\n );\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n public function testReadyMethodSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn(null);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));\n $this->callbackService->shouldReceive('pushToDatadog')->once();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller\n $this->dispatcher->shouldReceive('dispatch')->twice();\n $this->callbackService->shouldReceive('pushToDatadog')->twice();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastFailure(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(false);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->never();\n $this->callbackService->shouldReceive('pushToDatadog')->never();\n\n $this->logger->shouldReceive('warning')->once();\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Http\\Controllers\\Webhook;\n\nuse Illuminate\\Contracts\\Bus\\Dispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Http\\Controllers\\Webhook\\ReportController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Mockery;\nuse Mockery\\MockInterface;\nuse Psr\\Log\\LoggerInterface;\nuse Tests\\TestCase;\n\nclass ReportControllerTest extends TestCase\n{\n private AutomatedReportsService|MockInterface $reportService;\n private Dispatcher|MockInterface $dispatcher;\n private LoggerInterface|MockInterface $logger;\n private AutomatedReportsCallbackService|MockInterface $callbackService;\n private EventDispatcher|MockInterface $eventDispatcher;\n private ReportController $controller;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n $this->reportService = Mockery::mock(AutomatedReportsService::class);\n $this->dispatcher = Mockery::mock(Dispatcher::class);\n $this->logger = Mockery::mock(LoggerInterface::class);\n $this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);\n $this->eventDispatcher = Mockery::mock(EventDispatcher::class);\n\n $this->logger->shouldReceive('info'); // Allow info logs\n\n $this->controller = new ReportController(\n $this->reportService,\n $this->dispatcher,\n $this->logger,\n $this->callbackService,\n $this->eventDispatcher,\n );\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n public function testReadyMethodSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn(null);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));\n $this->callbackService->shouldReceive('pushToDatadog')->once();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller\n $this->dispatcher->shouldReceive('dispatch')->twice();\n $this->callbackService->shouldReceive('pushToDatadog')->twice();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastFailure(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(false);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->never();\n $this->callbackService->shouldReceive('pushToDatadog')->never();\n\n $this->logger->shouldReceive('warning')->once();\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"43","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-9119193263002051277
|
-4836123811583001719
|
click
|
accessibility
|
NULL
|
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
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
declare(strict_types=1);
namespace Tests\Unit\Http\Controllers\Webhook;
use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Http\Controllers\Webhook\ReportController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Mockery;
use Mockery\MockInterface;
use Psr\Log\LoggerInterface;
use Tests\TestCase;
class ReportControllerTest extends TestCase
{
private AutomatedReportsService|MockInterface $reportService;
private Dispatcher|MockInterface $dispatcher;
private LoggerInterface|MockInterface $logger;
private AutomatedReportsCallbackService|MockInterface $callbackService;
private EventDispatcher|MockInterface $eventDispatcher;
private ReportController $controller;
protected function setUp(): void
{
parent::setUp();
$this->reportService = Mockery::mock(AutomatedReportsService::class);
$this->dispatcher = Mockery::mock(Dispatcher::class);
$this->logger = Mockery::mock(LoggerInterface::class);
$this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);
$this->eventDispatcher = Mockery::mock(EventDispatcher::class);
$this->logger->shouldReceive('info'); // Allow info logs
$this->controller = new ReportController(
$this->reportService,
$this->dispatcher,
$this->logger,
$this->callbackService,
$this->eventDispatcher,
);
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
public function testReadyMethodSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn(null);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));
$this->callbackService->shouldReceive('pushToDatadog')->once();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller
$this->dispatcher->shouldReceive('dispatch')->twice();
$this->callbackService->shouldReceive('pushToDatadog')->twice();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastFailure(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(false);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->never();
$this->callbackService->shouldReceive('pushToDatadog')->never();
$this->logger->shouldReceive('warning')->once();
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?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));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
76861
|
NULL
|
0
|
2026-04-24T08:30:26.503887+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777019426503_m2.jpg...
|
PhpStorm
|
faVsco.js – ReportControllerTest.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
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
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
declare(strict_types=1);
namespace Tests\Unit\Http\Controllers\Webhook;
use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Http\Controllers\Webhook\ReportController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Mockery;
use Mockery\MockInterface;
use Psr\Log\LoggerInterface;
use Tests\TestCase;
class ReportControllerTest extends TestCase
{
private AutomatedReportsService|MockInterface $reportService;
private Dispatcher|MockInterface $dispatcher;
private LoggerInterface|MockInterface $logger;
private AutomatedReportsCallbackService|MockInterface $callbackService;
private EventDispatcher|MockInterface $eventDispatcher;
private ReportController $controller;
protected function setUp(): void
{
parent::setUp();
$this->reportService = Mockery::mock(AutomatedReportsService::class);
$this->dispatcher = Mockery::mock(Dispatcher::class);
$this->logger = Mockery::mock(LoggerInterface::class);
$this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);
$this->eventDispatcher = Mockery::mock(EventDispatcher::class);
$this->logger->shouldReceive('info'); // Allow info logs
$this->controller = new ReportController(
$this->reportService,
$this->dispatcher,
$this->logger,
$this->callbackService,
$this->eventDispatcher,
);
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
public function testReadyMethodSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn(null);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));
$this->callbackService->shouldReceive('pushToDatadog')->once();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller
$this->dispatcher->shouldReceive('dispatch')->twice();
$this->callbackService->shouldReceive('pushToDatadog')->twice();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastFailure(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(false);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->never();
$this->callbackService->shouldReceive('pushToDatadog')->never();
$this->logger->shouldReceive('warning')->once();
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?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));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20738-debug-AJ-tracking-UP, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.08510638,"height":0.025538707},"help_text":"Git Branch: JY-20738-debug-AJ-tracking-UP","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8400931,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"ReportControllerTest","depth":6,"bounds":{"left":0.85538566,"top":0.019952115,"width":0.06017287,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'ReportControllerTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'ReportControllerTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Http\\Controllers\\Webhook;\n\nuse Illuminate\\Contracts\\Bus\\Dispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Http\\Controllers\\Webhook\\ReportController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Mockery;\nuse Mockery\\MockInterface;\nuse Psr\\Log\\LoggerInterface;\nuse Tests\\TestCase;\n\nclass ReportControllerTest extends TestCase\n{\n private AutomatedReportsService|MockInterface $reportService;\n private Dispatcher|MockInterface $dispatcher;\n private LoggerInterface|MockInterface $logger;\n private AutomatedReportsCallbackService|MockInterface $callbackService;\n private EventDispatcher|MockInterface $eventDispatcher;\n private ReportController $controller;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n $this->reportService = Mockery::mock(AutomatedReportsService::class);\n $this->dispatcher = Mockery::mock(Dispatcher::class);\n $this->logger = Mockery::mock(LoggerInterface::class);\n $this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);\n $this->eventDispatcher = Mockery::mock(EventDispatcher::class);\n\n $this->logger->shouldReceive('info'); // Allow info logs\n\n $this->controller = new ReportController(\n $this->reportService,\n $this->dispatcher,\n $this->logger,\n $this->callbackService,\n $this->eventDispatcher,\n );\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n public function testReadyMethodSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn(null);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));\n $this->callbackService->shouldReceive('pushToDatadog')->once();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller\n $this->dispatcher->shouldReceive('dispatch')->twice();\n $this->callbackService->shouldReceive('pushToDatadog')->twice();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastFailure(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(false);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->never();\n $this->callbackService->shouldReceive('pushToDatadog')->never();\n\n $this->logger->shouldReceive('warning')->once();\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n}","depth":4,"bounds":{"left":0.3799867,"top":0.14684756,"width":0.2819149,"height":0.8324022},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Http\\Controllers\\Webhook;\n\nuse Illuminate\\Contracts\\Bus\\Dispatcher;\nuse Illuminate\\Contracts\\Events\\Dispatcher as EventDispatcher;\nuse Illuminate\\Http\\Request;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Http\\Controllers\\Webhook\\ReportController;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsCallbackService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Mockery;\nuse Mockery\\MockInterface;\nuse Psr\\Log\\LoggerInterface;\nuse Tests\\TestCase;\n\nclass ReportControllerTest extends TestCase\n{\n private AutomatedReportsService|MockInterface $reportService;\n private Dispatcher|MockInterface $dispatcher;\n private LoggerInterface|MockInterface $logger;\n private AutomatedReportsCallbackService|MockInterface $callbackService;\n private EventDispatcher|MockInterface $eventDispatcher;\n private ReportController $controller;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n $this->reportService = Mockery::mock(AutomatedReportsService::class);\n $this->dispatcher = Mockery::mock(Dispatcher::class);\n $this->logger = Mockery::mock(LoggerInterface::class);\n $this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);\n $this->eventDispatcher = Mockery::mock(EventDispatcher::class);\n\n $this->logger->shouldReceive('info'); // Allow info logs\n\n $this->controller = new ReportController(\n $this->reportService,\n $this->dispatcher,\n $this->logger,\n $this->callbackService,\n $this->eventDispatcher,\n );\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n public function testReadyMethodSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn(null);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));\n $this->callbackService->shouldReceive('pushToDatadog')->once();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastSuccess(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n $automatedReport = Mockery::mock(AutomatedReport::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(true);\n\n $reportResult->shouldReceive('getReport')->andReturn($automatedReport);\n $automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller\n $this->dispatcher->shouldReceive('dispatch')->twice();\n $this->callbackService->shouldReceive('pushToDatadog')->twice();\n $this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n\n public function testReadyMethodWithPodcastFailure(): void\n {\n $reportUuid = 'test-uuid';\n $payload = ['request_id' => $reportUuid];\n\n $request = Mockery::mock(Request::class);\n $request->shouldReceive('all')->andReturn($payload);\n\n $reportResult = Mockery::mock(AutomatedReportResult::class);\n $podcastResult = Mockery::mock(AutomatedReportResult::class);\n\n $podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');\n $podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n\n $this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);\n $this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);\n $this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);\n $this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);\n $this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);\n $this->callbackService->shouldReceive('isSuccess')->andReturn(false);\n\n $reportResult->shouldReceive('update')->once();\n $podcastResult->shouldReceive('update')->once();\n $this->dispatcher->shouldReceive('dispatch')->never();\n $this->callbackService->shouldReceive('pushToDatadog')->never();\n\n $this->logger->shouldReceive('warning')->once();\n\n $response = $this->controller->ready($request);\n\n $this->assertEquals(200, $response->getStatusCode());\n $this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"43","depth":4,"bounds":{"left":0.96210104,"top":0.10055866,"width":0.010305851,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.09896249,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.98138297,"top":0.09896249,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-9119193263002051277
|
-4836123811583001719
|
click
|
accessibility
|
NULL
|
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
Code changed:
Hide
Sync Changes
Hide This Notification
<?php
declare(strict_types=1);
namespace Tests\Unit\Http\Controllers\Webhook;
use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
use Illuminate\Http\Request;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Http\Controllers\Webhook\ReportController;
use Jiminny\Jobs\AutomatedReports\SendReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsCallbackService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Mockery;
use Mockery\MockInterface;
use Psr\Log\LoggerInterface;
use Tests\TestCase;
class ReportControllerTest extends TestCase
{
private AutomatedReportsService|MockInterface $reportService;
private Dispatcher|MockInterface $dispatcher;
private LoggerInterface|MockInterface $logger;
private AutomatedReportsCallbackService|MockInterface $callbackService;
private EventDispatcher|MockInterface $eventDispatcher;
private ReportController $controller;
protected function setUp(): void
{
parent::setUp();
$this->reportService = Mockery::mock(AutomatedReportsService::class);
$this->dispatcher = Mockery::mock(Dispatcher::class);
$this->logger = Mockery::mock(LoggerInterface::class);
$this->callbackService = Mockery::mock(AutomatedReportsCallbackService::class);
$this->eventDispatcher = Mockery::mock(EventDispatcher::class);
$this->logger->shouldReceive('info'); // Allow info logs
$this->controller = new ReportController(
$this->reportService,
$this->dispatcher,
$this->logger,
$this->callbackService,
$this->eventDispatcher,
);
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
public function testReadyMethodSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn(null);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(SendReportJob::class));
$this->callbackService->shouldReceive('pushToDatadog')->once();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastSuccess(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$automatedReport = Mockery::mock(AutomatedReport::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_GENERATED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(true);
$reportResult->shouldReceive('getReport')->andReturn($automatedReport);
$automatedReport->shouldReceive('getFrequency')->andReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once(); // This seems to be the logic in the controller
$this->dispatcher->shouldReceive('dispatch')->twice();
$this->callbackService->shouldReceive('pushToDatadog')->twice();
$this->eventDispatcher->shouldReceive('dispatch')->once()->with(Mockery::type(AutomatedReportGenerated::class));
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
public function testReadyMethodWithPodcastFailure(): void
{
$reportUuid = 'test-uuid';
$payload = ['request_id' => $reportUuid];
$request = Mockery::mock(Request::class);
$request->shouldReceive('all')->andReturn($payload);
$reportResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult = Mockery::mock(AutomatedReportResult::class);
$podcastResult->shouldReceive('getUuid')->andReturn('podcast-uuid');
$podcastResult->shouldReceive('getStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getResultUuid')->with($payload)->andReturn($reportUuid);
$this->reportService->shouldReceive('getReportResult')->with($reportUuid)->andReturn($reportResult);
$this->callbackService->shouldReceive('isProcessed')->with($reportResult)->andReturn(false);
$this->reportService->shouldReceive('findChildResult')->andReturn($podcastResult);
$this->callbackService->shouldReceive('getPrimaryStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('getPodcastStatus')->andReturn(AutomatedReportResult::STATUS_FAILED);
$this->callbackService->shouldReceive('isSuccess')->andReturn(false);
$reportResult->shouldReceive('update')->once();
$podcastResult->shouldReceive('update')->once();
$this->dispatcher->shouldReceive('dispatch')->never();
$this->callbackService->shouldReceive('pushToDatadog')->never();
$this->logger->shouldReceive('warning')->once();
$response = $this->controller->ready($request);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals(['status' => 'ok'], json_decode($response->getContent(), true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?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));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
76858
|
|
59949
|
1292
|
16
|
2026-04-20T15:17:39.277443+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776698259277_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp100% [Mon 20 Apr 18:17:39181DOCKER381DEV (-zsh)$82ec2-user@ip-10-30-159-186:~APP (-zsh)83screenpipe"*4ec2-user@ip-10-30-159-186:~ (nc)[2026-04-20 15:17:08]1212"production.INFO: [SocialAccountService],"trace_id":"443d09cf-4b07-4aa0-aDc8-1c319cb13da9"}Token retrieved {"socialAccountId":45478, "provider":"salesforce"}{"correlation_id"4e4bdda9-09ad-463b-9ff4-6aec798a[2026-04-20 15:17:08] production.INF0: [EncryptedTokenManager] Generating access token. {"mode":"encrypted"} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212""trace_id":"443d09cf-4b07-4aa0-aĐc8-1c319cb13da9"}[2026-04-20 15:17:08] production.INF0: [EncryptedTokenManager] Tokens not found in cache, decrypting {"social_account_id" :45478}a1212","trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}{"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798[2026-04-20 15:17:08] production.INFO: [EncryptedTokenManager] Decrypting data key {"social_account_id":45478} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212"."trace_id":"443d09cf-4b07-4aa0-aĐc8-1c319cb13da9"'}[2026-04-20 15:17:08]production.INFO:[EncryptedTokenManager] Decrypting tokens {"social_account_id":45478} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212""trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08]production.INFO: [CrmOwnerResolver]e4bdda9-09ad-463b-9ff4-6aec798a1212"Integration owner matched as CRM Owner {"crm_provider":"salesforce","trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}"crm_owner":16067"team_id":711}{"correlation_id":"4[2026-04-20 15:17:08] production.INFO: [SyncTeamMetadata] Begin syncingmetadata {"provider":"Salesforce", "team_name": "Les Mills", "team_id":711} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212","trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9" }[2026-04-20 15:17:08] production.INF0: Syncing organization... {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08] production.INFO: [Salesforce] Sendingrequest {"endpoint":"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName, OrganizationType, IsSandbox GET","team_id":711} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"'}[2026-04-20 15:17:08] production.ERROR: [Salesforce] Request exception [404] The requested resource does not exist{"url": "https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType, IsSandbox".,"data" : {"headers" : {"Authorization": "Bearer 00D90000000fUsz!AQEAQKRIt62MP50BhF0_SPMdUfRNQaX22hSEy4ww1vkWOy7Y8vtMasenRvudh0QG9o181aqNrLu.wGgkCiT09RHg0aQXiF_d"}},"response":{"GuzzleHttp\\Psr7\|Stream": "[{\"errorCode)": \"NOT_FOUND\", \"message)":\"The requested resource doesnot exist\"}]"}, "fields":[]} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:09] production.ERROR: The requested resource does not exist {"exception":"[object] (Jiminny\\Exceptions\\HttpNotFoundException(code: 404): The requestedresourcedoes not exist at /home/jiminny/app/Services/Crm/Salesforce/Client.php:573)[stacktrace]#0#1/home/jiminny/app/Services/Crm/Salesforce/Client.php(408): Jiminny\\Services|\Crm\\Salesforce\\Client->requestC'GET',https://lesmill...', Array)/home/jiminny/app/Services/Crm/Salesforce/Client.php(343): Jiminny\\Services|\Crm\\Salesforce\\Client->requestWithAutomaticReauthorize('GET', 'https://lesmill...', Array)#2/home/jiminny/app/Services/Crm/Salesforce/ServiceTraits/RecordManipulationsTrait.php(58): Jiminny|(Services\\Crm\\Salesforce\\Client->get('https://lesmill...')#3/home/jiminny/app/Services/Crm/Salesforce/Service.php(1602): Jiminny||Services|\Crm\\Salesforcel|Service->getRecord('Organization', '00D90000000fUsz...', Array)#4/home/jiminny/app/Jobs/Crm/SyncTeamMetadata.php(97): Jiminny\|Services\\Crm\\Salesforce\\Service->syncOrganizationO#5/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Jobs\\Crm\\SyncTeamMetadata->handle(Object(Jiminny\\Services\\ResolveTeamCrmConnection), Object(Jiminny|(Repositories)\TeamRepository), Object(Illuminate\\Log\\LogManager))#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}#7/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))#8/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminatel\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Applicat...
|
NULL
|
-9119046832237847888
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp100% [Mon 20 Apr 18:17:39181DOCKER381DEV (-zsh)$82ec2-user@ip-10-30-159-186:~APP (-zsh)83screenpipe"*4ec2-user@ip-10-30-159-186:~ (nc)[2026-04-20 15:17:08]1212"production.INFO: [SocialAccountService],"trace_id":"443d09cf-4b07-4aa0-aDc8-1c319cb13da9"}Token retrieved {"socialAccountId":45478, "provider":"salesforce"}{"correlation_id"4e4bdda9-09ad-463b-9ff4-6aec798a[2026-04-20 15:17:08] production.INF0: [EncryptedTokenManager] Generating access token. {"mode":"encrypted"} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212""trace_id":"443d09cf-4b07-4aa0-aĐc8-1c319cb13da9"}[2026-04-20 15:17:08] production.INF0: [EncryptedTokenManager] Tokens not found in cache, decrypting {"social_account_id" :45478}a1212","trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}{"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798[2026-04-20 15:17:08] production.INFO: [EncryptedTokenManager] Decrypting data key {"social_account_id":45478} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212"."trace_id":"443d09cf-4b07-4aa0-aĐc8-1c319cb13da9"'}[2026-04-20 15:17:08]production.INFO:[EncryptedTokenManager] Decrypting tokens {"social_account_id":45478} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212""trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08]production.INFO: [CrmOwnerResolver]e4bdda9-09ad-463b-9ff4-6aec798a1212"Integration owner matched as CRM Owner {"crm_provider":"salesforce","trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}"crm_owner":16067"team_id":711}{"correlation_id":"4[2026-04-20 15:17:08] production.INFO: [SyncTeamMetadata] Begin syncingmetadata {"provider":"Salesforce", "team_name": "Les Mills", "team_id":711} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212","trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9" }[2026-04-20 15:17:08] production.INF0: Syncing organization... {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:08] production.INFO: [Salesforce] Sendingrequest {"endpoint":"https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName, OrganizationType, IsSandbox GET","team_id":711} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id": "443d09cf-4b07-4aa0-a0c8-1c319cb13da9"'}[2026-04-20 15:17:08] production.ERROR: [Salesforce] Request exception [404] The requested resource does not exist{"url": "https://lesmills.my.salesforce.com/services/data/v50.0/sobjects/Organization/00D90000000fUszEAE?fields=InstanceName,OrganizationType, IsSandbox".,"data" : {"headers" : {"Authorization": "Bearer 00D90000000fUsz!AQEAQKRIt62MP50BhF0_SPMdUfRNQaX22hSEy4ww1vkWOy7Y8vtMasenRvudh0QG9o181aqNrLu.wGgkCiT09RHg0aQXiF_d"}},"response":{"GuzzleHttp\\Psr7\|Stream": "[{\"errorCode)": \"NOT_FOUND\", \"message)":\"The requested resource doesnot exist\"}]"}, "fields":[]} {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}[2026-04-20 15:17:09] production.ERROR: The requested resource does not exist {"exception":"[object] (Jiminny\\Exceptions\\HttpNotFoundException(code: 404): The requestedresourcedoes not exist at /home/jiminny/app/Services/Crm/Salesforce/Client.php:573)[stacktrace]#0#1/home/jiminny/app/Services/Crm/Salesforce/Client.php(408): Jiminny\\Services|\Crm\\Salesforce\\Client->requestC'GET',https://lesmill...', Array)/home/jiminny/app/Services/Crm/Salesforce/Client.php(343): Jiminny\\Services|\Crm\\Salesforce\\Client->requestWithAutomaticReauthorize('GET', 'https://lesmill...', Array)#2/home/jiminny/app/Services/Crm/Salesforce/ServiceTraits/RecordManipulationsTrait.php(58): Jiminny|(Services\\Crm\\Salesforce\\Client->get('https://lesmill...')#3/home/jiminny/app/Services/Crm/Salesforce/Service.php(1602): Jiminny||Services|\Crm\\Salesforcel|Service->getRecord('Organization', '00D90000000fUsz...', Array)#4/home/jiminny/app/Jobs/Crm/SyncTeamMetadata.php(97): Jiminny\|Services\\Crm\\Salesforce\\Service->syncOrganizationO#5/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Jobs\\Crm\\SyncTeamMetadata->handle(Object(Jiminny\\Services\\ResolveTeamCrmConnection), Object(Jiminny|(Repositories)\TeamRepository), Object(Illuminate\\Log\\LogManager))#6 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}#7/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))#8/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminatel\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Applicat...
|
59948
|
|
13156
|
NULL
|
0
|
2026-04-14T12:12:16.347906+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776168736347_m1.jpg...
|
Firefox
|
Jy 20541 stale records pr 1 by Vasil-Jiminny · Pul Jy 20541 stale records pr 1 by Vasil-Jiminny · Pull Request #11949 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11949
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
JY-18909 Add Ask Jiminny Report type in list by ni JY-18909 Add Ask Jiminny Report type in list by nikolay-yankov · Pull Request #11894 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,544) - [EMAIL] - Jiminny Mail
SonarQube Cloud
SonarQube Cloud
Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | us-east-2
Console Home | Console Home | us-east-2
SecurityGroup | EC2 | us-east-2
SecurityGroup | EC2 | us-east-2
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app
SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app
Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet
Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet
Jiminny
Jiminny
Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf
Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
Jy 20541 stale records pr 1 by Vasil-Jiminny · Pull Request #11949 · jiminny/app
Jy 20541 stale records pr 1 by Vasil-Jiminny · Pull Request #11949 · jiminny/app
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (28)
Pull requests
(
28
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (24)
Security and quality
(
24
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
Review requested
Review requested
Vasil-Jiminny
Vasil-Jiminny
requested your review on this pull request.
Add your review
Add your review
Jy 20541 stale records pr 1 #11949 Edit title
Jy 20541 stale records pr 1
#
11949
Edit title
Awaiting approval
Awaiting approval
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 18 commits into
master
master
from
JY-20541-stale-records-pr-1
JY-20541-stale-records-pr-1
Copy head branch name to clipboard
Lines changed: 183 additions & 33 deletions
Conversation (11)
Conversation
(
11
)
Commits (18)
Commits
(
18
)
Checks (3)
Checks
(
3
)
Files changed (18)
Files changed
(
18
)
Conversation
Conversation
@Vasil-Jiminny
Show options
Vasil-Jiminny commented 3 hours ago •
Vasil-Jiminny
Vasil-Jiminny
commented
3 hours ago
3 hours ago
•
edited
edited
JIRA: JY-20541
JIRA:
JY-20541
JY-20541
Description:
Description:
This PR will be followed by
#11879
#11879
No significant functional changes.
This PR introduces/updates a few shared contracts. There is a contact for Lead/Account/Contact/Opportunity (syncable crm entities), and another for Lead/Account/Contact (prospect entities)
It also semantically updates a few HTTP-family exceptions.
Changes:
Changes:
Introduce SyncableCrmObjectContract.
Update models to comply with new contract.
Added missing accessor methods to Activity, Opportunity and Participant models. Added safe guard checks for logical issues, like missing
crm_configuration_id
, which should never happen, but the DB allows it.
Update HTTP exception definitions with type hints and struct types.
Add or remove reactions
Vasil-Jiminny
Vasil-Jiminny
added
6
commits
4 hours ago
4 hours ago
@Vasil-Jiminny
Define exceptions that may be thrown from sync "syncle object by id" …
Define exceptions that may be thrown from sync "syncle object by id" …
…
7fbac91
7fbac91
@Vasil-Jiminny
Add a common interface to wrap around all objects that may be synced …
Add a common interface to wrap around all objects that may be synced …
…
8c9dfcd
8c9dfcd
@Vasil-Jiminny
All HTTP-family exceptions are updated: all of them include strict ty…
All HTTP-family exceptions are updated: all of them include strict ty…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"JY-18909 Add Ask Jiminny Report type in list by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,544) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SonarQube Cloud","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SonarQube Cloud","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | us-east-2","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Console Home | Console Home | us-east-2","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SecurityGroup | EC2 | us-east-2","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SecurityGroup | EC2 | us-east-2","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | us-east-2","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20541 stale records pr 1 by Vasil-Jiminny · Pull Request #11949 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jy 20541 stale records pr 1 by Vasil-Jiminny · Pull Request #11949 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (28)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (24)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"24","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Review requested","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review requested","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"requested your review on this pull request.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Add your review","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add your review","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Jy 20541 stale records pr 1 #11949 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jy 20541 stale records pr 1","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11949","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Awaiting approval","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Awaiting approval","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 18 commits into","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20541-stale-records-pr-1","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-stale-records-pr-1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 183 additions & 33 deletions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (11)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Conversation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (18)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (3)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (18)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Files changed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Conversation","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show options","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Vasil-Jiminny commented 3 hours ago •","depth":14,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3 hours ago","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3 hours ago","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"•","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"edited","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"edited","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"JIRA: JY-20541","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JIRA:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20541","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Description:","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This PR will be followed by","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"#11879","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"#11879","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No significant functional changes.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This PR introduces/updates a few shared contracts. There is a contact for Lead/Account/Contact/Opportunity (syncable crm entities), and another for Lead/Account/Contact (prospect entities)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It also semantically updates a few HTTP-family exceptions.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Changes:","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Changes:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Introduce SyncableCrmObjectContract.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Update models to comply with new contract.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Added missing accessor methods to Activity, Opportunity and Participant models. Added safe guard checks for logical issues, like missing","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"crm_configuration_id","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", which should never happen, but the DB allows it.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Update HTTP exception definitions with type hints and struct types.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add or remove reactions","depth":16,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"added","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4 hours ago","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4 hours ago","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Define exceptions that may be thrown from sync \"syncle object by id\" …","depth":14,"help_text":"Define exceptions that may be thrown from sync \"syncle object by id\" operaitons.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Define exceptions that may be thrown from sync \"syncle object by id\" …","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"7fbac91","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7fbac91","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Add a common interface to wrap around all objects that may be synced …","depth":14,"help_text":"Add a common interface to wrap around all objects that may be synced from a crm - deal, account, contact, lead. The ProspectInterace extends on it, and wraps around account, lead and contact (no deal there).","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add a common interface to wrap around all objects that may be synced …","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"8c9dfcd","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8c9dfcd","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"All HTTP-family exceptions are updated: all of them include strict ty…","depth":14,"help_text":"All HTTP-family exceptions are updated: all of them include strict type declaration. All of them have their const ERROR_CODE typehinted.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All HTTP-family exceptions are updated: all of them include strict ty…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-9118593608515722412
|
1233275672014412494
|
idle
|
accessibility
|
NULL
|
JY-18909 Add Ask Jiminny Report type in list by ni JY-18909 Add Ask Jiminny Report type in list by nikolay-yankov · Pull Request #11894 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,544) - [EMAIL] - Jiminny Mail
SonarQube Cloud
SonarQube Cloud
Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | us-east-2
Console Home | Console Home | us-east-2
SecurityGroup | EC2 | us-east-2
SecurityGroup | EC2 | us-east-2
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app
SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app
Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet
Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet
Jiminny
Jiminny
Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf
Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
Jy 20541 stale records pr 1 by Vasil-Jiminny · Pull Request #11949 · jiminny/app
Jy 20541 stale records pr 1 by Vasil-Jiminny · Pull Request #11949 · jiminny/app
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (28)
Pull requests
(
28
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (24)
Security and quality
(
24
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
Review requested
Review requested
Vasil-Jiminny
Vasil-Jiminny
requested your review on this pull request.
Add your review
Add your review
Jy 20541 stale records pr 1 #11949 Edit title
Jy 20541 stale records pr 1
#
11949
Edit title
Awaiting approval
Awaiting approval
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 18 commits into
master
master
from
JY-20541-stale-records-pr-1
JY-20541-stale-records-pr-1
Copy head branch name to clipboard
Lines changed: 183 additions & 33 deletions
Conversation (11)
Conversation
(
11
)
Commits (18)
Commits
(
18
)
Checks (3)
Checks
(
3
)
Files changed (18)
Files changed
(
18
)
Conversation
Conversation
@Vasil-Jiminny
Show options
Vasil-Jiminny commented 3 hours ago •
Vasil-Jiminny
Vasil-Jiminny
commented
3 hours ago
3 hours ago
•
edited
edited
JIRA: JY-20541
JIRA:
JY-20541
JY-20541
Description:
Description:
This PR will be followed by
#11879
#11879
No significant functional changes.
This PR introduces/updates a few shared contracts. There is a contact for Lead/Account/Contact/Opportunity (syncable crm entities), and another for Lead/Account/Contact (prospect entities)
It also semantically updates a few HTTP-family exceptions.
Changes:
Changes:
Introduce SyncableCrmObjectContract.
Update models to comply with new contract.
Added missing accessor methods to Activity, Opportunity and Participant models. Added safe guard checks for logical issues, like missing
crm_configuration_id
, which should never happen, but the DB allows it.
Update HTTP exception definitions with type hints and struct types.
Add or remove reactions
Vasil-Jiminny
Vasil-Jiminny
added
6
commits
4 hours ago
4 hours ago
@Vasil-Jiminny
Define exceptions that may be thrown from sync "syncle object by id" …
Define exceptions that may be thrown from sync "syncle object by id" …
…
7fbac91
7fbac91
@Vasil-Jiminny
Add a common interface to wrap around all objects that may be synced …
Add a common interface to wrap around all objects that may be synced …
…
8c9dfcd
8c9dfcd
@Vasil-Jiminny
All HTTP-family exceptions are updated: all of them include strict ty…
All HTTP-family exceptions are updated: all of them include strict ty…...
|
NULL
|
|
21079
|
466
|
23
|
2026-04-15T09:49:27.023673+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776246567023_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Help2 For jou - Conftuence(6) Lukas Kovalik - Time Offu Product Growth Platform | Userpild" Userpilot(fix(security): composer dependend(8 JiminnyV Welcome to Steam+ New Tabuminny auldsslah.nel wikinomeO JIMINNY® For you• Recent# Starred8, Spaces0* Appsolalrea suaces(el Lukas Kovalik• Success= View all spacesf Jira:: Teams..• More‹40 lil l Support Daily • in 2h 11mA100% C& Wed 15 Apr 12:49:26Ask RovoQ Search your Google Drive Docs, Sheets and Slides+ CreatePick up where you left offConfigure SSH access to multiple environ..EngineeringVisited 14 April 2026# Start hereEngineeringVisited 14 April 2026Change playbook actiEngineeringVisited 7 April 2026® How to Consume private NPM packagesEngineeringVisited 20 March 2026E AI Signals & AlertsProductVisited 11 March 2026• PHP 8.x upgradeEngineeringVisited 9 March 2026Discover what's happeningSort by: MostriQ Following) (z Popularo AnnouncementsSummaries use AL. Verify results. B CWe're keeping you in the loopStay in-the-know by following people and spaces. Their activity will show up in your feed, but you won't receiveemail notifications about it. Add to, or edit, your feed anytime.Edit feedAddelina Petrova updated • 14 April 2026E Desktop app to record a meetings without visible NotetakerOwned by Adelina Petrova • ProductA desktop app will be developed to record meetings without a visible notetaker, increasing customer confidence and reducing friction, andconversation data to improve insights and coaching.Nikolay Nikolov updated • 3 April 2026E [Draft] Strategies to Reduce Queue Wait Time to Under 1 HourOwned by Nikolay Nikolov • EngineeringReducing queue wait time to under 1 hour requires reducing jobs or increasing processing rate, with options including increasing worker lintriggers, dedicated workers for CRM-sync, and optimizing job execution.Nikolay Nikolov updated 2 times • 24 March 2026E Nudge System: Implementing indexed_at for Comprehensive Activity Tracking and Memory EfficiencyOwned by Nikolay Nikolov • EngineeringTrack ES document indexing with 'indexed_at' timestamp for comprehensive activity tracking and memory efficiency.NotificationsOnly show unread CxDirect WatchingTodavGalya Dimitrova assigned a story to you 14 minutes ago• Notify a user before the AJ Report expiresJY-20508 • BacklogGalya Dimitrova assigned a story to you 14 minutes agoa Send email notification when the report is not generatedJY-20157 • BacklogStefka Stoyanova updated a work item 28 minutes agoE No such column 'Type' on entity 'Event'JY-20384 • Deployed& +5 updates from Stefka StoyanovaStefka Stoyanova changed a story from Ready forDeployment to Closed 1 hour ago@ AJ Reports > TrackingJY-20543 • Closed8g +3 updates from Stefka Stoyanova and othersOlderNikolay Yankov assigned a subtask to you 2 weeks ago$ [BE] Change search report in cron job queryJY-20584 • Ready for DevNikolay Yankov assigned a subtask to you 2 weeks ago$ [BE] Add period to cron jobJy-2085 • Keaov Tor DevNikolay Yankov updated a subtask 2 weeks ago& [BE] Add new report type in filters optionsJY-20579 • Ready for Dev•+1 assignee update from Nikolay YankovNikolay Yankov updated a subtask 2 weeks agoOIDr hoo Tico in 4i reoors listtor celete rients.JY-20577 • Ready for Dev+4 updates from Nikolay YankovNikolay Yankov updated a subtask 2 weeks ago8 [BE] Manage recipients for email sendingJy-205/5 • Keady Tor Dev+1 assignee update from Nikolay Yankov...
|
NULL
|
-9118415772310568955
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Help2 For jou - Conftuence(6) Lukas Kovalik - Time Offu Product Growth Platform | Userpild" Userpilot(fix(security): composer dependend(8 JiminnyV Welcome to Steam+ New Tabuminny auldsslah.nel wikinomeO JIMINNY® For you• Recent# Starred8, Spaces0* Appsolalrea suaces(el Lukas Kovalik• Success= View all spacesf Jira:: Teams..• More‹40 lil l Support Daily • in 2h 11mA100% C& Wed 15 Apr 12:49:26Ask RovoQ Search your Google Drive Docs, Sheets and Slides+ CreatePick up where you left offConfigure SSH access to multiple environ..EngineeringVisited 14 April 2026# Start hereEngineeringVisited 14 April 2026Change playbook actiEngineeringVisited 7 April 2026® How to Consume private NPM packagesEngineeringVisited 20 March 2026E AI Signals & AlertsProductVisited 11 March 2026• PHP 8.x upgradeEngineeringVisited 9 March 2026Discover what's happeningSort by: MostriQ Following) (z Popularo AnnouncementsSummaries use AL. Verify results. B CWe're keeping you in the loopStay in-the-know by following people and spaces. Their activity will show up in your feed, but you won't receiveemail notifications about it. Add to, or edit, your feed anytime.Edit feedAddelina Petrova updated • 14 April 2026E Desktop app to record a meetings without visible NotetakerOwned by Adelina Petrova • ProductA desktop app will be developed to record meetings without a visible notetaker, increasing customer confidence and reducing friction, andconversation data to improve insights and coaching.Nikolay Nikolov updated • 3 April 2026E [Draft] Strategies to Reduce Queue Wait Time to Under 1 HourOwned by Nikolay Nikolov • EngineeringReducing queue wait time to under 1 hour requires reducing jobs or increasing processing rate, with options including increasing worker lintriggers, dedicated workers for CRM-sync, and optimizing job execution.Nikolay Nikolov updated 2 times • 24 March 2026E Nudge System: Implementing indexed_at for Comprehensive Activity Tracking and Memory EfficiencyOwned by Nikolay Nikolov • EngineeringTrack ES document indexing with 'indexed_at' timestamp for comprehensive activity tracking and memory efficiency.NotificationsOnly show unread CxDirect WatchingTodavGalya Dimitrova assigned a story to you 14 minutes ago• Notify a user before the AJ Report expiresJY-20508 • BacklogGalya Dimitrova assigned a story to you 14 minutes agoa Send email notification when the report is not generatedJY-20157 • BacklogStefka Stoyanova updated a work item 28 minutes agoE No such column 'Type' on entity 'Event'JY-20384 • Deployed& +5 updates from Stefka StoyanovaStefka Stoyanova changed a story from Ready forDeployment to Closed 1 hour ago@ AJ Reports > TrackingJY-20543 • Closed8g +3 updates from Stefka Stoyanova and othersOlderNikolay Yankov assigned a subtask to you 2 weeks ago$ [BE] Change search report in cron job queryJY-20584 • Ready for DevNikolay Yankov assigned a subtask to you 2 weeks ago$ [BE] Add period to cron jobJy-2085 • Keaov Tor DevNikolay Yankov updated a subtask 2 weeks ago& [BE] Add new report type in filters optionsJY-20579 • Ready for Dev•+1 assignee update from Nikolay YankovNikolay Yankov updated a subtask 2 weeks agoOIDr hoo Tico in 4i reoors listtor celete rients.JY-20577 • Ready for Dev+4 updates from Nikolay YankovNikolay Yankov updated a subtask 2 weeks ago8 [BE] Manage recipients for email sendingJy-205/5 • Keady Tor Dev+1 assignee update from Nikolay Yankov...
|
21078
|
|
22396
|
489
|
15
|
2026-04-15T10:40:23.823131+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776249623823_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
29239125952/60toCastle AgeBuild Farm (Cost: 60 .08 29239125952/60toCastle AgeBuild Farm (Cost: 60 .087)Renewable food source. Provides a limitedamount of food before it goes fallow and mustbe rebuilt. Only one Villager may work aFarm at a time. You can farm abandonedenemy Farms. Cannot be converted by enemyMonks.Upgrades: food (Mill).480000(Hotkey: A)5 Honorius: 2495/24952 Anceu Hualloc: 2456/24563 Bird Jaguar: 2407/24074 Siddhraj Jaisingh: 2357/2357 © I8 Ashikaga Takauji: 2254/22541 kovaliklukas: 2164/21646 Mindaugas: 2154/21547 Basil the Macedonian: 2122/2122Builderkovaliklnkas (Britons)...
|
NULL
|
-9117599521150227534
|
NULL
|
click
|
ocr
|
NULL
|
29239125952/60toCastle AgeBuild Farm (Cost: 60 .08 29239125952/60toCastle AgeBuild Farm (Cost: 60 .087)Renewable food source. Provides a limitedamount of food before it goes fallow and mustbe rebuilt. Only one Villager may work aFarm at a time. You can farm abandonedenemy Farms. Cannot be converted by enemyMonks.Upgrades: food (Mill).480000(Hotkey: A)5 Honorius: 2495/24952 Anceu Hualloc: 2456/24563 Bird Jaguar: 2407/24074 Siddhraj Jaisingh: 2357/2357 © I8 Ashikaga Takauji: 2254/22541 kovaliklukas: 2164/21646 Mindaugas: 2154/21547 Basil the Macedonian: 2122/2122Builderkovaliklnkas (Britons)...
|
22394
|
|
78898
|
2021
|
6
|
2026-04-24T13:58:37.621779+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777039117621_m1.jpg...
|
PhpStorm
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PreviewFileEditViewGoToolsWindowHelp24100% <78F PreviewFileEditViewGoToolsWindowHelp24100% <78Fri 24 Apr 16:58:37APP (-zsh)APP (-zsh)DOCKER₴81Last login: Fri Apr 24 12:59:23 on ttys007DEV (-zsh)O $82*3screenpipe"Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentsPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ co master. env.localapp/Console/Commands/JiminnyDebugCommand.phpapp/Http/Controllers/API/ActivityController.phpapp/Jobs/Team/SyncToIntercom.phpapp/Services/PlaybackService.phpconfig/logging.phpSwitched to branch'master'Your branch is behind 'origin/master'by 5 commits, and can be fast-forwarded.Cuse "git pull"to update your local branch)lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pullremote: Enumerating objects: 50, done.remote: Counting objects: 100% (50/50),done.remote: Compressing objects: 100% (23/23), done.remote: Total 50 (delta 28), reused 48 (delta 27), pack-reused 0 (from 0)Unpacking objects: 100% (50/50), 8.46 KiB | 173.00 KiB/s, done.From github.com:jiminny/app+ ad8c8625c3...1ae95eb19e JY-20489-hudges-phase2e4a4800edc..ac10bb65b3 JY-20663-partner-rockeedd7e834d145..7b28fe8e0a JY-20738-debug-AJ-tracking-UP* [new branch]fix-fav-icon-and-forbid-claude-from-committing-> origin/JY-20489-hudges-phase2 (forced update)-> origin/JY-20663-partner-rockeed-> origin/JY-20738-debug-AJ-tracking-UP-› origin/fix-fav-icon-and-forbid-claude-from-committingUpdating 3ac70b38d8..e183237c25Fast-forwardfront-end/README.mdfront-end/jsconfig.jsonfront-end/package.jsonfront-end/src/__mocks__/setup.jsfront-end/src/components/AiReports/__tests_/__snapshots__/audio-player-modal.output.htmlfront-end/src/components/LiveCoach/VideoPlayer.vue.../src/components/Settings/shared/InviteMemberModal/__tests_/__snapshots__/InviteMemberModal.spec.js.snapfront-end/src/components/TeamInsights/Themes/__tests__/__snapshots__/Themes.spec.js.snapfront-end/src/components/layout/Sidebar/__tests__/__snapshots__/Sidebar.spec.js.snapfront-end/src/components/onboard/__tests_/__snapshots__/0nboard.spec.js.snapfront-end/src/components/playback/__tests__/__snapshots__/Playback.spec.js.snap10 ++-145+-48+-5+-2+-4+-26+-8front-end/src/components/playlists/__tests_/__snapshots__/Playlists.spec.js.snapfront-end/yarn.lock| 369613 files changed, 2206 insertions(+), 1691 deletions(-)lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20508-notify-before-AJ-report-expirationSwitched to a new branch 'JY-20508-notify-before-AJ-report-expiration'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20508-notify-before-AJ-report-expiration) $IO $4-zsh*5APP...
|
NULL
|
-9117580578438646962
|
NULL
|
idle
|
ocr
|
NULL
|
PreviewFileEditViewGoToolsWindowHelp24100% <78F PreviewFileEditViewGoToolsWindowHelp24100% <78Fri 24 Apr 16:58:37APP (-zsh)APP (-zsh)DOCKER₴81Last login: Fri Apr 24 12:59:23 on ttys007DEV (-zsh)O $82*3screenpipe"Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentsPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ co master. env.localapp/Console/Commands/JiminnyDebugCommand.phpapp/Http/Controllers/API/ActivityController.phpapp/Jobs/Team/SyncToIntercom.phpapp/Services/PlaybackService.phpconfig/logging.phpSwitched to branch'master'Your branch is behind 'origin/master'by 5 commits, and can be fast-forwarded.Cuse "git pull"to update your local branch)lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pullremote: Enumerating objects: 50, done.remote: Counting objects: 100% (50/50),done.remote: Compressing objects: 100% (23/23), done.remote: Total 50 (delta 28), reused 48 (delta 27), pack-reused 0 (from 0)Unpacking objects: 100% (50/50), 8.46 KiB | 173.00 KiB/s, done.From github.com:jiminny/app+ ad8c8625c3...1ae95eb19e JY-20489-hudges-phase2e4a4800edc..ac10bb65b3 JY-20663-partner-rockeedd7e834d145..7b28fe8e0a JY-20738-debug-AJ-tracking-UP* [new branch]fix-fav-icon-and-forbid-claude-from-committing-> origin/JY-20489-hudges-phase2 (forced update)-> origin/JY-20663-partner-rockeed-> origin/JY-20738-debug-AJ-tracking-UP-› origin/fix-fav-icon-and-forbid-claude-from-committingUpdating 3ac70b38d8..e183237c25Fast-forwardfront-end/README.mdfront-end/jsconfig.jsonfront-end/package.jsonfront-end/src/__mocks__/setup.jsfront-end/src/components/AiReports/__tests_/__snapshots__/audio-player-modal.output.htmlfront-end/src/components/LiveCoach/VideoPlayer.vue.../src/components/Settings/shared/InviteMemberModal/__tests_/__snapshots__/InviteMemberModal.spec.js.snapfront-end/src/components/TeamInsights/Themes/__tests__/__snapshots__/Themes.spec.js.snapfront-end/src/components/layout/Sidebar/__tests__/__snapshots__/Sidebar.spec.js.snapfront-end/src/components/onboard/__tests_/__snapshots__/0nboard.spec.js.snapfront-end/src/components/playback/__tests__/__snapshots__/Playback.spec.js.snap10 ++-145+-48+-5+-2+-4+-26+-8front-end/src/components/playlists/__tests_/__snapshots__/Playlists.spec.js.snapfront-end/yarn.lock| 369613 files changed, 2206 insertions(+), 1691 deletions(-)lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co-b JY-20508-notify-before-AJ-report-expirationSwitched to a new branch 'JY-20508-notify-before-AJ-report-expiration'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20508-notify-before-AJ-report-expiration) $IO $4-zsh*5APP...
|
78892
|
|
69981
|
1626
|
13
|
2026-04-22T09:26:19.219581+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776849979219_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.12708333,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.24583334,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.25,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37291667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6145833,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.61875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.7375,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7416667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
click
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69974
|
|
69982
|
1627
|
17
|
2026-04-22T09:26:50.374396+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850010374_m2.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.32912233,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33111703,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.3879654,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3899601,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.44680852,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4488032,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.5056516,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.50764626,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.56449467,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56648934,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.62333775,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6253325,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.6821808,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.68417555,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.50398934,"top":1.0,"width":0.010970744,"height":-0.02394259},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
69983
|
1626
|
14
|
2026-04-22T09:26:54.383+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850014383_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.12708333,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.24583334,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.25,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37291667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6145833,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.61875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.7375,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7416667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
69984
|
1627
|
18
|
2026-04-22T09:27:21.968188+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850041968_m2.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.32912233,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33111703,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.3879654,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3899601,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.44680852,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4488032,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.5056516,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.50764626,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.56449467,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56648934,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.62333775,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6253325,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.6821808,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.68417555,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.50398934,"top":1.0,"width":0.010970744,"height":-0.02394259},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69982
|
|
69985
|
1626
|
15
|
2026-04-22T09:27:27.971424+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850047971_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.12708333,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.24583334,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.25,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37291667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6145833,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.61875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.7375,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7416667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69983
|
|
69986
|
1627
|
19
|
2026-04-22T09:27:54.099494+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850074099_m2.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.32912233,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33111703,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.3879654,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3899601,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.44680852,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4488032,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.5056516,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.50764626,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.56449467,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56648934,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.62333775,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6253325,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.6821808,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.68417555,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.50398934,"top":1.0,"width":0.010970744,"height":-0.02394259},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69982
|
|
69987
|
1626
|
16
|
2026-04-22T09:27:59.751861+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850079751_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.12708333,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.24583334,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.25,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37291667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6145833,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.61875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.7375,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7416667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69983
|
|
69988
|
NULL
|
0
|
2026-04-22T09:28:24.784120+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850104784_m2.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.32912233,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33111703,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.3879654,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3899601,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.44680852,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4488032,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.5056516,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.50764626,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.56449467,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56648934,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.62333775,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6253325,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.6821808,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.68417555,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.50398934,"top":1.0,"width":0.010970744,"height":-0.02394259},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69982
|
|
69989
|
NULL
|
0
|
2026-04-22T09:28:30.388456+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850110388_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.12708333,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.24583334,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.25,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37291667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6145833,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.61875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.7375,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7416667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69983
|
|
69990
|
1629
|
0
|
2026-04-22T09:28:55.448002+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850135448_m2.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.32912233,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33111703,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.3879654,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3899601,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.44680852,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4488032,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.5056516,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.50764626,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.56449467,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56648934,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.62333775,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6253325,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.6821808,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.68417555,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.50398934,"top":1.0,"width":0.010970744,"height":-0.02394259},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69982
|
|
69991
|
1628
|
0
|
2026-04-22T09:29:00.958469+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850140958_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.12708333,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.24583334,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.25,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37291667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6145833,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.61875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.7375,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7416667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69983
|
|
69992
|
1629
|
1
|
2026-04-22T09:29:26.161688+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850166161_m2.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.32912233,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33111703,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.3879654,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3899601,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.44680852,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4488032,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.5056516,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.50764626,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.56449467,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56648934,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.62333775,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6253325,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.6821808,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.68417555,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.50398934,"top":1.0,"width":0.010970744,"height":-0.02394259},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69982
|
|
69993
|
1628
|
1
|
2026-04-22T09:29:31.652611+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850171652_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.12708333,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.24583334,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.25,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37291667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6145833,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.61875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.7375,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7416667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
idle
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
69983
|
|
70015
|
1628
|
12
|
2026-04-22T09:32:59.423134+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850379423_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.12708333,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.24583334,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.25,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37291667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6145833,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.61875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.7375,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7416667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
click
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
70013
|
|
70016
|
1629
|
13
|
2026-04-22T09:32:59.522697+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850379522_m2.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.32912233,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.33111703,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.3879654,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3899601,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.44680852,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4488032,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.5056516,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.50764626,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.56449467,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56648934,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.62333775,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6253325,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.6821808,"top":1.0,"width":0.058843084,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.68417555,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.50398934,"top":1.0,"width":0.010970744,"height":-0.02394259},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
click
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
70012
|
|
70017
|
1628
|
13
|
2026-04-22T09:33:02.395728+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776850382395_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","depth":4,"value":"Last login: Mon Apr 20 19:49:44 on ttys010\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 356, done.\nremote: Counting objects: 100% (288/288), done.\nremote: Compressing objects: 100% (49/49), done.\nremote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)\nReceiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.\nResolving deltas: 100% (267/267), completed with 94 local objects.\nFrom github.com:jiminny/app\n 4eec6ce5d2..b37b0452a5 master -> origin/master\n 752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny\n cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n + f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)\n * [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue\n * [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities\n * [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old\n f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\nUpdating 4eec6ce5d2..b37b0452a5\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 6 files changed, 372 insertions(+), 4 deletions(-)\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status\nOn branch JY-18909-automated-reports-ask-jiminny\nYour branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Mail/Reports/ReportNotGenerated.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tresources/views/emails/reports/report-not-generated.blade.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull\nremote: Enumerating objects: 527, done.\nremote: Counting objects: 100% (191/191), done.\nremote: Compressing objects: 100% (39/39), done.\nremote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)\nReceiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.\nResolving deltas: 100% (330/330), completed with 51 local objects.\nFrom github.com:jiminny/app\n * [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n 6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file\n b37b0452a5..a581c3fc69 master -> origin/master\n * [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard\nUpdating 96e71f9934..724fdb0917\nFast-forward\n app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++\n app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++\n app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----\n app/Jobs/Crm/SyncObjects.php | 38 +++++++-----\n app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-\n app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-\n app/Services/Crm/BaseService.php | 53 ++++++++++++++---\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--\n composer.lock | 46 +++++++--------\n front-end/src/components/connect/connect.vue | 30 +++++-----\n front-end/src/components/onboard/Onboard.vue | 2 +-\n tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------\n tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----\n tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 23 files changed, 1319 insertions(+), 174 deletions(-)\n create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php\n create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php\n create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php\n create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 37.187 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-download:worker-download_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker-emails:worker-emails_00: stopped\nworker:worker_00: stopped\nworker-calendar:worker-calendar_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-es-update:worker-es-update_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5609 files in 54.393 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) routes/web.php (statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/routes/web.php\n+++ /home/jiminny/routes/web.php\n@@ -148,57 +148,57 @@\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('activity.playback');\n \n- // AI Reports\n- $router->get('/ai-reports', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.show');\n+ // AI Reports\n+ $router->get('/ai-reports', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.show');\n \n- $router->get('/ai-reports/manage', [\n- FrontendController::class, 'render',\n- ])\n- ->middleware(['can:canAccessAiReports,' . User::class])\n- ->name('ai.reports.manage');\n+ $router->get('/ai-reports/manage', [\n+ FrontendController::class, 'render',\n+ ])\n+ ->middleware(['can:canAccessAiReports,' . User::class])\n+ ->name('ai.reports.manage');\n \n- $router->get('/ai-reports/pdf/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.pdf.view');\n+ $router->get('/ai-reports/pdf/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.pdf.view');\n \n- $router->get('/ai-reports/pdf/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.pdf.download');\n+ $router->get('/ai-reports/pdf/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.pdf.download');\n \n- $router->get('/ai-reports/audio/{uuid}', [\n- Controllers\\UserAutomatedReportsController::class, 'view',\n- ])->name('ai-reports.audio.view');\n+ $router->get('/ai-reports/audio/{uuid}', [\n+ Controllers\\UserAutomatedReportsController::class, 'view',\n+ ])->name('ai-reports.audio.view');\n \n- $router->get('/ai-reports/audio/{uuid}/download', [\n- Controllers\\UserAutomatedReportsController::class, 'download',\n- ])->name('ai-reports.audio.download');\n+ $router->get('/ai-reports/audio/{uuid}/download', [\n+ Controllers\\UserAutomatedReportsController::class, 'download',\n+ ])->name('ai-reports.audio.download');\n \n-// $router->group(\n-// ['middleware' => ['can:canAccessAiReports,' . User::class]],\n-// static function (Router $router): void {\n-// $router->get('/ai-reports', [FrontendController::class, 'render'])\n-// ->name('ai.reports.show');\n-//\n-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n-// ->name('ai.reports.manage');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.pdf.view');\n-//\n-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.pdf.download');\n-//\n-// $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n-// ->name('ai-reports.audio.view');\n-//\n-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n-// ->name('ai-reports.audio.download');\n-// }\n-// );\n+ // $router->group(\n+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],\n+ // static function (Router $router): void {\n+ // $router->get('/ai-reports', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.show');\n+ //\n+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])\n+ // ->name('ai.reports.manage');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.pdf.view');\n+ //\n+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.pdf.download');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\\UserAutomatedReportsController::class, 'view'])\n+ // ->name('ai-reports.audio.view');\n+ //\n+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\\UserAutomatedReportsController::class, 'download'])\n+ // ->name('ai-reports.audio.download');\n+ // }\n+ // );\n \n // Playback of audio streams.\n $router->get('/stream/{track}', [AudioController::class, 'streamTrack'])\n\n ----------- end diff -----------\n\n\nFixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git status\nOn branch master\nYour branch is behind 'origin/master' by 53 commits, and can be fast-forwarded.\n (use \"git pull\" to update your local branch)\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: routes/web.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 582, done.\nremote: Counting objects: 100% (506/506), done.\nremote: Compressing objects: 100% (80/80), done.\nremote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)\nReceiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.\nResolving deltas: 100% (458/458), completed with 97 local objects.\nFrom github.com:jiminny/app\n a581c3fc69..d207a770d8 master -> origin/master\n * [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n * [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2\n 166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n 60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\nUpdating b37b0452a5..d207a770d8\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ElasticSearch/Model/Observer.php | 4 +-\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++\n app/Console/Kernel.php | 4 +\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 24 ++--\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-\n tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n 31 files changed, 1272 insertions(+), 180 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 5, done.\nremote: Counting objects: 100% (5/5), done.\nremote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)\nUnpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.\nFrom github.com:jiminny/app\n d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch\nremote: Enumerating objects: 20, done.\nremote: Counting objects: 100% (20/20), done.\nremote: Compressing objects: 100% (4/4), done.\nremote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)\nUnpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.\nFrom github.com:jiminny/app\n 36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a\ngit: 'branc' is not a git command. See 'git --help'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a\n 20118-hs-opportunity-make-webhook-strategy-default\n JMNY-4047-hubspot-v3-api-upgrade\n JY-10125-close-copper-setup-crm-command\n JY-10153-talkdesk-import-calls\n JY-10173-add-additional-logs\n JY-10173-add-logs-to-close-crm-log\n JY-10291-setup-twilio-video-command\n JY-10379-import-call-with-crm-data\n JY-10455-fix-sentry-error-on-no-task-matched\n JY-10514-fix-duplicated-prospect-participants\n JY-10698-add-performance-monitor-on-DI\n JY-10742-fix-office-recurring-events\n JY-10797-reorder-prospect-lookup\n JY-10804-social-account-token-sentry-issues\n JY-10877-add-additional-filter-twilio-video\n JY-10877-filter-out-open-rooms-twilio-video\n JY-10925-create-participants-before-processing\n JY-10930-pass-autolog-state-to-activity-data\n JY-10989-add-opportunity-support-on-twilio-video\n JY-11040\n JY-11060-replace-deprecated-methods\n JY-11102-change-retry-time-for-match-crm-data\n JY-11148-remove-rollback-from-change-type-migration\n JY-11148-sentry-quota-issue\n JY-11167-justcall-download-track\n JY-11170-emails-import\n JY-11171-enable-microsoft-dutch-transcription\n JY-11193-customer-api-get-activities-optimisations-poc\n JY-11203-fix-dialpad-issue\n JY-11204-twilio-flex-presales-calls\n JY-11265-clear-crm-data-when-prospect-removed\n JY-11266-remove-ms-id-passcode-workaround\n JY-11325-twilio-video-handle-unsupported-custom-objects\n JY-11340-twilio-flex-direct-integration\n JY-11456-change-hubspot-match-by-phone-number-search\n JY-11465-remove-team-crm-provider-unique-on-crm-object-tables\n JY-11503-aircall-tags-activity-type-mapping-crm\n JY-11594-crm-log-reminder-changes\n JY-11624-fix-postmark-sync\n JY-11669-twilio-video-activity-type\n JY-11720-hubspot-owner-api-change\n JY-11756-JY-12102-delete-past-calendar-events\n JY-11756-remove-activities-foreign-from-calendar-event\n JY-11757-fix-close-crm-find-query-logic\n JY-11787-add-logs-for-late-calendar-imports\n JY-11807-rework-HS-import-calls-search-method\n JY-11809-calendar-separate-logic\n JY-11890-add-crm-search-strategy\n JY-11927-change-five9-bucket-name\n JY-11927-five9-integration\n JY-11928-five9-setup\n JY-11989-remove-future-calendar-events\n JY-12028-drop-calendar-logs-table\n JY-12028-remove-calendar-logs\n JY-12155-invalid-domain-match\n JY-12155-match-data-in-crm-optimisations\n JY-12377-fix-bh-phone-matching\n JY-12446-add-logs-on-office-calendar-exception\n JY-12511-fix-hubspot-without-owner-profile\n JY-12511-implement-sync-opportunities-strategy\n JY-12511-opportunity-full-sync\n JY-12536-fix-missing-calendar-events\n JY-12775-fix-deprecated-hs-html-tag\n JY-12775-fix-hs-deprecated-html-tags\n JY-12878-fix-pipedrive-crm-stage-field-sync\n JY-12916-twilio-video-not-recorded-yet-filter\n JY-12968-apollo-dialer-setup\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\troutes/web.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Http/Controllers/API/ActivityController.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Jobs/Team/SyncToIntercom.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Services/PlaybackService.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nbranch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.\nSwitched to a new branch 'JY-20372-ai-reports-promotion-pages'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1146, done.\nremote: Counting objects: 100% (701/701), done.\nremote: Compressing objects: 100% (154/154), done.\nremote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)\nReceiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.\nResolving deltas: 100% (426/426), completed with 103 local objects.\nFrom github.com:jiminny/app\n a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n 46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method\n d207a770d8..40be217d54 master -> origin/master\n * [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue\nAlready up to date.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nfailed to connect to the docker API at unix:///Users/lukas/.docker/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /Users/lukas/.docker/run/docker.sock: connect: no such file or directory\nmake: *** [cs-fix] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.12291667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.12708333,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.24583334,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.25,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Build full day activity summary from Screenpipe (claude)","depth":2,"bounds":{"left":0.36875,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.37291667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.49166667,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.49583334,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.6145833,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.61875,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.7375,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7416667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-159-186:~ (nc)","depth":2,"bounds":{"left":0.86041665,"top":0.05888889,"width":0.12291667,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8645833,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-9116939573453985954
|
-1076463486631400609
|
visual_change
|
accessibility
|
NULL
|
Last login: Mon Apr 20 19:49:44 on ttys010
Poetry Last login: Mon Apr 20 19:49:44 on ttys010
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 356 (delta 247), reused 271 (delta 239), pack-reused 68 (from 1)
Receiving objects: 100% (356/356), 85.58 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (267/267), completed with 94 local objects.
From github.com:jiminny/app
4eec6ce5d2..b37b0452a5 master -> origin/master
752fb7ac1d..724fdb0917 JY-18909-automated-reports-ask-jiminny -> origin/JY-18909-automated-reports-ask-jiminny
cf378aa07b..a21d53727d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
+ f0119c9d87...b0e5590d49 JY-20701-reschedule-HubSpot-processing -> origin/JY-20701-reschedule-HubSpot-processing (forced update)
* [new branch] JY-20705-fix-ai-call-scoring-issue -> origin/JY-20705-fix-ai-call-scoring-issue
* [new branch] JY-20708-elasticsearch-new-activities -> origin/JY-20708-elasticsearch-new-activities
* [new branch] JY-20709-call-scoring-delete-old -> origin/JY-20709-call-scoring-delete-old
f4d9b3911b..e6daaf72c3 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
3872fca88d..6352d781ad feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
Updating 4eec6ce5d2..b37b0452a5
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 +++++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++++
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++++++++++++++++++++++---
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 ++++++++++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
6 files changed, 372 insertions(+), 4 deletions(-)
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git status
On branch JY-18909-automated-reports-ask-jiminny
Your branch is behind 'origin/JY-18909-automated-reports-ask-jiminny' by 38 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php
modified: app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: routes/web.php
modified: tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
app/Jobs/AutomatedReports/SendReportNotGeneratedMailJob.php
app/Mail/Reports/ReportNotGenerated.php
ids.txt
raw_sql_query.sql
resources/views/emails/reports/report-not-generated.blade.php
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ git pull
remote: Enumerating objects: 527, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 527 (delta 155), reused 152 (delta 152), pack-reused 336 (from 2)
Receiving objects: 100% (527/527), 178.12 KiB | 996.00 KiB/s, done.
Resolving deltas: 100% (330/330), completed with 51 local objects.
From github.com:jiminny/app
* [new branch] JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
a21d53727d..166c403a12 JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
f301b758d4..10d290c778 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
e6daaf72c3..60141f6907 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
6352d781ad..e2859d4d0e feature/add-planet-start-stop-to-make-file -> origin/feature/add-planet-start-stop-to-make-file
b37b0452a5..a581c3fc69 master -> origin/master
* [new branch] transcription-es-update-guard -> origin/transcription-es-update-guard
Updating 96e71f9934..724fdb0917
Fast-forward
app/Component/ActivityAnalytics/Service/ActivityStatsBuilder.php | 5 ++
app/Component/ParagraphBreaker/Services/TranscriptionParagraphsService.php | 4 ++
app/Console/Commands/Crm/SyncObjects.php | 34 +++++++----
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 5 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 6 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 75 ++++++++++++++++++++----
app/Jobs/Crm/SyncObjects.php | 38 +++++++-----
app/Jobs/Crm/SyncOpportunitiesJob.php | 12 +++-
app/Listeners/Crm/ImportActivityTypes.php | 33 ++++++++++-
app/Services/Crm/BaseService.php | 53 ++++++++++++++---
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 17 ++++--
composer.lock | 46 +++++++--------
front-end/src/components/connect/connect.vue | 30 +++++-----
front-end/src/components/onboard/Onboard.vue | 2 +-
tests/Feature/Services/Crm/BaseServiceTest.php | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php | 129 ++++++++++++++++++++++++++++++++++++++++
tests/Unit/Component/ParagraphBreaker/Services/TranscriptionParagraphServiceTest.php | 34 +++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 244 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncObjectsTest.php | 113 ++++++++++++++++++-----------------
tests/Unit/Jobs/Crm/SyncOpportunitiesJobTest.php | 30 +++++-----
tests/Unit/Listeners/Crm/ImportActivityTypesTest.php | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 2 +-
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php | 249 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
23 files changed, 1319 insertions(+), 174 deletions(-)
create mode 100644 tests/Feature/Services/Crm/BaseServiceTest.php
create mode 100644 tests/Unit/Component/ActivityAnalytics/Service/ActivityStatsBuilderTest.php
create mode 100644 tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php
create mode 100644 tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTraitSyncOpportunitiesTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 32.620 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ ;xd
docker exec -it docker_lamp_1 bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5609 files in 36.627 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5609/5609 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) routes/web.php (statement_indentation)
---------- begin diff ----------
--- /home/jiminny/routes/web.php
+++ /home/jiminny/routes/web.php
@@ -148,57 +148,57 @@
$router->get('/playback/{activity}', [PlaybackController::class, 'show'])
->name('activity.playback');
- // AI Reports
- $router->get('/ai-reports', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.show');
+ // AI Reports
+ $router->get('/ai-reports', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.show');
- $router->get('/ai-reports/manage', [
- FrontendController::class, 'render',
- ])
- ->middleware(['can:canAccessAiReports,' . User::class])
- ->name('ai.reports.manage');
+ $router->get('/ai-reports/manage', [
+ FrontendController::class, 'render',
+ ])
+ ->middleware(['can:canAccessAiReports,' . User::class])
+ ->name('ai.reports.manage');
- $router->get('/ai-reports/pdf/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.pdf.view');
+ $router->get('/ai-reports/pdf/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.pdf.view');
- $router->get('/ai-reports/pdf/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.pdf.download');
+ $router->get('/ai-reports/pdf/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.pdf.download');
- $router->get('/ai-reports/audio/{uuid}', [
- Controllers\UserAutomatedReportsController::class, 'view',
- ])->name('ai-reports.audio.view');
+ $router->get('/ai-reports/audio/{uuid}', [
+ Controllers\UserAutomatedReportsController::class, 'view',
+ ])->name('ai-reports.audio.view');
- $router->get('/ai-reports/audio/{uuid}/download', [
- Controllers\UserAutomatedReportsController::class, 'download',
- ])->name('ai-reports.audio.download');
+ $router->get('/ai-reports/audio/{uuid}/download', [
+ Controllers\UserAutomatedReportsController::class, 'download',
+ ])->name('ai-reports.audio.download');
-// $router->group(
-// ['middleware' => ['can:canAccessAiReports,' . User::class]],
-// static function (Router $router): void {
-// $router->get('/ai-reports', [FrontendController::class, 'render'])
-// ->name('ai.reports.show');
-//
-// $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
-// ->name('ai.reports.manage');
-//
-// $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.pdf.view');
-//
-// $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.pdf.download');
-//
-// $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
-// ->name('ai-reports.audio.view');
-//
-// $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
-// ->name('ai-reports.audio.download');
-// }
-// );
+ // $router->group(
+ // ['middleware' => ['can:canAccessAiReports,' . User::class]],
+ // static function (Router $router): void {
+ // $router->get('/ai-reports', [FrontendController::class, 'render'])
+ // ->name('ai.reports.show');
+ //
+ // $router->get('/ai-reports/manage', [FrontendController::class, 'render'])
+ // ->name('ai.reports.manage');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.pdf.view');
+ //
+ // $router->get('/ai-reports/pdf/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.pdf.download');
+ //
+ // $router->get('/ai-reports/audio/{uuid}', [Controllers\UserAutomatedReportsController::class, 'view'])
+ // ->name('ai-reports.audio.view');
+ //
+ // $router->get('/ai-reports/audio/{uuid}/download', [Controllers\UserAutomatedReportsController::class, 'download'])
+ // ->name('ai-reports.audio.download');
+ // }
+ // );
// Playback of audio streams.
$router->get('/stream/{track}', [AudioController::class, 'streamTrack'])
----------- end diff -----------
Fixed 1 of 5609 files in 38.740 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 582, done.
remote: Counting objects: 100% (506/506), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 582 (delta 436), reused 474 (delta 422), pack-reused 76 (from 2)
Receiving objects: 100% (582/582), 185.10 KiB | 1.13 MiB/s, done.
Resolving deltas: 100% (458/458), completed with 97 local objects.
From github.com:jiminny/app
a581c3fc69..d207a770d8 master -> origin/master
* [new branch] JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
2ffa898e3a..27d4be4a6d JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
* [new branch] JY-20489-hudges-phase2 -> origin/JY-20489-hudges-phase2
166c403a12..36292c160d JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
0ea8d92cd8..b9b830afd5 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
60141f6907..242cf1b554 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
Updating b37b0452a5..d207a770d8
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ElasticSearch/Model/Observer.php | 4 +-
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 ++++++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++++------
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++++
app/Console/Kernel.php | 4 +
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 37 +++---
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Crm/SyncHubspotObjects.php | 122 ++++++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 24 ++--
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Repositories/Crm/CrmEntityRepository.php | 40 +++++++
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++++++-------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++---
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 ++-
tests/Unit/Component/ElasticSearch/Model/ObserverTest.php | 98 ++++++++++++++++
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 +++++++-----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
31 files changed, 1272 insertions(+), 180 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 tests/Unit/Component/ElasticSearch/Model/ObserverTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 5 (delta 4), reused 5 (delta 4), pack-reused 0 (from 0)
Unpacking objects: 100% (5/5), 488 bytes | 32.00 KiB/s, done.
From github.com:jiminny/app
d439494641..f044edca5b secfix/npm-20260416 -> origin/secfix/npm-20260416
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git fetch
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 14 (delta 10), reused 14 (delta 10), pack-reused 0 (from 0)
Unpacking objects: 100% (14/14), 1.16 KiB | 84.00 KiB/s, done.
From github.com:jiminny/app
36292c160d..46202df90a JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branc -a
git: 'branc' is not a git command. See 'git --help'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git branch -a
20118-hs-opportunity-make-webhook-strategy-default
JMNY-4047-hubspot-v3-api-upgrade
JY-10125-close-copper-setup-crm-command
JY-10153-talkdesk-import-calls
JY-10173-add-additional-logs
JY-10173-add-logs-to-close-crm-log
JY-10291-setup-twilio-video-command
JY-10379-import-call-with-crm-data
JY-10455-fix-sentry-error-on-no-task-matched
JY-10514-fix-duplicated-prospect-participants
JY-10698-add-performance-monitor-on-DI
JY-10742-fix-office-recurring-events
JY-10797-reorder-prospect-lookup
JY-10804-social-account-token-sentry-issues
JY-10877-add-additional-filter-twilio-video
JY-10877-filter-out-open-rooms-twilio-video
JY-10925-create-participants-before-processing
JY-10930-pass-autolog-state-to-activity-data
JY-10989-add-opportunity-support-on-twilio-video
JY-11040
JY-11060-replace-deprecated-methods
JY-11102-change-retry-time-for-match-crm-data
JY-11148-remove-rollback-from-change-type-migration
JY-11148-sentry-quota-issue
JY-11167-justcall-download-track
JY-11170-emails-import
JY-11171-enable-microsoft-dutch-transcription
JY-11193-customer-[API_KEY]
JY-11203-fix-dialpad-issue
JY-11204-twilio-flex-presales-calls
JY-11265-clear-crm-data-when-prospect-removed
JY-11266-remove-ms-id-passcode-workaround
JY-11325-twilio-video-handle-unsupported-custom-objects
JY-11340-twilio-flex-direct-integration
JY-11456-change-hubspot-match-by-phone-number-search
JY-11465-remove-team-crm-provider-unique-on-crm-object-tables
JY-11503-aircall-tags-activity-type-mapping-crm
JY-11594-crm-log-reminder-changes
JY-11624-fix-postmark-sync
JY-11669-twilio-video-activity-type
JY-11720-hubspot-owner-api-change
JY-11756-JY-12102-delete-past-calendar-events
JY-11756-remove-activities-foreign-from-calendar-event
JY-11757-fix-close-crm-find-query-logic
JY-11787-add-logs-for-late-calendar-imports
JY-11807-rework-HS-import-calls-search-method
JY-11809-calendar-separate-logic
JY-11890-add-crm-search-strategy
JY-11927-change-five9-bucket-name
JY-11927-five9-integration
JY-11928-five9-setup
JY-11989-remove-future-calendar-events
JY-12028-drop-calendar-logs-table
JY-12028-remove-calendar-logs
JY-12155-invalid-domain-match
JY-12155-match-data-in-crm-optimisations
JY-12377-fix-bh-phone-matching
JY-12446-add-logs-on-office-calendar-exception
JY-12511-fix-hubspot-without-owner-profile
JY-12511-implement-sync-opportunities-strategy
JY-12511-opportunity-full-sync
JY-12536-fix-missing-calendar-events
JY-12775-fix-deprecated-hs-html-tag
JY-12775-fix-hs-deprecated-html-tags
JY-12878-fix-pipedrive-crm-stage-field-sync
JY-12916-twilio-video-not-recorded-yet-filter
JY-12968-apollo-dialer-setup
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
error: Your local changes to the following files would be overwritten by checkout:
routes/web.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ co -b JY-20372-ai-reports-promotion-pages origin/JY-20372-ai-reports-promotion-pages
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M app/Http/Controllers/API/ActivityController.php
M app/Jobs/Team/SyncToIntercom.php
M app/Services/PlaybackService.php
M config/logging.php
branch 'JY-20372-ai-reports-promotion-pages' set up to track 'origin/JY-20372-ai-reports-promotion-pages'.
Switched to a new branch 'JY-20372-ai-reports-promotion-pages'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running 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".
5601/5601 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5601 files in 221.244 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1146, done.
remote: Counting objects: 100% (701/701), done.
remote: Compressing objects: 100% (154/154), done.
remote: Total 503 (delta 426), reused 410 (delta 347), pack-reused 0 (from 0)
Receiving objects: 100% (503/503), 114.59 KiB | 1.23 MiB/s, done.
Resolving deltas: 100% (426/426), completed with 103 local objects.
From github.com:jiminny/app
a890e0aff6..3ac71c265a JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
46202df90a..d4d05c775b JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
b9b830afd5..fcb9e897a3 JY-20541-remove-crm-contract-method -> origin/JY-20541-remove-crm-contract-method
d207a770d8..40be217d54 master -> origin/master
* [new branch] optimize-crm-sync-queue -> origin/optimize-crm-sync-queue
Already up to date.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $
DOCKER
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Build full day activity summary from Screenpipe (claude)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
APP (-zsh)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
65445
|
NULL
|
0
|
2026-04-21T12:38:03.492811+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776775083492_m1.jpg...
|
Firefox
|
Calendar Event Import Process - Engineering - Conf Calendar Event Import Process - Engineering - Confluence — Work...
|
True
|
jiminny.atlassian.net/wiki/spaces/EN/pages/2420965 jiminny.atlassian.net/wiki/spaces/EN/pages/2420965384/Calendar+Event+Import+Process...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
New Tab
New Tab
Calendar Event Import Process - Engineering - Confluence
Calendar Event Import Process - Engineering - Confluence
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar Ctrl [
Collapse sidebar
Ctrl
[
Switch sites or apps
Switch sites or apps
Confluence
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
3 Notifications
3 Notifications
Help
Help
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Spaces
Spaces
Apps
Apps
Engineering
Engineering
Edit space details
More actions
More actions
Back to top
Back to top
Shortcuts
Shortcuts
Add shortcut
Add shortcut
How-to articles
How-to articles
How-to articles
How-to articles
more
Close methods
Close methods
Close methods
Close methods
more
Content
Content
Create Create
Create
Change view
Change view
Search by title
Results will update as you type.
Onboarding
Onboarding
Onboarding
Agile
Agile
Agile
Chapters
Chapters
Chapters
Infrastructure
Infrastructure
Infrastructure
Processes
Processes
Processes
Training Program
Training Program
Compliance
Compliance
Compliance
Technical Strategy 2025+
Technical Strategy 2025+
Activity Copy
Activity Copy
Support Recipes
Support Recipes
Support Recipes
Engineering Glossary
Engineering Glossary
Engineering Glossary
Sidekick User Manual
Sidekick User Manual
Sidekick User Manual
Capture Team
Capture Team
Capture Team
Dialer Integrations
Dialer Integrations
Dialer Integrations
Capture Failure Reasons
Capture Failure Reasons
Calendar
Calendar
Calendar
Calendar Rate Limits
Calendar Rate Limits
Calendar Events & Meetings Import
Calendar Events & Meetings Import
Calendar Events & Meetings Import
Calendar Event Import Process
Calendar Event Import Process
Conference Meetings
Conference Meetings
Integrations
Integrations
MeetingBot Service
MeetingBot Service
MeetingBot Service
Notification List
Notification List
Objectives and Key Results for 2023
Objectives and Key Results for 2023
Copy activity process
Copy activity process
D&C OKRs by Quarter 2023
D&C OKRs by Quarter 2023
Email Import Technical Aspects
Email Import Technical Aspects
Email Import Technical Aspects
Deal Insights
Deal Insights
Deal Insights
DB Cleanup
DB Cleanup
DB Cleanup
Zoom Activities
Zoom Activities
Delete Churned Teams Activities
Delete Churned Teams Activities
Meeting Screenshots
Meeting Screenshots
SoS meeting presenter
SoS meeting presenter
Hubspot extension app
Hubspot extension app
Hubspot extension app
Recall Staging Configuration
Recall Staging Configuration
Test Scenarios for Meeting Consent Feature
Test Scenarios for Meeting Consent Feature
Migration 2025_02_25_151849_update_telephony_provider_id_indexes
Migration 2025_02_25_151849_update_telephony_provider_id_indexes
Notetaker
Notetaker
Notetaker
Test Scenarios for Meeting Consent Feature with Jiminny addon
Test Scenarios for Meeting Consent Feature with Jiminny addon
Platform Team
Platform Team
Platform Team
Processing Team
Processing Team
Processing Team
Mobile
Mobile
Mobile
AI
AI
AI
Sales Glossary for Developers
Sales Glossary for Developers
Learning Materials
Learning Materials
Learning Materials
Career Ladder
Career Ladder
Email prefixes
Email prefixes
Softphone AI
Softphone AI
Softphone AI
Create
Create
Blogs
Blogs
Create a blog
Create a blog
Jira , (opens new window)
Jira
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
More
More
Side Navigation Drag Handle
Calendar Event Import Process
Updated Jul 30, 2024
Updated Jul 30, 2024
Lukas Kovalik (Viewing)
Edit this content
Edit
Share, Open - Anyone in the space can edit
Share
Copy link
Copy link
More actions
More actions
Calendar Event Import Process
Calendar Event Import Process
Calendar Event Import Process
By Nikolay Nikolov
By Nikolay Nikolov
Read time 3 min
3 min
Views 15
15
Add a reaction
Add a reaction
Process overview
Process overview
Invalid events
Invalid events
Process event
Process event
Extract event data (different based on event type)...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Formalize","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Formalize","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Search results: calendar | Jiminny Help Center","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search results: calendar | Jiminny Help Center","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Calendar Event Import Process - Engineering - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Calendar Event Import Process - Engineering - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.008680556,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.031944446,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar Ctrl [","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ctrl","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Switch sites or apps","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"help_text":"","placeholder":"Search Confluence, Jira, Google Drive and other apps","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"3 Notifications","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3 Notifications","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Spaces","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Spaces","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Engineering","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Engineering","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit space details","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More actions","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Back to top","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Back to top","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Shortcuts","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Shortcuts","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add shortcut","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add shortcut","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"How-to articles","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How-to articles","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"How-to articles","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How-to articles","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"more","depth":17,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Close methods","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Close methods","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Close methods","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Close methods","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"more","depth":17,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Content","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Content","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Create Create","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Change view","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Change view","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search by title","depth":15,"role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Results will update as you type.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Onboarding","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Onboarding","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Onboarding","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agile","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Agile","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Agile","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chapters","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Chapters","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Chapters","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Infrastructure","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Infrastructure","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Infrastructure","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processes","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Processes","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Processes","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Training Program","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Training Program","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Compliance","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Compliance","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Compliance","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Technical Strategy 2025+","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Technical Strategy 2025+","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Activity Copy","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Activity Copy","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Support Recipes","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Support Recipes","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Support Recipes","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Engineering Glossary","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Engineering Glossary","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Engineering Glossary","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidekick User Manual","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Sidekick User Manual","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sidekick User Manual","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Capture Team","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Capture Team","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dialer Integrations","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Dialer Integrations","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dialer Integrations","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Failure Reasons","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Failure Reasons","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Calendar","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Calendar","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Calendar","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Calendar Rate Limits","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Calendar Rate Limits","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Calendar Events & Meetings Import","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Calendar Events & Meetings Import","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Calendar Events & Meetings Import","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Calendar Event Import Process","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Calendar Event Import Process","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Conference Meetings","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conference Meetings","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Integrations","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Integrations","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"MeetingBot Service","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"MeetingBot Service","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"MeetingBot Service","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Notification List","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notification List","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Objectives and Key Results for 2023","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Objectives and Key Results for 2023","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Copy activity process","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Copy activity process","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"D&C OKRs by Quarter 2023","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"D&C OKRs by Quarter 2023","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Email Import Technical Aspects","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Email Import Technical Aspects","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Email Import Technical Aspects","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deal Insights","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Deal Insights","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Deal Insights","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"DB Cleanup","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"DB Cleanup","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DB Cleanup","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Zoom Activities","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zoom Activities","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Delete Churned Teams Activities","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delete Churned Teams Activities","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting Screenshots","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting Screenshots","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SoS meeting presenter","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SoS meeting presenter","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hubspot extension app","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Hubspot extension app","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Hubspot extension app","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Recall Staging Configuration","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Recall Staging Configuration","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Test Scenarios for Meeting Consent Feature","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Test Scenarios for Meeting Consent Feature","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Migration 2025_02_25_151849_update_telephony_provider_id_indexes","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Migration 2025_02_25_151849_update_telephony_provider_id_indexes","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Notetaker","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Notetaker","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Notetaker","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Test Scenarios for Meeting Consent Feature with Jiminny addon","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Test Scenarios for Meeting Consent Feature with Jiminny addon","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Platform Team","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Platform Team","depth":19,"bounds":{"left":0.15659723,"top":0.0,"width":0.06736111,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":16,"bounds":{"left":0.11631945,"top":0.0,"width":0.31319445,"height":0.035555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Processing Team","depth":17,"bounds":{"left":0.119097225,"top":0.0,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Processing Team","depth":19,"bounds":{"left":0.15659723,"top":0.0,"width":0.07986111,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Mobile","depth":16,"bounds":{"left":0.11631945,"top":0.0,"width":0.31319445,"height":0.035555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Mobile","depth":17,"bounds":{"left":0.119097225,"top":0.0,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Mobile","depth":19,"bounds":{"left":0.15659723,"top":0.0,"width":0.03125,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"AI","depth":16,"bounds":{"left":0.11631945,"top":0.0,"width":0.31319445,"height":0.035555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI","depth":17,"bounds":{"left":0.119097225,"top":0.0033333334,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"AI","depth":19,"bounds":{"left":0.15659723,"top":0.007222222,"width":0.011458334,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sales Glossary for Developers","depth":16,"bounds":{"left":0.11631945,"top":0.034444444,"width":0.31319445,"height":0.035555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sales Glossary for Developers","depth":19,"bounds":{"left":0.15659723,"top":0.042777777,"width":0.13993056,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learning Materials","depth":16,"bounds":{"left":0.11631945,"top":0.07,"width":0.31319445,"height":0.035555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Learning Materials","depth":17,"bounds":{"left":0.119097225,"top":0.07444444,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Learning Materials","depth":19,"bounds":{"left":0.15659723,"top":0.07833333,"width":0.08645833,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Career Ladder","depth":16,"bounds":{"left":0.11631945,"top":0.10555556,"width":0.31319445,"height":0.035555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Career Ladder","depth":19,"bounds":{"left":0.15659723,"top":0.11388889,"width":0.06666667,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Email prefixes","depth":16,"bounds":{"left":0.11631945,"top":0.1411111,"width":0.31319445,"height":0.035555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Email prefixes","depth":19,"bounds":{"left":0.15659723,"top":0.14944445,"width":0.06527778,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Softphone AI","depth":16,"bounds":{"left":0.11631945,"top":0.17666666,"width":0.31319445,"height":0.035555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Softphone AI","depth":17,"bounds":{"left":0.119097225,"top":0.18111111,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Softphone AI","depth":19,"bounds":{"left":0.15659723,"top":0.185,"width":0.061805554,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create","depth":16,"bounds":{"left":0.11631945,"top":0.21222222,"width":0.31319445,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":19,"bounds":{"left":0.13854167,"top":0.22055556,"width":0.030902777,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Blogs","depth":12,"bounds":{"left":0.10798611,"top":0.24777777,"width":0.32152778,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Blogs","depth":15,"bounds":{"left":0.13020833,"top":0.25611112,"width":0.026041666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create a blog","depth":13,"bounds":{"left":0.4295139,"top":0.2522222,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create a blog","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jira , (opens new window)","depth":14,"bounds":{"left":0.10798611,"top":0.3188889,"width":0.32152778,"height":0.035555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jira","depth":18,"bounds":{"left":0.13020833,"top":0.32722223,"width":0.017361112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":16,"bounds":{"left":0.10798611,"top":0.33777776,"width":0.10104167,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":14,"bounds":{"left":0.10798611,"top":0.35444444,"width":0.32152778,"height":0.035555556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":18,"bounds":{"left":0.13020833,"top":0.36277777,"width":0.030902777,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":16,"bounds":{"left":0.10798611,"top":0.37333333,"width":0.10104167,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":15,"bounds":{"left":0.40590277,"top":0.3588889,"width":0.008333334,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More","depth":13,"bounds":{"left":0.10798611,"top":0.40333334,"width":0.32152778,"height":0.035555556},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.13020833,"top":0.41166666,"width":0.023958333,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Side Navigation Drag Handle","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Calendar Event Import Process","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Updated Jul 30, 2024","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Updated Jul 30, 2024","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Lukas Kovalik (Viewing)","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Edit this content","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Share, Open - Anyone in the space can edit","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Share","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Copy link","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions","depth":15,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Calendar Event Import Process","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Calendar Event Import Process","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar Event Import Process","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"By Nikolay Nikolov","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"By Nikolay Nikolov","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Read time 3 min","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3 min","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Views 15","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add a reaction","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add a reaction","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Process overview","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Process overview","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Invalid events","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Invalid events","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Process event","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Process event","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extract event data (different based on event type)","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-9116815380025669762
|
-8747961124291426139
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
New Tab
New Tab
Calendar Event Import Process - Engineering - Confluence
Calendar Event Import Process - Engineering - Confluence
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar Ctrl [
Collapse sidebar
Ctrl
[
Switch sites or apps
Switch sites or apps
Confluence
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
3 Notifications
3 Notifications
Help
Help
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Spaces
Spaces
Apps
Apps
Engineering
Engineering
Edit space details
More actions
More actions
Back to top
Back to top
Shortcuts
Shortcuts
Add shortcut
Add shortcut
How-to articles
How-to articles
How-to articles
How-to articles
more
Close methods
Close methods
Close methods
Close methods
more
Content
Content
Create Create
Create
Change view
Change view
Search by title
Results will update as you type.
Onboarding
Onboarding
Onboarding
Agile
Agile
Agile
Chapters
Chapters
Chapters
Infrastructure
Infrastructure
Infrastructure
Processes
Processes
Processes
Training Program
Training Program
Compliance
Compliance
Compliance
Technical Strategy 2025+
Technical Strategy 2025+
Activity Copy
Activity Copy
Support Recipes
Support Recipes
Support Recipes
Engineering Glossary
Engineering Glossary
Engineering Glossary
Sidekick User Manual
Sidekick User Manual
Sidekick User Manual
Capture Team
Capture Team
Capture Team
Dialer Integrations
Dialer Integrations
Dialer Integrations
Capture Failure Reasons
Capture Failure Reasons
Calendar
Calendar
Calendar
Calendar Rate Limits
Calendar Rate Limits
Calendar Events & Meetings Import
Calendar Events & Meetings Import
Calendar Events & Meetings Import
Calendar Event Import Process
Calendar Event Import Process
Conference Meetings
Conference Meetings
Integrations
Integrations
MeetingBot Service
MeetingBot Service
MeetingBot Service
Notification List
Notification List
Objectives and Key Results for 2023
Objectives and Key Results for 2023
Copy activity process
Copy activity process
D&C OKRs by Quarter 2023
D&C OKRs by Quarter 2023
Email Import Technical Aspects
Email Import Technical Aspects
Email Import Technical Aspects
Deal Insights
Deal Insights
Deal Insights
DB Cleanup
DB Cleanup
DB Cleanup
Zoom Activities
Zoom Activities
Delete Churned Teams Activities
Delete Churned Teams Activities
Meeting Screenshots
Meeting Screenshots
SoS meeting presenter
SoS meeting presenter
Hubspot extension app
Hubspot extension app
Hubspot extension app
Recall Staging Configuration
Recall Staging Configuration
Test Scenarios for Meeting Consent Feature
Test Scenarios for Meeting Consent Feature
Migration 2025_02_25_151849_update_telephony_provider_id_indexes
Migration 2025_02_25_151849_update_telephony_provider_id_indexes
Notetaker
Notetaker
Notetaker
Test Scenarios for Meeting Consent Feature with Jiminny addon
Test Scenarios for Meeting Consent Feature with Jiminny addon
Platform Team
Platform Team
Platform Team
Processing Team
Processing Team
Processing Team
Mobile
Mobile
Mobile
AI
AI
AI
Sales Glossary for Developers
Sales Glossary for Developers
Learning Materials
Learning Materials
Learning Materials
Career Ladder
Career Ladder
Email prefixes
Email prefixes
Softphone AI
Softphone AI
Softphone AI
Create
Create
Blogs
Blogs
Create a blog
Create a blog
Jira , (opens new window)
Jira
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
More
More
Side Navigation Drag Handle
Calendar Event Import Process
Updated Jul 30, 2024
Updated Jul 30, 2024
Lukas Kovalik (Viewing)
Edit this content
Edit
Share, Open - Anyone in the space can edit
Share
Copy link
Copy link
More actions
More actions
Calendar Event Import Process
Calendar Event Import Process
Calendar Event Import Process
By Nikolay Nikolov
By Nikolay Nikolov
Read time 3 min
3 min
Views 15
15
Add a reaction
Add a reaction
Process overview
Process overview
Invalid events
Invalid events
Process event
Process event
Extract event data (different based on event type)...
|
NULL
|
|
26837
|
564
|
71
|
2026-04-15T13:34:16.225898+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776260056225_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoEDHomeActivity..•More+HistoryW +SlackFileEditViewGoEDHomeActivity..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaD. Nikolay Nikolov2 Galya Dimitrova, Ni...ii: AppsToastJira CloudGoogle Cale...# releases8 22Messagesnewdou+O Files• Bookmarksv 2 new messagesGitHub APP3:28 PM7 new commits pushed tomaster by nikolay-yankovNew24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow more( jiminny/app Added by GitHubCircleCl APP3:53 PMDeployment Successful!Project: appWhen:04/15/202612:53:30Tag:View JobMessage #releases+AaActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox GPU HelperVTDecoderXPCServiceFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Claude Helper (Renderer)claudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMEMORY PRESSUREMem...2,03 GB1,19 GB980,0 MB962,7 MB858,9 MB793,5 MB778,2 MB554,1 MB547,2 MB543,8 MB515,9 MB463,9 MB461,6 MB425,8 MB411,7 MB390,6 MB390,0 MB389,1 MB372,5 MB342,9 MB326,1 MB326,1 MB324,7 MB293,9 MB252,2 MB241,2 MB239,5 MB218,6 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 16:34:15CPUMemoryDiskThreads39237226842830242611231526242627232315151321277262824EnergyPorts60619 7587221261 20020 023130244126251167119185125124127126120121172220723281241 833123129122PID93892407801442974146648424203080193671314673938993548041863358313527643016436523689848173265486051950910114835833487856138482987429516,00 GB14,19 GB <1,75 GB2,91 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,70 GB2,88 GB7,06 GB...
|
NULL
|
-9116612998500613411
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoEDHomeActivity..•More+HistoryW +SlackFileEditViewGoEDHomeActivity..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaD. Nikolay Nikolov2 Galya Dimitrova, Ni...ii: AppsToastJira CloudGoogle Cale...# releases8 22Messagesnewdou+O Files• Bookmarksv 2 new messagesGitHub APP3:28 PM7 new commits pushed tomaster by nikolay-yankovNew24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow more( jiminny/app Added by GitHubCircleCl APP3:53 PMDeployment Successful!Project: appWhen:04/15/202612:53:30Tag:View JobMessage #releases+AaActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox GPU HelperVTDecoderXPCServiceFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Claude Helper (Renderer)claudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMEMORY PRESSUREMem...2,03 GB1,19 GB980,0 MB962,7 MB858,9 MB793,5 MB778,2 MB554,1 MB547,2 MB543,8 MB515,9 MB463,9 MB461,6 MB425,8 MB411,7 MB390,6 MB390,0 MB389,1 MB372,5 MB342,9 MB326,1 MB326,1 MB324,7 MB293,9 MB252,2 MB241,2 MB239,5 MB218,6 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 16:34:15CPUMemoryDiskThreads39237226842830242611231526242627232315151321277262824EnergyPorts60619 7587221261 20020 023130244126251167119185125124127126120121172220723281241 833123129122PID93892407801442974146648424203080193671314673938993548041863358313527643016436523689848173265486051950910114835833487856138482987429516,00 GB14,19 GB <1,75 GB2,91 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,70 GB2,88 GB7,06 GB...
|
26835
|
|
38998
|
794
|
78
|
2026-04-16T13:26:38.414146+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776345998414_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
13081002120454778/85ШCastle Age-Scale Mail Armor R 13081002120454778/85ШCastle Age-Scale Mail Armor ResearchComplete---Elite Skarmisher Created---Villager Created---House Built--Click to select this building.4 Roger II of Sicily: 4758/47583 Anastasios I Dikoros: 4352/43525 Manuel I: 4233/42336 Emperor Karel IV: 4175/41758 Mundzuk the Hun: 3948/3948Zbigniew Olesnicki: 3678/36781 kovaliklukas: 3501/35017 Themistocles: 3422/3422BBBBGBEEkoval ikukas (DravdianĐ 2/9...
|
NULL
|
-9115994104091449943
|
NULL
|
click
|
ocr
|
NULL
|
13081002120454778/85ШCastle Age-Scale Mail Armor R 13081002120454778/85ШCastle Age-Scale Mail Armor ResearchComplete---Elite Skarmisher Created---Villager Created---House Built--Click to select this building.4 Roger II of Sicily: 4758/47583 Anastasios I Dikoros: 4352/43525 Manuel I: 4233/42336 Emperor Karel IV: 4175/41758 Mundzuk the Hun: 3948/3948Zbigniew Olesnicki: 3678/36781 kovaliklukas: 3501/35017 Themistocles: 3422/3422BBBBGBEEkoval ikukas (DravdianĐ 2/9...
|
38996
|
|
26954
|
567
|
45
|
2026-04-15T13:37:31.638552+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776260251638_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
4854775953612115119/135toImperial AgeMaximilian of 4854775953612115119/135toImperial AgeMaximilian of Habsburg resigned.o maxunman oi nausuurg. tne ueerfled when mine hunters sought to slaythem.7 Maximilian of Habsburg: No wonderthou wert victorious! I shalt abdicate.Right-click to attack this unit!5 Magnus Olafsson: 20082/20082IV1 kovaliklukas: 16492/16492NV8|Almish Yiltawar: 16490/16490ON2 Rajyapala: 15927/159276 László I: 11507/115077 Maximilian of Habsburg: 7014/7014 W IV4 Louis VI: 6549/6549NV3 Huagcấm: 6320/6329 Đ TV...
|
NULL
|
-9115593865036750948
|
NULL
|
click
|
ocr
|
NULL
|
4854775953612115119/135toImperial AgeMaximilian of 4854775953612115119/135toImperial AgeMaximilian of Habsburg resigned.o maxunman oi nausuurg. tne ueerfled when mine hunters sought to slaythem.7 Maximilian of Habsburg: No wonderthou wert victorious! I shalt abdicate.Right-click to attack this unit!5 Magnus Olafsson: 20082/20082IV1 kovaliklukas: 16492/16492NV8|Almish Yiltawar: 16490/16490ON2 Rajyapala: 15927/159276 László I: 11507/115077 Maximilian of Habsburg: 7014/7014 W IV4 Louis VI: 6549/6549NV3 Huagcấm: 6320/6329 Đ TV...
|
NULL
|
|
56303
|
1218
|
11
|
2026-04-20T11:06:10.872392+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776683170872_m2.jpg...
|
PhpStorm
|
PhpStorm
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhostormFV faVsco.jsVIewINavigareCodeLaravelKeract PhostormFV faVsco.jsVIewINavigareCodeLaravelKeractor#11986 on JY-20692-fix-integration-app-toke...hangeToolsWindowmelpProledey© SendReportMailJob.phpE laravel.logA SF [jiminny@localhost]A HS_Jocal (jiminny@localhost]A console (eu)A console [PROD] X©Ac© AC©Ai© BEC CIQ Search for branches and actionsK Update Project...o- Commit...7 Push..Show Pull Request in the Tool WindowSubmit Review..Review Modeoleam.onp= custom.logA console [STAGING]V Onboard.vuecycontroller extends Controller impLements (m© OpportunityUpdated.phpA2 447 X3 X11 21 AC) DeODEC) In© LaC) LaOLNC) МIOмC) M+ New Branch..Checkout Tag or Revision.__construct(oviderRegistry SproviderRegistcy,tivityService SactivityService,v Recent© JY-20692-fix-integration-app-token-auth: >arService SuserService,tivitySearch\Service\ActivitySearch SactivitySearch,—573# Jy-18y09-automated-reports-ask-jiminny>9 JY-20553-debug-crm-sync-delaysorl...>* master k218 JY-20698-fix-SF-activitv-tvpes-on-new-rLocalNew Branch from 'JY-18909-automated-reports-ask-fiminny...Checkout and Rebase onto 'JY-20692-fix-integration-app-toke…hange'Checkout and UpdateO NIRemoteTaasCompare with 'JY-20692-fix-integration-app-toke...hange'Show Ditt with Working TreeYC) NI© OrganizationuicensescontriYC) OraanizationMembersContipubLic stat1o© OrganizationRetentionPolic:© OrganizationRolesControlleDELETE aoIvlac119 U>public functio• UrganizationSvncControllePartnerController.php© Pnonenumoercontroller.onPut apilvilactivitvlpublic functio€ PlaybackController.php© PlaylistController.phpScimController.phpxxx. This sRebase 'JY-20692-fix-integration-app-toke.hange' onto 'JY-18909-automated-reports-ask-jiminny'Merge 'JY-18909-automated-reports-ask-jiminny' into 'JY-20692-fix-integration-app-toke...hangeNew Worktree from 'JY-18909-automated-reports-ask-jiminny…..UpdatePush….Tracked Branch 'origin/JY-18909-automated-reports-ask-jiminny*Rename...DeleteSidekickController.phpSoftphoneController.php* @param Activity $activityc) ssocontroller.phpc) subscriptionController.phpc) TeamalAutomationcontrolliC)TeamAiContextController.o*athrowsAuthorizationSxcention* @throws SocialAccountTokenInvalidException@ TeamController.phpC)TeaminsiahtsController.ohc* @return mixedC) TranscriotionController.ohvC) TranslationController.onoC) UserController. ohniPOST/api/v1/activity/{activity}/summarizepublic function summarize(Activity $activity): mixedf..;592-593594595=598=599-601© VocabularyController.php>M AuthTM CustomerAniM internal• D Kiosk|• MTeamc©ActivityController.phpYa AutomatodDonortcControll* oparam servicelntertace sservice* dparam Actavitu Sactavitu* dparam Lauout Slauout* Qparam arrau Sentities The raw entitu data from usen©DashboardController.php©ImpersonationController.ph* dreturn arrauTx: AutovPlaygroundSELEC * FROM crm profiles WHERE user 1d = 15440:SELECT * FROM crm_profiles WHERE crm_configuration_id = 555;SELECT * FROM crm_configurations WHERE id = 555;SELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, Pl. 3911, act. field 162182SELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_id,u.email,sa.*,t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idOIN teams t 1.n<->1: on t.id = u.team_idHERE u.team_id = 581 and sa.provider = 'salesforce';da jiminny~034 A1 A34 X62 A VELECT * FROM automated_report_results order by id desc;elect * from reatureselect * from team_features where feature_id = 40;elect * from teams where id = 556:elect * from automated_reports where 1d = 54; # 4fdd41f6-dctb-50a0-D559-754558106044 , L"pat", "podcast"JELECT * FROM automated revort results WHERE UUid tO bin 822f2410-af03-4329-a248-8600e36f3131' = uuid:elect * from automated_report_results order by id desc;• ELEC * FROMIautomated_report_results WHERE 1d = 1919;elect * from automated_report_results WHERE report 1d = 54:sellect * From onnortunities where 1d = 1594549:SELECT * EROM teams WHERE name LTKE 1%Les%'• # 711, 692. 160678 - JiminnvintearationGlesmills.comselect * from playbooks where team_id = 711; # event 226147SELECT * EROM nlavbook cateaonies WHERE nlavbook 1d = 5515÷SELECT * FROM crm_fields WHERE id = 226147;SELECT * CP0M eom fiold valuec WHEPE com fiold 1d = 224147-SELECT * FROM crm_configurations WHERE id = 692;SELECTCONCAT(u.id, CASE WHEN U.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_id,u.email,sa.*t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable idJOIN teams + 1..n<->1: on t.id = u.team_idWHERE u.team_id = 711 and sa.provider = 'salesforce':100% S2Mon 2U AOr 14.00.10AutomatedReportsCommandTestvCascadeRetactor Connectionwhat is the connection.disconnected doesn't exist?What happens if connection.disconnected doesn't exist?It connection.disconnected is not detined on the obiect, accessing it returns underined .Evaluating the quard clauseIn iavascriotifconnection ll connection.disconnected z== true ll connection.connected za= false) «Let's trace with disconnected missing (i.e. undefined):Check"connectionValueconnection existsconnection.disconnected == trueResultfalsefalseconnection.connected = falseunderined == truedepends on connectedso it disconnected is missing but connected === true :• All three conditions are false → doesn't bail out → proceeds to the success pathWhy this is the correct benaviorThe Intearation Aoo SDK's connection obiect mav not alwavs exolicitlv set both flaas. The oricinal code intentionallv used loose checks (fe= true.[== false ) so that a missing/undefined property wouldn't be treated as a failure.The guard clause preserves this:• Only bails when disconnected is explicitly true•Only bails when connected is explicitly talse• Missina/undetined values are treated as "not a failure sianal" → success path continuesContrast with Nikolay's original suggestionHis versiondisconnected == false ao connected === true would have required both properties to exist as explicit booleans. It disconnectedwere miccina undefined rrn false is false & the check would fail @) no Apl call made even on a valid connection. That's why his suacectionC.al "Ask anvthina (84-D< CodeClaude Qnus 4.7 MediumW Windsurf Teams100-27UTF.Rf?4 spaces...
|
NULL
|
-9115472732114384969
|
NULL
|
click
|
ocr
|
NULL
|
PhostormFV faVsco.jsVIewINavigareCodeLaravelKeract PhostormFV faVsco.jsVIewINavigareCodeLaravelKeractor#11986 on JY-20692-fix-integration-app-toke...hangeToolsWindowmelpProledey© SendReportMailJob.phpE laravel.logA SF [jiminny@localhost]A HS_Jocal (jiminny@localhost]A console (eu)A console [PROD] X©Ac© AC©Ai© BEC CIQ Search for branches and actionsK Update Project...o- Commit...7 Push..Show Pull Request in the Tool WindowSubmit Review..Review Modeoleam.onp= custom.logA console [STAGING]V Onboard.vuecycontroller extends Controller impLements (m© OpportunityUpdated.phpA2 447 X3 X11 21 AC) DeODEC) In© LaC) LaOLNC) МIOмC) M+ New Branch..Checkout Tag or Revision.__construct(oviderRegistry SproviderRegistcy,tivityService SactivityService,v Recent© JY-20692-fix-integration-app-token-auth: >arService SuserService,tivitySearch\Service\ActivitySearch SactivitySearch,—573# Jy-18y09-automated-reports-ask-jiminny>9 JY-20553-debug-crm-sync-delaysorl...>* master k218 JY-20698-fix-SF-activitv-tvpes-on-new-rLocalNew Branch from 'JY-18909-automated-reports-ask-fiminny...Checkout and Rebase onto 'JY-20692-fix-integration-app-toke…hange'Checkout and UpdateO NIRemoteTaasCompare with 'JY-20692-fix-integration-app-toke...hange'Show Ditt with Working TreeYC) NI© OrganizationuicensescontriYC) OraanizationMembersContipubLic stat1o© OrganizationRetentionPolic:© OrganizationRolesControlleDELETE aoIvlac119 U>public functio• UrganizationSvncControllePartnerController.php© Pnonenumoercontroller.onPut apilvilactivitvlpublic functio€ PlaybackController.php© PlaylistController.phpScimController.phpxxx. This sRebase 'JY-20692-fix-integration-app-toke.hange' onto 'JY-18909-automated-reports-ask-jiminny'Merge 'JY-18909-automated-reports-ask-jiminny' into 'JY-20692-fix-integration-app-toke...hangeNew Worktree from 'JY-18909-automated-reports-ask-jiminny…..UpdatePush….Tracked Branch 'origin/JY-18909-automated-reports-ask-jiminny*Rename...DeleteSidekickController.phpSoftphoneController.php* @param Activity $activityc) ssocontroller.phpc) subscriptionController.phpc) TeamalAutomationcontrolliC)TeamAiContextController.o*athrowsAuthorizationSxcention* @throws SocialAccountTokenInvalidException@ TeamController.phpC)TeaminsiahtsController.ohc* @return mixedC) TranscriotionController.ohvC) TranslationController.onoC) UserController. ohniPOST/api/v1/activity/{activity}/summarizepublic function summarize(Activity $activity): mixedf..;592-593594595=598=599-601© VocabularyController.php>M AuthTM CustomerAniM internal• D Kiosk|• MTeamc©ActivityController.phpYa AutomatodDonortcControll* oparam servicelntertace sservice* dparam Actavitu Sactavitu* dparam Lauout Slauout* Qparam arrau Sentities The raw entitu data from usen©DashboardController.php©ImpersonationController.ph* dreturn arrauTx: AutovPlaygroundSELEC * FROM crm profiles WHERE user 1d = 15440:SELECT * FROM crm_profiles WHERE crm_configuration_id = 555;SELECT * FROM crm_configurations WHERE id = 555;SELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, Pl. 3911, act. field 162182SELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_id,u.email,sa.*,t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idOIN teams t 1.n<->1: on t.id = u.team_idHERE u.team_id = 581 and sa.provider = 'salesforce';da jiminny~034 A1 A34 X62 A VELECT * FROM automated_report_results order by id desc;elect * from reatureselect * from team_features where feature_id = 40;elect * from teams where id = 556:elect * from automated_reports where 1d = 54; # 4fdd41f6-dctb-50a0-D559-754558106044 , L"pat", "podcast"JELECT * FROM automated revort results WHERE UUid tO bin 822f2410-af03-4329-a248-8600e36f3131' = uuid:elect * from automated_report_results order by id desc;• ELEC * FROMIautomated_report_results WHERE 1d = 1919;elect * from automated_report_results WHERE report 1d = 54:sellect * From onnortunities where 1d = 1594549:SELECT * EROM teams WHERE name LTKE 1%Les%'• # 711, 692. 160678 - JiminnvintearationGlesmills.comselect * from playbooks where team_id = 711; # event 226147SELECT * EROM nlavbook cateaonies WHERE nlavbook 1d = 5515÷SELECT * FROM crm_fields WHERE id = 226147;SELECT * CP0M eom fiold valuec WHEPE com fiold 1d = 224147-SELECT * FROM crm_configurations WHERE id = 692;SELECTCONCAT(u.id, CASE WHEN U.id = t.owner_id THEN ' (owner)' ELSE "' END) AS user_id,u.email,sa.*t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable idJOIN teams + 1..n<->1: on t.id = u.team_idWHERE u.team_id = 711 and sa.provider = 'salesforce':100% S2Mon 2U AOr 14.00.10AutomatedReportsCommandTestvCascadeRetactor Connectionwhat is the connection.disconnected doesn't exist?What happens if connection.disconnected doesn't exist?It connection.disconnected is not detined on the obiect, accessing it returns underined .Evaluating the quard clauseIn iavascriotifconnection ll connection.disconnected z== true ll connection.connected za= false) «Let's trace with disconnected missing (i.e. undefined):Check"connectionValueconnection existsconnection.disconnected == trueResultfalsefalseconnection.connected = falseunderined == truedepends on connectedso it disconnected is missing but connected === true :• All three conditions are false → doesn't bail out → proceeds to the success pathWhy this is the correct benaviorThe Intearation Aoo SDK's connection obiect mav not alwavs exolicitlv set both flaas. The oricinal code intentionallv used loose checks (fe= true.[== false ) so that a missing/undefined property wouldn't be treated as a failure.The guard clause preserves this:• Only bails when disconnected is explicitly true•Only bails when connected is explicitly talse• Missina/undetined values are treated as "not a failure sianal" → success path continuesContrast with Nikolay's original suggestionHis versiondisconnected == false ao connected === true would have required both properties to exist as explicit booleans. It disconnectedwere miccina undefined rrn false is false & the check would fail @) no Apl call made even on a valid connection. That's why his suacectionC.al "Ask anvthina (84-D< CodeClaude Qnus 4.7 MediumW Windsurf Teams100-27UTF.Rf?4 spaces...
|
NULL
|
|
17050
|
373
|
10
|
2026-04-14T15:36:01.860881+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776180961860_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
150211264722348/60Castle AgePlayer 5 Danylo Kobiak 150211264722348/60Castle AgePlayer 5 Danylo Kobiakovych!!!--Town Center7/15Đ 5/75 (7)kovaliklnkas (Britons)AANER712355/24005 Danylo Kobiakovych: 3129/31296 Prithviraj Chauhan: 3051/30513 Mari Djata I: 2887/28878 Ellac the Hun: 2752/27527 Vikramaditya I: 2675/2675Yekuno Amlak: 2667/2667kovaliklukas: 2306/23064 Wen Tianxiang: 2188/2188BEBBBBS...
|
NULL
|
-9115326195298783498
|
NULL
|
click
|
ocr
|
NULL
|
150211264722348/60Castle AgePlayer 5 Danylo Kobiak 150211264722348/60Castle AgePlayer 5 Danylo Kobiakovych!!!--Town Center7/15Đ 5/75 (7)kovaliklnkas (Britons)AANER712355/24005 Danylo Kobiakovych: 3129/31296 Prithviraj Chauhan: 3051/30513 Mari Djata I: 2887/28878 Ellac the Hun: 2752/27527 Vikramaditya I: 2675/2675Yekuno Amlak: 2667/2667kovaliklukas: 2306/23064 Wen Tianxiang: 2188/2188BEBBBBS...
|
17048
|
|
39328
|
799
|
49
|
2026-04-16T13:35:51.581007+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776346551581_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
[CREDIT_CARD]/105VVImperial Age--Light Cavalry Cre [CREDIT_CARD]/105VVImperial Age--Light Cavalry Created-4 Roger II of Sicily: 8147/8147 IV6 Emperor Karel IV: 7389/7389YNV3 Anastasios I Dikoros: 7246/7246- IV5 Manuel I: 7245/7245 • IV8 Mundzuk the Hun: 6592/6592IVZbigniew Olesnicki: 5707/57077 Themistocles: 5676/56761 kovaliklukas: 5574/5574 IV...
|
NULL
|
-9115264209202191492
|
NULL
|
visual_change
|
ocr
|
NULL
|
[CREDIT_CARD]/105VVImperial Age--Light Cavalry Cre [CREDIT_CARD]/105VVImperial Age--Light Cavalry Created-4 Roger II of Sicily: 8147/8147 IV6 Emperor Karel IV: 7389/7389YNV3 Anastasios I Dikoros: 7246/7246- IV5 Manuel I: 7245/7245 • IV8 Mundzuk the Hun: 6592/6592IVZbigniew Olesnicki: 5707/57077 Themistocles: 5676/56761 kovaliklukas: 5574/5574 IV...
|
NULL
|
|
35488
|
724
|
4
|
2026-04-16T09:54:50.539497+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776333290539_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+FirefoxEDHomeDMSActivityFilesLater..•More+FileEdi +FirefoxEDHomeDMSActivityFilesLater..•More+FileEditViewHistoryBookmarksProfilesToolsWindowHelp→Search Jiminny IrJiminny …..sos# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messages&. Vasil Vasilev®. Galya Dimitrova. Nikolay Ivanov®. Aneliya AngelovaAneliya Angelova, ...Stoyan TanevC. VesSteliyan Georgiev3Adelina Petrova, Ili...P. Adelina Petrova::: AppsToastJira Cloud# fri• MessagDeshttp5lliarhttphellMessage+ Aa< > 0 li| • [ Support Daily • in 2h 6m (AJ )100% C47 8 Thu 16 Apr 12:54:50Zoho Accounts — Workaccounts.zoho.com/signin?servicename=AaaServer&serviceurl=https%3A%2F%2Faccounts.zoho.com%2Foauth%2Fv2%2Fauth%3Fclient_ #=E] Try smartsign-inгOHOSign into access AccountsEmail address or mobile numberNextSign in usingGy!inDon't have a Zoho account? Sign up now© 2026, Zoho Corporation Pvt. Ltd. All Rights Reserved....
|
NULL
|
-9115020001305773613
|
NULL
|
click
|
ocr
|
NULL
|
+FirefoxEDHomeDMSActivityFilesLater..•More+FileEdi +FirefoxEDHomeDMSActivityFilesLater..•More+FileEditViewHistoryBookmarksProfilesToolsWindowHelp→Search Jiminny IrJiminny …..sos# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messages&. Vasil Vasilev®. Galya Dimitrova. Nikolay Ivanov®. Aneliya AngelovaAneliya Angelova, ...Stoyan TanevC. VesSteliyan Georgiev3Adelina Petrova, Ili...P. Adelina Petrova::: AppsToastJira Cloud# fri• MessagDeshttp5lliarhttphellMessage+ Aa< > 0 li| • [ Support Daily • in 2h 6m (AJ )100% C47 8 Thu 16 Apr 12:54:50Zoho Accounts — Workaccounts.zoho.com/signin?servicename=AaaServer&serviceurl=https%3A%2F%2Faccounts.zoho.com%2Foauth%2Fv2%2Fauth%3Fclient_ #=E] Try smartsign-inгOHOSign into access AccountsEmail address or mobile numberNextSign in usingGy!inDon't have a Zoho account? Sign up now© 2026, Zoho Corporation Pvt. Ltd. All Rights Reserved....
|
35486
|
|
33348
|
674
|
24
|
2026-04-16T07:45:13.259732+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776325513259_m2.jpg...
|
Slack
|
Nikolay Ivanov (DM) - Jiminny Inc - 3 new items - Nikolay Ivanov (DM) - Jiminny Inc - 3 new items - Slack...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Direct messages
Direct messages
Aneliya Angelova
Nikolay Ivanov
Vasil Vasilev
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Galya Dimitrova
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Nikolay Nikolov
Toast
Jira Cloud
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Nikolay Ivanov
Mar 5th at 10:17:59 AM
10:17 AM
има проблем с тях?
Lukas Kovalik
Mar 5th at 10:18:20 AM
10:18 AM
че добавях статус да сеползва но искат да се syn-ват старите
Mar 5th at 10:18:34 AM
10:18
и просто да го пусна
Jump to date
Lukas Kovalik
Mar 13th at 10:04:39 AM
10:04 AM
Ники за липсващи в contacts и accounts при matching не знам дали разбрах но при нас може да има нещо в база което не сме изтрили и на CRM го няма
Nikolay Ivanov
Mar 13th at 10:05:31 AM
10:05 AM
Обратното се случва мисля
Mar 13th at 10:06:03 AM
10:06
$activity->contact_id = 123456; $activity->save(); и казва ,че 123456 не съществува
Lukas Kovalik
Mar 13th at 10:07:03 AM
10:07 AM
ок не разбрах значи
Nikolay Ivanov
Mar 13th at 10:07:15 AM
10:07 AM
а преди това е мачнат и е същестувал
Mar 13th at 10:07:41 AM
10:07
поне аз така го видях, тоест мачваме и после опитваме да запишем ,но вече е изтрито от базаата
Jump to date
Nikolay Ivanov
Mar 30th at 10:06:36 AM
10:06 AM
Лукаш, след 15 мин някъде да се чуем , опитвам едно кафе да си направя
Lukas Kovalik
Mar 30th at 10:06:50 AM
10:06 AM
може да
Nikolay Ivanov
Mar 30th at 10:06:55 AM
10:06 AM
супер
Nikolay Ivanov
Mar 30th at 11:09:59 AM
11:09 AM
звъня?
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Mar 30th at 11:10:25 AM
11:10 AM
само мин да мин през тоалетна
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.00546875,"top":0.05486111,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.00546875,"top":0.09097222,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.0125,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.026953125,"top":0.048611112,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.03125,"top":0.08125,"width":0.012109375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.026953125,"top":0.09583333,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.032421876,"top":0.12847222,"width":0.009765625,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.026953125,"top":0.14305556,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.0296875,"top":0.17569445,"width":0.015234375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.026953125,"top":0.19027779,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0328125,"top":0.22291666,"width":0.008984375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.026953125,"top":0.2375,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.03203125,"top":0.2701389,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.026953125,"top":0.2847222,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.03203125,"top":0.31736112,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.07304688,"top":0.29305556,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.07304688,"top":0.3125,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.03046875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.07304688,"top":0.4875,"width":0.041015625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.0453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.07304688,"top":0.5263889,"width":0.019921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.07304688,"top":0.54583335,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.07304688,"top":0.56527776,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.07304688,"top":0.5847222,"width":0.0203125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.07304688,"top":0.6041667,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.07304688,"top":0.6236111,"width":0.053125,"height":0.0125},"role_description":"text"},{"role":"AXButton","text":"Direct messages","depth":20,"bounds":{"left":0.057421874,"top":0.64652777,"width":0.07304688,"height":0.019444445},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Direct messages","depth":22,"bounds":{"left":0.06679688,"top":0.65,"width":0.0421875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.07304688,"top":0.66944444,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"bounds":{"left":0.07304688,"top":0.6888889,"width":0.037890624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.07304688,"top":0.7083333,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.07304688,"top":0.7277778,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.11679687,"top":0.7277778,"width":0.0078125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.11992188,"top":0.7277778,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.13632813,"top":0.7430556,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.13632813,"top":0.7430556,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.07304688,"top":0.74722224,"width":0.033984374,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"bounds":{"left":0.07304688,"top":0.76666665,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.07304688,"top":0.7861111,"width":0.04140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.07304688,"top":0.8055556,"width":0.044921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"bounds":{"left":0.07304688,"top":0.825,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.11328125,"top":0.825,"width":0.003125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":23,"bounds":{"left":0.11601563,"top":0.825,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.13632813,"top":0.8402778,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.13632813,"top":0.8402778,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"bounds":{"left":0.07304688,"top":0.84444445,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.07304688,"top":0.86388886,"width":0.040234376,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.07304688,"top":0.9097222,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.07304688,"top":0.9291667,"width":0.02578125,"height":0.0125},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.14335938,"top":0.07986111,"width":0.036328126,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"bounds":{"left":0.15429688,"top":0.0875,"width":0.022265624,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.18085937,"top":0.07986111,"width":0.040234376,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"bounds":{"left":0.19179687,"top":0.0875,"width":0.026171874,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.22226563,"top":0.07986111,"width":0.024609376,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"bounds":{"left":0.23320313,"top":0.0875,"width":0.010546875,"height":0.011111111},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.24804688,"top":0.07986111,"width":0.012890625,"height":0.02638889},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01640625,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.2859375,"top":0.10069445,"width":0.06328125,"height":0.00069444446},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Ivanov","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.039453126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.003125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 5th at 10:17:59 AM","depth":24,"bounds":{"left":0.20390625,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:17 AM","depth":25,"bounds":{"left":0.20390625,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"има проблем с тях?","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.053125,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 5th at 10:18:20 AM","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:18 AM","depth":25,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"че добавях статус да сеползва но искат да се syn-ват старите","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.16601562,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 5th at 10:18:34 AM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:18","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"и просто да го пусна","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.055859376,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.28828126,"top":0.10069445,"width":0.05859375,"height":0.00069444446},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 13th at 10:04:39 AM","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:04 AM","depth":25,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Ники за липсващи в contacts и accounts при matching не знам дали разбрах но при нас може да има нещо в база което не сме изтрили и на CRM го няма","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.32109374,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Nikolay Ivanov","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.039453126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.003125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 13th at 10:05:31 AM","depth":24,"bounds":{"left":0.20390625,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:05 AM","depth":25,"bounds":{"left":0.20390625,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Обратното се случва мисля","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.075,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 13th at 10:06:03 AM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:06","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"$activity->contact_id = 123456; $activity->save(); и казва ,че 123456 не съществува","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.22070312,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 13th at 10:07:03 AM","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:07 AM","depth":25,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"ок не разбрах значи","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.05390625,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Nikolay Ivanov","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.039453126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.003125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 13th at 10:07:15 AM","depth":24,"bounds":{"left":0.20390625,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:07 AM","depth":25,"bounds":{"left":0.20390625,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"а преди това е мачнат и е същестувал","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.103125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 13th at 10:07:41 AM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:07","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"поне аз така го видях, тоест мачваме и после опитваме да запишем ,но вече е изтрито от базаата","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.2644531,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.2859375,"top":0.110416666,"width":0.06328125,"height":0.019444445},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Ivanov","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.039453126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.003125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 30th at 10:06:36 AM","depth":24,"bounds":{"left":0.20390625,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:06 AM","depth":25,"bounds":{"left":0.20390625,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Лукаш, след 15 мин някъде да се чуем , опитвам едно кафе да си направя","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.20078126,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Mar 30th at 10:06:50 AM","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:06 AM","depth":25,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.02109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"може да","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.023046875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Nikolay Ivanov","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.039453126,"height":0.0034722222},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.003125,"height":0.0020833334},"role_description":"text"},{"role":"AXLink","text":"Mar 30th at 10:06:55 AM","depth":24,"bounds":{"left":0.20390625,"top":0.10069445,"width":0.02109375,"height":0.0020833334},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:06 AM","depth":25,"bounds":{"left":0.20390625,"top":0.10069445,"width":0.02109375,"height":0.0020833334},"role_description":"text"},{"role":"AXStaticText","text":"супер","depth":25,"bounds":{"left":0.16210938,"top":0.10555556,"width":0.015625,"height":0.0125},"role_description":"text"},{"role":"AXButton","text":"Nikolay Ivanov","depth":24,"bounds":{"left":0.16210938,"top":0.125,"width":0.039453126,"height":0.015277778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.20117188,"top":0.12638889,"width":0.003125,"height":0.0125},"role_description":"text"},{"role":"AXLink","text":"Mar 30th at 11:09:59 AM","depth":24,"bounds":{"left":0.20390625,"top":0.12847222,"width":0.02109375,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09 AM","depth":25,"bounds":{"left":0.20390625,"top":0.12847222,"width":0.02109375,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"звъня?","depth":25,"bounds":{"left":0.16210938,"top":0.14166667,"width":0.01796875,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.11319444,"width":0.000390625,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"bounds":{"left":0.49140626,"top":0.11319444,"width":0.000390625,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"bounds":{"left":0.49140626,"top":0.11319444,"width":0.000390625,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"bounds":{"left":0.49140626,"top":0.11319444,"width":0.000390625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"bounds":{"left":0.49140626,"top":0.11319444,"width":0.000390625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"bounds":{"left":0.49140626,"top":0.11319444,"width":0.000390625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"bounds":{"left":0.49140626,"top":0.11319444,"width":0.000390625,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"bounds":{"left":0.49140626,"top":0.11319444,"width":0.000390625,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.16111112,"width":0.036328126,"height":0.015277778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.1625,"width":0.003515625,"height":0.0125},"role_description":"text"},{"role":"AXLink","text":"Mar 30th at 11:10:25 AM","depth":24,"bounds":{"left":0.20117188,"top":0.16458334,"width":0.02109375,"height":0.010416667},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:10 AM","depth":25,"bounds":{"left":0.20117188,"top":0.16458334,"width":0.02109375,"height":0.010416667},"role_description":"text"},{"role":"AXStaticText","text":"само мин да мин през тоалетна","depth":25,"bounds":{"left":0.16210938,"top":0.17777778,"width":0.0859375,"height":0.0125},"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":25,"bounds":{"left":0.16210938,"top":0.19444445,"width":0.016796876,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"bounds":{"left":0.17304687,"top":0.19722222,"width":0.002734375,"height":0.010416667},"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.18007812,"top":0.19444445,"width":0.013671875,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"bounds":{"left":0.49140626,"top":0.14930555,"width":0.000390625,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"bounds":{"left":0.49140626,"top":0.14930555,"width":0.000390625,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"bounds":{"left":0.49140626,"top":0.14930555,"width":0.000390625,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"bounds":{"left":0.49140626,"top":0.14930555,"width":0.000390625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-9114865165764961950
|
-815832492192784800
|
visual_change
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Direct messages
Direct messages
Aneliya Angelova
Nikolay Ivanov
Vasil Vasilev
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Galya Dimitrova
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Nikolay Nikolov
Toast
Jira Cloud
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Nikolay Ivanov
Mar 5th at 10:17:59 AM
10:17 AM
има проблем с тях?
Lukas Kovalik
Mar 5th at 10:18:20 AM
10:18 AM
че добавях статус да сеползва но искат да се syn-ват старите
Mar 5th at 10:18:34 AM
10:18
и просто да го пусна
Jump to date
Lukas Kovalik
Mar 13th at 10:04:39 AM
10:04 AM
Ники за липсващи в contacts и accounts при matching не знам дали разбрах но при нас може да има нещо в база което не сме изтрили и на CRM го няма
Nikolay Ivanov
Mar 13th at 10:05:31 AM
10:05 AM
Обратното се случва мисля
Mar 13th at 10:06:03 AM
10:06
$activity->contact_id = 123456; $activity->save(); и казва ,че 123456 не съществува
Lukas Kovalik
Mar 13th at 10:07:03 AM
10:07 AM
ок не разбрах значи
Nikolay Ivanov
Mar 13th at 10:07:15 AM
10:07 AM
а преди това е мачнат и е същестувал
Mar 13th at 10:07:41 AM
10:07
поне аз така го видях, тоест мачваме и после опитваме да запишем ,но вече е изтрито от базаата
Jump to date
Nikolay Ivanov
Mar 30th at 10:06:36 AM
10:06 AM
Лукаш, след 15 мин някъде да се чуем , опитвам едно кафе да си направя
Lukas Kovalik
Mar 30th at 10:06:50 AM
10:06 AM
може да
Nikolay Ivanov
Mar 30th at 10:06:55 AM
10:06 AM
супер
Nikolay Ivanov
Mar 30th at 11:09:59 AM
11:09 AM
звъня?
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Mar 30th at 11:10:25 AM
11:10 AM
само мин да мин през тоалетна
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
+SlackFileEditViewHistoryWindowHelpSearch Jiminny IncJiminny ...Nikolay IvanovDMs= Unreadse Threads6 HuddlesDrafts & sent8 Directories• Messagest Add canvasFilesAchivityEh External connectionsFiles# Starred& platform-inner-teamMore# Channels# ai-chapter# alerts# backend#: confusion-clinic# curiosity_labiengineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# randomit releases# sofia-office# support# thank-yous# the_people_of jimi...%u Direct messares®. Aneliya Angelova Q. Nikolay Ivanove. Vasil Vasilev3 Aneliya Angelova, ...R. Stoyan Taneve. VesP. Galya Dimitrova E&e Steliyan GeorgievAdelina Petrova. Il.(Q. Adelina Petrova LD. Nikolay Nikolov**:AppsToast# Jira CloudCVneDMonday, March 30th~NKoay Manoy 10AvIЗВЬНЯ!Lukas ovalk 1:10AMIсамо мин да мин през тоалетнатука съмA huddle happened 11:11 AMYou and Nikolay Ivanov were in the huddle for 58m.Lukas Kovalik 11:24 AM{(baseUrlj}/crm/v3/objects/meetings/478116564181?associations=contacts,deals,companies58035541https://api.hubapi.com/engagements/v1/engagements/associated/deal/631722425/pagedNikolay Ivanov 11:32 AM4X01 1580926Nikolay Ivanov 11:41 AM39216301, 0x447A9FAA2E6FF4D3A8C19ACDE4D885AE2e6ff4d3-9faa-447a-a8c1-9acde4d885aeLukas Kovalik 11:47 AMhttps://eu-west-1.console.aws.amazon.com/cloudwatch/home?region=eu-west-1#logsV2:log-groups/log-group/worker-•13307026-03-75 053 534585 5341 4024https://api.hubapi.com/engagements/v1/engagements/480171536586Today ~Nikolay Ivanov 10:28 AMЛукаш, 3-4 минути да заради телефонаи ще пробвамеne shaM 3dщo 1aKd Cldhdмай зашото регистоирах autпenисапоп адо на телефона и вече само него тьосиа тои ми толоваше да тествам мооилния логинLukas Kovalik 10:29 AMи аз не знам, но няма много друг auth, да му сложим някой друг общия email може биNikolay Ivanov 10:30 AMможе би да се разлогна от auth appaна телефонаcea enooobamLukas novallk 1030 AMIOK.CVnCoNiKoay valnoy 1030 AvIпроовай сегамaxнax aкavniaоптелсоона изшилоMessage Nikolay IvanovNewCc 40 ll O f SupportDaily- in 4h 15m 0 100% C Thu 16 Apr 10:45:13Update your informationGENERALEurope/Sofia (UTC +03:00):LANGUAGES SPOKEN DURING CALLSDEFAULT SPOKEN LANGUAGEnglish (United KinedomiIf the language isn't detected we'll default to this one• Add language:CONN-CISYNCS-ITINGSIConnect Salesforcea Sign in with SalesforceImport Calendar Meetings*G Sign in with GoogleLet's Get Started! →...
|
NULL
|
|
15478
|
346
|
35
|
2026-04-14T14:47:50.653213+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776178070653_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0ld6]Retro - Platform • 28 m leftP100% <47APP (docker)DOCKER981DEV (docker)882APP (docker)*3jiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-conferences:worker-conferences_00:stoppedworker-es-update:worker-es-update_00:stoppedartisan-schedule:artisan-schedule_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: startedec2-user@ip-10-30-…-zsh885What'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] (JY-18909-automated-reports-ask-jiminny) $ 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".4961/558988%-zsh86-zsh?87Tue 14 Apr 17:47:50181* Unable to acce...O 88APP...
|
NULL
|
-9114727090527135417
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0ld6]Retro - Platform • 28 m leftP100% <47APP (docker)DOCKER981DEV (docker)882APP (docker)*3jiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedworker-conferences:worker-conferences_00:stoppedworker-es-update:worker-es-update_00:stoppedartisan-schedule:artisan-schedule_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: startedec2-user@ip-10-30-…-zsh885What'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] (JY-18909-automated-reports-ask-jiminny) $ 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".4961/558988%-zsh86-zsh?87Tue 14 Apr 17:47:50181* Unable to acce...O 88APP...
|
NULL
|
|
12186
|
259
|
51
|
2026-04-14T10:54:27.709228+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776164067709_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFV faVsco.js~ProjectvEditViewNavigateC PhpStormFileFV faVsco.js~ProjectvEditViewNavigateCodeLaravelRefactorRunToolsWindowHelp#11894 on JY-18909-automated-reports-ask-iminny ~© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.phpInboxEmailBatchRepositoryInboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.phpNotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php© PlaylistActivityRepository.f© PlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.phpC) RoleChangeEventRepositol© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.© TaskRepository.php© TeamAiContextRepository.© TeamDomainsRepository.p© TeamInsightsRepository.pr© TeamRepository.php©ThemeRepository.php© TimezoneRepository.php©TopicRepository.php© ToрicTriggerRepository.ph©TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.ph© TranscriptionSummaryRepr© UserRepository.php© VocabularyRepository.pnp> D Rulesv _ Services> D Activity> D AjReports> D Avatar0 CalendarC ConferenceD Crm› D Import> MInternalv MKioskv M AutomatedReports(C) ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsS:© DealStagesService.p© RecipientsService.ph© ReportController.php© JiminnyDebugCommand.php© AutomatedReportsCommand.php© AutomatedReportsRepository.phpC AutomatedReportsService.php XCreateHeldActivityEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsServicel/utomatecRenorissenoCommana.ong© AddLayoutEntities.php© Team.php© TrackProviderInstalledEvent.phpCreateActivityLoggedEvent.phpC RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php1597159815991600160110041634163510J0166816691169611OYA171611/1/17181719172017211722172317241725172617271728172917301731173617371175%11/401741174217431744174517461747174817491750117524102 ×3 м34 ^// prophet API calls/*** @throws ApplicationException*/13 usagespublic function getGenerateReportPavloadAutomatedReport SautomatedReport, string SreportResultUuid): arrav{....// $inputPayload - FE payload structurepublic function getActivitiesCountPayload(array $inputPayload): array{...}9 usagespublic function shouldSendReport(array $users, ?CarbonInterface $generatedAt = null): bool{...}5 usagespublic function hasPassedScheduledTime(?CarbonInterface $generatedAt, string $timezone): boolf...}6 usagespublic function calculateFromAndToDatePeriod(string $frequency,?Carbon $fromDate = null,?Carbon $toDate = null): array 4ifüfrequencK seLfi: FREQUENCX ONE DEE)NEreturn ['fromDate' = $fromDate,tobate" = +cobate,$now = Carbon::now();return match ($frequency) {self::FREQUENCY_DAILY => ["fromDate' => $now->copy()->subbĨy()->start0fDay()‚'todate' => $now->copy() ->subDay()->end0fDayO),self::FREQUENCY_WEEKLY => ['fromDate' => Snow->copy(->subWeeks( value: 1)->start0fDay@.'toDate' => $now->copy() ->subDay()->end0fDay(),self::FREQUENCY_MONTHLY → ['fromDate' => $now->copy() ->subMonths( value: 1)->start0fDay(),'toDate' => $now->copy ()->subDay()->endOfDay(),self:: FREQUENCY_QUARTERLY => ['fromDate' => Snow->copy()->subMonths ( value: 3)->start0fDay),'toDate' => $now->copy()->subDay()->endOfDay(),default = throw new InvalidArgumentException( message: "Unsupported frequency: {$frequency}"),loblj Support Daily • in 1h 6 mAAutomatedReportsCommandTestv100% [45)Tue 14 Apr 13:54:27= custom.logE laravel.logA SF ljiminny@localhost]A console [STAGING] X© AskJiminnyReportActivityService.php4 HS_local [jiminny@localhost]© ActivitySearch.php© FilterDefinitionCollection.php© Criteria.php© AskJiminnyReportActivityServiceTest.phpX:Auto vPlavaroundvAl console [PROD]A console [EU]cOnbemanavzcontroller.oneC HistoryService.php© RequestGenerateAskJiminnyReportJobTest.phpMa lminnv v521-522523524525526527152815305315325335345355365375381557540541542543544Es4s=546=5475485491550551554553554555556557558559560561562563564565—566567JOIN users u on u.id = sa.sociable_idJOIN teams t 1..n<->1: on t.id = u.team_idWHERE u.team_id = 1 and sa.provider = 'salesforce' :016 A13 V.13 лselect * from teams where id = 1;select * from groups g JOIN playbooks p 1.n<-›1: on g.playbook_id = p.id where g.team_id = 1;select * from groups where id = 565;select * from playbooks where team_id = 1;select * from playbooks where id = 175;select * from playbook_categories where playbook_id = 175;select * from users where team_id = 1;select * from users where id = 7160;select * from crm_profiles where user_id = 7160;select * from features;select# id, uvid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage.# crm_configuration_id, crm_provider_id, transcription_id, statusfrom activities where crm_configuration_id = 1 and type = 'conference'# and crm_provider_id IS NOT NULLand provider != 'uploader' and actual_start_time IS NOT NULLORDER by id desc;select * from activities where id = 54747783; # 00U0400000pCzojMACselect p.id, p.activity_type,pc.id, pc.nameFROM playbooks pjoin playbook_categories pc 1<->1.n: on p.id = pc.playbook_idwhere p.team_id = 1 and p.activity_type = 'event';SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';SELECT * FROM crm_field_values WHERE crm_field_id = 4;select * from crm_layouts cl join playbook_layouts pl 1<-›1.n: on cl.id = pl. layout_idwhere crm_configuration_id = 1 and pl.playbook_id = 175;select * from teams;SELECT r.* FROM automated_reports rjoin teams t on r.team.id = t.idWHERE r. freguency = 'daily'and r.status = 1AND t.status = 'active'AND (r.exRires.at >= now() OR r.expires.at IS NULL):select * from automated_report_results where ceRontaid IN (18, 33);select * from activity_searches where id = 10932;select * from automated_reports;select * from automated_report_results where reRort.id IN (34, 35);W Windsurf Teams 1721:15 UTF-84 spaces...
|
NULL
|
-9114480243517168497
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileFV faVsco.js~ProjectvEditViewNavigateC PhpStormFileFV faVsco.js~ProjectvEditViewNavigateCodeLaravelRefactorRunToolsWindowHelp#11894 on JY-18909-automated-reports-ask-iminny ~© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.phpInboxEmailBatchRepositoryInboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.phpNotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php© PlaylistActivityRepository.f© PlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.phpC) RoleChangeEventRepositol© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.© TaskRepository.php© TeamAiContextRepository.© TeamDomainsRepository.p© TeamInsightsRepository.pr© TeamRepository.php©ThemeRepository.php© TimezoneRepository.php©TopicRepository.php© ToрicTriggerRepository.ph©TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.ph© TranscriptionSummaryRepr© UserRepository.php© VocabularyRepository.pnp> D Rulesv _ Services> D Activity> D AjReports> D Avatar0 CalendarC ConferenceD Crm› D Import> MInternalv MKioskv M AutomatedReports(C) ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsS:© DealStagesService.p© RecipientsService.ph© ReportController.php© JiminnyDebugCommand.php© AutomatedReportsCommand.php© AutomatedReportsRepository.phpC AutomatedReportsService.php XCreateHeldActivityEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsServicel/utomatecRenorissenoCommana.ong© AddLayoutEntities.php© Team.php© TrackProviderInstalledEvent.phpCreateActivityLoggedEvent.phpC RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php1597159815991600160110041634163510J0166816691169611OYA171611/1/17181719172017211722172317241725172617271728172917301731173617371175%11/401741174217431744174517461747174817491750117524102 ×3 м34 ^// prophet API calls/*** @throws ApplicationException*/13 usagespublic function getGenerateReportPavloadAutomatedReport SautomatedReport, string SreportResultUuid): arrav{....// $inputPayload - FE payload structurepublic function getActivitiesCountPayload(array $inputPayload): array{...}9 usagespublic function shouldSendReport(array $users, ?CarbonInterface $generatedAt = null): bool{...}5 usagespublic function hasPassedScheduledTime(?CarbonInterface $generatedAt, string $timezone): boolf...}6 usagespublic function calculateFromAndToDatePeriod(string $frequency,?Carbon $fromDate = null,?Carbon $toDate = null): array 4ifüfrequencK seLfi: FREQUENCX ONE DEE)NEreturn ['fromDate' = $fromDate,tobate" = +cobate,$now = Carbon::now();return match ($frequency) {self::FREQUENCY_DAILY => ["fromDate' => $now->copy()->subbĨy()->start0fDay()‚'todate' => $now->copy() ->subDay()->end0fDayO),self::FREQUENCY_WEEKLY => ['fromDate' => Snow->copy(->subWeeks( value: 1)->start0fDay@.'toDate' => $now->copy() ->subDay()->end0fDay(),self::FREQUENCY_MONTHLY → ['fromDate' => $now->copy() ->subMonths( value: 1)->start0fDay(),'toDate' => $now->copy ()->subDay()->endOfDay(),self:: FREQUENCY_QUARTERLY => ['fromDate' => Snow->copy()->subMonths ( value: 3)->start0fDay),'toDate' => $now->copy()->subDay()->endOfDay(),default = throw new InvalidArgumentException( message: "Unsupported frequency: {$frequency}"),loblj Support Daily • in 1h 6 mAAutomatedReportsCommandTestv100% [45)Tue 14 Apr 13:54:27= custom.logE laravel.logA SF ljiminny@localhost]A console [STAGING] X© AskJiminnyReportActivityService.php4 HS_local [jiminny@localhost]© ActivitySearch.php© FilterDefinitionCollection.php© Criteria.php© AskJiminnyReportActivityServiceTest.phpX:Auto vPlavaroundvAl console [PROD]A console [EU]cOnbemanavzcontroller.oneC HistoryService.php© RequestGenerateAskJiminnyReportJobTest.phpMa lminnv v521-522523524525526527152815305315325335345355365375381557540541542543544Es4s=546=5475485491550551554553554555556557558559560561562563564565—566567JOIN users u on u.id = sa.sociable_idJOIN teams t 1..n<->1: on t.id = u.team_idWHERE u.team_id = 1 and sa.provider = 'salesforce' :016 A13 V.13 лselect * from teams where id = 1;select * from groups g JOIN playbooks p 1.n<-›1: on g.playbook_id = p.id where g.team_id = 1;select * from groups where id = 565;select * from playbooks where team_id = 1;select * from playbooks where id = 175;select * from playbook_categories where playbook_id = 175;select * from users where team_id = 1;select * from users where id = 7160;select * from crm_profiles where user_id = 7160;select * from features;select# id, uvid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage.# crm_configuration_id, crm_provider_id, transcription_id, statusfrom activities where crm_configuration_id = 1 and type = 'conference'# and crm_provider_id IS NOT NULLand provider != 'uploader' and actual_start_time IS NOT NULLORDER by id desc;select * from activities where id = 54747783; # 00U0400000pCzojMACselect p.id, p.activity_type,pc.id, pc.nameFROM playbooks pjoin playbook_categories pc 1<->1.n: on p.id = pc.playbook_idwhere p.team_id = 1 and p.activity_type = 'event';SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';SELECT * FROM crm_field_values WHERE crm_field_id = 4;select * from crm_layouts cl join playbook_layouts pl 1<-›1.n: on cl.id = pl. layout_idwhere crm_configuration_id = 1 and pl.playbook_id = 175;select * from teams;SELECT r.* FROM automated_reports rjoin teams t on r.team.id = t.idWHERE r. freguency = 'daily'and r.status = 1AND t.status = 'active'AND (r.exRires.at >= now() OR r.expires.at IS NULL):select * from automated_report_results where ceRontaid IN (18, 33);select * from activity_searches where id = 10932;select * from automated_reports;select * from automated_report_results where reRort.id IN (34, 35);W Windsurf Teams 1721:15 UTF-84 spaces...
|
12184
|
|
54174
|
1170
|
0
|
2026-04-20T08:41:38.569960+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776674498569_m2.jpg...
|
Slack
|
Huddle: @Aneliya Angelova - Jiminny Inc - Slack
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Aneliya Angelova
Aneliya Angelova, Screen share
An Aneliya Angelova
Aneliya Angelova, Screen share
Aneliya Angelova
Screen share
Turn on drawing
Fullscreen
Back to grid
View Lukas Kovalik's profile
video is off, audio is on
Lukas Kovalik
More actions
Audio
View Aneliya Angelova's profile
Aneliya Angelova
More actions
Audio
Aneliya Angelova is in the huddle.: ....
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Aneliya Angelova","depth":14,"bounds":{"left":0.50398934,"top":0.049481247,"width":0.011968086,"height":0.033519555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Aneliya Angelova, Screen share","depth":14,"bounds":{"left":0.5199468,"top":0.049481247,"width":0.03856383,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":16,"bounds":{"left":0.5199468,"top":0.051077414,"width":0.03856383,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Screen share","depth":15,"bounds":{"left":0.5199468,"top":0.06783719,"width":0.024268618,"height":0.012769354},"role_description":"text"},{"role":"AXButton","text":"Turn on drawing","depth":15,"bounds":{"left":0.90791225,"top":0.0518755,"width":0.011968086,"height":0.028731046},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Fullscreen","depth":15,"bounds":{"left":0.91988033,"top":0.0518755,"width":0.011968086,"height":0.028731046},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Back to grid","depth":15,"bounds":{"left":0.9318484,"top":0.0518755,"width":0.011968086,"height":0.028731046},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"View Lukas Kovalik's profile","depth":11,"bounds":{"left":0.9478058,"top":0.3790902,"width":0.049867023,"height":0.11971269},"role_description":"cell"},{"role":"AXButton","text":"video is off, audio is on","depth":12,"bounds":{"left":0.95046544,"top":0.47007182,"width":0.03956117,"height":0.022346368},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":13,"bounds":{"left":0.96110374,"top":0.47486034,"width":0.026263298,"height":0.012769354},"role_description":"text"},{"role":"AXPopUpButton","text":"More actions","depth":12,"bounds":{"left":0.984375,"top":0.38547486,"width":0.010638298,"height":0.025538707},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Audio","depth":12,"bounds":{"left":0.97273934,"top":0.37669593,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXCell","text":"View Aneliya Angelova's profile","depth":11,"bounds":{"left":0.9478058,"top":0.50359136,"width":0.049867023,"height":0.11971269},"role_description":"cell"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":13,"bounds":{"left":0.953125,"top":0.59936154,"width":0.03324468,"height":0.012769354},"role_description":"text"},{"role":"AXPopUpButton","text":"More actions","depth":12,"bounds":{"left":0.984375,"top":0.509976,"width":0.010638298,"height":0.025538707},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Audio","depth":12,"bounds":{"left":0.97273934,"top":0.5011971,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova is in the huddle.: .","depth":10,"bounds":{"left":0.5,"top":0.9992019,"width":0.019614361,"height":0.0007980846},"role_description":"text"}]...
|
-9113578375445091041
|
3290541848125522307
|
idle
|
hybrid
|
NULL
|
Aneliya Angelova
Aneliya Angelova, Screen share
An Aneliya Angelova
Aneliya Angelova, Screen share
Aneliya Angelova
Screen share
Turn on drawing
Fullscreen
Back to grid
View Lukas Kovalik's profile
video is off, audio is on
Lukas Kovalik
More actions
Audio
View Aneliya Angelova's profile
Aneliya Angelova
More actions
Audio
Aneliya Angelova is in the huddle.: .
slackActivityLateVIewMistonWindowJiminny ...* Starred |• jiminny-X-integrati...platform-inner-team@ Channels*al-chapteri alerts# backendcontusion-cllnie# curiosity lab# engineerinss trontendi# generalac intra-changes#jiminny-bg# platform-tickets# product_launches# randomi releases# sofia-office# supporti# thank-yous# the people of iimi..A Direct messagesf.A..• Galva Dimitrova2 Stefka StoyanovaStovan Tomov3 Aneliya Angelova, .o. Nikolav NikolovRo Stoyan TanevVasil VasilevO Nikolav Ivanov8. Ves::: AnnsEt Jira Cloud6d Huddle with Aneliva Angelova* Aneliya Angelova C• Messagest Add canvasur FilesAneliya Angelova 9:35 AMFriday. March 27thvдаже не знам от кога вес е счупил деплоя и колко време все съм тествала едно и сьщо без да се усетя че деплойването не е работелоLukas Kovalik # 9:36 AMThursday, April 16th~Aneliya Angelova 10:00 AMЛукаш кога искаш да се чуемза команиитеLukas Kovalik V 10:01 AMаиде след 15 мин че се зарових в зохоLukas Kovalik 10:32 AMако искаш ла се чуем сегаAneliva Angelova 10:33 AMA huddle happened 10:33 AMInkac Kovalik 0 10.41 AMIpho artisan automated-reports --report-1d 39pho artisan automated-reports:send --resu t-1d 64TodavAneliva Angelova 9:41 AMЗдрасти Лукаш, струва ми се, че репортите се генерират върху всички активитита сьс съответния Saved search bez da e dobawen filtyr za dataLukas Kovalik 10:31 AMАни след малко може да се чуемAneliya Angelova 11:27 AMJnkas Kovalik 0 11.26 AMтука сьмYou joined the huddle LIVE 11:35 AMAneliva Ancelova is here toalMessage Aneliva Angeloval+ AaeAl Notes: OflLeave100% Lz• Mon ZU A0r 11.41:3067 Huddle with Aneliya AngelovaAneliya AngelovaScreen sharChromeWelcome to AcrobatEdit. convert, e-sign and moreAlready have a olan? Sien inlALL TOOLS4 Create a PDF Space5* Ack Al AscistantE" Generate a summaryn= Edit text & imagesA Export a PDF0 PDF to WordFã PDF to JPGConvert to PDFFill & SienOrganise pagesF.) Request e-signatures‹ Comoress a PDAEdit View History Bookmarks ProfilesTab Windowexpires On -Expires OnExpires Onexpires OnP Expires Onexpires On.txpires Ono Circiectchrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://app.staging.jiminny.com/ai-reports/pdf/18ba9f67-1e75-4382-a3.E-Sign(ro appstaging.... / Expires...Apr 2026 ve.…MINNY(A,8• ® Mon 20 Apr 11:41JIMINNYData SourceAnalvsis based on 17 calls coverine 13- 19 Aor 20261Ohiectivereceitements anereststnding sote to ain ote tr mete ort a up o cote anr e ortrveoevedPrimary Customer Pain PointsCustomers are primarily seeking to improve sales efficiency, coaching quality, and data visibility.performance. There is a specihc need for better coaching tools to identity trainingopportunities and share successful call examples, as noted by Jiminny x Vita Mojo: Meet theE,Leave...
|
NULL
|
|
54175
|
1169
|
1
|
2026-04-20T08:41:49.783675+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776674509783_m1.jpg...
|
Slack
|
Huddle: @Aneliya Angelova - Jiminny Inc - Slack
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Aneliya Angelova
Aneliya Angelova, Screen share
An Aneliya Angelova
Aneliya Angelova, Screen share
Aneliya Angelova
Screen share
Turn on drawing
Fullscreen
Back to grid
View Lukas Kovalik's profile
video is off, audio is on
Lukas Kovalik
More actions
Audio
View Aneliya Angelova's profile
Aneliya Angelova
More actions
Audio
Aneliya Angelova is in the huddle.: ....
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Aneliya Angelova","depth":14,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Aneliya Angelova, Screen share","depth":14,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Screen share","depth":15,"role_description":"text"},{"role":"AXButton","text":"Turn on drawing","depth":15,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Fullscreen","depth":15,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Back to grid","depth":15,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"View Lukas Kovalik's profile","depth":11,"role_description":"cell"},{"role":"AXButton","text":"video is off, audio is on","depth":12,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":13,"role_description":"text"},{"role":"AXPopUpButton","text":"More actions","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Audio","depth":12,"role_description":"text"},{"role":"AXCell","text":"View Aneliya Angelova's profile","depth":11,"role_description":"cell"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":13,"role_description":"text"},{"role":"AXPopUpButton","text":"More actions","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Audio","depth":12,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova is in the huddle.: .","depth":10,"bounds":{"left":0.4798611,"top":0.0,"width":0.04097222,"height":0.0011111111},"role_description":"text"}]...
|
-9113578375445091041
|
3290541848125522307
|
idle
|
hybrid
|
NULL
|
Aneliya Angelova
Aneliya Angelova, Screen share
An Aneliya Angelova
Aneliya Angelova, Screen share
Aneliya Angelova
Screen share
Turn on drawing
Fullscreen
Back to grid
View Lukas Kovalik's profile
video is off, audio is on
Lukas Kovalik
More actions
Audio
View Aneliya Angelova's profile
Aneliya Angelova
More actions
Audio
Aneliya Angelova is in the huddle.: .
FirefoxFileEditViewHistoryBookmarksProfilesTools Window Help→app.staging.jiminny.com/ai-reportsAl ReportsReport namePeriodJY-20553 | Improve crm-sync dela[SRD-6793] Les Mills activity typeJY-20698 handle failed field syncJY-20692 change confirmation pal[JY-20543] AJ Reports > Tracking(JY-18909) [Part2) Automated repAsk Jiminny Reports by nikolay-yarNew TabProduct Growth Platform | UserpiloUserpilot | Logged-activityfix(security): composer dependencPipelines - jiminny/appFeed - jiminny - Sentryfix(security): composer dependencJiminnyJiminny+New TabNAME105Health - 9 - 15 Apr 2026Tuesday Report - 15 Apr 2026Ask Jiminny Test Report - 15 Apr 2026Eastern Summary - 7 - 13 Apr 2026Tuesday Report - 13 Apr 2026Ask Jiminny Test Report - 13 Apr 2026Ask Jiminny Test Report - 13 Apr 2026JY-18909-automated-reports-ask-jiminny = 873114Report TypeFREQUENCYWeeklyDailyDailyWeeklyDailyDailyDaily‹$0100% C8• Mon 20 Apr 11:41:49{03 Ask Jiminny reports© Clear all |SHARED|Kamі +1SchuSchu-LamLKanyDATE Y16/04/202616/04/202616/04/202614/04/202614/04/202614/04/202614/04/2026ACTIONSCooFLeorLeor• Сorш• СоШ• C ш...
|
NULL
|
|
63699
|
1389
|
20
|
2026-04-21T09:40:09.867786+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776764409867_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
SlackFileEditViewGoHistoryWindowHelpDOCKERO $1Sour SlackFileEditViewGoHistoryWindowHelpDOCKERO $1Source DB:NAS mount:Archive DB:Data dir:-zsh[+00m03s] • Counting sourceframes:elements:ul_events:ocr_text:meetings:[+00m03s] • Initialising tccreating tablescreating indexescreating FTS tabl[+00m04s] • Syncing data fcvideo_chunksframes (9093 rowsocr_text (5971 rcui_events (9970 гelements (687142meetings (2 rows)[+03m01s] • Updating FTS irelements_ftsframes_ftsui_events_fts[+06m41s] • Verifying DBframes:elements:ui_events:ocr_text:meetings:[+07m44s] *Copying data forsync 2026-04-20/2026-04-2110:48:54][2026-04-2110:48:54][2026-04-2110:48:54][2026-04-2110:48:54]ArchiTotalSync=====lukas@Lukas-Kovaliks-MacBodOKО $82(4.5G)-zsh• *3JiminnyProfileAll ItemsFavoritesWatchtower<› DeveloperVAULTSEmployeeEngineeringIntegration AccountsJiminnyV TAGS• 2FACSV Import 28.01.22LastPass Import 1.11.21C4udae Vit* Build full da...• *4screenpSearch in Jiminny2 results for "PLanhat"[EMAIL] log in ([EMAIL]• Support Daily - in 2h 20 m100% <78Tue 21 Apr 12:40:09Activity MonitorAll ProcessesCPUMemoryEnergyDiskNetworkProcess NameMem...ThreadsPortsPIDHelp+ New Item2269620752a Jiminny20765Employee vShareEdit40459858Planhat61937617472352321736usernamelukas.kovalik@jiminny.com6168626198password[PASSWORD_DOTS]Good2073761591websitehttps://app-eu3.planhat.com119821198410877> Last edited Wednesday, July 5, 2023 at 3:29:20 PM эrу:Userlukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas5,19 GB2,96 GB5,56 GB...
|
NULL
|
-9113243260530166107
|
NULL
|
click
|
ocr
|
NULL
|
SlackFileEditViewGoHistoryWindowHelpDOCKERO $1Sour SlackFileEditViewGoHistoryWindowHelpDOCKERO $1Source DB:NAS mount:Archive DB:Data dir:-zsh[+00m03s] • Counting sourceframes:elements:ul_events:ocr_text:meetings:[+00m03s] • Initialising tccreating tablescreating indexescreating FTS tabl[+00m04s] • Syncing data fcvideo_chunksframes (9093 rowsocr_text (5971 rcui_events (9970 гelements (687142meetings (2 rows)[+03m01s] • Updating FTS irelements_ftsframes_ftsui_events_fts[+06m41s] • Verifying DBframes:elements:ui_events:ocr_text:meetings:[+07m44s] *Copying data forsync 2026-04-20/2026-04-2110:48:54][2026-04-2110:48:54][2026-04-2110:48:54][2026-04-2110:48:54]ArchiTotalSync=====lukas@Lukas-Kovaliks-MacBodOKО $82(4.5G)-zsh• *3JiminnyProfileAll ItemsFavoritesWatchtower<› DeveloperVAULTSEmployeeEngineeringIntegration AccountsJiminnyV TAGS• 2FACSV Import 28.01.22LastPass Import 1.11.21C4udae Vit* Build full da...• *4screenpSearch in Jiminny2 results for "PLanhat"[EMAIL] log in ([EMAIL]• Support Daily - in 2h 20 m100% <78Tue 21 Apr 12:40:09Activity MonitorAll ProcessesCPUMemoryEnergyDiskNetworkProcess NameMem...ThreadsPortsPIDHelp+ New Item2269620752a Jiminny20765Employee vShareEdit40459858Planhat61937617472352321736usernamelukas.kovalik@jiminny.com6168626198password[PASSWORD_DOTS]Good2073761591websitehttps://app-eu3.planhat.com119821198410877> Last edited Wednesday, July 5, 2023 at 3:29:20 PM эrу:Userlukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas5,19 GB2,96 GB5,56 GB...
|
63697
|
|
45249
|
954
|
22
|
2026-04-17T09:27:34.272441+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776418054272_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.js~#11894 on JY-18909-automated-reports-ask-iminny kProjectvM- INICKINAL WEDNOON OCTUrE jiminny_storageM+ licenses.mdM MakefileO package-lock.json= phpstan.neon.dist= phpstan-baseline.neon<> phounit xmlTe raw_sql_query.sql© AutomatedReportsService.php© Filesystem.php© Team.php© InteractsWithPivotTable.php© RunOpportunityAiAnalysis.php$stagetrait OpportunitySyncTrait/**M+KEADME.mo* Update existing opportunityộ sonar-project.properties797= test.py1 usage<> Untitled Diagram.xml798Is vetur.config.jsM+ WEBHOOK_FILTERING_IMPLE› ih External LibrariesE® Scratches and Consolesv D Database Consoles806801802803804805ToolsWindowHelp> 0half Support Daily • in 2h 33 mAutomatedRenortsCommandTest100% C•8 • Fri 17 Apr 12:27:33© SendReportJob.php© SendReportMailJob.php© ReportController.php© TokenBuilder.php© TeamSetupController.phpphp api.php© CreateHeldActivityEvent.phpTrackProviderInstalledEvent.php© RequestGenerateReportJob.phpf OpportunitySyncTrait.phpxopportunity.php© OpportunityUpdated.php© OpportunityStageUpdated.php© EventServiceProvider.php© OpportunityPendingAiAnalysisAfterStageChanged.php© ProcessAiAutomationAnalysisResults.php© ImportOpportunityBatch.php© ImportBatchJobTrait.php© Service.phpCc W .*13 25TIT:= custom.log= laravel.logA SF [jiminny@localhost]C* scratch_1.json< Hs local liminnyalocalnosticonsole EUx© CrmEntityRepository.phpV connect.vueV Onboard.vuefii crm_configurations (EU]A console [PROD]A console [STAGING]Ma lminnv v026 49 A22 X3 X104 лprivate runccion updaceupporzunltylstring scrmla, array spropercles, array passociations: upporcunitynaccounclo = vunseoreso vexccounosassocarons..$businessProcess = $this->resolveBusinessProcess($properties('pipeline'] ?? null):$stage = $businessProcess ? $this->resolveStage($businessProcess, $properties[ 'dealstage'] ?? null) : null;16081609A32 V2 219 M V-1610-161111610=1613=16141615=16161617=1618-1619X: AutovPlaygroundpnlLy_slayes us1.n<->1: ON s.id = os.stage_idortunity_id = 7594349stage_id, s.crm_provider_id, s.nameDESC;s.cri orovoer 1or Scnale, S.reall 1or s.cri contourairon 10lis_process_stages bps 1<->1..n: ON bps.stage_id = s.idsiness_process_id = 6024ovider_id =contractsent';m stages where id IN (16352,20612, 18281, 7344, 16378,16309,5036,15223, 14535, 6293, 12098,11607)$data = $this->buildOpportunityData($properties, $accountId, $businessProcess,c consoe -u4 DEAL RISKS [EU]A DI [EU]$attributes = ['crm_configuration_id' = $this->config->getId(),ehm niaulnen h ss senminServices+,o₫|~ D DatabaseY A EU4 console 1 s 663 msfii crm_configurations 1 s 391 msv djiminny@localhostL SF4 HS_localV A PROD< console ls o0o msV A STAGINGA console& Docker• :# OutputI jininy opportqunitry stages 3inb fiminny.stagesTx,12 rowsselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc0 id T0 wuid (UUID with time-low a...P : team_id TI crm_configuration_id Y5036 6bee65e5-2c8d-44b8-8c6C-da5dc7067e0a6293 557077fd-356d-4346-aa88-bb0b4a3534467344 ae86814b-1599-4338-a90b-c09c77c3fab911607 f5fc8214-8ee6-4c57-aa92-b7e5b34f864b12098 0ch2247f-5086-49a3-8f4d-07c8d1cfb2e314535 49048c55-2d10-4721-827c-17c3ca41074b15223 2dedd6cf-144f-4d85-849f-112820c8873316309 35a2c719-358c-4f75-b256-49872c83bdb116552 [CREDIT_CARD]-0676-58525642059016278Fo8a1607-cfd9-4af4-haza-62520102224f18281 8e4230f4-8bdc-42dc-b1a4-c387550fc7d020612 c76c0076-98ce-4989-b6c0-5810e351fa62118179203354369429444457459460507555crm_provider_id Tname TI Label T95 contractsentPurchasingPurchasing151 contractsentAlignAlign175 contractsentSales Order SentSales Order Sent284 contractsentPRE APP (Formerly app made)PRE APP (Formerly app made)297 contractsentVoniVon335 contractsentMeetingMeeting346 contractsentClosed WonClosed Won365 contractsentconuractinoContracting B367 contractsent368 contractsent421 contractsent475 contractsentCommerctalsCommitted -Contract SentAwaroees. Urter uutscandingCommercialsCommitted -Contract SentAwalroeo5. Offer OutstandingoropaouultyCSVv! type TJis_selectable Y! sequence Y99.00 opportunity41.00 opportunity75.00 opportunity40.00 opportunity100.00 opportunity1.00 opportunity100.00 opportunityY0.00 O000rTUNLTY80.00 opportunity90.00 opportunity90.00 opportunity75.00 opportunityIO created5 2023-02-1:1 2023-07-114 2023-09-1'7 2024-09-0;3 2024-09-210 2025-01-0411 2025-02-2:4 2025-04-0:2 2025-04-0:5 2025-04-0.5 2025-06-1'5 2025-11-11snoricuis contlicis: Clone caret Above and 1 more snorcut contlict wich macOS shortcuts. Modify these shortcuts or change macOS system settings. // Modify Shortcuts // Don't Show Again (5 minutes ago)SUM: 18281W Windsurf Teams1619:19UTF-84 spaces...
|
NULL
|
-9112967576378392114
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.js~#11894 on JY-18909-automated-reports-ask-iminny kProjectvM- INICKINAL WEDNOON OCTUrE jiminny_storageM+ licenses.mdM MakefileO package-lock.json= phpstan.neon.dist= phpstan-baseline.neon<> phounit xmlTe raw_sql_query.sql© AutomatedReportsService.php© Filesystem.php© Team.php© InteractsWithPivotTable.php© RunOpportunityAiAnalysis.php$stagetrait OpportunitySyncTrait/**M+KEADME.mo* Update existing opportunityộ sonar-project.properties797= test.py1 usage<> Untitled Diagram.xml798Is vetur.config.jsM+ WEBHOOK_FILTERING_IMPLE› ih External LibrariesE® Scratches and Consolesv D Database Consoles806801802803804805ToolsWindowHelp> 0half Support Daily • in 2h 33 mAutomatedRenortsCommandTest100% C•8 • Fri 17 Apr 12:27:33© SendReportJob.php© SendReportMailJob.php© ReportController.php© TokenBuilder.php© TeamSetupController.phpphp api.php© CreateHeldActivityEvent.phpTrackProviderInstalledEvent.php© RequestGenerateReportJob.phpf OpportunitySyncTrait.phpxopportunity.php© OpportunityUpdated.php© OpportunityStageUpdated.php© EventServiceProvider.php© OpportunityPendingAiAnalysisAfterStageChanged.php© ProcessAiAutomationAnalysisResults.php© ImportOpportunityBatch.php© ImportBatchJobTrait.php© Service.phpCc W .*13 25TIT:= custom.log= laravel.logA SF [jiminny@localhost]C* scratch_1.json< Hs local liminnyalocalnosticonsole EUx© CrmEntityRepository.phpV connect.vueV Onboard.vuefii crm_configurations (EU]A console [PROD]A console [STAGING]Ma lminnv v026 49 A22 X3 X104 лprivate runccion updaceupporzunltylstring scrmla, array spropercles, array passociations: upporcunitynaccounclo = vunseoreso vexccounosassocarons..$businessProcess = $this->resolveBusinessProcess($properties('pipeline'] ?? null):$stage = $businessProcess ? $this->resolveStage($businessProcess, $properties[ 'dealstage'] ?? null) : null;16081609A32 V2 219 M V-1610-161111610=1613=16141615=16161617=1618-1619X: AutovPlaygroundpnlLy_slayes us1.n<->1: ON s.id = os.stage_idortunity_id = 7594349stage_id, s.crm_provider_id, s.nameDESC;s.cri orovoer 1or Scnale, S.reall 1or s.cri contourairon 10lis_process_stages bps 1<->1..n: ON bps.stage_id = s.idsiness_process_id = 6024ovider_id =contractsent';m stages where id IN (16352,20612, 18281, 7344, 16378,16309,5036,15223, 14535, 6293, 12098,11607)$data = $this->buildOpportunityData($properties, $accountId, $businessProcess,c consoe -u4 DEAL RISKS [EU]A DI [EU]$attributes = ['crm_configuration_id' = $this->config->getId(),ehm niaulnen h ss senminServices+,o₫|~ D DatabaseY A EU4 console 1 s 663 msfii crm_configurations 1 s 391 msv djiminny@localhostL SF4 HS_localV A PROD< console ls o0o msV A STAGINGA console& Docker• :# OutputI jininy opportqunitry stages 3inb fiminny.stagesTx,12 rowsselect * from opportunity_stages where opportunity_id = 7594349 order by created_at desc0 id T0 wuid (UUID with time-low a...P : team_id TI crm_configuration_id Y5036 6bee65e5-2c8d-44b8-8c6C-da5dc7067e0a6293 557077fd-356d-4346-aa88-bb0b4a3534467344 ae86814b-1599-4338-a90b-c09c77c3fab911607 f5fc8214-8ee6-4c57-aa92-b7e5b34f864b12098 0ch2247f-5086-49a3-8f4d-07c8d1cfb2e314535 49048c55-2d10-4721-827c-17c3ca41074b15223 2dedd6cf-144f-4d85-849f-112820c8873316309 35a2c719-358c-4f75-b256-49872c83bdb116552 [CREDIT_CARD]-0676-58525642059016278Fo8a1607-cfd9-4af4-haza-62520102224f18281 8e4230f4-8bdc-42dc-b1a4-c387550fc7d020612 c76c0076-98ce-4989-b6c0-5810e351fa62118179203354369429444457459460507555crm_provider_id Tname TI Label T95 contractsentPurchasingPurchasing151 contractsentAlignAlign175 contractsentSales Order SentSales Order Sent284 contractsentPRE APP (Formerly app made)PRE APP (Formerly app made)297 contractsentVoniVon335 contractsentMeetingMeeting346 contractsentClosed WonClosed Won365 contractsentconuractinoContracting B367 contractsent368 contractsent421 contractsent475 contractsentCommerctalsCommitted -Contract SentAwaroees. Urter uutscandingCommercialsCommitted -Contract SentAwalroeo5. Offer OutstandingoropaouultyCSVv! type TJis_selectable Y! sequence Y99.00 opportunity41.00 opportunity75.00 opportunity40.00 opportunity100.00 opportunity1.00 opportunity100.00 opportunityY0.00 O000rTUNLTY80.00 opportunity90.00 opportunity90.00 opportunity75.00 opportunityIO created5 2023-02-1:1 2023-07-114 2023-09-1'7 2024-09-0;3 2024-09-210 2025-01-0411 2025-02-2:4 2025-04-0:2 2025-04-0:5 2025-04-0.5 2025-06-1'5 2025-11-11snoricuis contlicis: Clone caret Above and 1 more snorcut contlict wich macOS shortcuts. Modify these shortcuts or change macOS system settings. // Modify Shortcuts // Don't Show Again (5 minutes ago)SUM: 18281W Windsurf Teams1619:19UTF-84 spaces...
|
NULL
|
|
31939
|
648
|
37
|
2026-04-16T06:44:23.492336+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321863492_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
SlackFileEditViewGoHistoryWindowHelp> 0(ah)• 0- SlackFileEditViewGoHistoryWindowHelp> 0(ah)• 0-zshDOCKER• 881DEV (-zsh)О ₴2APP (-zsh)• хзec2-user@ip-10-...0 84-zsh• 85lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe/data/data/2026-04-15 $ sqlite3 ~/.screenpipe/db.sqlite"SELECTMIN(f.timestamp) ASstart_time,MAX(f.timestamp) ASend_timeFROM framesfJOINvideo_chunks v ON f.video_chunk_id = v.idWHERE v.file_path LIKE*%compact_monitor_2_1776148769344.mp4%';2026-04-14T06:24:34.056771+00:0012026-04-14T06:28:52.607990+00:00lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe/data/data/2026-04-15 $ sqlite3 ~/.screenpipe/db.sqlite"SELECT DISTINCT v.file_pathFROM frames fJOIN video_chunks v ON f.video_chunk_id = v.idWHEREf.timestamp >='2026-04-15T07:00:00+00:00'AND f.timestamp <=' 2026-04-15T07:05:00+00:00' ;/Users/lukas/.screenpipe/data/data/2026-04-15/compact_monitor_1_1776237284692.mp4/Users/lukas/.screenpipe/data/data/2026-04-15/compact_monitor_2_1776237291726.mp4/Users/lukas/.screenpipe/data/data/2026-04-15/compact_monitor_1_1776237595554.mp4/Users/lukas/.screenpipe/data/data/2026-04-15/compact_monitor_2_1776237598300.mp4lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-15 $Daily - Platform - in 1 m100% L28Thu 16 Apr 9:44:23-ZSDaily - Platformin 1m - 09:45-10:05Ci Join Google Meet...
|
NULL
|
-9112749609540736736
|
NULL
|
click
|
ocr
|
NULL
|
SlackFileEditViewGoHistoryWindowHelp> 0(ah)• 0- SlackFileEditViewGoHistoryWindowHelp> 0(ah)• 0-zshDOCKER• 881DEV (-zsh)О ₴2APP (-zsh)• хзec2-user@ip-10-...0 84-zsh• 85lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe/data/data/2026-04-15 $ sqlite3 ~/.screenpipe/db.sqlite"SELECTMIN(f.timestamp) ASstart_time,MAX(f.timestamp) ASend_timeFROM framesfJOINvideo_chunks v ON f.video_chunk_id = v.idWHERE v.file_path LIKE*%compact_monitor_2_1776148769344.mp4%';2026-04-14T06:24:34.056771+00:0012026-04-14T06:28:52.607990+00:00lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe/data/data/2026-04-15 $ sqlite3 ~/.screenpipe/db.sqlite"SELECT DISTINCT v.file_pathFROM frames fJOIN video_chunks v ON f.video_chunk_id = v.idWHEREf.timestamp >='2026-04-15T07:00:00+00:00'AND f.timestamp <=' 2026-04-15T07:05:00+00:00' ;/Users/lukas/.screenpipe/data/data/2026-04-15/compact_monitor_1_1776237284692.mp4/Users/lukas/.screenpipe/data/data/2026-04-15/compact_monitor_2_1776237291726.mp4/Users/lukas/.screenpipe/data/data/2026-04-15/compact_monitor_1_1776237595554.mp4/Users/lukas/.screenpipe/data/data/2026-04-15/compact_monitor_2_1776237598300.mp4lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-15 $Daily - Platform - in 1 m100% L28Thu 16 Apr 9:44:23-ZSDaily - Platformin 1m - 09:45-10:05Ci Join Google Meet...
|
31936
|
|
44407
|
940
|
7
|
2026-04-17T08:46:35.747262+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776415595747_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProjectv© PlaybookCategoryRepo© PlaybookRepository.php© PlaylistActivity Repositor©PlaylistRepository.php® PlaylistShareRepositoryQuestionRepository.php© RoleChangeEventRepos© RoleRepository.php© SearchRepository.php© SnapshotRepository.ph|© SocialAccountRepositor© StageRepository.php© SubscriptionSetRepositTaskRepository.php• TeamAiContextRepositc© TeamDomainsRepositor© TeamInsightsRepository© TeamRepository.php© ThemeRepository.php(©) TimezoneRepository.ph© TopicRepository.php© TopicTriggerRepository© TrackRepository.php© TranscriptionModelLoce© TranscriptionRepository© TranscriptionSummaryFl© UserRepository.php© VocabularyRepository.p> M7 Rulesv M Services> _ ActivityD AjReportsD AvatarCalendar[ ConferenceD CrmD BullhornClose_ CopperCrmooiectsM DecorateActivitv• Dummy→ HelpersD Hubspot[J AccountSyncStra› D ActionsC ContactSyncStrat>UDTOTrieldsD JournalM MetadataOpportunitySync!> M7Pagination› ProspectSearchS> D Redisv D ServiceTraits€ OpportunitySy& SyncCrmEntiti© SyncFieldsTra© AutomatedReportsService.php© SendReportJob.phpTokenBuilder.php• TeamSetupController.phppnp apl.ono© TrackProviderInstalledEvent.php© ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpC Opportunity.phpC OpportunityUpdated.phpOpoonunitystadeupaaled.ono© SendReportMailJob.php© ReportController.phpFilesystem.php• Team.phpAutomatedReportsCallbackService.php© SyncOpportunity.phpC EventServiceProvider.phpC CreateHeldActivityEvent.php€ OpportunitySyncTrait.php x© OpportunityPendingAiAnalysisAfterStageChanged.php© ImportOpportunityBatch.php© ImportBatchJobTrait.php(C) AutomatedReport.php© RunOpportunityAiAnalysis.php€ HasAttributes.php© ProcessAiAutomationAnalysisResults.php© Service.phpAutomatedReportResult.php"podcast_audio_ur!"X P Cc W.*0 resultstrait OpportunitySyncTraitprivate function build0pportunityData(838903904905906908909710911912913914915916917919920921922923924925926927928929930754700934936937941744943944945946947432 X2 X19 ^return $data;2 usagesonvare tuncron reso vebusnessprocessrscruno morpeunelo, rbusnessrrocessif ($pipelineld === null) {return null;if (isset($this->cachedBusinessProcesses[$pipelineIdl)) $return $this->cachedBusinessProcesses[$pipelineId];$businessProcess = $this->getBusinessProcess($pipelineId);if (! $businessProcess instanceof BusinessProcess) {$this->importstages();$businessProcess = $this->getBusinessProcess($pipelineId);if (! $businessProcess instanceof BusinessProcess) {$this->logger->info(' [HubSpot] Deal is not attached to a pipeline','pipeline' => $pipelineld]$this->cachedBusinessProcesses[$pipelineId] = $businessProcess;return $businessProcess;2 usagesprivate function getBusinessProcess(string $pipelineId): ?BusinessProcess{...}2 usagesprivate tunccion resouvestage, bustnessprocess soustnessprocess, asuring estagela). totageif (empty($stageId)) {reLurl nuLeHelper Code will help IDE to understand your Laravel app code. // Generate // Don't Show Anymore (today 8:59)E custom.log= laravel.logA SF [jiminny@localhost]C scratch_1jsonV Onboard.vue< Hs local liminnyalocalnostconsole EUl© CrmEntityRepository.php XA console [STAGING]class CrmEntityRepository281): Opportunity {...+fi crm_configurations [EU]A console [PROD]4632AV5501332333334335336=337338—339340341=342343_356—357E370371377_378=3793803813823833843853863963974034044054064074084094104234227450=4362 usagespublic function upsertOpportunity(array $attributes, array $data): Opp/** @var ?Opportunity $opportunity */$opportunity = Opportunity: :withTrashed() ->where($attributes)->firif ($opportunity === null) {$opportunity = Opportunity::create($data);felse {$opportunity->update($data);return Sopportunity;public function importstage(Configuration $configuration, string $objeLusagespublic function importBusinessProcess(Configuration $configuration,public function findAccountByExternalId(Configuration $configuration,/*** Find multiple accounts by their external CRM IDS* oocran contqurcson ocontourccion*oodran arreusscrnos oecirrovderos* Oreturn Collection<Account>s usagespublic function findAccountsByExternalIds(Configuration $configurationpublic function findContactByExternalId(Configuration $configuration,/*** Find multiple contacts by their external CRM IDS* @param Configuration Sconfiguration* Oparam array<string> $crmProviderIds* @return Collection<Contact>Tusdyepublic function findContactsByExternalIds(Configuration $configurationpubLic tuncclon tindleadbyexcernalla contiguracion scontiguracion, sur14 usagespublic function find0pportunityByExternalId(Configuration $configurati> 0Support Daily • in 3h 14 mAL AutomatedReportsCommandTestv100% C•8 • Fri 17 Apr 11:46:35CascadeAutomated Report Retr© Investigating HubSpbuildOpportunityData( only sets stage id if $stage is non-null (line 893-895). But upsertOpportunity() always calls $opportunity→>update($data) with whatever is in $data.In updateOpportunity()- $stage can be null when $businessProcess is null (line 802):w0 php$stage = $businessProcess ? $this→>resolveStage(...) : null;When $stage is null, stage_id is absent from $data entirely. But update($data) doesn't mean "keepexisting value" for absent keys — it just doesn't touch that column. So stage_id is preserved.but nere's the acrual osclllation source — resolvestage caches nuule• OpportunitySyncTrait.php:969$this->cachedStages [$cacheKey] = $stage; // caches null after importStages() is calledThis means:Sync run 1 (new Service instance, empty cache): stage not in DB → importStages() called $stage= nul → stage 1d nor seuin Scata → vocatel coeshrouch stage 1. → 0ooonunlv keeoswhatever stage_id was set previously (or null )Sync run 2 (fresh instance, empty cache again): stage IS in DB now (imported in run 1) → resolves tostage 456 → stage_id = 456 written → OpportunityStageUpdated firesSync run 3: same as run 2... unless importStages() somehow re-runs and overwrites the stagestable witn alterentibsThe real oscillation: importStages() recreates stages with new DB IDsService.php:459-469— importStages() uses update0rCreate on stages:D php$stage = $this->config->stages ()→>update0rCreate(['crm_provider_id' => $sl'id'],1, [...1);This is fine — it reuses the same DB id . BUT resolveBusinessProcess() also calls importStages() whena plpeline is missing uine g20. ll a olpeline gets recrealed with a new BusinessProcess Db recora, the business_process_id → stage relationship could point to a different stage DB ID.Most likely actual cause: Two different sync paths are running concurrently or in rapid succession:1. SyncObjects scheduled job → processes the deal → writes stage_id = 4562. SvncOpportunity iob (triaaered by somethina else) → resolves via a different businessProcessinstance → writes stage id = 123lnese wo loos run noevencenty wiun no coorelnation. ooun calllino uoser Uoportuniv on the sameopportunity, alternating between two valid stage IDs that belong to different BusinessProcess recordspolntine lo tne same muospot olpellne - le. cupllcare businessprocess rows in the Db for the same chiprovider_id.Command docke• dockercontia =dinker_lande 1php artisan tanken -executesfiguration::whereHas ('team', fn(\$q) => \$q-Ide létedbp»crPHP_EOL;Run 2i+Ask anything (24L)+ <>Code Claude Sonnet 4.6Winasun leal( 4 spaces...
|
NULL
|
-9112305449806279417
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProjectv© PlaybookCategoryRepo© PlaybookRepository.php© PlaylistActivity Repositor©PlaylistRepository.php® PlaylistShareRepositoryQuestionRepository.php© RoleChangeEventRepos© RoleRepository.php© SearchRepository.php© SnapshotRepository.ph|© SocialAccountRepositor© StageRepository.php© SubscriptionSetRepositTaskRepository.php• TeamAiContextRepositc© TeamDomainsRepositor© TeamInsightsRepository© TeamRepository.php© ThemeRepository.php(©) TimezoneRepository.ph© TopicRepository.php© TopicTriggerRepository© TrackRepository.php© TranscriptionModelLoce© TranscriptionRepository© TranscriptionSummaryFl© UserRepository.php© VocabularyRepository.p> M7 Rulesv M Services> _ ActivityD AjReportsD AvatarCalendar[ ConferenceD CrmD BullhornClose_ CopperCrmooiectsM DecorateActivitv• Dummy→ HelpersD Hubspot[J AccountSyncStra› D ActionsC ContactSyncStrat>UDTOTrieldsD JournalM MetadataOpportunitySync!> M7Pagination› ProspectSearchS> D Redisv D ServiceTraits€ OpportunitySy& SyncCrmEntiti© SyncFieldsTra© AutomatedReportsService.php© SendReportJob.phpTokenBuilder.php• TeamSetupController.phppnp apl.ono© TrackProviderInstalledEvent.php© ActivityLogged.php© RequestGenerateAskJiminnyReportJob.phpC Opportunity.phpC OpportunityUpdated.phpOpoonunitystadeupaaled.ono© SendReportMailJob.php© ReportController.phpFilesystem.php• Team.phpAutomatedReportsCallbackService.php© SyncOpportunity.phpC EventServiceProvider.phpC CreateHeldActivityEvent.php€ OpportunitySyncTrait.php x© OpportunityPendingAiAnalysisAfterStageChanged.php© ImportOpportunityBatch.php© ImportBatchJobTrait.php(C) AutomatedReport.php© RunOpportunityAiAnalysis.php€ HasAttributes.php© ProcessAiAutomationAnalysisResults.php© Service.phpAutomatedReportResult.php"podcast_audio_ur!"X P Cc W.*0 resultstrait OpportunitySyncTraitprivate function build0pportunityData(838903904905906908909710911912913914915916917919920921922923924925926927928929930754700934936937941744943944945946947432 X2 X19 ^return $data;2 usagesonvare tuncron reso vebusnessprocessrscruno morpeunelo, rbusnessrrocessif ($pipelineld === null) {return null;if (isset($this->cachedBusinessProcesses[$pipelineIdl)) $return $this->cachedBusinessProcesses[$pipelineId];$businessProcess = $this->getBusinessProcess($pipelineId);if (! $businessProcess instanceof BusinessProcess) {$this->importstages();$businessProcess = $this->getBusinessProcess($pipelineId);if (! $businessProcess instanceof BusinessProcess) {$this->logger->info(' [HubSpot] Deal is not attached to a pipeline','pipeline' => $pipelineld]$this->cachedBusinessProcesses[$pipelineId] = $businessProcess;return $businessProcess;2 usagesprivate function getBusinessProcess(string $pipelineId): ?BusinessProcess{...}2 usagesprivate tunccion resouvestage, bustnessprocess soustnessprocess, asuring estagela). totageif (empty($stageId)) {reLurl nuLeHelper Code will help IDE to understand your Laravel app code. // Generate // Don't Show Anymore (today 8:59)E custom.log= laravel.logA SF [jiminny@localhost]C scratch_1jsonV Onboard.vue< Hs local liminnyalocalnostconsole EUl© CrmEntityRepository.php XA console [STAGING]class CrmEntityRepository281): Opportunity {...+fi crm_configurations [EU]A console [PROD]4632AV5501332333334335336=337338—339340341=342343_356—357E370371377_378=3793803813823833843853863963974034044054064074084094104234227450=4362 usagespublic function upsertOpportunity(array $attributes, array $data): Opp/** @var ?Opportunity $opportunity */$opportunity = Opportunity: :withTrashed() ->where($attributes)->firif ($opportunity === null) {$opportunity = Opportunity::create($data);felse {$opportunity->update($data);return Sopportunity;public function importstage(Configuration $configuration, string $objeLusagespublic function importBusinessProcess(Configuration $configuration,public function findAccountByExternalId(Configuration $configuration,/*** Find multiple accounts by their external CRM IDS* oocran contqurcson ocontourccion*oodran arreusscrnos oecirrovderos* Oreturn Collection<Account>s usagespublic function findAccountsByExternalIds(Configuration $configurationpublic function findContactByExternalId(Configuration $configuration,/*** Find multiple contacts by their external CRM IDS* @param Configuration Sconfiguration* Oparam array<string> $crmProviderIds* @return Collection<Contact>Tusdyepublic function findContactsByExternalIds(Configuration $configurationpubLic tuncclon tindleadbyexcernalla contiguracion scontiguracion, sur14 usagespublic function find0pportunityByExternalId(Configuration $configurati> 0Support Daily • in 3h 14 mAL AutomatedReportsCommandTestv100% C•8 • Fri 17 Apr 11:46:35CascadeAutomated Report Retr© Investigating HubSpbuildOpportunityData( only sets stage id if $stage is non-null (line 893-895). But upsertOpportunity() always calls $opportunity→>update($data) with whatever is in $data.In updateOpportunity()- $stage can be null when $businessProcess is null (line 802):w0 php$stage = $businessProcess ? $this→>resolveStage(...) : null;When $stage is null, stage_id is absent from $data entirely. But update($data) doesn't mean "keepexisting value" for absent keys — it just doesn't touch that column. So stage_id is preserved.but nere's the acrual osclllation source — resolvestage caches nuule• OpportunitySyncTrait.php:969$this->cachedStages [$cacheKey] = $stage; // caches null after importStages() is calledThis means:Sync run 1 (new Service instance, empty cache): stage not in DB → importStages() called $stage= nul → stage 1d nor seuin Scata → vocatel coeshrouch stage 1. → 0ooonunlv keeoswhatever stage_id was set previously (or null )Sync run 2 (fresh instance, empty cache again): stage IS in DB now (imported in run 1) → resolves tostage 456 → stage_id = 456 written → OpportunityStageUpdated firesSync run 3: same as run 2... unless importStages() somehow re-runs and overwrites the stagestable witn alterentibsThe real oscillation: importStages() recreates stages with new DB IDsService.php:459-469— importStages() uses update0rCreate on stages:D php$stage = $this->config->stages ()→>update0rCreate(['crm_provider_id' => $sl'id'],1, [...1);This is fine — it reuses the same DB id . BUT resolveBusinessProcess() also calls importStages() whena plpeline is missing uine g20. ll a olpeline gets recrealed with a new BusinessProcess Db recora, the business_process_id → stage relationship could point to a different stage DB ID.Most likely actual cause: Two different sync paths are running concurrently or in rapid succession:1. SyncObjects scheduled job → processes the deal → writes stage_id = 4562. SvncOpportunity iob (triaaered by somethina else) → resolves via a different businessProcessinstance → writes stage id = 123lnese wo loos run noevencenty wiun no coorelnation. ooun calllino uoser Uoportuniv on the sameopportunity, alternating between two valid stage IDs that belong to different BusinessProcess recordspolntine lo tne same muospot olpellne - le. cupllcare businessprocess rows in the Db for the same chiprovider_id.Command docke• dockercontia =dinker_lande 1php artisan tanken -executesfiguration::whereHas ('team', fn(\$q) => \$q-Ide létedbp»crPHP_EOL;Run 2i+Ask anything (24L)+ <>Code Claude Sonnet 4.6Winasun leal( 4 spaces...
|
44405
|
|
70125
|
1634
|
5
|
2026-04-22T09:46:32.537539+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776851192537_m1.jpg...
|
Firefox
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira — Work...
|
True
|
jiminny.atlassian.net/jira/software/c/projects/JY/ jiminny.atlassian.net/jira/software/c/projects/JY/boards/37...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Close tab
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
CRM issues - Apr 22 - Chat
CRM issues - Apr 22 - Chat
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - /app
Pipelines - /app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Edit - Engineering - Confluence
Edit - Engineering - Confluence
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
CloudWatch | us-east-2
CloudWatch | us-east-2
Usage | Windsurf
Usage | Windsurf
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
Workers | Datadog
Workers | Datadog
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Space navigation
Space navigation
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New)
Jiminny (New)
Platform Team
Platform Team
Add people
Add people
Board actions
Board actions
Share
Automation
Give feedback
Give feedback
Enter full screen
Enter full screen
Summary
Summary
Timeline
Timeline
Backlog
Backlog
Active sprints
Active sprints
Calendar
Calendar
Reports
Reports
Testing Board
Testing Board
List
List
Forms
Forms
Components
Components
Development
Development
Code
Code
Security
Security
Releases
Releases
6 more tabs
More
6
Add to navigation
As you type to search or apply filters, the board updates with work items to match.
Search on current page
Filter by assignee
Filter assignees by Lukas Kovalik
Filter assignees by Nikolay Ivanov
Filter assignees by Nikolay Nikolov
Filter assignees by Nikolay Yankov
Filter assignees by Steliyan Georgiev
Filter assignees by Unassigned
Epic
Epic
Type
Type
Label
Label
Quick filters
Quick filters
Complete sprint
Complete sprint
Sprint details
Sprint details
Group by Queries
Group
: Queries
Sprint insights
Sprint insights
View settings
View settings
More actions
More actions
Ready For DEV
READY FOR DEV
5
JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.
Investigate and fix why exceed Fontawesome package limits
MAINTENANCE
Ready for Dev
JY-20564
JY-20564
1
pull request
JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.
Notify a user before the AJ Report expires
AJ REPORTS
Backlog
JY-20508
JY-20508
1
JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.
Upgrade BE libraries - Apr
MAINTENANCE
Backlog
JY-19957
JY-19957
1
JY-20724 Fix DB Accounts Map. Use the enter key to load the work item.
Fix DB Accounts Map
REDUCE CHURN
Backlog
JY-20724
JY-20724
JY-20725 Sentry Hubspot Rate limit . Use the enter key to load the work item.
Sentry Hubspot Rate limit
Backlog
JY-20725
JY-20725
In DEV
IN DEV
5
JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.
Rework Nudges - Phase 2 - change Nudges to use the indexed_at period
COST-EFFECTIVE AND FASTER NUDGES
In Dev
JY-20489
JY-20489
5
JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.
AI Reports > Empty page design and promotion
AJ REPORTS
In Dev
JY-20372
JY-20372
6
pull request
JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.
Send email notification when the report is not generated
AJ REPORTS
In Dev
JY-20157
JY-20157
2
JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.
AI Review - Q1 - Summary/Action items/Key Points
GROWTH - MAINTAIN OUR COMPETITIVE POSITION
In Dev
JY-20566
JY-20566
3
JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.
Sync opportunities without a local owner (user_id is null)
PLATFORM STABILITY
In Dev
JY-20352
JY-20352
4
Code Review
CODE REVIEW
1
Create work item
JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.
Change forever nudges to 1 year expiration
COST-EFFECTIVE AND FASTER NUDGES
Code Review
JY-9712
JY-9712
4.5
pull request
Create work item in Code Review
Create
Blocked
BLOCKED
Create work item in Blocked
Create
QA
QA
1
Create work item
JY-18909 [Part2] Automated reports with Ask Jiminny. Use the enter key to load the work item.
[Part2] Automated reports with Ask Jiminny
AJ REPORTS
Ready for QA
AI
BE
FE
QA
JY-18909
JY-18909
8
Successful deployment to production.
Create work item in QA
Create
PO Acceptance
PO ACCEPTANCE
Create work item in PO Acceptance
Create
Deploy
DEPLOY
9
JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.
Evaluation for AI Activity Types
AUTO-DETECTED ACTIVITY TYPE
Deployed
JY-19798
JY-19798
1
Successful deployment to production.
JY-20553 Delays in CRM Sync. Use the enter key to load the work item.
Delays in CRM Sync
PLATFORM STABILITY
Deployed
JY-20553
JY-20553
3.5
merged pull request
JY-20632 Prepare fallback with email for SSO for `persistent` name_id_format. Use the enter key to load the work item.
Prepare fallback with email for SSO for `persistent` name_id_format
REDUCE CHURN
Closed
JY-20632
JY-20632
1
merged pull request
JY-20278 AJ Panorama> Don't show internal errors to customers. Use the enter key to load the work item.
AJ Panorama> Don't show internal errors to customers
ASK ANYTHING ON ANYTHING
Deployed
Prophet
JY-20278
JY-20278
1
Successful deployment to production.
JY-19967 Upgrade Python and libraries - Apr. Use the enter key to load the work item.
Upgrade Python and libraries - Apr
MAINTENANCE
Deployed
JY-19967
JY-19967
1
Successful deployment to production.
JY-20681 CLONE - [Team insights] Filter gets reset automatically. Use the enter key to load the work item.
CLONE - [Team insights] Filter gets reset automatically
SUPPORT TICKETS
Deployed
JY-20681
JY-20681
0.5
merged pull request
JY-20692 Issue with reconnecting Zoho. Use the enter key to load the work item.
Issue with reconnecting Zoho
SUPPORT TICKETS
Deployed
JY-20692
JY-20692
2
merged pull request
JY-20696 [Tech Day] Improve Dependabot Bot & Experiment with Github Actions. Use the enter key to load the work item.
[Tech Day] Improve Dependabot Bot & Experiment with Github Actions
Closed
JY-20696
JY-20696
0
JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.
Les Mills activity types not pulling in
SUPPORT TICKETS
Deployed
JY-20698
JY-20698
1
merged pull request
Open Rovo Chat
Open Rovo Chat...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CRM issues - Apr 22 - Chat","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CRM issues - Apr 22 - Chat","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - /app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - /app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Formalize","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Formalize","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Search results: calendar | Jiminny Help Center","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search results: calendar | Jiminny Help Center","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Edit - Engineering - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit - Engineering - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | us-east-2","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Usage | Windsurf","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Usage | Windsurf","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Workers | Datadog","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Workers | Datadog","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.028819444,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.051736113,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.075,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.09826389,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.121527776,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Space navigation","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Space navigation","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXMenuButton","text":"Create board","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More spaces","depth":17,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Platform Team","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform Team","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add people","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add people","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Share","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Automation","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give feedback","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Give feedback","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Enter full screen","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enter full screen","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Summary","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Timeline","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Timeline","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Backlog","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Backlog","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Active sprints","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Active sprints","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Calendar","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Calendar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Testing Board","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Testing Board","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"List","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"List","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Forms","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Forms","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Components","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Components","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Development","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Development","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Releases","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Releases","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"6 more tabs","depth":11,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add to navigation","depth":11,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"As you type to search or apply filters, the board updates with work items to match.","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search on current page","depth":11,"placeholder":"Search board","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Filter by assignee","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Filter assignees by Lukas Kovalik","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Ivanov","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Nikolov","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Yankov","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Steliyan Georgiev","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Unassigned","depth":11,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Epic","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Epic","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Type","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Type","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Label","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Label","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Quick filters","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Quick filters","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Complete sprint","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Complete sprint","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Sprint details","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sprint details","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Group by Queries","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Group","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":": Queries","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sprint insights","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sprint insights","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"View settings","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View settings","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Ready For DEV","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"READY FOR DEV","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Investigate and fix why exceed Fontawesome package limits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MAINTENANCE","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ready for Dev","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20564","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20564","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notify a user before the AJ Report expires","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20508","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20508","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Upgrade BE libraries - Apr","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MAINTENANCE","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-19957","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19957","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20724 Fix DB Accounts Map. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix DB Accounts Map","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"REDUCE CHURN","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20724","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20724","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20725 Sentry Hubspot Rate limit . Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sentry Hubspot Rate limit","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20725","depth":17,"bounds":{"left":0.39548612,"top":0.0,"width":0.03888889,"height":0.017777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20725","depth":19,"bounds":{"left":0.39548612,"top":0.0,"width":0.03888889,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"In DEV","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"IN DEV","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rework Nudges - Phase 2 - change Nudges to use the indexed_at period","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"COST-EFFECTIVE AND FASTER NUDGES","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Reports > Empty page design and promotion","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20372","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20372","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Send email notification when the report is not generated","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Review - Q1 - Summary/Action items/Key Points","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GROWTH - MAINTAIN OUR COMPETITIVE POSITION","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20566","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20566","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sync opportunities without a local owner (user_id is null)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PLATFORM STABILITY","depth":18,"bounds":{"left":0.546875,"top":0.0,"width":0.087847225,"height":0.015555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":17,"bounds":{"left":0.54409724,"top":0.0,"width":0.02638889,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20352","depth":17,"bounds":{"left":0.55798614,"top":0.057777777,"width":0.039583333,"height":0.017777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20352","depth":19,"bounds":{"left":0.55798614,"top":0.058333334,"width":0.039583333,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.54965276,"top":0.018333333,"width":0.0055555557,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Code Review","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"CODE REVIEW","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Change forever nudges to 1 year expiration","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"COST-EFFECTIVE AND FASTER NUDGES","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code Review","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-9712","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4.5","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item in Code Review","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Blocked","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BLOCKED","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item in Blocked","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"QA","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QA","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-18909 [Part2] Automated reports with Ask Jiminny. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Part2] Automated reports with Ask Jiminny","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ready for QA","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BE","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FE","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QA","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-18909","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Successful deployment to production.","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item in QA","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"PO Acceptance","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PO ACCEPTANCE","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item in PO Acceptance","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Deploy","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DEPLOY","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Evaluation for AI Activity Types","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AUTO-DETECTED ACTIVITY TYPE","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-19798","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19798","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Successful deployment to production.","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20553 Delays in CRM Sync. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delays in CRM Sync","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PLATFORM STABILITY","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20553","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20553","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.5","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20632 Prepare fallback with email for SSO for `persistent` name_id_format. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Prepare fallback with email for SSO for `persistent` name_id_format","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"REDUCE CHURN","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Closed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20632","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20632","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20278 AJ Panorama> Don't show internal errors to customers. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AJ Panorama> Don't show internal errors to customers","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ASK ANYTHING ON ANYTHING","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Prophet","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20278","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20278","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Successful deployment to production.","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-19967 Upgrade Python and libraries - Apr. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Upgrade Python and libraries - Apr","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MAINTENANCE","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-19967","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19967","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Successful deployment to production.","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20681 CLONE - [Team insights] Filter gets reset automatically. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CLONE - [Team insights] Filter gets reset automatically","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SUPPORT TICKETS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20681","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20681","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0.5","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20692 Issue with reconnecting Zoho. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issue with reconnecting Zoho","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SUPPORT TICKETS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20692","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20692","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20696 [Tech Day] Improve Dependabot Bot & Experiment with Github Actions. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Tech Day] Improve Dependabot Bot & Experiment with Github Actions","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Closed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20696","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20696","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Les Mills activity types not pulling in","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SUPPORT TICKETS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20698","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Rovo Chat","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open Rovo Chat","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-9112172768074156898
|
5978645657223874695
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Close tab
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
CRM issues - Apr 22 - Chat
CRM issues - Apr 22 - Chat
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - /app
Pipelines - /app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Edit - Engineering - Confluence
Edit - Engineering - Confluence
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
CloudWatch | us-east-2
CloudWatch | us-east-2
Usage | Windsurf
Usage | Windsurf
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
Workers | Datadog
Workers | Datadog
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Space navigation
Space navigation
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New)
Jiminny (New)
Platform Team
Platform Team
Add people
Add people
Board actions
Board actions
Share
Automation
Give feedback
Give feedback
Enter full screen
Enter full screen
Summary
Summary
Timeline
Timeline
Backlog
Backlog
Active sprints
Active sprints
Calendar
Calendar
Reports
Reports
Testing Board
Testing Board
List
List
Forms
Forms
Components
Components
Development
Development
Code
Code
Security
Security
Releases
Releases
6 more tabs
More
6
Add to navigation
As you type to search or apply filters, the board updates with work items to match.
Search on current page
Filter by assignee
Filter assignees by Lukas Kovalik
Filter assignees by Nikolay Ivanov
Filter assignees by Nikolay Nikolov
Filter assignees by Nikolay Yankov
Filter assignees by Steliyan Georgiev
Filter assignees by Unassigned
Epic
Epic
Type
Type
Label
Label
Quick filters
Quick filters
Complete sprint
Complete sprint
Sprint details
Sprint details
Group by Queries
Group
: Queries
Sprint insights
Sprint insights
View settings
View settings
More actions
More actions
Ready For DEV
READY FOR DEV
5
JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.
Investigate and fix why exceed Fontawesome package limits
MAINTENANCE
Ready for Dev
JY-20564
JY-20564
1
pull request
JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.
Notify a user before the AJ Report expires
AJ REPORTS
Backlog
JY-20508
JY-20508
1
JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.
Upgrade BE libraries - Apr
MAINTENANCE
Backlog
JY-19957
JY-19957
1
JY-20724 Fix DB Accounts Map. Use the enter key to load the work item.
Fix DB Accounts Map
REDUCE CHURN
Backlog
JY-20724
JY-20724
JY-20725 Sentry Hubspot Rate limit . Use the enter key to load the work item.
Sentry Hubspot Rate limit
Backlog
JY-20725
JY-20725
In DEV
IN DEV
5
JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.
Rework Nudges - Phase 2 - change Nudges to use the indexed_at period
COST-EFFECTIVE AND FASTER NUDGES
In Dev
JY-20489
JY-20489
5
JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.
AI Reports > Empty page design and promotion
AJ REPORTS
In Dev
JY-20372
JY-20372
6
pull request
JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.
Send email notification when the report is not generated
AJ REPORTS
In Dev
JY-20157
JY-20157
2
JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.
AI Review - Q1 - Summary/Action items/Key Points
GROWTH - MAINTAIN OUR COMPETITIVE POSITION
In Dev
JY-20566
JY-20566
3
JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.
Sync opportunities without a local owner (user_id is null)
PLATFORM STABILITY
In Dev
JY-20352
JY-20352
4
Code Review
CODE REVIEW
1
Create work item
JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.
Change forever nudges to 1 year expiration
COST-EFFECTIVE AND FASTER NUDGES
Code Review
JY-9712
JY-9712
4.5
pull request
Create work item in Code Review
Create
Blocked
BLOCKED
Create work item in Blocked
Create
QA
QA
1
Create work item
JY-18909 [Part2] Automated reports with Ask Jiminny. Use the enter key to load the work item.
[Part2] Automated reports with Ask Jiminny
AJ REPORTS
Ready for QA
AI
BE
FE
QA
JY-18909
JY-18909
8
Successful deployment to production.
Create work item in QA
Create
PO Acceptance
PO ACCEPTANCE
Create work item in PO Acceptance
Create
Deploy
DEPLOY
9
JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.
Evaluation for AI Activity Types
AUTO-DETECTED ACTIVITY TYPE
Deployed
JY-19798
JY-19798
1
Successful deployment to production.
JY-20553 Delays in CRM Sync. Use the enter key to load the work item.
Delays in CRM Sync
PLATFORM STABILITY
Deployed
JY-20553
JY-20553
3.5
merged pull request
JY-20632 Prepare fallback with email for SSO for `persistent` name_id_format. Use the enter key to load the work item.
Prepare fallback with email for SSO for `persistent` name_id_format
REDUCE CHURN
Closed
JY-20632
JY-20632
1
merged pull request
JY-20278 AJ Panorama> Don't show internal errors to customers. Use the enter key to load the work item.
AJ Panorama> Don't show internal errors to customers
ASK ANYTHING ON ANYTHING
Deployed
Prophet
JY-20278
JY-20278
1
Successful deployment to production.
JY-19967 Upgrade Python and libraries - Apr. Use the enter key to load the work item.
Upgrade Python and libraries - Apr
MAINTENANCE
Deployed
JY-19967
JY-19967
1
Successful deployment to production.
JY-20681 CLONE - [Team insights] Filter gets reset automatically. Use the enter key to load the work item.
CLONE - [Team insights] Filter gets reset automatically
SUPPORT TICKETS
Deployed
JY-20681
JY-20681
0.5
merged pull request
JY-20692 Issue with reconnecting Zoho. Use the enter key to load the work item.
Issue with reconnecting Zoho
SUPPORT TICKETS
Deployed
JY-20692
JY-20692
2
merged pull request
JY-20696 [Tech Day] Improve Dependabot Bot & Experiment with Github Actions. Use the enter key to load the work item.
[Tech Day] Improve Dependabot Bot & Experiment with Github Actions
Closed
JY-20696
JY-20696
0
JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.
Les Mills activity types not pulling in
SUPPORT TICKETS
Deployed
JY-20698
JY-20698
1
merged pull request
Open Rovo Chat
Open Rovo Chat...
|
70123
|
|
67138
|
1511
|
42
|
2026-04-21T15:27:08.105936+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776785228105_m1.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
app.staging.jiminny.com/ai-reports
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
Edit - Engineering - Confluence
Edit - Engineering - Confluence
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 874667
27
27
AI Reports
AI Reports
Ask Jiminny reports
Ask Jiminny reports
Report name
Period
Report Type Report Type
Report Type
Report Type
Clear all
NAME
FREQUENCY
SHARED
DATE
ACTIONS
You are currently impersonating Aneliya Angelova
Clear
Filter URLs
Pause/Resume recording network log
New Request
Search
Request Blocking
Disable Cache
Disable Cache
No Throttling
Network Settings
All
HTML
CSS
JS
XHR
Fonts
Images
Media
WS
Other
Status
Status
Method
Method
Domain
Domain
File
File
Initiator
Initiator
Type
Type
Transferred
Transferred
Size
Size
0 ms
0 ms
200
GET
app.staging.jiminny.com
automated-reports?page=1&sort_column=generated_at&sort_direction=desc
xhr
json
5.89 kB
27.02 kB
632 ms
200
POST
o36719.ingest.sentry.io
/api/5627310/envelope/?sentry_version=7&sentry_key=8cba05ef3e3f4f68a86d3a6d31465998&sentry_client=sentry.javascript.vue/10.43.0
fetch
json
520 B
2 B
236 ms
200
POST
o36719.ingest.sentry.io
/api/5627310/envelope/?sentry_version=7&sentry_key=8cba05ef3e3f4f68a86d3a6d31465998&sentry_client=sentry.javascript.vue/10.43.0
fetch
json
520 B
2 B
108 ms
200
GET
app.staging.jiminny.com
search?status[]=completed&sort_by=dateHeld&sort_direction=desc&exclude[]=stats&only_recorded=1&user_id[]=b497352e-96dd-4e53-ab44-05de24c4f424
sentry-B6v5fcc5.js
:8
(xhr)
json
6.21 kB
12.94 kB
827 ms
200
GET
app.staging.jiminny.com
automated-reports
sentry-B6v5fcc5.js
:8
(xhr)
json
5.87 kB
27.02 kB
1103 ms
200
GET
app.staging.jiminny.com
recent
sentry-B6v5fcc5.js
:8
(xhr)
json
5.56 kB
14.84 kB
567 ms
200
GET
app.staging.jiminny.com
integrations
sentry-B6v5fcc5.js
:8
(xhr)
json
3.83 kB
5.53 kB
1051 ms
200
GET
find.userpilot.io
NX-094be170
sentry-B6v5fcc5.js
:8
(xhr)
json
803 B
62 B
72 ms
200
POST
app.staging.jiminny.com
authenticate
sentry-B6v5fcc5.js
:8
(xhr)
json
3.11 kB
96 B
306 ms
200
POST...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Formalize","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Formalize","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Search results: calendar | Jiminny Help Center","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search results: calendar | Jiminny Help Center","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Edit - Engineering - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit - Engineering - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 874667","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"27","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"27","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI Reports","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Reports","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ask Jiminny reports","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny reports","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Report name","depth":17,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Period","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Report Type Report Type","depth":16,"value":"Report Type Report Type","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Report Type","depth":18,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Report Type","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear all","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"NAME","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FREQUENCY","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SHARED","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ACTIONS","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You are currently impersonating Aneliya Angelova","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Filter URLs","depth":16,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Pause/Resume recording network log","depth":16,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"New Request","depth":16,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Search","depth":16,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Request Blocking","depth":16,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Disable Cache","depth":17,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Disable Cache","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"No Throttling","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Network Settings","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"All","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"HTML","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"CSS","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"JS","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"XHR","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Fonts","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Images","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Media","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"WS","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Other","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Status","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Status","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Method","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Method","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Domain","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Domain","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"File","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"File","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Initiator","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Initiator","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Type","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Transferred","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Transferred","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Size","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Size","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"0 ms","depth":24,"help_text":"Timeline","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0 ms","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.staging.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"automated-reports?page=1&sort_column=generated_at&sort_direction=desc","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"xhr","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5.89 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27.02 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"632 ms","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"POST","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"o36719.ingest.sentry.io","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/api/5627310/envelope/?sentry_version=7&sentry_key=8cba05ef3e3f4f68a86d3a6d31465998&sentry_client=sentry.javascript.vue/10.43.0","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"fetch","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"520 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"236 ms","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"POST","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"o36719.ingest.sentry.io","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/api/5627310/envelope/?sentry_version=7&sentry_key=8cba05ef3e3f4f68a86d3a6d31465998&sentry_client=sentry.javascript.vue/10.43.0","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"fetch","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"520 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"108 ms","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.staging.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"search?status[]=completed&sort_by=dateHeld&sort_direction=desc&exclude[]=stats&only_recorded=1&user_id[]=b497352e-96dd-4e53-ab44-05de24c4f424","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sentry-B6v5fcc5.js","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":8","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(xhr)","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6.21 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12.94 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"827 ms","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.staging.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"automated-reports","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sentry-B6v5fcc5.js","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":8","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(xhr)","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5.87 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27.02 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1103 ms","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.staging.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"recent","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sentry-B6v5fcc5.js","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":8","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(xhr)","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5.56 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14.84 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"567 ms","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.staging.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"integrations","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sentry-B6v5fcc5.js","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":8","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(xhr)","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.83 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5.53 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1051 ms","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GET","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"find.userpilot.io","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NX-094be170","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sentry-B6v5fcc5.js","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":8","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(xhr)","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"803 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"62 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72 ms","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"POST","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.staging.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"authenticate","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sentry-B6v5fcc5.js","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":8","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(xhr)","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"json","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.11 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"96 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"306 ms","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"200","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"POST","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-9111871242378900667
|
-712726794806342573
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
Edit - Engineering - Confluence
Edit - Engineering - Confluence
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 874667
27
27
AI Reports
AI Reports
Ask Jiminny reports
Ask Jiminny reports
Report name
Period
Report Type Report Type
Report Type
Report Type
Clear all
NAME
FREQUENCY
SHARED
DATE
ACTIONS
You are currently impersonating Aneliya Angelova
Clear
Filter URLs
Pause/Resume recording network log
New Request
Search
Request Blocking
Disable Cache
Disable Cache
No Throttling
Network Settings
All
HTML
CSS
JS
XHR
Fonts
Images
Media
WS
Other
Status
Status
Method
Method
Domain
Domain
File
File
Initiator
Initiator
Type
Type
Transferred
Transferred
Size
Size
0 ms
0 ms
200
GET
app.staging.jiminny.com
automated-reports?page=1&sort_column=generated_at&sort_direction=desc
xhr
json
5.89 kB
27.02 kB
632 ms
200
POST
o36719.ingest.sentry.io
/api/5627310/envelope/?sentry_version=7&sentry_key=8cba05ef3e3f4f68a86d3a6d31465998&sentry_client=sentry.javascript.vue/10.43.0
fetch
json
520 B
2 B
236 ms
200
POST
o36719.ingest.sentry.io
/api/5627310/envelope/?sentry_version=7&sentry_key=8cba05ef3e3f4f68a86d3a6d31465998&sentry_client=sentry.javascript.vue/10.43.0
fetch
json
520 B
2 B
108 ms
200
GET
app.staging.jiminny.com
search?status[]=completed&sort_by=dateHeld&sort_direction=desc&exclude[]=stats&only_recorded=1&user_id[]=b497352e-96dd-4e53-ab44-05de24c4f424
sentry-B6v5fcc5.js
:8
(xhr)
json
6.21 kB
12.94 kB
827 ms
200
GET
app.staging.jiminny.com
automated-reports
sentry-B6v5fcc5.js
:8
(xhr)
json
5.87 kB
27.02 kB
1103 ms
200
GET
app.staging.jiminny.com
recent
sentry-B6v5fcc5.js
:8
(xhr)
json
5.56 kB
14.84 kB
567 ms
200
GET
app.staging.jiminny.com
integrations
sentry-B6v5fcc5.js
:8
(xhr)
json
3.83 kB
5.53 kB
1051 ms
200
GET
find.userpilot.io
NX-094be170
sentry-B6v5fcc5.js
:8
(xhr)
json
803 B
62 B
72 ms
200
POST
app.staging.jiminny.com
authenticate
sentry-B6v5fcc5.js
:8
(xhr)
json
3.11 kB
96 B
306 ms
200
POST...
|
67136
|
|
24112
|
521
|
40
|
2026-04-15T11:58:24.140404+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776254304140_m2.jpg...
|
Firefox
|
SQLite Web: db.sqlite — Personal
|
True
|
http://100.73.206.126:8767/frames_fts_config/
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Steam Account Verification - [EMA DXP4800PLUS-B5F8
Steam Account Verification - [EMAIL] - Gmail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
| Senetic
| Senetic
Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256MB, 5400
Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256MB, 5400
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Close tab
Screenpipe Dashboard
Screenpipe Dashboard
Welcome to Steam
Welcome to Steam
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
Edit
You said how to open folder in finder mac ~/.screenpipe
You said
how to open folder in finder mac ~/.screenpipe
Listen
Show more options
Show thinking
Gemini said
Gemini said
Opening hidden folders—which are indicated by the period (
.
) at the start of their name—can be a bit tricky on a Mac, as they are hidden by default to protect system files.
Here are the three easiest ways to open the
~/.screenpipe
folder in Finder:
Method 1: The "Go to Folder" Shortcut (Fastest)
Method 1: The "Go to Folder" Shortcut (Fastest)
This is usually the quickest way to jump straight to any specific path.
Click on the
Finder
icon in your dock to make it the active application.
Press
Command + Shift + G
on your keyboard (or use the top menu bar and select
Go > Go to Folder...
).
A search box will appear. Type or paste exactly:
Press
Return
(or click on the folder result that pops up). Finder will open directly to that folder.
Method 2: The Terminal Command
Method 2: The Terminal Command
If you already have Terminal open, or prefer using it, you can command Finder to open the folder for you.
Open the
Terminal
app (you can find it by pressing Command + Space to open Spotlight and typing "Terminal").
Type the following command:
Press
Return
. A new Finder window will immediately pop up showing the contents of the folder.
Method 3: Unhide All Files in Your Home Directory
Method 3: Unhide All Files in Your Home Directory
If you want to be able to see the folder alongside your normal files so you can click into it manually.
Open
Finder
.
Go to your Home folder by pressing
Command + Shift + H
(this is what the
symbol represents).
Press
Command + Shift + .
(Command, Shift, and the Period key at the same time).
You will see all your hidden files and folders fade into view. Scroll down to find the
.screenpipe
folder and double-click it.
Note: You can press
Command + Shift + .
again to hide the files when you are done to keep your folders looking clean.
Good response...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.064453125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Steam Account Verification - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.06679688,"top":0.045138888,"width":0.06484375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.13359375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"bounds":{"left":0.015625,"top":0.09236111,"width":0.309375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"| Senetic","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.13359375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"| Senetic","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Твърд диск, Western Digital Red 6TB Plus ( 3.5\", 256MB, 5400","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.13359375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Твърд диск, Western Digital Red 6TB Plus ( 3.5\", 256MB, 5400","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.12929687,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.13359375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.044140626,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.119140625,"top":0.17430556,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.13359375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.046484374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Welcome to Steam","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.13359375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Welcome to Steam","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.03828125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.25486112,"width":0.12734374,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.25703126,"top":0.047916666,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.27109376,"top":0.047916666,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.26796874,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.13828126,"top":0.090277776,"width":0.015625,"height":0.027777778},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.21953125,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.23515625,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.25078124,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.13320312,"top":0.12847222,"width":0.000390625,"height":0.00069444446},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.13320312,"top":0.13055556,"width":0.14101562,"height":0.022222223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said how to open folder in finder mac ~/.screenpipe","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"how to open folder in finder mac ~/.screenpipe","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opening hidden folders—which are indicated by the period (","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") at the start of their name—can be a bit tricky on a Mac, as they are hidden by default to protect system files.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here are the three easiest ways to open the","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder in Finder:","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 1: The \"Go to Folder\" Shortcut (Fastest)","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 1: The \"Go to Folder\" Shortcut (Fastest)","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is usually the quickest way to jump straight to any specific path.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click on the","depth":29,"bounds":{"left":0.16015625,"top":0.0,"width":0.03515625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finder","depth":29,"bounds":{"left":0.1953125,"top":0.0,"width":0.019140625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"icon in your dock to make it the active application.","depth":29,"bounds":{"left":0.16015625,"top":0.0,"width":0.11328125,"height":0.03263889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"bounds":{"left":0.16015625,"top":0.0,"width":0.0171875,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Command + Shift + G","depth":29,"bounds":{"left":0.17734376,"top":0.0,"width":0.0640625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on your keyboard (or use the top menu bar and select","depth":29,"bounds":{"left":0.16015625,"top":0.0,"width":0.1125,"height":0.050694443},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Go > Go to Folder...","depth":29,"bounds":{"left":0.17890625,"top":0.0,"width":0.057421874,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":").","depth":29,"bounds":{"left":0.23632812,"top":0.0,"width":0.00390625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"A search box will appear. Type or paste exactly:","depth":29,"bounds":{"left":0.16015625,"top":0.0055555557,"width":0.11210938,"height":0.03263889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"bounds":{"left":0.16015625,"top":0.049305554,"width":0.0171875,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Return","depth":29,"bounds":{"left":0.17734376,"top":0.049305554,"width":0.020703126,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(or click on the folder result that pops up). Finder will open directly to that folder.","depth":29,"bounds":{"left":0.16015625,"top":0.049305554,"width":0.10546875,"height":0.050694443},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 2: The Terminal Command","depth":26,"bounds":{"left":0.1453125,"top":0.12083333,"width":0.13085938,"height":0.016666668},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 2: The Terminal Command","depth":27,"bounds":{"left":0.1453125,"top":0.12222222,"width":0.103515625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you already have Terminal open, or prefer using it, you can command Finder to open the folder for you.","depth":27,"bounds":{"left":0.1453125,"top":0.14513889,"width":0.13085938,"height":0.050694443},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the","depth":29,"bounds":{"left":0.16015625,"top":0.20694445,"width":0.028125,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Terminal","depth":29,"bounds":{"left":0.18828125,"top":0.20694445,"width":0.0265625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app (you can find it by pressing Command + Space to open Spotlight and typing \"Terminal\").","depth":29,"bounds":{"left":0.16015625,"top":0.20694445,"width":0.1125,"height":0.050694443},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Type the following command:","depth":29,"bounds":{"left":0.16015625,"top":0.26875,"width":0.08476563,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"bounds":{"left":0.16015625,"top":0.3125,"width":0.0171875,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Return","depth":29,"bounds":{"left":0.17734376,"top":0.3125,"width":0.020703126,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". A new Finder window will immediately pop up showing the contents of the folder.","depth":29,"bounds":{"left":0.16015625,"top":0.3125,"width":0.11289062,"height":0.050694443},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 3: Unhide All Files in Your Home Directory","depth":26,"bounds":{"left":0.1453125,"top":0.38402778,"width":0.13085938,"height":0.033333335},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 3: Unhide All Files in Your Home Directory","depth":27,"bounds":{"left":0.1453125,"top":0.38541666,"width":0.12148438,"height":0.03125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to be able to see the folder alongside your normal files so you can click into it manually.","depth":27,"bounds":{"left":0.1453125,"top":0.425,"width":0.12421875,"height":0.050694443},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":29,"bounds":{"left":0.16015625,"top":0.48680556,"width":0.0171875,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finder","depth":29,"bounds":{"left":0.17734376,"top":0.48680556,"width":0.01953125,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":29,"bounds":{"left":0.196875,"top":0.48680556,"width":0.0015625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Go to your Home folder by pressing","depth":29,"bounds":{"left":0.16015625,"top":0.5125,"width":0.10195313,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Command + Shift + H","depth":29,"bounds":{"left":0.16015625,"top":0.53055555,"width":0.0640625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(this is what the","depth":29,"bounds":{"left":0.22421876,"top":0.53055555,"width":0.048046876,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"symbol represents).","depth":29,"bounds":{"left":0.16796875,"top":0.5486111,"width":0.0578125,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"bounds":{"left":0.16015625,"top":0.57430553,"width":0.0171875,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Command + Shift + .","depth":29,"bounds":{"left":0.17734376,"top":0.57430553,"width":0.0609375,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Command, Shift, and the Period key at the same time).","depth":29,"bounds":{"left":0.16015625,"top":0.57430553,"width":0.1140625,"height":0.050694443},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You will see all your hidden files and folders fade into view. Scroll down to find the","depth":29,"bounds":{"left":0.16015625,"top":0.63611114,"width":0.11601563,"height":0.050694443},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".screenpipe","depth":29,"bounds":{"left":0.17109375,"top":0.6722222,"width":0.0359375,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder and double-click it.","depth":29,"bounds":{"left":0.16015625,"top":0.6722222,"width":0.115625,"height":0.03263889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Note: You can press","depth":29,"bounds":{"left":0.16015625,"top":0.71597224,"width":0.057421874,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Command + Shift + .","depth":29,"bounds":{"left":0.16015625,"top":0.71597224,"width":0.11601563,"height":0.03263889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"again to hide the files when you are done to keep your folders looking clean.","depth":29,"bounds":{"left":0.16015625,"top":0.7340278,"width":0.11328125,"height":0.03263889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"bounds":{"left":0.14140625,"top":0.7847222,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-9111366618589699839
|
4308842606739358198
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Steam Account Verification - [EMA DXP4800PLUS-B5F8
Steam Account Verification - [EMAIL] - Gmail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
| Senetic
| Senetic
Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256MB, 5400
Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256MB, 5400
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Close tab
Screenpipe Dashboard
Screenpipe Dashboard
Welcome to Steam
Welcome to Steam
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
Edit
You said how to open folder in finder mac ~/.screenpipe
You said
how to open folder in finder mac ~/.screenpipe
Listen
Show more options
Show thinking
Gemini said
Gemini said
Opening hidden folders—which are indicated by the period (
.
) at the start of their name—can be a bit tricky on a Mac, as they are hidden by default to protect system files.
Here are the three easiest ways to open the
~/.screenpipe
folder in Finder:
Method 1: The "Go to Folder" Shortcut (Fastest)
Method 1: The "Go to Folder" Shortcut (Fastest)
This is usually the quickest way to jump straight to any specific path.
Click on the
Finder
icon in your dock to make it the active application.
Press
Command + Shift + G
on your keyboard (or use the top menu bar and select
Go > Go to Folder...
).
A search box will appear. Type or paste exactly:
Press
Return
(or click on the folder result that pops up). Finder will open directly to that folder.
Method 2: The Terminal Command
Method 2: The Terminal Command
If you already have Terminal open, or prefer using it, you can command Finder to open the folder for you.
Open the
Terminal
app (you can find it by pressing Command + Space to open Spotlight and typing "Terminal").
Type the following command:
Press
Return
. A new Finder window will immediately pop up showing the contents of the folder.
Method 3: Unhide All Files in Your Home Directory
Method 3: Unhide All Files in Your Home Directory
If you want to be able to see the folder alongside your normal files so you can click into it manually.
Open
Finder
.
Go to your Home folder by pressing
Command + Shift + H
(this is what the
symbol represents).
Press
Command + Shift + .
(Command, Shift, and the Period key at the same time).
You will see all your hidden files and folders fade into view. Scroll down to find the
.screenpipe
folder and double-click it.
Note: You can press
Command + Shift + .
again to hide the files when you are done to keep your folders looking clean.
Good response...
|
NULL
|
|
31547
|
635
|
39
|
2026-04-15T15:51:39.853217+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776268299853_m1.jpg...
|
Firefox
|
SQLite Web: db.sqlite — Personal
|
True
|
http://100.73.206.126:8767/ocr_text/content/?page=
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Steam Account Verification - [EMA DXP4800PLUS-B5F8
Steam Account Verification - [EMAIL] - Gmail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
| Senetic
| Senetic
Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256MB, 5400
Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256MB, 5400
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Close tab
Screenpipe Dashboard
Screenpipe Dashboard
Welcome to Steam
Welcome to Steam
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
Edit
You said how to open folder in finder mac ~/.screenpipe
You said
how to open folder in finder mac ~/.screenpipe
Listen
Show more options
Show thinking
Gemini said
Gemini said
Opening hidden folders—which are indicated by the period (
.
) at the start of their name—can be a bit tricky on a Mac, as they are hidden by default to protect system files.
Here are the three easiest ways to open the
~/.screenpipe
folder in Finder:
Method 1: The "Go to Folder" Shortcut (Fastest)
Method 1: The "Go to Folder" Shortcut (Fastest)
This is usually the quickest way to jump straight to any specific path.
Click on the
Finder
icon in your dock to make it the active application.
Press
Command + Shift + G
on your keyboard (or use the top menu bar and select
Go > Go to Folder...
).
A search box will appear. Type or paste exactly:
Press
Return
(or click on the folder result that pops up). Finder will open directly to that folder.
Method 2: The Terminal Command
Method 2: The Terminal Command
If you already have Terminal open, or prefer using it, you can command Finder to open the folder for you.
Open the
Terminal
app (you can find it by pressing Command + Space to open Spotlight and typing "Terminal").
Type the following command:
Press
Return
. A new Finder window will immediately pop up showing the contents of the folder.
Method 3: Unhide All Files in Your Home Directory
Method 3: Unhide All Files in Your Home Directory
If you want to be able to see the folder alongside your normal files so you can click into it manually.
Open
Finder
.
Go to your Home folder by pressing
Command + Shift + H
(this is what the
symbol represents).
Press
Command + Shift + .
(Command, Shift, and the Period key at the same time).
You will see all your hidden files and folders fade into view. Scroll down to find the
.screenpipe
folder and double-click it.
Note: You can press
Command + Shift + .
again to hide the files when you are done to keep your folders looking clean.
Good response...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Steam Account Verification - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"| Senetic","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"| Senetic","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Твърд диск, Western Digital Red 6TB Plus ( 3.5\", 256MB, 5400","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Твърд диск, Western Digital Red 6TB Plus ( 3.5\", 256MB, 5400","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Welcome to Steam","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Welcome to Steam","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said how to open folder in finder mac ~/.screenpipe","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"how to open folder in finder mac ~/.screenpipe","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opening hidden folders—which are indicated by the period (","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") at the start of their name—can be a bit tricky on a Mac, as they are hidden by default to protect system files.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here are the three easiest ways to open the","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder in Finder:","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 1: The \"Go to Folder\" Shortcut (Fastest)","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 1: The \"Go to Folder\" Shortcut (Fastest)","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is usually the quickest way to jump straight to any specific path.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click on the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finder","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"icon in your dock to make it the active application.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Command + Shift + G","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on your keyboard (or use the top menu bar and select","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Go > Go to Folder...","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":").","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"A search box will appear. Type or paste exactly:","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Return","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(or click on the folder result that pops up). Finder will open directly to that folder.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 2: The Terminal Command","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 2: The Terminal Command","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you already have Terminal open, or prefer using it, you can command Finder to open the folder for you.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Terminal","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app (you can find it by pressing Command + Space to open Spotlight and typing \"Terminal\").","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Type the following command:","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Return","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". A new Finder window will immediately pop up showing the contents of the folder.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 3: Unhide All Files in Your Home Directory","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 3: Unhide All Files in Your Home Directory","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to be able to see the folder alongside your normal files so you can click into it manually.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finder","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Go to your Home folder by pressing","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Command + Shift + H","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(this is what the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"symbol represents).","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Command + Shift + .","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Command, Shift, and the Period key at the same time).","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You will see all your hidden files and folders fade into view. Scroll down to find the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".screenpipe","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder and double-click it.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Note: You can press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Command + Shift + .","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"again to hide the files when you are done to keep your folders looking clean.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-9111366618589699839
|
4308842606739358198
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Steam Account Verification - [EMA DXP4800PLUS-B5F8
Steam Account Verification - [EMAIL] - Gmail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 238,97 € (467,38 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
| Senetic
| Senetic
Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256MB, 5400
Твърд диск, Western Digital Red 6TB Plus ( 3.5", 256MB, 5400
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Close tab
Screenpipe Dashboard
Screenpipe Dashboard
Welcome to Steam
Welcome to Steam
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
Edit
You said how to open folder in finder mac ~/.screenpipe
You said
how to open folder in finder mac ~/.screenpipe
Listen
Show more options
Show thinking
Gemini said
Gemini said
Opening hidden folders—which are indicated by the period (
.
) at the start of their name—can be a bit tricky on a Mac, as they are hidden by default to protect system files.
Here are the three easiest ways to open the
~/.screenpipe
folder in Finder:
Method 1: The "Go to Folder" Shortcut (Fastest)
Method 1: The "Go to Folder" Shortcut (Fastest)
This is usually the quickest way to jump straight to any specific path.
Click on the
Finder
icon in your dock to make it the active application.
Press
Command + Shift + G
on your keyboard (or use the top menu bar and select
Go > Go to Folder...
).
A search box will appear. Type or paste exactly:
Press
Return
(or click on the folder result that pops up). Finder will open directly to that folder.
Method 2: The Terminal Command
Method 2: The Terminal Command
If you already have Terminal open, or prefer using it, you can command Finder to open the folder for you.
Open the
Terminal
app (you can find it by pressing Command + Space to open Spotlight and typing "Terminal").
Type the following command:
Press
Return
. A new Finder window will immediately pop up showing the contents of the folder.
Method 3: Unhide All Files in Your Home Directory
Method 3: Unhide All Files in Your Home Directory
If you want to be able to see the folder alongside your normal files so you can click into it manually.
Open
Finder
.
Go to your Home folder by pressing
Command + Shift + H
(this is what the
symbol represents).
Press
Command + Shift + .
(Command, Shift, and the Period key at the same time).
You will see all your hidden files and folders fade into view. Scroll down to find the
.screenpipe
folder and double-click it.
Note: You can press
Command + Shift + .
again to hide the files when you are done to keep your folders looking clean.
Good response...
|
31546
|
|
49815
|
1061
|
92
|
2026-04-17T14:05:01.455743+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776434701455_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Help• - app.staging.jiminny.com/ai-reports/manageAsk Jiminny Reports ®• Report namelPromptiB< 40 hil l Tech Day Review • nowA100% CS 8 Fri 17 Apr 17:05:00CreateT [JY-206941 Incorrect "expiration cJiminnyDevelopers | HubSpotM'inbox (1,576) - lukas.kovalik@jiminM°120216 is vour HubSpot Log In ColCa CloudWatch | eu-west-1New Tab(x) Configure SSH access to multiple( fix-cache-for-business-processes• Dashooard • Jiminny • MembraneApo "4oho CkM" • Jiminny • Memc© JY-20692 change confirmation pa( JY-20698 handle failed field sync@ Jiminny8 Jiminny) Jiminny\Exceptions|HttpBadReque@ Jiminny+ New TabSaved search10NAMEATo Be Expired ReportAsk Jiminnvlest RevortEastern SummaryHealthTuesday ReportAll statusesFREQUENCYMonthlyDailyWeeklyWeeklyDaily• @ Clear allSHAREDEXPIRING +17/04/20270 0x202 in 13 days14/04/2026A Expired30/04/2026A Expiring in 13 days30/04/2026A Expiring in 13 daysACTIONSReport definition savedJY-18909-automated-reports-ask-jiminny • 872911...
|
NULL
|
-9111091256930683970
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Help• - app.staging.jiminny.com/ai-reports/manageAsk Jiminny Reports ®• Report namelPromptiB< 40 hil l Tech Day Review • nowA100% CS 8 Fri 17 Apr 17:05:00CreateT [JY-206941 Incorrect "expiration cJiminnyDevelopers | HubSpotM'inbox (1,576) - lukas.kovalik@jiminM°120216 is vour HubSpot Log In ColCa CloudWatch | eu-west-1New Tab(x) Configure SSH access to multiple( fix-cache-for-business-processes• Dashooard • Jiminny • MembraneApo "4oho CkM" • Jiminny • Memc© JY-20692 change confirmation pa( JY-20698 handle failed field sync@ Jiminny8 Jiminny) Jiminny\Exceptions|HttpBadReque@ Jiminny+ New TabSaved search10NAMEATo Be Expired ReportAsk Jiminnvlest RevortEastern SummaryHealthTuesday ReportAll statusesFREQUENCYMonthlyDailyWeeklyWeeklyDaily• @ Clear allSHAREDEXPIRING +17/04/20270 0x202 in 13 days14/04/2026A Expired30/04/2026A Expiring in 13 days30/04/2026A Expiring in 13 daysACTIONSReport definition savedJY-18909-automated-reports-ask-jiminny • 872911...
|
NULL
|
|
49954
|
1064
|
70
|
2026-04-17T14:10:30.542336+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776435030542_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Helpjiminny.atlassian.net/browse/JY-18909O JIMINNYQ Search[JY-18909] (Part2] Automated• JiminnyDevelopers | HubSpotM'inbox (1,576) - lukas.kovalik@jiminM Inbox (3,738) - integration-accouFal CloudWatch | eu-west-1New TabZ Configure SSH access to multiple( fix-cache-for-business-processesDashooard • Jiminny • MemoraneApo "4oho Cky" • Jiminny • Meme& Jy-20692 change confirmation parJy-20698 handle failed field sync@ Jiminny@ JiminnyJiminny/ Exceptions|HttpBadReque@ Jiminny+ New Tabg For you• Recent# Starred0÷ AppsO, SpacesRecentJiminny (New)+ ...I 0 Platform TeamID SE KanbanI Capture TeamCD Enterprise Stability I...I Processing TeamY Service-Desk= More spaces= FiltersCB Dashboards@ Operations& Confluence8: Teams*= Customise sidebarSpaces / Jiminny (New) / & JY-19240 / [ JY-18909% JY-20579 [BE] Add new report type in filters options% JY-20580 [FE] Rename column Shared© JY-20581 [FE] Rework Shared Tooltip info% JY-20582 [BE+AI+Infra] Create new queue% JY-20583 [BE] Add period to cron job& JY-20584 [BE] Change search report in cron job queryO uY-205o5 1QAJ Create test casesZJY-20586 [QA] Manual Testing& JY-20626 Integration testing&JY-20678 (FE) Add custom Expiration table cell%JY-20679 [BE] Add dash symbol between name and period in the title$JY-20680 [FEl Add Info KB link in page header*E JY-20694 Incorrect "expiration date" error is displayed when changing frequency of report template with valid 1-year expiryLinked work itemsis cloned by# JY-20458 CRUD reports with Ask Jiminnyis tested by• JY-20649 Generate Ask Jiminny Report and display it in AI Reports@ JY-20656 Expired Ask Jiminny report template is automatically disabled and stops generating reportsO JY-20660 Non-creator cannot delete generated Ask Jiminny report from AI Reports• JY-20651 Generated Ask Jiminny Report PDF displays Jiminny logo when no custom branding is available• JY-20655 Generated Ask Jiminny Report email is sent to recipients@ JY-20654 Generated Ask Jiminny Report is visible only to creator and shared recipients• JY-20650 Generated Ask Jiminny Report PDF includes branding, report sections and playback links@ JY-20661 Filter AI Reports by Ask Jiminny Report type• JY-20657 Preview generated Ask Jiminny Report from AI ReportsJY-20658 Download generated Ask Jiminny Report from AI Reports• JY-20659 Report creator can delete generated Ask Jiminny report from AI Reports• JY-20652 Generated Ask Jiminny Report email is sent to the creator and all shared recipients~ ActivityAdd a comment…= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium40 libl I Tech Day Review . 20 m leftA100% CS•8 Fri 17 Apr 17:10:30+ CreateAsk Rovo1 O LỘ OLukas KovalikDONEV& Nikolay Yankov DONEVNikolay Yankov DONEVIn QA v* Improve StoryDetailsSteliyan Geor...DONE VLukas KovalikDONE V© Lukas KovalikDONE VAssignee2 Steliyan GeorgievAssign to meReporter@ Aneliya Angel... DONEVGalya Dimitrova® Aneliya Angel... IN DEVV& UnassignedDONE V& Nikolay Yankov DONEVLukas KovalikIN DEVV& Nikolay Yankov DONEVDevelopment@ Open with VS Code4 branches42 commits1 pull request5 buildsLukas KovalikREADY FOR DEV2 days agoOPENDEPLOYEDDONEDONE VOn Hold→ BLOCKEDTransition to → CODE RINVIEWTransition to→ IN DEVStartedDevelopment→ IN DEVTransition to→ IN QAReady for QA → READY FOR OAuctionall deploymentsentsductonsDONE VTransition to→ DELOYED) (FE QADONE VView workflowint estimateDONE V[* Explain workflowStory PointsDONEDONE VDONE VOrganisationsNoneDONEDONEPriority= MediumDONE VFix versionsNoneDONESprintPlatform Sprint 2 Q2 +1Days...
|
NULL
|
-9110962502843049510
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Helpjiminny.atlassian.net/browse/JY-18909O JIMINNYQ Search[JY-18909] (Part2] Automated• JiminnyDevelopers | HubSpotM'inbox (1,576) - lukas.kovalik@jiminM Inbox (3,738) - integration-accouFal CloudWatch | eu-west-1New TabZ Configure SSH access to multiple( fix-cache-for-business-processesDashooard • Jiminny • MemoraneApo "4oho Cky" • Jiminny • Meme& Jy-20692 change confirmation parJy-20698 handle failed field sync@ Jiminny@ JiminnyJiminny/ Exceptions|HttpBadReque@ Jiminny+ New Tabg For you• Recent# Starred0÷ AppsO, SpacesRecentJiminny (New)+ ...I 0 Platform TeamID SE KanbanI Capture TeamCD Enterprise Stability I...I Processing TeamY Service-Desk= More spaces= FiltersCB Dashboards@ Operations& Confluence8: Teams*= Customise sidebarSpaces / Jiminny (New) / & JY-19240 / [ JY-18909% JY-20579 [BE] Add new report type in filters options% JY-20580 [FE] Rename column Shared© JY-20581 [FE] Rework Shared Tooltip info% JY-20582 [BE+AI+Infra] Create new queue% JY-20583 [BE] Add period to cron job& JY-20584 [BE] Change search report in cron job queryO uY-205o5 1QAJ Create test casesZJY-20586 [QA] Manual Testing& JY-20626 Integration testing&JY-20678 (FE) Add custom Expiration table cell%JY-20679 [BE] Add dash symbol between name and period in the title$JY-20680 [FEl Add Info KB link in page header*E JY-20694 Incorrect "expiration date" error is displayed when changing frequency of report template with valid 1-year expiryLinked work itemsis cloned by# JY-20458 CRUD reports with Ask Jiminnyis tested by• JY-20649 Generate Ask Jiminny Report and display it in AI Reports@ JY-20656 Expired Ask Jiminny report template is automatically disabled and stops generating reportsO JY-20660 Non-creator cannot delete generated Ask Jiminny report from AI Reports• JY-20651 Generated Ask Jiminny Report PDF displays Jiminny logo when no custom branding is available• JY-20655 Generated Ask Jiminny Report email is sent to recipients@ JY-20654 Generated Ask Jiminny Report is visible only to creator and shared recipients• JY-20650 Generated Ask Jiminny Report PDF includes branding, report sections and playback links@ JY-20661 Filter AI Reports by Ask Jiminny Report type• JY-20657 Preview generated Ask Jiminny Report from AI ReportsJY-20658 Download generated Ask Jiminny Report from AI Reports• JY-20659 Report creator can delete generated Ask Jiminny report from AI Reports• JY-20652 Generated Ask Jiminny Report email is sent to the creator and all shared recipients~ ActivityAdd a comment…= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium= Medium40 libl I Tech Day Review . 20 m leftA100% CS•8 Fri 17 Apr 17:10:30+ CreateAsk Rovo1 O LỘ OLukas KovalikDONEV& Nikolay Yankov DONEVNikolay Yankov DONEVIn QA v* Improve StoryDetailsSteliyan Geor...DONE VLukas KovalikDONE V© Lukas KovalikDONE VAssignee2 Steliyan GeorgievAssign to meReporter@ Aneliya Angel... DONEVGalya Dimitrova® Aneliya Angel... IN DEVV& UnassignedDONE V& Nikolay Yankov DONEVLukas KovalikIN DEVV& Nikolay Yankov DONEVDevelopment@ Open with VS Code4 branches42 commits1 pull request5 buildsLukas KovalikREADY FOR DEV2 days agoOPENDEPLOYEDDONEDONE VOn Hold→ BLOCKEDTransition to → CODE RINVIEWTransition to→ IN DEVStartedDevelopment→ IN DEVTransition to→ IN QAReady for QA → READY FOR OAuctionall deploymentsentsductonsDONE VTransition to→ DELOYED) (FE QADONE VView workflowint estimateDONE V[* Explain workflowStory PointsDONEDONE VDONE VOrganisationsNoneDONEDONEPriority= MediumDONE VFix versionsNoneDONESprintPlatform Sprint 2 Q2 +1Days...
|
49952
|
|
57223
|
1231
|
48
|
2026-04-20T11:46:38.843265+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776685598843_m1.jpg...
|
Firefox
|
Firefox
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹ $0 lil100% C47 8 Mon 20 Apr 14:46:38DEV (docker)APP (-zsh)T₴1|DOCKERDEV (docker)jiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00:stoppedworker-nudges:worker-nudges_00: stoppedworker-emails:worker-emails_00: stoppedworker:worker_00: stoppedworker-conferences:worker-conferences_00:stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_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: startedroot@docker_lamp_1:/home/jiminny# php artisan activity:update-esYou are about to work on activities:willinclude soft-deleted activitiesAre you sure? (yes/no) [no]:• yesAbout to work on 63813 activities with chunk size 50! Are you sure? (yes/no) [no]:> noX3-zsh*4screenpipe"• *5DEV...
|
NULL
|
-9110958499441913053
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹ $0 lil100% C47 8 Mon 20 Apr 14:46:38DEV (docker)APP (-zsh)T₴1|DOCKERDEV (docker)jiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00:stoppedworker-nudges:worker-nudges_00: stoppedworker-emails:worker-emails_00: stoppedworker:worker_00: stoppedworker-conferences:worker-conferences_00:stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_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: startedroot@docker_lamp_1:/home/jiminny# php artisan activity:update-esYou are about to work on activities:willinclude soft-deleted activitiesAre you sure? (yes/no) [no]:• yesAbout to work on 63813 activities with chunk size 50! Are you sure? (yes/no) [no]:> noX3-zsh*4screenpipe"• *5DEV...
|
NULL
|