|
10818
|
215
|
20
|
2026-04-14T08:59:56.765269+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157196765_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesWindowP FirefoxFileEoitViewHistoryBookmarksProfilesWindowPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multiple@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny¿Ask Jiminny test report - 8 Aor2201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New Tab$ToolsHelpdoo.sideme.minny.com casnoodraMyRecordingsTeamRecordingsNikolay Yankov at Jiminny (EU) • YV1 -eb. 10:99 AMINikolay Yankov at Jiminny (EU) → y/'?ren. 10:13AMNikolay Yankov at Jiminny (EU) ® 1p12reb.9:43 AMIAI ReportsUnknown Customer MNotetaker added by Nikolay Yankov26 Jan, 11:31 AMUnknown Customer MpNotetaker added by Nikolay Yankov23 Jan, 4:26 PMUnknown Customer MNotetaker added by Nikolay Yankov23 Jan, 4:07 PMUnknown Customer MNotetaker added by Nikolay Yankov23 Jan, 4:04 PMUnknown Customer MNotetaker added on 12-14-23 (@ 10:0419 Dec, 2023, 11:03 AMBob Arsenault at Planet ® yNotetaker added on 11-16-23@17:14Coldi16 Nov, 2023, 6:11 PMEveryone'sRecordingsYou are currently impersonating Nikolay Yankov <)Trending this monthMost playedUnknown Customer MNotetaker added by Veselin KulovD1ScheduleThis Weekream scneculeAPUnknown CustomerRefinement - Processinglomorrow. 1U:sUAvUnknown CustomerProcessing tickets reviewTomorrow, 2:30 PMRobinson Crusoe Cruises Limited ®Sprint ReviewClosed LostTomorrow, 4:00 PMInvite NotetakerLive FeedVeselin Kulov listened to call 6д8 Apr, 12:51 AMactivily wiln unknown customerHeld: 8 Apr, 12:36 AM§ Value: $0Ở Duration: 7mNikolay Nikolov listened to call 6đ27 Feb, 4:38 PMWeb Demo with Martin PetkovE Held: 13 Feb, 2:15 PM§ Value: $1Ở Duration: 11mMartin Petkov listened to call 6d22 Jan, 1:30 PMDiscovery with Martin PetkovE Held: 21 Jan, 4:00 PM Ở Duration: 35m§ Value: $2Martin Petkov listened to call 6d20 Jan, 11:42 AMactivity with Jonathan HeatonHeld: 25 Sep, 2024, 1:33 PMỞ Duration: 37m≥ Value: £8,886Galya Dimitrova listened to call 6d26 Nov, 2025, 1:29 PMactivity with David thrlichE Held: 9 Oct, 2024, 3:31 PM|Ở Duration: 39m≥ Value: $23,000Aneliya Angelova listened to call 6d18 Aug, 2025, 8:45 PMCold call with Robinson Crusoe New13333Held: 23 Jul, 2025, 5:43 PMỞ Duration: 2m≥ Value: $5Jiminny Web SA shared in Slack 09ll 9099 44RРM40 lilj Support Daily • in 3h 1mAQ InspectorFilter URLs• ConsoleD DebuggerTt Network{) Style Editor( PerformanceO: MemoryAllHMLOssMediaother• Perform a request orReload the page to see detalled information about network activity.• Click on the Obutton to start penormance analysis.100% CS•E StorageTue 14 Apr 11:59:560 99+_ Disable Cache No Throttling + 50:203app.staging.jiminny.com/ai-reports k-iiminny = 869720)Ô No requests...
|
NULL
|
-4328645732212483600
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesWindowP FirefoxFileEoitViewHistoryBookmarksProfilesWindowPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multiple@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny¿Ask Jiminny test report - 8 Aor2201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New Tab$ToolsHelpdoo.sideme.minny.com casnoodraMyRecordingsTeamRecordingsNikolay Yankov at Jiminny (EU) • YV1 -eb. 10:99 AMINikolay Yankov at Jiminny (EU) → y/'?ren. 10:13AMNikolay Yankov at Jiminny (EU) ® 1p12reb.9:43 AMIAI ReportsUnknown Customer MNotetaker added by Nikolay Yankov26 Jan, 11:31 AMUnknown Customer MpNotetaker added by Nikolay Yankov23 Jan, 4:26 PMUnknown Customer MNotetaker added by Nikolay Yankov23 Jan, 4:07 PMUnknown Customer MNotetaker added by Nikolay Yankov23 Jan, 4:04 PMUnknown Customer MNotetaker added on 12-14-23 (@ 10:0419 Dec, 2023, 11:03 AMBob Arsenault at Planet ® yNotetaker added on 11-16-23@17:14Coldi16 Nov, 2023, 6:11 PMEveryone'sRecordingsYou are currently impersonating Nikolay Yankov <)Trending this monthMost playedUnknown Customer MNotetaker added by Veselin KulovD1ScheduleThis Weekream scneculeAPUnknown CustomerRefinement - Processinglomorrow. 1U:sUAvUnknown CustomerProcessing tickets reviewTomorrow, 2:30 PMRobinson Crusoe Cruises Limited ®Sprint ReviewClosed LostTomorrow, 4:00 PMInvite NotetakerLive FeedVeselin Kulov listened to call 6д8 Apr, 12:51 AMactivily wiln unknown customerHeld: 8 Apr, 12:36 AM§ Value: $0Ở Duration: 7mNikolay Nikolov listened to call 6đ27 Feb, 4:38 PMWeb Demo with Martin PetkovE Held: 13 Feb, 2:15 PM§ Value: $1Ở Duration: 11mMartin Petkov listened to call 6d22 Jan, 1:30 PMDiscovery with Martin PetkovE Held: 21 Jan, 4:00 PM Ở Duration: 35m§ Value: $2Martin Petkov listened to call 6d20 Jan, 11:42 AMactivity with Jonathan HeatonHeld: 25 Sep, 2024, 1:33 PMỞ Duration: 37m≥ Value: £8,886Galya Dimitrova listened to call 6d26 Nov, 2025, 1:29 PMactivity with David thrlichE Held: 9 Oct, 2024, 3:31 PM|Ở Duration: 39m≥ Value: $23,000Aneliya Angelova listened to call 6d18 Aug, 2025, 8:45 PMCold call with Robinson Crusoe New13333Held: 23 Jul, 2025, 5:43 PMỞ Duration: 2m≥ Value: $5Jiminny Web SA shared in Slack 09ll 9099 44RРM40 lilj Support Daily • in 3h 1mAQ InspectorFilter URLs• ConsoleD DebuggerTt Network{) Style Editor( PerformanceO: MemoryAllHMLOssMediaother• Perform a request orReload the page to see detalled information about network activity.• Click on the Obutton to start penormance analysis.100% CS•E StorageTue 14 Apr 11:59:560 99+_ Disable Cache No Throttling + 50:203app.staging.jiminny.com/ai-reports k-iiminny = 869720)Ô No requests...
|
NULL
|
|
10819
|
215
|
21
|
2026-04-14T08:59:59.814008+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157199814_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.staging.jiminny.com/ai-reports
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720
28
28
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
No reports have been created yet
You are currently impersonating Nikolay Yankov
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 2.56 s
0 ms
2.56 s
POST
jmny.report-uri.com
reportOnly
csp
plain
NS_BINDING_ABORTED
0 B
13 ms
POST
r.logr-in.com
i?a=ponxaf/platform-staging&r=6-019d8b28-3eff-7d1d-91e5-1c598b541c05&t=14f86387-75a7-4913-84ea-8564cbf50ebc&s=0&hr=t&u=c4fb084a-b33a-46fe-904b-351b592a4b0f&is=IDENTIFIED&rs=0,t
xhr
NS_BINDING_ABORTED
0 B
0 ms
200
GET
app.staging.jiminny.com
ai-reports
document
html
service worker
16.67 kB
0 ms
200
GET...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11796875,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.12083333,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.14930555,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.17777778,"width":0.08671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SecurityGroup | EC2 | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.20625,"width":0.06484375,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.23472223,"width":0.18710938,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.26319444,"width":0.23476562,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.29166666,"width":0.1984375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"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":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","depth":4,"bounds":{"left":0.0,"top":0.33888888,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.34861112,"width":0.1640625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.3673611,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.37708333,"width":0.12617187,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.39583334,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.40555555,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.42430556,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4340278,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.45277777,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4625,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.48125,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.49097222,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.50972223,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.51944447,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.5395833,"width":0.08710937,"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":"Open 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":"Tabs from other devices","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 history (⇧⌘H)","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":"Open bookmarks (⌘B)","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":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 869720","depth":9,"bounds":{"left":0.09453125,"top":0.9875,"width":0.11796875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"28","depth":12,"bounds":{"left":0.096875,"top":0.925,"width":0.01875,"height":0.030555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"28","depth":14,"bounds":{"left":0.10664062,"top":0.9284722,"width":0.00546875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI Reports","depth":13,"bounds":{"left":0.128125,"top":0.060416665,"width":0.037109375,"height":0.017361112},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Reports","depth":14,"bounds":{"left":0.128125,"top":0.060416665,"width":0.037109375,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ask Jiminny reports","depth":13,"bounds":{"left":0.54609376,"top":0.05625,"width":0.06992187,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny reports","depth":14,"bounds":{"left":0.56210935,"top":0.063194446,"width":0.0484375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Report name","depth":17,"bounds":{"left":0.14257812,"top":0.09513889,"width":0.068359375,"height":0.017361112},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Period","depth":20,"bounds":{"left":0.234375,"top":0.1,"width":0.01484375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Report Type Report Type","depth":16,"bounds":{"left":0.31640625,"top":0.09513889,"width":0.07773437,"height":0.017361112},"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,"bounds":{"left":0.31640625,"top":0.09861111,"width":0.027734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear all","depth":13,"bounds":{"left":0.4015625,"top":0.09791667,"width":0.033203125,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"NAME","depth":16,"bounds":{"left":0.12773438,"top":0.14583333,"width":0.015234375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FREQUENCY","depth":16,"bounds":{"left":0.33984375,"top":0.14583333,"width":0.030859375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SHARED","depth":16,"bounds":{"left":0.41054687,"top":0.14583333,"width":0.020703126,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE","depth":16,"bounds":{"left":0.48125,"top":0.14583333,"width":0.012890625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ACTIONS","depth":16,"bounds":{"left":0.55195314,"top":0.14583333,"width":0.02265625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No reports have been created yet","depth":13,"bounds":{"left":0.30429688,"top":0.26458332,"width":0.1375,"height":0.020833334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You are currently impersonating Nikolay Yankov","depth":11,"bounds":{"left":0.29921874,"top":0.046527777,"width":0.10859375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear","depth":16,"bounds":{"left":0.6269531,"top":0.068055555,"width":0.01015625,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Filter URLs","depth":16,"bounds":{"left":0.6390625,"top":0.065972224,"width":0.2125,"height":0.018055556},"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,"bounds":{"left":0.86757815,"top":0.068055555,"width":0.01015625,"height":0.014583333},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"New Request","depth":16,"bounds":{"left":0.8785156,"top":0.068055555,"width":0.01015625,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Search","depth":16,"bounds":{"left":0.8894531,"top":0.068055555,"width":0.01015625,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Request Blocking","depth":16,"bounds":{"left":0.9003906,"top":0.068055555,"width":0.01015625,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Disable Cache","depth":17,"bounds":{"left":0.91445315,"top":0.06944445,"width":0.00546875,"height":0.009722223},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Disable Cache","depth":17,"bounds":{"left":0.92109376,"top":0.07013889,"width":0.029296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"No Throttling","depth":16,"bounds":{"left":0.9546875,"top":0.06875,"width":0.031640626,"height":0.0125},"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,"bounds":{"left":0.98828125,"top":0.068055555,"width":0.01015625,"height":0.013888889},"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,"bounds":{"left":0.6296875,"top":0.088194445,"width":0.009765625,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"HTML","depth":17,"bounds":{"left":0.64023435,"top":0.088194445,"width":0.016796876,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"CSS","depth":17,"bounds":{"left":0.6578125,"top":0.088194445,"width":0.01328125,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"JS","depth":17,"bounds":{"left":0.671875,"top":0.088194445,"width":0.009765625,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"XHR","depth":17,"bounds":{"left":0.68242186,"top":0.088194445,"width":0.0140625,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Fonts","depth":17,"bounds":{"left":0.6972656,"top":0.088194445,"width":0.016015625,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Images","depth":17,"bounds":{"left":0.7140625,"top":0.088194445,"width":0.019140625,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Media","depth":17,"bounds":{"left":0.73398435,"top":0.088194445,"width":0.0171875,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"WS","depth":17,"bounds":{"left":0.7519531,"top":0.088194445,"width":0.01171875,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Other","depth":17,"bounds":{"left":0.7644531,"top":0.088194445,"width":0.01640625,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Status","depth":24,"bounds":{"left":0.62539065,"top":0.10555556,"width":0.021484375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Status","depth":26,"bounds":{"left":0.6273438,"top":0.10972222,"width":0.01328125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Method","depth":24,"bounds":{"left":0.6472656,"top":0.10555556,"width":0.020703126,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Method","depth":26,"bounds":{"left":0.64921874,"top":0.10972222,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Domain","depth":24,"bounds":{"left":0.6683594,"top":0.10555556,"width":0.042578124,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Domain","depth":26,"bounds":{"left":0.6703125,"top":0.10972222,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"File","depth":24,"bounds":{"left":0.71132815,"top":0.10555556,"width":0.10625,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"File","depth":26,"bounds":{"left":0.7132813,"top":0.10972222,"width":0.00703125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Initiator","depth":24,"bounds":{"left":0.8179687,"top":0.10555556,"width":0.042578124,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Initiator","depth":26,"bounds":{"left":0.81992185,"top":0.10972222,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Type","depth":24,"bounds":{"left":0.8609375,"top":0.10555556,"width":0.02109375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":26,"bounds":{"left":0.8628906,"top":0.10972222,"width":0.009765625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Transferred","depth":24,"bounds":{"left":0.88242185,"top":0.10555556,"width":0.0421875,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Transferred","depth":26,"bounds":{"left":0.884375,"top":0.10972222,"width":0.0234375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Size","depth":24,"bounds":{"left":0.925,"top":0.10555556,"width":0.02109375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Size","depth":26,"bounds":{"left":0.92695314,"top":0.10972222,"width":0.00859375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"0 ms 2.56 s","depth":24,"bounds":{"left":0.9464844,"top":0.10555556,"width":0.04765625,"height":0.016666668},"help_text":"Timeline","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0 ms","depth":27,"bounds":{"left":0.94804686,"top":0.11180556,"width":0.007421875,"height":0.0069444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2.56 s","depth":27,"bounds":{"left":0.9722656,"top":0.11180556,"width":0.01015625,"height":0.0069444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"POST","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"jmny.report-uri.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"reportOnly","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"csp","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"plain","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NS_BINDING_ABORTED","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13 ms","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"POST","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"r.logr-in.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"i?a=ponxaf/platform-staging&r=6-019d8b28-3eff-7d1d-91e5-1c598b541c05&t=14f86387-75a7-4913-84ea-8564cbf50ebc&s=0&hr=t&u=c4fb084a-b33a-46fe-904b-351b592a4b0f&is=IDENTIFIED&rs=0,t","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":"NS_BINDING_ABORTED","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0 B","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0 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":"app.staging.jiminny.com","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ai-reports","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"document","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"html","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"service worker","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16.67 kB","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0 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"}]...
|
9119530695416450857
|
-7846020823674916114
|
visual_change
|
accessibility
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720
28
28
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
No reports have been created yet
You are currently impersonating Nikolay Yankov
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 2.56 s
0 ms
2.56 s
POST
jmny.report-uri.com
reportOnly
csp
plain
NS_BINDING_ABORTED
0 B
13 ms
POST
r.logr-in.com
i?a=ponxaf/platform-staging&r=6-019d8b28-3eff-7d1d-91e5-1c598b541c05&t=14f86387-75a7-4913-84ea-8564cbf50ebc&s=0&hr=t&u=c4fb084a-b33a-46fe-904b-351b592a4b0f&is=IDENTIFIED&rs=0,t
xhr
NS_BINDING_ABORTED
0 B
0 ms
200
GET
app.staging.jiminny.com
ai-reports
document
html
service worker
16.67 kB
0 ms
200
GET...
|
10818
|
|
10823
|
215
|
23
|
2026-04-14T09:00:03.730542+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157203730_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpdoo.sideme.minny.com/ di-teoorlsAl Reports• Report nameNAME -PeriodIlablSupport Daily • in 3hA100% CS•Tue 14 Apr 12:00:03ELE Memory{O3 Ask Jiminny reportsPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multipleConsole Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User pilo5 SRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabYou are currently impersonating Nikolay Yankov <)Report Type• Clear allFREQUENCY +SHAREDDATE YACTIONSCR 0 InspectorConsole| T Filter URLSAll HTML CSSStatus Method DomainPOSTr.logr-in.comOPTIO....r.logr-in.comOPTIO....r.logr-in.com200POSTArlogr-in.com• DebuggerN Network{) Style Editor( PerformanceImagesMediaotherInitiatorWasponxat/olatrorm-stacinaxr=0-01908028-3eft-/ xhri?a=ponxaf/platform-staging&r=6-019d8b28-3eff-7 xhrYa=ponxat plattorm-staging&r=6-019d8b28-3eft-/ xhriPa=ponxaf/platform-staging&r=6-019d8b28-3eff-7 xhrTypeE Storage0 99+_ Disable Cache No Throttling + 50:Transferred640 ms283.71 kB419 ms10No reports have been created yetJY-18909-automated-reports-ask-iiminny = 869720)© 4requests | 0 B / 283.71 KB transferredFinish: 568 ms...
|
NULL
|
-8040352681821170525
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpdoo.sideme.minny.com/ di-teoorlsAl Reports• Report nameNAME -PeriodIlablSupport Daily • in 3hA100% CS•Tue 14 Apr 12:00:03ELE Memory{O3 Ask Jiminny reportsPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multipleConsole Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User pilo5 SRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabYou are currently impersonating Nikolay Yankov <)Report Type• Clear allFREQUENCY +SHAREDDATE YACTIONSCR 0 InspectorConsole| T Filter URLSAll HTML CSSStatus Method DomainPOSTr.logr-in.comOPTIO....r.logr-in.comOPTIO....r.logr-in.com200POSTArlogr-in.com• DebuggerN Network{) Style Editor( PerformanceImagesMediaotherInitiatorWasponxat/olatrorm-stacinaxr=0-01908028-3eft-/ xhri?a=ponxaf/platform-staging&r=6-019d8b28-3eff-7 xhrYa=ponxat plattorm-staging&r=6-019d8b28-3eft-/ xhriPa=ponxaf/platform-staging&r=6-019d8b28-3eff-7 xhrTypeE Storage0 99+_ Disable Cache No Throttling + 50:Transferred640 ms283.71 kB419 ms10No reports have been created yetJY-18909-automated-reports-ask-iiminny = 869720)© 4requests | 0 B / 283.71 KB transferredFinish: 568 ms...
|
10821
|
|
10826
|
215
|
25
|
2026-04-14T09:00:06.685615+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157206685_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Firefox FileEoitViewHistory Bookmarks ProfilesTool Firefox FileEoitViewHistory Bookmarks ProfilesToolsWindow Help© app.staging.jiminny.com/ondemandPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multipleConsole Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable to |Jy 19798 evaluation for ai activity@ Jiminny8 Ask Jiminny test report - 8 Apr 20)- Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleFal CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New Tab40halSupport Daily • in 3hA100% CS•Tue 14 Apr 12:00:06O InspectorConsole| T Filter URLSAll HTMLessStatus Method Domain200Posr.loar-in.comD DebuggerN Network{) Style Editor( PerformanceELE MemoryE Storage© 36•Disable Cache No Throttling + 39:ImagesMediaotherInitiatorWasponxat/olatrorm-stacinaxr=0-01908028-3eft-/ xhrTypejsonTransferredSizeb69 k.OB173 ms1.28 5o1 requestO B/ 5.59 kB transferredFinish: 1.05s DOMContentLoaded: 779 ms load: 954 ms...
|
NULL
|
-7394777380402619082
|
NULL
|
visual_change
|
ocr
|
NULL
|
Firefox FileEoitViewHistory Bookmarks ProfilesTool Firefox FileEoitViewHistory Bookmarks ProfilesToolsWindow Help© app.staging.jiminny.com/ondemandPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multipleConsole Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable to |Jy 19798 evaluation for ai activity@ Jiminny8 Ask Jiminny test report - 8 Apr 20)- Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleFal CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New Tab40halSupport Daily • in 3hA100% CS•Tue 14 Apr 12:00:06O InspectorConsole| T Filter URLSAll HTMLessStatus Method Domain200Posr.loar-in.comD DebuggerN Network{) Style Editor( PerformanceELE MemoryE Storage© 36•Disable Cache No Throttling + 39:ImagesMediaotherInitiatorWasponxat/olatrorm-stacinaxr=0-01908028-3eft-/ xhrTypejsonTransferredSizeb69 k.OB173 ms1.28 5o1 requestO B/ 5.59 kB transferredFinish: 1.05s DOMContentLoaded: 779 ms load: 954 ms...
|
10825
|
|
10827
|
215
|
26
|
2026-04-14T09:00:09.708322+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157209708_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfllesToolsWi FirefoxFileEoitViewHistoryBookmarksProfllesToolsWindowHelpapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)labl# Support Daily • in 3hA100% C•Tue 14 Apr 12:00:09O: MemoryE StorageNo tilters annlied0 99+Disable CacheNo Throttling + 50Platform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multipleConsole Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User pilo5 SRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201- Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New Tab10CR O InspectorConsole| T Filter URLSAll HTML CSSCtatucMethodDomain200POSTAr.loar-in.com200POSTA 8 036719ing..200POST200A 8 036719.ing...POSTA 8 0367719.ing...200POSTA 5 036719.ing...200GETA app.staging ji...200GETA app.staging.ji.200200GETapp.stagingiji...GETe app.staging.j...GET200200app.staging.jimin...POSTapp.staging,ji...GET•find.userpilot.ioD DebuggerN Network{) Style Editor( PerformanceImagesMediaInitiatorWasponxat/olatrorm-stacinaxr=0-01908028-3eft- xhr/api/5627310/envelope/?sentry_version=7&sentry_kr fetchapi/562/310/envelope?sentry version=/&sentry_kr fetch/api/5627310/envelope/?sentry_version=7&sentry_ki fetch/api/5627310/envelope/?sentry_version=7&sentry_kr fetchsearch?status[]=completed&sort_by=dateHelde -A xhrA xhrxhrsaved-searchintegrationson-demandrtooic 10=e0410932-c0/0-4106-ac4f- xhrauthenticateNX-094be1/a xhrxhrTypejsonjsonIsonSonTransferredjsonb69 k500 BO B / 173 ms2 B2 B500500 B500 B2B628 KВ 24.21 KB5.65 kB 15.26 kB3.62 k.142 KB3.83 kB5.53 kB3.11 kBcachec96 B62 B143 ms|42 ms44 ms42 ms2151 ms709 ms1466 ms1590 me1048 msJY-18909-automated-reports-ask-iiminny = 869720)-© 12 requests | 46.58 kB / 30.08 kB transferredFinish: 3.84sDOMContentLoaded: 779 ms load: 954 ms...
|
NULL
|
275328729312523073
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfllesToolsWi FirefoxFileEoitViewHistoryBookmarksProfllesToolsWindowHelpapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)labl# Support Daily • in 3hA100% C•Tue 14 Apr 12:00:09O: MemoryE StorageNo tilters annlied0 99+Disable CacheNo Throttling + 50Platform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multipleConsole Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User pilo5 SRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201- Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New Tab10CR O InspectorConsole| T Filter URLSAll HTML CSSCtatucMethodDomain200POSTAr.loar-in.com200POSTA 8 036719ing..200POST200A 8 036719.ing...POSTA 8 0367719.ing...200POSTA 5 036719.ing...200GETA app.staging ji...200GETA app.staging.ji.200200GETapp.stagingiji...GETe app.staging.j...GET200200app.staging.jimin...POSTapp.staging,ji...GET•find.userpilot.ioD DebuggerN Network{) Style Editor( PerformanceImagesMediaInitiatorWasponxat/olatrorm-stacinaxr=0-01908028-3eft- xhr/api/5627310/envelope/?sentry_version=7&sentry_kr fetchapi/562/310/envelope?sentry version=/&sentry_kr fetch/api/5627310/envelope/?sentry_version=7&sentry_ki fetch/api/5627310/envelope/?sentry_version=7&sentry_kr fetchsearch?status[]=completed&sort_by=dateHelde -A xhrA xhrxhrsaved-searchintegrationson-demandrtooic 10=e0410932-c0/0-4106-ac4f- xhrauthenticateNX-094be1/a xhrxhrTypejsonjsonIsonSonTransferredjsonb69 k500 BO B / 173 ms2 B2 B500500 B500 B2B628 KВ 24.21 KB5.65 kB 15.26 kB3.62 k.142 KB3.83 kB5.53 kB3.11 kBcachec96 B62 B143 ms|42 ms44 ms42 ms2151 ms709 ms1466 ms1590 me1048 msJY-18909-automated-reports-ask-iiminny = 869720)-© 12 requests | 46.58 kB / 30.08 kB transferredFinish: 3.84sDOMContentLoaded: 779 ms load: 954 ms...
|
NULL
|
|
10829
|
215
|
27
|
2026-04-14T09:00:12.756441+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157212756_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent* Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityZ Configure SSH access to multipleCurrent StageStatsDuration DateHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210Mise searen as DarticloanuJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformJY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantsearcn leam membersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byAnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesContactActivityTypeJiminny MSalesforce App TrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720Unlikely toRenew$42,126$00Đ0 D44/m11/07/2024, 2:28 PM$1 90Đ0 D344m20 %0Đ0D234m$0%0Đ0 D2$0 228.DODO17m31m43m28mD0 E1 sim25m39m33m53122ĐO D 1141m25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.96 PMI13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AMf Support Daily • in 3hA100% C•Tue 14 Apr 12:00:12Q InspectorConsoleD DebuggerN Network{) Style Editor( PerformanceO: MemoryE Storage© 99+Fiter URLsNo Throttling + 50;AlIHMLMe: Domain FileInitiatorHeadersCookiesRequestResponseTimingsSecurity290 PA200 P...Mrlo.A8..."asoonxat o atrorm-stac xhr/api/5627310/envelope/2: fetch/api/5627310/envelope/?: fetchAD...A0../api/5627310/envelope/?: fetchlapi/5627310/envelope/?; fetchsearch?statusll=con +a xhr200 G.А эp...H Xhi200 G..A app...saved-search200 ....8 app.integrations•A xhr200 G...A app...on-demand?topic_io200 P...A app...•A xhr200 G...AA find... NX-094be170200 P... A r.lo...i?a=ponxaf/platform-stag xhr5,59 KB0.Block Resend500 B 2 BgET httos:aop staging.uminnv.com/aoi/vlactvtv/search?status=comoletedesortov=cate6003 28Held&sort_direction=desc&exclude[l=stats&only_recorded=1&user_id[I=c4fb084a-b33a-46fe-904b-351b592a4b0f500 B 2 B500 B 2B6.28 kB 2...5.65 kB 13.62 kB 1....statusVersionTransterreaKeterrer PollcyDiNs kesolution200 0HTTP/30.20 KD (4421 Ko SIZe)no-reterrer-wnen-downgrade3.83 kB 5..• Response Headers (2.956 kB)Raw39,54 .alt-svc: h3=":443 ma=864003.11 kB 9..cache-control: no-cache, privatecontent-encoding: gzip307.70...content-language: encontent-security-policy-report-only: script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: httmepedlepusnehcom mpe hmeretoreotno mibsobeamocomcat.commupedfcutnorockel.lo.style-sre sell unsare-inine mos.con.stagng.miny.comnuos.fonts.googeaois.comnttos./cons.clouatlare.com.lme-srcsetnuos:can.stacine.minny.com/nttos..httos:/is.intercomcdn.com:connect-srchttos:lapp.staging.iiminnv.com httos:media.app.staging.jiminny.com wss:/*.pusher.com [URL_WITH_CREDENTIALS] 6.01 s...
|
NULL
|
-2886714203016822210
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent* Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityZ Configure SSH access to multipleCurrent StageStatsDuration DateHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210Mise searen as DarticloanuJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformJY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantsearcn leam membersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byAnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesContactActivityTypeJiminny MSalesforce App TrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720Unlikely toRenew$42,126$00Đ0 D44/m11/07/2024, 2:28 PM$1 90Đ0 D344m20 %0Đ0D234m$0%0Đ0 D2$0 228.DODO17m31m43m28mD0 E1 sim25m39m33m53122ĐO D 1141m25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.96 PMI13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AMf Support Daily • in 3hA100% C•Tue 14 Apr 12:00:12Q InspectorConsoleD DebuggerN Network{) Style Editor( PerformanceO: MemoryE Storage© 99+Fiter URLsNo Throttling + 50;AlIHMLMe: Domain FileInitiatorHeadersCookiesRequestResponseTimingsSecurity290 PA200 P...Mrlo.A8..."asoonxat o atrorm-stac xhr/api/5627310/envelope/2: fetch/api/5627310/envelope/?: fetchAD...A0../api/5627310/envelope/?: fetchlapi/5627310/envelope/?; fetchsearch?statusll=con +a xhr200 G.А эp...H Xhi200 G..A app...saved-search200 ....8 app.integrations•A xhr200 G...A app...on-demand?topic_io200 P...A app...•A xhr200 G...AA find... NX-094be170200 P... A r.lo...i?a=ponxaf/platform-stag xhr5,59 KB0.Block Resend500 B 2 BgET httos:aop staging.uminnv.com/aoi/vlactvtv/search?status=comoletedesortov=cate6003 28Held&sort_direction=desc&exclude[l=stats&only_recorded=1&user_id[I=c4fb084a-b33a-46fe-904b-351b592a4b0f500 B 2 B500 B 2B6.28 kB 2...5.65 kB 13.62 kB 1....statusVersionTransterreaKeterrer PollcyDiNs kesolution200 0HTTP/30.20 KD (4421 Ko SIZe)no-reterrer-wnen-downgrade3.83 kB 5..• Response Headers (2.956 kB)Raw39,54 .alt-svc: h3=":443 ma=864003.11 kB 9..cache-control: no-cache, privatecontent-encoding: gzip307.70...content-language: encontent-security-policy-report-only: script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: httmepedlepusnehcom mpe hmeretoreotno mibsobeamocomcat.commupedfcutnorockel.lo.style-sre sell unsare-inine mos.con.stagng.miny.comnuos.fonts.googeaois.comnttos./cons.clouatlare.com.lme-srcsetnuos:can.stacine.minny.com/nttos..httos:/is.intercomcdn.com:connect-srchttos:lapp.staging.iiminnv.com httos:media.app.staging.jiminny.com wss:/*.pusher.com [URL_WITH_CREDENTIALS] 6.01 s...
|
10827
|
|
10833
|
215
|
29
|
2026-04-14T09:00:16.904825+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157216904_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent* Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityZ Configure SSH access to multipleCurrent StageStatsDuration DateHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210Mise searen as particioanuJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatfornJY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantSearch team membersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byAnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomaled call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesContactActivityTypeJiminny MSalesforce App TrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720)Unlikely toRenew$42,126$0090 D44/m11/07/2024, 2:28 PM$1 90Đ0 D344mĐ0D234m$0%0Đ0 D2$0 228.DODO17m31m43m28m$0 E1 sim25m39m33m53122ĐO D 1141m25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.96 PMI13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AM> 0lablSupport Daily • in 3hA100% CS•Tue 14 Apr 12:00:16Q InspectorFilter URLsConsoleD DebuggerN Network{) Style Editor( PerformanceO: MemoryE Storage0 99+_ Disable Cache No Throttling 50.AlIHMLmagesMe: Domain FileInitiator290 PAMrlo.Tasoonxat o attorm-stac xhi200 P...A8.../api/5627310/envelope/2: fetch/api/5627310/envelope/?: fetchAD.../api/5627310/envelope/?: fetchA0..lapi/5627310/envelope/?; fetch200 G...search?statusll=con +a xhr200 G.А эp...A xhr200 G..A aрp...saved-searchA xhr200 ....A app...integrations•A xhrA ap...on-demand?topic_id"200 P..A ap...authenticate•A xhr200 G.A find...NX-094be170200 P...A r.lo...i?a=ponxaf/platform-stag xhr(200 P... A r.lo...i?a=ponxaf/platform-MediaTransf.,HeadersCookiesRequestResponse5,59 KB0.500 B 2 B JSON500B 2B pagination: { total: 9, current: 1, prev: 1, ... }500 B 2B P resultiy (9)1 (.), .) ..) ) ..)...).)......)..500 B 2Bnistogram:6.28 kB 2...5.65 kB 1.362KB 1.3.83 kB 5...30,54 m3.11 kB 9...TimingsSecurity307.70..1./4 Mb U.14 requests| 243.45 kB / 2.14 MB transferredFinish: 8.80s...
|
NULL
|
4232324930504420827
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent* Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityZ Configure SSH access to multipleCurrent StageStatsDuration DateHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210Mise searen as particioanuJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatfornJY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantSearch team membersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byAnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomaled call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesContactActivityTypeJiminny MSalesforce App TrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720)Unlikely toRenew$42,126$0090 D44/m11/07/2024, 2:28 PM$1 90Đ0 D344mĐ0D234m$0%0Đ0 D2$0 228.DODO17m31m43m28m$0 E1 sim25m39m33m53122ĐO D 1141m25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.96 PMI13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AM> 0lablSupport Daily • in 3hA100% CS•Tue 14 Apr 12:00:16Q InspectorFilter URLsConsoleD DebuggerN Network{) Style Editor( PerformanceO: MemoryE Storage0 99+_ Disable Cache No Throttling 50.AlIHMLmagesMe: Domain FileInitiator290 PAMrlo.Tasoonxat o attorm-stac xhi200 P...A8.../api/5627310/envelope/2: fetch/api/5627310/envelope/?: fetchAD.../api/5627310/envelope/?: fetchA0..lapi/5627310/envelope/?; fetch200 G...search?statusll=con +a xhr200 G.А эp...A xhr200 G..A aрp...saved-searchA xhr200 ....A app...integrations•A xhrA ap...on-demand?topic_id"200 P..A ap...authenticate•A xhr200 G.A find...NX-094be170200 P...A r.lo...i?a=ponxaf/platform-stag xhr(200 P... A r.lo...i?a=ponxaf/platform-MediaTransf.,HeadersCookiesRequestResponse5,59 KB0.500 B 2 B JSON500B 2B pagination: { total: 9, current: 1, prev: 1, ... }500 B 2B P resultiy (9)1 (.), .) ..) ) ..)...).)......)..500 B 2Bnistogram:6.28 kB 2...5.65 kB 1.362KB 1.3.83 kB 5...30,54 m3.11 kB 9...TimingsSecurity307.70..1./4 Mb U.14 requests| 243.45 kB / 2.14 MB transferredFinish: 8.80s...
|
10831
|
|
10836
|
215
|
31
|
2026-04-14T09:00:20.548766+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157220548_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent* Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityCurrent StagestatsZ Configure SSH access to multipleHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210niso searen as particioantJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformJY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantsearcn leam memdersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byAnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesContactActivityTypeDurationDateJiminny MSalestorce App IrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720Unlikely toRenew$42,126() Export Link0.90 о 344mĐ0D234m00D 2$0 228.DODO17m31m43m28m$0 E1 sim25m39m33m53122ĐO D 1141m•!: Share25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.96 PMI13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AMSupport Daily • in 3hA100% CS•Tue 14 Apr 12:00:20Q InspectorFiter URLsD DebuggerN Network{) Style Editor( PerformanceO: MemoryE Storage© 99+_ Disable Cache No Throttling + 50:AlIHMLMediaMe: Domain FileInitiator290 PAMrlo.asoonxat o atrorm-stac xhn200 P...A8.../api/5627310/envelope/2: fetch206 P./api/5627310/envelope/?: fetch200 P..AD.../api/5627310/envelope/?: fetch200 P.A0...lapi/5627310/envelope/?; fetch200 G...A app.search?statusll=con +a xhr200 G.A aр...A xhr200 G..A aрp...saved-search200 G..A app...integrations200 G..A ap...on-demand?topic_id"200 P..A ap...authenticate•A xhr•A xhr200 G.A find...NX-094be170200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...A r.lo...i?a=ponxaf/platform-Transt...HeadersCookiesRequestResponseTimingsSecurity5,59 KB0.500 B 2 B JSONb00b 28 pagination: total: 9, current: 1, prev: 1, ….500 B 2B,results: (9)1 (), (.), (.3, (.3, (.3, .7, .7, .7, (..} 1500 B 2B• 0: (id: "d8f59af3-db73-4999-a583-9e1ea150ccfb", type: "softphone", language: "en_GB", ...)•1:(1d: "/eabzt2-gesd-4c8b-abcc-df4/0529d526", type: "softphone", language: "en_GB", ..)6.28 kB 2...2: (id: "6317e5ff-6dc9-4bd1-84d3-a47f666443eb", type: "softphone", language: "en_GB",...)5.65 kB 13: {id: "8ce2408c-f4ab-4a62-86ca-cd80d57e146f" type: "conference", title: "Notetaker added3.62 kB 1...ov Nikolav Yankoy".3.83 kB 5..., 4: (id: "716485bd-75a3-481b-bd58-a86d769e8e4e", type: "conference", title: "Notetakeradaed oy Nikolay Yankov..39,54 .6: < 10: "400S/391-8310-4060-[CREDIT_CARD]' Tvoe: "conterence" title: "Notetaken3.11 kB 9...duded by nikolay Tankov y.yb: 10: besbbao0-1340-4001-a430-c/3o2m/oazu tvoe: conterence, tiule: "Notetaker addedcached 6...by Nikolay Yankov", ..,307.70..• 7: { id: "38aafe12-a8d6-45bc-bf45-4d9ef74cb7e4", type: "conference", title: "Notetaker added1./4 Mb U.on 12-19-23 @ 10:04",... )8:Sid: "a94878cc-9f85-4900-032b-5cdee7 23alfg" tvoe: "conference" title: "Notetaker addedon 11-16-23 @ 17:14",...)nistocram:Ô 14 requests | 243.45 kB / 2.14 MB transferredFinish: 8.80s...
|
NULL
|
5860173066986983005
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent* Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityCurrent StagestatsZ Configure SSH access to multipleHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210niso searen as particioantJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformJY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantsearcn leam memdersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byAnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesContactActivityTypeDurationDateJiminny MSalestorce App IrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720Unlikely toRenew$42,126() Export Link0.90 о 344mĐ0D234m00D 2$0 228.DODO17m31m43m28m$0 E1 sim25m39m33m53122ĐO D 1141m•!: Share25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.96 PMI13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AMSupport Daily • in 3hA100% CS•Tue 14 Apr 12:00:20Q InspectorFiter URLsD DebuggerN Network{) Style Editor( PerformanceO: MemoryE Storage© 99+_ Disable Cache No Throttling + 50:AlIHMLMediaMe: Domain FileInitiator290 PAMrlo.asoonxat o atrorm-stac xhn200 P...A8.../api/5627310/envelope/2: fetch206 P./api/5627310/envelope/?: fetch200 P..AD.../api/5627310/envelope/?: fetch200 P.A0...lapi/5627310/envelope/?; fetch200 G...A app.search?statusll=con +a xhr200 G.A aр...A xhr200 G..A aрp...saved-search200 G..A app...integrations200 G..A ap...on-demand?topic_id"200 P..A ap...authenticate•A xhr•A xhr200 G.A find...NX-094be170200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...A r.lo...i?a=ponxaf/platform-Transt...HeadersCookiesRequestResponseTimingsSecurity5,59 KB0.500 B 2 B JSONb00b 28 pagination: total: 9, current: 1, prev: 1, ….500 B 2B,results: (9)1 (), (.), (.3, (.3, (.3, .7, .7, .7, (..} 1500 B 2B• 0: (id: "d8f59af3-db73-4999-a583-9e1ea150ccfb", type: "softphone", language: "en_GB", ...)•1:(1d: "/eabzt2-gesd-4c8b-abcc-df4/0529d526", type: "softphone", language: "en_GB", ..)6.28 kB 2...2: (id: "6317e5ff-6dc9-4bd1-84d3-a47f666443eb", type: "softphone", language: "en_GB",...)5.65 kB 13: {id: "8ce2408c-f4ab-4a62-86ca-cd80d57e146f" type: "conference", title: "Notetaker added3.62 kB 1...ov Nikolav Yankoy".3.83 kB 5..., 4: (id: "716485bd-75a3-481b-bd58-a86d769e8e4e", type: "conference", title: "Notetakeradaed oy Nikolay Yankov..39,54 .6: < 10: "400S/391-8310-4060-[CREDIT_CARD]' Tvoe: "conterence" title: "Notetaken3.11 kB 9...duded by nikolay Tankov y.yb: 10: besbbao0-1340-4001-a430-c/3o2m/oazu tvoe: conterence, tiule: "Notetaker addedcached 6...by Nikolay Yankov", ..,307.70..• 7: { id: "38aafe12-a8d6-45bc-bf45-4d9ef74cb7e4", type: "conference", title: "Notetaker added1./4 Mb U.on 12-19-23 @ 10:04",... )8:Sid: "a94878cc-9f85-4900-032b-5cdee7 23alfg" tvoe: "conference" title: "Notetaker addedon 11-16-23 @ 17:14",...)nistocram:Ô 14 requests | 243.45 kB / 2.14 MB transferredFinish: 8.80s...
|
10835
|
|
10844
|
215
|
35
|
2026-04-14T09:00:31.729266+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157231729_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.staging.jiminny.com/ondemand?topic_id[]=e02f09 app.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11796875,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.12083333,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.14930555,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.17777778,"width":0.08671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SecurityGroup | EC2 | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.20625,"width":0.06484375,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.23472223,"width":0.18710938,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.26319444,"width":0.23476562,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.29166666,"width":0.1984375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"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":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","depth":4,"bounds":{"left":0.0,"top":0.33888888,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.34861112,"width":0.1640625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.3673611,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.37708333,"width":0.12617187,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.39583334,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.40555555,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-9142670776801479152
|
1519773153483160270
|
visual_change
|
accessibility
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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...
|
10842
|
|
10845
|
215
|
36
|
2026-04-14T09:00:34.699279+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157234699_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent*Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityZ Configure SSH access to multipleCurrent StageStatsDuration DateHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210niso searen as DarticloanuJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatfornJY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantSearch team membersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byMnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesContactActivityTypeJiminny MSalesforce App TrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720Unlikely toRenew$42,1264/m11/07/2024, 2:28 PMĐ0 D4$1 90Đ0 D344m34mĐ0 D2W0 %0Đ0 D2$0 228.DODO17m31m43m28m$0 E1 sim25m39m33m53122ĐO D 1141m25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.56 PM13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AMQ InspectorFilter URLsConsoleD DebuggerAlIHMLMe: Domain File290 PAMrlo."asoonxat o atrorm-stac xhr200 P...A8.../api/5627310/envelope/2: fetch206 P./api/5627310/envelope/?: fetchA0.../api/5627310/envelope/?: fetchA0.../api/5627310/envelope/?; fetchA app.search?status[]=com200 G.A aр...H Xhi200 G..A aрp...appA app...А aрp.saved-searchintegrationson-demand?topic_idauthenticate•A xhr•A xhr200 G.tind...A r.lo...200P.A r.lo...200 P...Ar.lo...200 P..A r...200 P... A r.lo...i?a=ponxaf/platform-stag xhri?a=ponxaf/platformA xhri?a=ponxaf/platform-stag xhriPa=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhr17 requests| 243.45 kB / 2.15 MB transferredFinish: 25.45 s [f Support Daily • in 3hA100% C•Tue 14 Apr 12:00:34N Network(} Style Editor( PerformanceO: MemoryE Storage© 99+Disable CacheNo ThrottlingTrancfHeadersCookiesRequestResponseTimingsSecurity5,59 KB0.Block Resend500 B 2 BGET nttos:aoostacing.lminnv.com/aoi/v/oage/on-cemanortooic 1c=e021093-co/0-470b003 285-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4500 B 2 B500 B 2B6.28 kB 2...5.65 kB 1StatusVersionTransferredReferrer PolicyUins kesolution200HTTP/355.54 kB (196.87 kB size)no-referrer-when-downgradesystem3.62 kB 1...3.83 kB 5..55.54 .3.11 kB 9...cached 6..kesponse Headers (2.900 Kb)alt-svc: h3=":443"; ma=86400cache-control: no-cache, onivatecontent-encoalng: oziocontent-language: encontent-securtv-policy-report-onv: scriot-src 'self 'unsate-inine' 'unsate-eval" o oo: hitkawe307.70..1./4 Mb U.2.47 kB 0...4.91 kB 0.scket.io; style-src 'self" 'unsafe-inline' [URL_WITH_CREDENTIALS]...
|
NULL
|
179584588173805955
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent*Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityZ Configure SSH access to multipleCurrent StageStatsDuration DateHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210niso searen as DarticloanuJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatfornJY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantSearch team membersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byMnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesContactActivityTypeJiminny MSalesforce App TrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720Unlikely toRenew$42,1264/m11/07/2024, 2:28 PMĐ0 D4$1 90Đ0 D344m34mĐ0 D2W0 %0Đ0 D2$0 228.DODO17m31m43m28m$0 E1 sim25m39m33m53122ĐO D 1141m25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.56 PM13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AMQ InspectorFilter URLsConsoleD DebuggerAlIHMLMe: Domain File290 PAMrlo."asoonxat o atrorm-stac xhr200 P...A8.../api/5627310/envelope/2: fetch206 P./api/5627310/envelope/?: fetchA0.../api/5627310/envelope/?: fetchA0.../api/5627310/envelope/?; fetchA app.search?status[]=com200 G.A aр...H Xhi200 G..A aрp...appA app...А aрp.saved-searchintegrationson-demand?topic_idauthenticate•A xhr•A xhr200 G.tind...A r.lo...200P.A r.lo...200 P...Ar.lo...200 P..A r...200 P... A r.lo...i?a=ponxaf/platform-stag xhri?a=ponxaf/platformA xhri?a=ponxaf/platform-stag xhriPa=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhr17 requests| 243.45 kB / 2.15 MB transferredFinish: 25.45 s [f Support Daily • in 3hA100% C•Tue 14 Apr 12:00:34N Network(} Style Editor( PerformanceO: MemoryE Storage© 99+Disable CacheNo ThrottlingTrancfHeadersCookiesRequestResponseTimingsSecurity5,59 KB0.Block Resend500 B 2 BGET nttos:aoostacing.lminnv.com/aoi/v/oage/on-cemanortooic 1c=e021093-co/0-470b003 285-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4500 B 2 B500 B 2B6.28 kB 2...5.65 kB 1StatusVersionTransferredReferrer PolicyUins kesolution200HTTP/355.54 kB (196.87 kB size)no-referrer-when-downgradesystem3.62 kB 1...3.83 kB 5..55.54 .3.11 kB 9...cached 6..kesponse Headers (2.900 Kb)alt-svc: h3=":443"; ma=86400cache-control: no-cache, onivatecontent-encoalng: oziocontent-language: encontent-securtv-policy-report-onv: scriot-src 'self 'unsate-inine' 'unsate-eval" o oo: hitkawe307.70..1./4 Mb U.2.47 kB 0...4.91 kB 0.scket.io; style-src 'self" 'unsafe-inline' [URL_WITH_CREDENTIALS]...
|
NULL
|
|
10846
|
215
|
37
|
2026-04-14T09:00:37.775263+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157237775_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.staging.jiminny.com/ondemand?topic_id[]=e02f09 app.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11796875,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.12083333,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.14930555,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.17777778,"width":0.08671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SecurityGroup | EC2 | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.20625,"width":0.06484375,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.23472223,"width":0.18710938,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.26319444,"width":0.23476562,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.29166666,"width":0.1984375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"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":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","depth":4,"bounds":{"left":0.0,"top":0.33888888,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.34861112,"width":0.1640625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.3673611,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.37708333,"width":0.12617187,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.39583334,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.40555555,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.42430556,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4340278,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.45277777,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4625,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.48125,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.49097222,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.50972223,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.51944447,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.5395833,"width":0.08710937,"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":"Open 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":"Tabs from other devices","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 history (⇧⌘H)","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":"Open bookmarks (⌘B)","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":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 869720","depth":9,"bounds":{"left":0.09453125,"top":0.9875,"width":0.11796875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8978128860610191940
|
1375095015319662798
|
visual_change
|
accessibility
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720...
|
10845
|
|
10856
|
215
|
42
|
2026-04-14T09:01:02.090085+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157262090_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProjectv© DeviceRepository.php© ElasticActivityRepository.pl© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.php(C) InboxEmailBatchRepositon)InboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.php© NotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php® PlaylistActivityRepository.fPlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.php© RoleChangeEventRepositor© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.TaskRepository.php© TeamAiContextRepository.TeamDomainsRepository.p©TeamInsightsRepository.pt©TeamRepository.php©ThemeRepository.php© TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.phC) TranscriptionSummarvRep© UserRepository.php© VocabularyRepository.pnp> D Rulesv D Services> [ Activity> D AjReportsD AvatarcalendarD ConferenceD Crm[ Import> MInternalv D Kioskv _ AutomatedReports© ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsSt© ReportController.php© JiminnyDebugCommand.php© AutomatedReportsSendCommand.phpC AutomatedReportsCommand.php© AddLayoutEntities.php© Team.phpAutomaleakeporsservice.ong© AutomatedReportsRepository.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpCrealeAcuivilyLogqedbvent.ono(C) User?llorActvtvuistener.ono© ActivityLogged.phpc) AutomatedRenorscalloackoerwce.onv© RequestGenerateAskJiminnyReportJob.php x(©) RequestGenerateReportJob.php(C) AutomatedReportResult.php© AutomatedReport.phpclass RequestGenerateAskJiminnyReportJob implements opublic function handle(1):У3 ^v,258486878889100101102103104105106107110111.112return;ssavedsearcn = pautomatedkeport->gecsavedsearcnohif (SsavedSearch === null) &sLogger->warnangtsecr..Luo_Pkeria • Skipped, Saved $36'automatedReportUuid' => $this->reportUvid,1):lecurlin$prompt = $automatedReport->getAskAnythingPromptO);if ($prompt === null) {$logger->warning(self::LOG_PREFIX . ' Skipped, ask an45aucomatedkeporcuuld = suhis->reporcuula,1);recurny$this->reportResult = $reportService->createReportResult(automatedReport: $automatedReport,data: ['status' => AutomatedReportResult::STATUS_DEFAULT,'media_type' = AutomatedReportsService::MEDIA_TVF,SactivityIds = $activityService->getActivityIdsForSavedSe& 60savedSearch: $savedSearch,user: $creator,):$logger->info(self::LOG_PREFIX .' Fetched activity IDs','automatedReportUvid' = $this->reportUvid,'activityCount' => count($activityIds),I);if (count($activityIds) < self::MIN_ACTIVITIES_COUNT) {$this->failReport( reason: AutomatedReportResult::REASOI$logger->info(self::LOG_PREFIX'automatedReportUuid' => $this-NWindsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log4 console [EUl= laravel.logconsole SIAGING4 SF [jiminny@localhost]A HS_local [jiminny@localhost]© AskJiminnyReportActivityService.php xA console [PROD]© RequestGenerateAskJiminnyReportJobTest.phpN2R1 A Yclass AskJiminnyReportActivityServiceprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;private const array [ENV_SECRET],ActivityActualDate::PARAM_END_DATE,ActivityUpdatedDate::PARAM_UPDATED_FROM,ActivityUpdatedDate: :PARAM_UPDATED_TO,ClosingPeriodFilter::KEY_START_DATE,ClosingPeriodFilter::KEY_END_DATE,public function __construct(private readonly ActivitySearch $activitySearch,private readonly ElasticActivityRepository $elasticRepository,orvare reaconuy Loocerinuertace "Lodder) 4...3/*** Fetch activity IDs for a saved search, passing its filters as-is to Criteria.* Date filters stored on the saved search are excluded; if no other filters exist,* no date constraint is applied - matching the behaviour of getContextForAskAnythingByFilter.* Oreturn string[] Activity IDspublic function getActivityIdsForSavedSearch(Search SsavedSearch,User $user,): array {$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);$criteria = Criteria::createFromRequest(array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),suser->getlimezone$filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);$activityIds = $this->elasticRepository->onDemandSearchIds0nly($user, $criteria, $filterSet);$this->logger->info('[AskJimionxReport] Fetchedactivity IDs for saved search', ['saved_search_id'=> $savedSearch->getId(),'user_id' => $user-›getId(),'activity_count'→> count($activityIds),1):return $activityIds;private function buildRequestParamsFromSearch(Search $savedSearch, User $user): arrayf...3, 0lablf Support Daily • in 2h 59mARequestGenerateAsk.JiminnvRenort.lobTest100% C•Tue 14 Apr 12:01:01CascadeFixing ReportControlle• Automated Report N• Automated Report L+D ...3. Activity fetch — [AskJiminnyReport] (from AskJiminnyReportActivityService)[AskJiminnyReport] Fetched activity IDs for saved searchSavea search lo user lo aculvity countunen immealalely aner in tne od[AskJiminnyReport:Generatel Fetched activity IDsauconacedkeporcuuld, actlvicycount4a. Failure path (< 1 activity):LAskJiminnyReport:Generatel Not enough activities, skippecautomatedReportUuid, activityCountThe AutomatedReportResult gets status=failed, reason=REASON_NOT_ENOUGH_ACTIVITIES.4b. Error path (exception):[AskJiminnyReport:Generatel ErrorautomatedReportUuid, reportUuid, code, messageWhat's missing for debuggingThe logs tell you count but not which filters were applied trom the saved search. When a report falls with 0activities, you can't see why - what the saved search filters were, what date range was used, or what requestParams were bulltTwo gaps:1. AskJiminnyReportActivityService - the requestParams built from the saved search are not logged (only acalvity count2. RequestGenerateAskJiminnyReportJob - payload is only logged at "Request sent" (line 132-136), which isafter the activity count gate - so if we fail at count check, we never see the payloadI can add logaina to expose the applied filters and the actual activity IDs when the count is low. Want me to addthat?Askino •uestion• What would you like to improve?I0ol2131What would you like to improve?SKIOLog the applied filters (requestParams) from the saved searchAdd filter params to the existing log in AskJiminnyReportActivityService so you can see exactly what filters wereusea wnen u acuvilles are returneeLog actual activity IDs when count is lowAso loc tne acrvivos nemseves nor ust ne cound so vou can Insoecr Wnich Soectic calls were or Weren'tincludedBothLog filters + activity IDs in AskJiminnyReportActivityServiceActuallv I cap that actine usine the sametiler nuos.apo.staeine.Iminny.comaolvloacelon-6b8db1392146&irin @AskJiminnyReportActivityService.php#L59-63 | see activitilesnumoer=4 returns some acuivtles. where is it: but<>CodeClaude Sonwinasun leams63:12 (243 chars, 4 line breaks)uir-o( 4 spaces...
|
NULL
|
-7348009586554138660
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProjectv© DeviceRepository.php© ElasticActivityRepository.pl© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.php(C) InboxEmailBatchRepositon)InboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.php© NotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php® PlaylistActivityRepository.fPlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.php© RoleChangeEventRepositor© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.TaskRepository.php© TeamAiContextRepository.TeamDomainsRepository.p©TeamInsightsRepository.pt©TeamRepository.php©ThemeRepository.php© TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.phC) TranscriptionSummarvRep© UserRepository.php© VocabularyRepository.pnp> D Rulesv D Services> [ Activity> D AjReportsD AvatarcalendarD ConferenceD Crm[ Import> MInternalv D Kioskv _ AutomatedReports© ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsSt© ReportController.php© JiminnyDebugCommand.php© AutomatedReportsSendCommand.phpC AutomatedReportsCommand.php© AddLayoutEntities.php© Team.phpAutomaleakeporsservice.ong© AutomatedReportsRepository.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpCrealeAcuivilyLogqedbvent.ono(C) User?llorActvtvuistener.ono© ActivityLogged.phpc) AutomatedRenorscalloackoerwce.onv© RequestGenerateAskJiminnyReportJob.php x(©) RequestGenerateReportJob.php(C) AutomatedReportResult.php© AutomatedReport.phpclass RequestGenerateAskJiminnyReportJob implements opublic function handle(1):У3 ^v,258486878889100101102103104105106107110111.112return;ssavedsearcn = pautomatedkeport->gecsavedsearcnohif (SsavedSearch === null) &sLogger->warnangtsecr..Luo_Pkeria • Skipped, Saved $36'automatedReportUuid' => $this->reportUvid,1):lecurlin$prompt = $automatedReport->getAskAnythingPromptO);if ($prompt === null) {$logger->warning(self::LOG_PREFIX . ' Skipped, ask an45aucomatedkeporcuuld = suhis->reporcuula,1);recurny$this->reportResult = $reportService->createReportResult(automatedReport: $automatedReport,data: ['status' => AutomatedReportResult::STATUS_DEFAULT,'media_type' = AutomatedReportsService::MEDIA_TVF,SactivityIds = $activityService->getActivityIdsForSavedSe& 60savedSearch: $savedSearch,user: $creator,):$logger->info(self::LOG_PREFIX .' Fetched activity IDs','automatedReportUvid' = $this->reportUvid,'activityCount' => count($activityIds),I);if (count($activityIds) < self::MIN_ACTIVITIES_COUNT) {$this->failReport( reason: AutomatedReportResult::REASOI$logger->info(self::LOG_PREFIX'automatedReportUuid' => $this-NWindsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log4 console [EUl= laravel.logconsole SIAGING4 SF [jiminny@localhost]A HS_local [jiminny@localhost]© AskJiminnyReportActivityService.php xA console [PROD]© RequestGenerateAskJiminnyReportJobTest.phpN2R1 A Yclass AskJiminnyReportActivityServiceprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;private const array [ENV_SECRET],ActivityActualDate::PARAM_END_DATE,ActivityUpdatedDate::PARAM_UPDATED_FROM,ActivityUpdatedDate: :PARAM_UPDATED_TO,ClosingPeriodFilter::KEY_START_DATE,ClosingPeriodFilter::KEY_END_DATE,public function __construct(private readonly ActivitySearch $activitySearch,private readonly ElasticActivityRepository $elasticRepository,orvare reaconuy Loocerinuertace "Lodder) 4...3/*** Fetch activity IDs for a saved search, passing its filters as-is to Criteria.* Date filters stored on the saved search are excluded; if no other filters exist,* no date constraint is applied - matching the behaviour of getContextForAskAnythingByFilter.* Oreturn string[] Activity IDspublic function getActivityIdsForSavedSearch(Search SsavedSearch,User $user,): array {$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);$criteria = Criteria::createFromRequest(array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),suser->getlimezone$filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);$activityIds = $this->elasticRepository->onDemandSearchIds0nly($user, $criteria, $filterSet);$this->logger->info('[AskJimionxReport] Fetchedactivity IDs for saved search', ['saved_search_id'=> $savedSearch->getId(),'user_id' => $user-›getId(),'activity_count'→> count($activityIds),1):return $activityIds;private function buildRequestParamsFromSearch(Search $savedSearch, User $user): arrayf...3, 0lablf Support Daily • in 2h 59mARequestGenerateAsk.JiminnvRenort.lobTest100% C•Tue 14 Apr 12:01:01CascadeFixing ReportControlle• Automated Report N• Automated Report L+D ...3. Activity fetch — [AskJiminnyReport] (from AskJiminnyReportActivityService)[AskJiminnyReport] Fetched activity IDs for saved searchSavea search lo user lo aculvity countunen immealalely aner in tne od[AskJiminnyReport:Generatel Fetched activity IDsauconacedkeporcuuld, actlvicycount4a. Failure path (< 1 activity):LAskJiminnyReport:Generatel Not enough activities, skippecautomatedReportUuid, activityCountThe AutomatedReportResult gets status=failed, reason=REASON_NOT_ENOUGH_ACTIVITIES.4b. Error path (exception):[AskJiminnyReport:Generatel ErrorautomatedReportUuid, reportUuid, code, messageWhat's missing for debuggingThe logs tell you count but not which filters were applied trom the saved search. When a report falls with 0activities, you can't see why - what the saved search filters were, what date range was used, or what requestParams were bulltTwo gaps:1. AskJiminnyReportActivityService - the requestParams built from the saved search are not logged (only acalvity count2. RequestGenerateAskJiminnyReportJob - payload is only logged at "Request sent" (line 132-136), which isafter the activity count gate - so if we fail at count check, we never see the payloadI can add logaina to expose the applied filters and the actual activity IDs when the count is low. Want me to addthat?Askino •uestion• What would you like to improve?I0ol2131What would you like to improve?SKIOLog the applied filters (requestParams) from the saved searchAdd filter params to the existing log in AskJiminnyReportActivityService so you can see exactly what filters wereusea wnen u acuvilles are returneeLog actual activity IDs when count is lowAso loc tne acrvivos nemseves nor ust ne cound so vou can Insoecr Wnich Soectic calls were or Weren'tincludedBothLog filters + activity IDs in AskJiminnyReportActivityServiceActuallv I cap that actine usine the sametiler nuos.apo.staeine.Iminny.comaolvloacelon-6b8db1392146&irin @AskJiminnyReportActivityService.php#L59-63 | see activitilesnumoer=4 returns some acuivtles. where is it: but<>CodeClaude Sonwinasun leams63:12 (243 chars, 4 line breaks)uir-o( 4 spaces...
|
NULL
|
|
10864
|
215
|
46
|
2026-04-14T09:01:42.363364+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157302363_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFV faVsco.js vViewNavigateCodeLaravelR PhpStormFileFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProjectv© DeviceRepository.php© ElasticActivityRepository.pl© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.php(C) InboxEmailBatchRepositon)InboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.php© NotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php® PlaylistActivityRepository.fPlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.php© RoleChangeEventRepositor© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.TaskRepository.php© TeamAiContextRepository.TeamDomainsRepository.p©TeamInsightsRepository.pt©TeamRepository.php©ThemeRepository.php© TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.phC) TranscriptionSummarvRep© UserRepository.php© VocabularyRepository.pnp> D Rulesv D Services> [ Activity> C AjReportsD AvatarcalendarD ConferenceD Crm>MImport> MInternalv D Kioskv _ AutomatedReports© ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsSt© ReportController.php© JiminnyDebugCommand.php© AutomatedReportsSendCommand.phpC AutomatedReportsCommand.php© AddLayoutEntities.php© Team.phpAutomaleakeporsservice.ong© AutomatedReportsRepository.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpCrealeAcuivilyLogqedbvent.ono(C) User?llorActivivuistener.ohn© ActivityLogged.phpc) AutomatedRenorscalloackoelvice.onv© RequestGenerateAskJiminnyReportJob.php x(©) RequestGenerateReportJob.php(C) AutomatedReportResult.php© AutomatedReport.phpclass RequestGenerateAskJiminnyReportJob implements opublic function handle(1):У3 ^v,25788889959699100101102103104105106107110111.112return;ssavedsearcn = pautomatedkeport->gecsavedsearcnohif (SsavedSearch === null) &sLogger->warnangtsecr..Luo_Pkeria • Skipped, Saved $36'automatedReportUuid' => $this->reportUvid,1):lecuri$prompt = $automatedReport->getAskAnythingPromptO);if ($prompt === null) {$logger->warning(self::LOG_PREFIX . ' Skipped, ask an45'aucomatedkeporcuu1d = schis->reporcuuld,1);recurny$this->reportResult = $reportService->createReportResult(automatedReport: $automatedReport,data: ['status' => AutomatedReportResult::STATUS_DEFAULT,'media_type' => AutomatedReportsService::MEDIA_TVF56SactivityIds = $activityService->getActivityIdsForSavedSe& 60savedSearch: $savedSearch,user: $creator,):$logger->info(self::LOG_PREFIX .' Fetched activity IDs','automatedReportUvid' = $this->reportUvid,'activityCount' => count($activityIds),I);if (count($activityIds) < self::MIN_ACTIVITIES_COUNT) {nuns->rau uredor reason. Aurolareckeportresult..kcAsul•Loeeer-eLnTo SeLT..LUO FAcrLA ."Not enough activit:'automatedReportUuid' => $this->reportUvid,Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33), 0lablSupport Daily - in 2h 59mA• RequestGenerateAskJiminnyReportJobTest -100% C•Tue 14 Apr 12:01:42= custom.log4 console [EUl= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGING© AskJiminnyReportActivityService.php xA console [PROD]© RequestGenerateAskJiminnyReportJobTest.phpN2R1 A YCascadeFixing ReportControlleAutomated Report MarAutomated Report !+D ...class AskJiminnyReportActivityServiceprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;private const array [ENV_SECRET],ActivityActualDate::PARAM_END_DATE,ActivityUpdatedDate::PARAM_UPDATED_FROM,ActivityUpdatedDate: :PARAM_UPDATED_TO,ClosingPeriodFilter::KEY_START_DATE,ClosingPeriodFilter::KEY_END_DATE,public function __construct(private readonly ActivitySearch $activitySearch,private readonly ElasticActivityRepository $elasticRepository,orvare reaconuy Loocerinuertace "Lodder) 4...3/*** Fetch activity IDs for a saved search, passing its filters as-is to Criteria.* Date filters stored on the saved search are excluded; if no other filters exist,* no date constraint is applied - matching the behaviour of getContextForAskAnythingByFilter.* Oreturn string[] Activity IDspublic function getActivityIdsForSavedSearch(Search $savedSearch,User $user,): array {$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);$criteria = Criteria::createFromRequest(array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),$user->getTimezone()ptilterser = schis-›aculvitysearch->gecunbemandrager1ltersec(scriter1a, suser:$activityIds = $this-›elasticRepository->onDemandSearchIds0nly($user, $criteria, $filterSet);$this->logger→>info('[AsKLiminnxReRQrt] Fetched activity IDs for saved search', ['saved_search_id' => $savedSearch->getId(),'user_id' => $user-›getId(),'activity_count' => count($activityIds),1):return $activityIds;private function buildRequestParamsFromSearch(Search $savedSearch, User $user): arrayf...}hp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.Poad AutomatedReoorscommana.onpIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):AutomatedReportsCommand.phpAutomatedReportsCommand.phpDone. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492+1 -1+1 -1•NUmeric Strine → tind ov inuib• Non-numeric → UUID lookup via toOptimized()• Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckINot TouneBehaviour on failwarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terminal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allWinasun leams05:2uir-o( 4 spaces...
|
NULL
|
3494069563673426423
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFV faVsco.js vViewNavigateCodeLaravelR PhpStormFileFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProjectv© DeviceRepository.php© ElasticActivityRepository.pl© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.php(C) InboxEmailBatchRepositon)InboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.php© NotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php® PlaylistActivityRepository.fPlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.php© RoleChangeEventRepositor© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.TaskRepository.php© TeamAiContextRepository.TeamDomainsRepository.p©TeamInsightsRepository.pt©TeamRepository.php©ThemeRepository.php© TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.phC) TranscriptionSummarvRep© UserRepository.php© VocabularyRepository.pnp> D Rulesv D Services> [ Activity> C AjReportsD AvatarcalendarD ConferenceD Crm>MImport> MInternalv D Kioskv _ AutomatedReports© ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsSt© ReportController.php© JiminnyDebugCommand.php© AutomatedReportsSendCommand.phpC AutomatedReportsCommand.php© AddLayoutEntities.php© Team.phpAutomaleakeporsservice.ong© AutomatedReportsRepository.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpCrealeAcuivilyLogqedbvent.ono(C) User?llorActivivuistener.ohn© ActivityLogged.phpc) AutomatedRenorscalloackoelvice.onv© RequestGenerateAskJiminnyReportJob.php x(©) RequestGenerateReportJob.php(C) AutomatedReportResult.php© AutomatedReport.phpclass RequestGenerateAskJiminnyReportJob implements opublic function handle(1):У3 ^v,25788889959699100101102103104105106107110111.112return;ssavedsearcn = pautomatedkeport->gecsavedsearcnohif (SsavedSearch === null) &sLogger->warnangtsecr..Luo_Pkeria • Skipped, Saved $36'automatedReportUuid' => $this->reportUvid,1):lecuri$prompt = $automatedReport->getAskAnythingPromptO);if ($prompt === null) {$logger->warning(self::LOG_PREFIX . ' Skipped, ask an45'aucomatedkeporcuu1d = schis->reporcuuld,1);recurny$this->reportResult = $reportService->createReportResult(automatedReport: $automatedReport,data: ['status' => AutomatedReportResult::STATUS_DEFAULT,'media_type' => AutomatedReportsService::MEDIA_TVF56SactivityIds = $activityService->getActivityIdsForSavedSe& 60savedSearch: $savedSearch,user: $creator,):$logger->info(self::LOG_PREFIX .' Fetched activity IDs','automatedReportUvid' = $this->reportUvid,'activityCount' => count($activityIds),I);if (count($activityIds) < self::MIN_ACTIVITIES_COUNT) {nuns->rau uredor reason. Aurolareckeportresult..kcAsul•Loeeer-eLnTo SeLT..LUO FAcrLA ."Not enough activit:'automatedReportUuid' => $this->reportUvid,Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33), 0lablSupport Daily - in 2h 59mA• RequestGenerateAskJiminnyReportJobTest -100% C•Tue 14 Apr 12:01:42= custom.log4 console [EUl= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SlAGING© AskJiminnyReportActivityService.php xA console [PROD]© RequestGenerateAskJiminnyReportJobTest.phpN2R1 A YCascadeFixing ReportControlleAutomated Report MarAutomated Report !+D ...class AskJiminnyReportActivityServiceprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;private const array [ENV_SECRET],ActivityActualDate::PARAM_END_DATE,ActivityUpdatedDate::PARAM_UPDATED_FROM,ActivityUpdatedDate: :PARAM_UPDATED_TO,ClosingPeriodFilter::KEY_START_DATE,ClosingPeriodFilter::KEY_END_DATE,public function __construct(private readonly ActivitySearch $activitySearch,private readonly ElasticActivityRepository $elasticRepository,orvare reaconuy Loocerinuertace "Lodder) 4...3/*** Fetch activity IDs for a saved search, passing its filters as-is to Criteria.* Date filters stored on the saved search are excluded; if no other filters exist,* no date constraint is applied - matching the behaviour of getContextForAskAnythingByFilter.* Oreturn string[] Activity IDspublic function getActivityIdsForSavedSearch(Search $savedSearch,User $user,): array {$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);$criteria = Criteria::createFromRequest(array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),$user->getTimezone()ptilterser = schis-›aculvitysearch->gecunbemandrager1ltersec(scriter1a, suser:$activityIds = $this-›elasticRepository->onDemandSearchIds0nly($user, $criteria, $filterSet);$this->logger→>info('[AsKLiminnxReRQrt] Fetched activity IDs for saved search', ['saved_search_id' => $savedSearch->getId(),'user_id' => $user-›getId(),'activity_count' => count($activityIds),1):return $activityIds;private function buildRequestParamsFromSearch(Search $savedSearch, User $user): arrayf...}hp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.Poad AutomatedReoorscommana.onpIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):AutomatedReportsCommand.phpAutomatedReportsCommand.phpDone. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492+1 -1+1 -1•NUmeric Strine → tind ov inuib• Non-numeric → UUID lookup via toOptimized()• Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckINot TouneBehaviour on failwarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terminal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allWinasun leams05:2uir-o( 4 spaces...
|
NULL
|
|
10866
|
215
|
47
|
2026-04-14T09:01:45.387561+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157305387_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFVtavsco.isvProject vViewNavigateCodel PhpStormFileFVtavsco.isvProject vViewNavigateCodelaraveRefactonToolsWindowHelp#11894 on JY-18909-automated-reports-ask-iminny K vc) RenortController.ongJiminnyDeouecommana.ongProphetAiAulomaleakeporissendcommand.onoC AutomatedReportsCommand.php Xv → ReportsAutomatedReportsRepository.php(C AutomatedReportsC(©) AutomatedReportsRcrealenleleAcuvlyevent.ong(C) AutomatedReportsSCrealeacuivilyLoogedbvent.onp(C) CreateMockAsk. liminActiviv odded.nhrC DeleteReportcomma© GenerateMarketingRc) AutomatedRenorscalloackoerwce.onvC) RequestGenerateaskJiminnykeportJob.ong©leam.php(©) RequestGenerateReportJob.phgAuLomaleakeportkesult.onoC) Usage.phpM Slack© AutomatedReport.php_leamsclass AutomatedReportscommand extends command→ Tracks_ TranscriptionD TwilioD Users* Process reports for a specific frequency_ VocabularyL Zoom* dparam string sfrequency© coachingeedbacksupcg command.phpcreateDatabaseusers.pc Daraoase oecountoiC DeleteOldAiCrmNotesC(©) DeleteS3LeftoversCom|(C DevPostmanCommand.l100101102ML0511041051100* dreturh voldonivare tuncrion orocesskeporus scrino treduency: voro375Sthis->Logger->info(self::LOG_PREFIX • " Processing §frequenc)39C DiarizeViaAiParticipantk(©) EncryptTokensCommar(©) EngagementStatsRegerGer au enadled. nor delered reoorts wtn active teans torSreports = sepos-3 =ortReposi tory-atetActi veReportsByFrequen 42.Sreports =coLLect Aucomateakeporc..tlnd ooT FeatureFlagsHelper.php© rixcross|enantissues.p(c) -ushro espermissionsa(e) Generatelnterna wepho(C) GroupSetDefaultLanquaC) HelperTruncateCoachin(©) HubspotJournalPollingC(©) HubspotWebhookServic(©) ImportRecording.phpC ImportUsersFromCsvFilC IterateUsersCommand.g(©) JiminnyCacheClearCom© JiminnyDebugCommanc© Jiminnysetencryptedlo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.oc мarkbranchrorenvironh(C) MuteOrganizerChannel.(C) PhpApm.php(C PropagateCoachingFee(©) PurgeConterences.php10710810911101111121131141151116117118111911124011122112411L41241251261127Sreportld = Sthis->ootiond key:'report-id'):if (SreportId !== null) kSreports = Sthis->getReportBvld(SreportId):H else €Get all enabled, not deleted reports with active teamsSreports = sthis->reportRepository=>getActiveReportsByFret/c$this->logger->info(self::LOG_PREFIX ." Found {$reports->courso/** ovar Aucomаtedкероги фrероги */toreacn Ioreporrs as reoort inunus->looder->intoselt..L0d Prortx.Ireoorcuuloi=> Sreport->getluido'teamId' => $report->getTeamIdo.'frequency' => Sreport->getFrequency@'type' => Sreport->getType@.bispatching bener56I):$70b = sreport->1SASKJ1m1nnyReport()?new RequestGenerateAskJ1minnyReportJob(sreport->getl 64•new RequescbeneracereportJodlsreрont-getuulao(©) PurgeSoftDeletedOppot© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removede eremarkersc(e) Remove-xoiredNudoesc removeunusecrarcloc kesettlasticsearch.ong(C) RestoreActivityCrmProv(C) RestoreActivityTypeCor111501132133134135136137nuns->orsoaucher->ouspatchl00).pchus->alspatcher->alspacchoynctpyod),+ sốt 6 galigprivate function getReportByld(string Sreportid): Collection>findByIdoruuid(sreportid):|100% |45]Tue 14 Apr 12:01:45Winasurt change, 0labl: Support Daily • in 2h 59 m• RequestGenerateAskJiminnyReportJobTest-= custom.log= laravel.l09L SF (iminny@localhostL HS_local fiminny@localhost)& console (PROD]Cascade4 console [EUlconsole SIAGINGC AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest.phpFixing ReportControlleAutomated Report Ma3 Automated Report !M2R1AYclass AskJ1m1nnyReportAct1v1tyserviceprivace const Int DEFAULI_TUP_ACIIVLILES_CUUNI = 100%private const array DATE FILTER KEYS =[AccIvityAccuaLbace..PARAM_SIARI_UATE,ActivitvActualDate::PARAM END DATEActivityUpdatedDate::PARAM_UPDATED_FROM.ActivityUpdatedDate::PARAM_ UPDATED_TO,ClosingPeriodFilter::KEY_START DATE,ClosingPer1odr1lter::KEY_END_DATE,pubuic tunccion __conscrucelprivate readonly Aculvitysearch saculvitysearch,private readonly Elascicactivitykepository selasclckepository.orvare reaconuy Loocerinuertace "Lodder) 4...3xx* Fetch activity IDs for a saved search, passing its filters as-is to Criteria.* Date filters stored on the saved search are excluded; if no other filters exist,* no date constraint 1s applied - matching the behaviour of getcontextrorAskAnythingßyrilter.* dreturn stringl) Activity IDspubLic tuncuion gecAculvity-asrorsavedsearcnesearch ssaveosearch.iuser puser.0: array «SrequestParams = Sthis->buildRequestParamsFromSearchSsavedSearch, Suser)Scriteria = Criteria::createFromRequestarray_mergelsrequestParams, l'L1m1t => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1J)suser->getlimezoneo);ptilterser = schis-›aculvitysearch->gecunbemandrager1ltersec(scriter1a, suser:$activityIds = $this->elasticRepository->onDemandSearchIds0nly($user, $criteria, $filterSet);$this->logger→>info('[AskJiminnyReport] Fetched activity IDs for saved search', [saved search_id' => $savedSearch->getido.user_id' => Suser->getido.activity_count' => count($activityIds),1):return sactivitvids.private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array{...*np#l211 and adc valication with loas insideGAutomatedRenortscommand. 0hn1 209-210et me read the current state of the command tile firstPoad AutomatedReoorscommana.onpIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSingleReport/warnlfNotApp Licab leForSchedu lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):AutomatedReportsCommand.php• AutomatedReportsCommand.phpDone. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492• Numeric string → find() by int ID•Non-numenc → Uu d ookuo via tooptimizedo• Both use withTrashed() so soft-deleted reports are findable manually+1 -1+1 -1getReportByld() (AutomatedReportsCommand.php: 135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terminal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesC1l -2 files +81 -5>Ask anything (&+L)+ ‹> CodeClaude Sennet 4.6Reject allAccept allwinasun leams12/:45uir-oia 4 spacesW...
|
NULL
|
-7609597553182618089
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFVtavsco.isvProject vViewNavigateCodel PhpStormFileFVtavsco.isvProject vViewNavigateCodelaraveRefactonToolsWindowHelp#11894 on JY-18909-automated-reports-ask-iminny K vc) RenortController.ongJiminnyDeouecommana.ongProphetAiAulomaleakeporissendcommand.onoC AutomatedReportsCommand.php Xv → ReportsAutomatedReportsRepository.php(C AutomatedReportsC(©) AutomatedReportsRcrealenleleAcuvlyevent.ong(C) AutomatedReportsSCrealeacuivilyLoogedbvent.onp(C) CreateMockAsk. liminActiviv odded.nhrC DeleteReportcomma© GenerateMarketingRc) AutomatedRenorscalloackoerwce.onvC) RequestGenerateaskJiminnykeportJob.ong©leam.php(©) RequestGenerateReportJob.phgAuLomaleakeportkesult.onoC) Usage.phpM Slack© AutomatedReport.php_leamsclass AutomatedReportscommand extends command→ Tracks_ TranscriptionD TwilioD Users* Process reports for a specific frequency_ VocabularyL Zoom* dparam string sfrequency© coachingeedbacksupcg command.phpcreateDatabaseusers.pc Daraoase oecountoiC DeleteOldAiCrmNotesC(©) DeleteS3LeftoversCom|(C DevPostmanCommand.l100101102ML0511041051100* dreturh voldonivare tuncrion orocesskeporus scrino treduency: voro375Sthis->Logger->info(self::LOG_PREFIX • " Processing §frequenc)39C DiarizeViaAiParticipantk(©) EncryptTokensCommar(©) EngagementStatsRegerGer au enadled. nor delered reoorts wtn active teans torSreports = sepos-3 =ortReposi tory-atetActi veReportsByFrequen 42.Sreports =coLLect Aucomateakeporc..tlnd ooT FeatureFlagsHelper.php© rixcross|enantissues.p(c) -ushro espermissionsa(e) Generatelnterna wepho(C) GroupSetDefaultLanquaC) HelperTruncateCoachin(©) HubspotJournalPollingC(©) HubspotWebhookServic(©) ImportRecording.phpC ImportUsersFromCsvFilC IterateUsersCommand.g(©) JiminnyCacheClearCom© JiminnyDebugCommanc© Jiminnysetencryptedlo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.oc мarkbranchrorenvironh(C) MuteOrganizerChannel.(C) PhpApm.php(C PropagateCoachingFee(©) PurgeConterences.php10710810911101111121131141151116117118111911124011122112411L41241251261127Sreportld = Sthis->ootiond key:'report-id'):if (SreportId !== null) kSreports = Sthis->getReportBvld(SreportId):H else €Get all enabled, not deleted reports with active teamsSreports = sthis->reportRepository=>getActiveReportsByFret/c$this->logger->info(self::LOG_PREFIX ." Found {$reports->courso/** ovar Aucomаtedкероги фrероги */toreacn Ioreporrs as reoort inunus->looder->intoselt..L0d Prortx.Ireoorcuuloi=> Sreport->getluido'teamId' => $report->getTeamIdo.'frequency' => Sreport->getFrequency@'type' => Sreport->getType@.bispatching bener56I):$70b = sreport->1SASKJ1m1nnyReport()?new RequestGenerateAskJ1minnyReportJob(sreport->getl 64•new RequescbeneracereportJodlsreрont-getuulao(©) PurgeSoftDeletedOppot© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removede eremarkersc(e) Remove-xoiredNudoesc removeunusecrarcloc kesettlasticsearch.ong(C) RestoreActivityCrmProv(C) RestoreActivityTypeCor111501132133134135136137nuns->orsoaucher->ouspatchl00).pchus->alspatcher->alspacchoynctpyod),+ sốt 6 galigprivate function getReportByld(string Sreportid): Collection>findByIdoruuid(sreportid):|100% |45]Tue 14 Apr 12:01:45Winasurt change, 0labl: Support Daily • in 2h 59 m• RequestGenerateAskJiminnyReportJobTest-= custom.log= laravel.l09L SF (iminny@localhostL HS_local fiminny@localhost)& console (PROD]Cascade4 console [EUlconsole SIAGINGC AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest.phpFixing ReportControlleAutomated Report Ma3 Automated Report !M2R1AYclass AskJ1m1nnyReportAct1v1tyserviceprivace const Int DEFAULI_TUP_ACIIVLILES_CUUNI = 100%private const array DATE FILTER KEYS =[AccIvityAccuaLbace..PARAM_SIARI_UATE,ActivitvActualDate::PARAM END DATEActivityUpdatedDate::PARAM_UPDATED_FROM.ActivityUpdatedDate::PARAM_ UPDATED_TO,ClosingPeriodFilter::KEY_START DATE,ClosingPer1odr1lter::KEY_END_DATE,pubuic tunccion __conscrucelprivate readonly Aculvitysearch saculvitysearch,private readonly Elascicactivitykepository selasclckepository.orvare reaconuy Loocerinuertace "Lodder) 4...3xx* Fetch activity IDs for a saved search, passing its filters as-is to Criteria.* Date filters stored on the saved search are excluded; if no other filters exist,* no date constraint 1s applied - matching the behaviour of getcontextrorAskAnythingßyrilter.* dreturn stringl) Activity IDspubLic tuncuion gecAculvity-asrorsavedsearcnesearch ssaveosearch.iuser puser.0: array «SrequestParams = Sthis->buildRequestParamsFromSearchSsavedSearch, Suser)Scriteria = Criteria::createFromRequestarray_mergelsrequestParams, l'L1m1t => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1J)suser->getlimezoneo);ptilterser = schis-›aculvitysearch->gecunbemandrager1ltersec(scriter1a, suser:$activityIds = $this->elasticRepository->onDemandSearchIds0nly($user, $criteria, $filterSet);$this->logger→>info('[AskJiminnyReport] Fetched activity IDs for saved search', [saved search_id' => $savedSearch->getido.user_id' => Suser->getido.activity_count' => count($activityIds),1):return sactivitvids.private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array{...*np#l211 and adc valication with loas insideGAutomatedRenortscommand. 0hn1 209-210et me read the current state of the command tile firstPoad AutomatedReoorscommana.onpIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSingleReport/warnlfNotApp Licab leForSchedu lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):AutomatedReportsCommand.php• AutomatedReportsCommand.phpDone. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492• Numeric string → find() by int ID•Non-numenc → Uu d ookuo via tooptimizedo• Both use withTrashed() so soft-deleted reports are findable manually+1 -1+1 -1getReportByld() (AutomatedReportsCommand.php: 135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terminal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesC1l -2 files +81 -5>Ask anything (&+L)+ ‹> CodeClaude Sennet 4.6Reject allAccept allwinasun leams12/:45uir-oia 4 spacesW...
|
10864
|
|
10868
|
215
|
48
|
2026-04-14T09:01:48.938165+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157308938_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodeLaravelRetactonToo PhpStormFileFditViewNavigateCodeLaravelRetactonToolsWindowHelpFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny K vProject v_ ProphetAiv → Reports(C AutomatedReportsC(©) AutomatedReportsR(C) AutomatedReportsS© CreateMockAsKJimirC DeleteReportcomma© GenerateMarketingR©leam.phpC Usage.phpM Slack_leams→ Tracks_ TranscriptionD TwilioD Users_ Vocabulary_ 4oom© coachingeedbacksupcg command.phpo Cearevaroaseusers.oc Daraoase oecountoiC DeleteOldAiCrmNotesC(©) DeleteS3LeftoversCom|(C DevPostmanCommand.lC DiarizeViaAiParticipantk(©) EncryptTokensComman(©) EngagementStatsRegerT FeatureFlagsHelper.php© rixcross|enantissues.p(c) -ushro espermissionsa(e) Generatelnterna wepho(C) GroupSetDefaultLanquaC) HelperTruncateCoachin(©) HubspotJournalPollingC(©) HubspotWebhookServic(c) ImportRecording.phpC ImportUsersFromCsvFilC IterateUsersCommand.g(©) JiminnyCacheClearCom© JiminnyDebugCommanc© Jiminnysetencryptedlo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.o(©) MarkBranchForEnvironn(C) MuteOrganizerChannel.(C) PhpApm.php(C PropagateCoachingFee(©) PurgeConterences.php(©) PurgeSoftDeletedOppot© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoesc removeunusecrarcloc kesettlasticsearch.ong(C) RestoreActivityCrmProv(C) RestoreActivityTypeCor(©) ReportController.phpJiminnyDeouecommana.ongc) AutomatedReporssenccommane.onoAutomaleakeportscommana.ongC AddLayoutEntities.php© Team.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.ono©) TrackProviderInstalledEvent.pnpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Command9911001011021031041051 el611071081091101111111211311411511611711811912012111122411241122112012712913€13115211154135113713811391401411142111451144* Process reports for a specific freavencu.* dparam string Sfrequency* dreturn voidprivate function processReports(string sfrequency): voldnanu s=>lodderesntol selt.-Lud Pherix." Processing strequency reporus");// Get all enabled, not deleted reports with active teams for the specl Accept qRejet$reports = $this->reportRepository->getActiveReportsByFrequency($frequencymфreports = coLLece(lAutomacedкeрoгt. . r1nd(6o)J;sreportia = sthis->option( key: "report-1d')*if ($reportid !== null) {preports = suhls-›gескерогиву асфгерогска);1 else €// Get all enabled, not deleted reports with active teams for the specified frequencySreports = Sthis->reportRepository=>getactivereportsbyrrequencystrequency.$this->Logger->info(self::LOG_PREFIX•" Found i$reports->countO} $frequency reports to process");/** avar Automatedreport sreport */foreach (sreports as sreport)sthis->Logger->1nfo(self::LO6_PREFIX.' Dispatching Generate Report job for report', ['reporcuu1d"=> фreрогс->gecuula).'teamId'=> $report->getTeamId(),trequency"=> $report->getFrequency(),"yoe → nredorepaer voeuhID:$job = Sreport->isAskJiminnyReportO?new RequestGenerateAskJiminnyReportJob(Sreport->getUuido:new RequestGenerateReportJob($report->getUuidO):sthis->d1spatcher->d1spatch(s7ob):sth1s->d1spatcher->d1spatchsync(sjob):private function getReportById(string $reportId): CollectionSreport = sthis->reportRepository->findByld0rUuid(Sreportid:if (Sreport === nulU 1$this->Logger->warning(self::LOG_PREFIX • Report not found for --report-1d. L'reportia => sreportiai):sth1s->warn( string: "Report not found: ksreportiar"):return collecuuhT 6 of 6 edits/ Accept File $-X keectrlle tae* 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.log4 SF [iiminny@localhostlc HS_local Jiminny@localhost)e console (PROD]¿ console (EU]A console [STAGINGAskJiminnyReportActivityService.php XC RequestGenerateAskJiminnyReportJobTesMLAI^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate:ActivityUpdatedDate:ActivityUpdatedDate:ClosingPer1odrilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log) {...}* Fetch activity IDs fo* Date filters stored o* no dace constraint* dreturn strinal Act.*/AEAApublic function getActivSearch SsavedSearchUser suser): array {srequestParams = sthnenrera s untuerarray_mergelsrecnuser->certnezoSfilterSet = $this-›SactivityIds = $thissthis->logger->infol'saved_search_10'User_1d'= SUSactvt counteI):return Sactivitvids:, 0labl: Support Daily • in 2h 59 m100% [2Tue 14 Apr 12:01:48RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MaAutomated Report1n7 211 and adc valication with loas insideGAutomatedRenortscommand. 0hn1 209-210et me read the current state of the command tile firstkead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSingleReport/warnlfNotApp Licab leForSchedu lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1-1• AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID•Non-numenc → Uu d ookuo via tooptimizedoBoth use withTrashed() so soft-deleted reports are findable manuallygetReportByld() (AutomatedReportsCommand.php: 135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.chockBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesWC1l -2 files +81 -5 >Ask anything (&+L)+ < CodeClaude Sennet 4.6Reject allAccept allwinasun leams12/:45uir-oia 4 spaces...
|
NULL
|
2765677312800202086
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodeLaravelRetactonToo PhpStormFileFditViewNavigateCodeLaravelRetactonToolsWindowHelpFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny K vProject v_ ProphetAiv → Reports(C AutomatedReportsC(©) AutomatedReportsR(C) AutomatedReportsS© CreateMockAsKJimirC DeleteReportcomma© GenerateMarketingR©leam.phpC Usage.phpM Slack_leams→ Tracks_ TranscriptionD TwilioD Users_ Vocabulary_ 4oom© coachingeedbacksupcg command.phpo Cearevaroaseusers.oc Daraoase oecountoiC DeleteOldAiCrmNotesC(©) DeleteS3LeftoversCom|(C DevPostmanCommand.lC DiarizeViaAiParticipantk(©) EncryptTokensComman(©) EngagementStatsRegerT FeatureFlagsHelper.php© rixcross|enantissues.p(c) -ushro espermissionsa(e) Generatelnterna wepho(C) GroupSetDefaultLanquaC) HelperTruncateCoachin(©) HubspotJournalPollingC(©) HubspotWebhookServic(c) ImportRecording.phpC ImportUsersFromCsvFilC IterateUsersCommand.g(©) JiminnyCacheClearCom© JiminnyDebugCommanc© Jiminnysetencryptedlo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.o(©) MarkBranchForEnvironn(C) MuteOrganizerChannel.(C) PhpApm.php(C PropagateCoachingFee(©) PurgeConterences.php(©) PurgeSoftDeletedOppot© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoesc removeunusecrarcloc kesettlasticsearch.ong(C) RestoreActivityCrmProv(C) RestoreActivityTypeCor(©) ReportController.phpJiminnyDeouecommana.ongc) AutomatedReporssenccommane.onoAutomaleakeportscommana.ongC AddLayoutEntities.php© Team.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.ono©) TrackProviderInstalledEvent.pnpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Command9911001011021031041051 el611071081091101111111211311411511611711811912012111122411241122112012712913€13115211154135113713811391401411142111451144* Process reports for a specific freavencu.* dparam string Sfrequency* dreturn voidprivate function processReports(string sfrequency): voldnanu s=>lodderesntol selt.-Lud Pherix." Processing strequency reporus");// Get all enabled, not deleted reports with active teams for the specl Accept qRejet$reports = $this->reportRepository->getActiveReportsByFrequency($frequencymфreports = coLLece(lAutomacedкeрoгt. . r1nd(6o)J;sreportia = sthis->option( key: "report-1d')*if ($reportid !== null) {preports = suhls-›gескерогиву асфгерогска);1 else €// Get all enabled, not deleted reports with active teams for the specified frequencySreports = Sthis->reportRepository=>getactivereportsbyrrequencystrequency.$this->Logger->info(self::LOG_PREFIX•" Found i$reports->countO} $frequency reports to process");/** avar Automatedreport sreport */foreach (sreports as sreport)sthis->Logger->1nfo(self::LO6_PREFIX.' Dispatching Generate Report job for report', ['reporcuu1d"=> фreрогс->gecuula).'teamId'=> $report->getTeamId(),trequency"=> $report->getFrequency(),"yoe → nredorepaer voeuhID:$job = Sreport->isAskJiminnyReportO?new RequestGenerateAskJiminnyReportJob(Sreport->getUuido:new RequestGenerateReportJob($report->getUuidO):sthis->d1spatcher->d1spatch(s7ob):sth1s->d1spatcher->d1spatchsync(sjob):private function getReportById(string $reportId): CollectionSreport = sthis->reportRepository->findByld0rUuid(Sreportid:if (Sreport === nulU 1$this->Logger->warning(self::LOG_PREFIX • Report not found for --report-1d. L'reportia => sreportiai):sth1s->warn( string: "Report not found: ksreportiar"):return collecuuhT 6 of 6 edits/ Accept File $-X keectrlle tae* 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.log4 SF [iiminny@localhostlc HS_local Jiminny@localhost)e console (PROD]¿ console (EU]A console [STAGINGAskJiminnyReportActivityService.php XC RequestGenerateAskJiminnyReportJobTesMLAI^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate:ActivityUpdatedDate:ActivityUpdatedDate:ClosingPer1odrilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log) {...}* Fetch activity IDs fo* Date filters stored o* no dace constraint* dreturn strinal Act.*/AEAApublic function getActivSearch SsavedSearchUser suser): array {srequestParams = sthnenrera s untuerarray_mergelsrecnuser->certnezoSfilterSet = $this-›SactivityIds = $thissthis->logger->infol'saved_search_10'User_1d'= SUSactvt counteI):return Sactivitvids:, 0labl: Support Daily • in 2h 59 m100% [2Tue 14 Apr 12:01:48RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MaAutomated Report1n7 211 and adc valication with loas insideGAutomatedRenortscommand. 0hn1 209-210et me read the current state of the command tile firstkead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSingleReport/warnlfNotApp Licab leForSchedu lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1-1• AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID•Non-numenc → Uu d ookuo via tooptimizedoBoth use withTrashed() so soft-deleted reports are findable manuallygetReportByld() (AutomatedReportsCommand.php: 135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.chockBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesWC1l -2 files +81 -5 >Ask anything (&+L)+ < CodeClaude Sennet 4.6Reject allAccept allwinasun leams12/:45uir-oia 4 spaces...
|
NULL
|
|
10870
|
215
|
49
|
2026-04-14T09:01:55.026470+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157315026_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditFV faVsco.js vViewNavigateCodeLara PhpStormFileEditFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD Users• VocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantissues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic© ImportRecording.php@ Imnortli|sercFromCcvEil© IterateUsersCommand.gcJiminnvcacheclearcom(c) minnv Deouacommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php(©) PurgeSoftDeletedOppol© PurgeSyncBatchesCom(e RecalculatebealkiskscoC) RemoveDeleteMarkersd© RemoveExpiredNudgest© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.onoAutomaleakeportscommana.ong• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php• RequestGenerateReportJob.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Commandprivate function processReports(string $frequency): void1031114115116117118119120121122112411401261271281291301311321331341351361371381391401411421431441451461471481491501511531154115515615715815916016116216311641165166167$this->logger->info(self::LOG_PREFIX" Found {$reports->count()} $frequency reports to process");/** @var AutomatedReport $report */foreach ($reports as $report) {$this->logger->info(self::LOG_PREFIXDispatching Generate Report job for report', I'reportuvid' => $report->getUvid(),'teamId' => $report->getTeamId(.'frequency' => $report->getFrequency(),'tvpe' => Sreport->aetTvpeo.I):$job = $report->isAskJiminnyReport()? new RequestGenerateAskJiminnyReportJob($report->getUuid()): new RequestGenerateReportJob($report->getUvid());$this->dispatcher->dispatch($job);$this->dispatcher->dispatchSync($job);private function getReportById(string $reportId): Collection$report = $this->reportRepository->findById0rUuid($reportId);lif ($report === hurU d$this->logger->warning(self::LOG_PREFIX|.' Report not found for --report-id'.| ['reportid' => Sreportidl):Ithis->warn( string: "Report not found: ($reportId}");return collect():if (! $report->getStatus(D) €$this->Logger->warning(self::LOG_PREFIX •' Report is inactive, processing anyway (manual override)'" ['reportId' => SreportId,=> $report->getUuid(,$this->warn( string: "Report is inactive - processing anyway (manual override).'):$team = $report->getTeam();if ($team->getStatus() !== Team::STATUS_ACTIVE) ($this->logger->warning(self::LOG_PREFIXTeam is not active, processing anyway (manual override)'.['reportId' => $reportId,=> $report->getUvid(),'teamId' => $report->getTeamId(),'teamStatus'=> $team->getStatus(),1):$this-›warn( string: "Team #{$report-›getTeamId(} is not active - processing anyway (manual override) ."»);|if ($report->isExpiredO) €$this->Logger→>warning(self:#-8GBREfiSX+Unanan+Tdl -s CnononttdV Accept File x- ireRejectffessigg anyway &magual override)'. EWindsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)AcceptReject= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F/*** Fetch activity IDs fo* Date filters stored o* no date constraint .* @return string[] Acti*/public function getActivSearch $savedSearchUser $user,): array f$requestParams = $th$criteria = Criteriaarray_merge($req$user->getTimezo);$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 59mA100% C•Tue 14 Apr 12:01:54RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MarAutomated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leams12/:45uir-o( 4 spaces...
|
NULL
|
6833006738480108195
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditFV faVsco.js vViewNavigateCodeLara PhpStormFileEditFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD Users• VocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantissues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic© ImportRecording.php@ Imnortli|sercFromCcvEil© IterateUsersCommand.gcJiminnvcacheclearcom(c) minnv Deouacommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php(©) PurgeSoftDeletedOppol© PurgeSyncBatchesCom(e RecalculatebealkiskscoC) RemoveDeleteMarkersd© RemoveExpiredNudgest© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.onoAutomaleakeportscommana.ong• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php• RequestGenerateReportJob.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Commandprivate function processReports(string $frequency): void1031114115116117118119120121122112411401261271281291301311321331341351361371381391401411421431441451461471481491501511531154115515615715815916016116216311641165166167$this->logger->info(self::LOG_PREFIX" Found {$reports->count()} $frequency reports to process");/** @var AutomatedReport $report */foreach ($reports as $report) {$this->logger->info(self::LOG_PREFIXDispatching Generate Report job for report', I'reportuvid' => $report->getUvid(),'teamId' => $report->getTeamId(.'frequency' => $report->getFrequency(),'tvpe' => Sreport->aetTvpeo.I):$job = $report->isAskJiminnyReport()? new RequestGenerateAskJiminnyReportJob($report->getUuid()): new RequestGenerateReportJob($report->getUvid());$this->dispatcher->dispatch($job);$this->dispatcher->dispatchSync($job);private function getReportById(string $reportId): Collection$report = $this->reportRepository->findById0rUuid($reportId);lif ($report === hurU d$this->logger->warning(self::LOG_PREFIX|.' Report not found for --report-id'.| ['reportid' => Sreportidl):Ithis->warn( string: "Report not found: ($reportId}");return collect():if (! $report->getStatus(D) €$this->Logger->warning(self::LOG_PREFIX •' Report is inactive, processing anyway (manual override)'" ['reportId' => SreportId,=> $report->getUuid(,$this->warn( string: "Report is inactive - processing anyway (manual override).'):$team = $report->getTeam();if ($team->getStatus() !== Team::STATUS_ACTIVE) ($this->logger->warning(self::LOG_PREFIXTeam is not active, processing anyway (manual override)'.['reportId' => $reportId,=> $report->getUvid(),'teamId' => $report->getTeamId(),'teamStatus'=> $team->getStatus(),1):$this-›warn( string: "Team #{$report-›getTeamId(} is not active - processing anyway (manual override) ."»);|if ($report->isExpiredO) €$this->Logger→>warning(self:#-8GBREfiSX+Unanan+Tdl -s CnononttdV Accept File x- ireRejectffessigg anyway &magual override)'. EWindsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)AcceptReject= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F/*** Fetch activity IDs fo* Date filters stored o* no date constraint .* @return string[] Acti*/public function getActivSearch $savedSearchUser $user,): array f$requestParams = $th$criteria = Criteriaarray_merge($req$user->getTimezo);$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 59mA100% C•Tue 14 Apr 12:01:54RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MarAutomated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leams12/:45uir-o( 4 spaces...
|
10868
|
|
10872
|
215
|
50
|
2026-04-14T09:02:04.154161+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157324154_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewFV faVsco.js vProject vNavigat PhpStormFileEditViewFV faVsco.js vProject vNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny k vToolsWindowHelpProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack• TeamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantissues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic© ImportRecording.php@ Imnortl|sercFromCcvEill( Iteratel IsersCommand r(C) JiminnvCacheClearCom(c) minnv Deouacommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php(©) PurgeSoftDeletedOppol© PurgeSyncBatchesCom© RecalculateDealRisksCaC) RemoveDeleteMarkersd© RemoveExpiredNudgest© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpC AutomatedReportsRepository.phpJiminnybeouecommana.ongAutomatedReportsService.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsSendCommand.php© AutomatedReportsCallbackService.php(c CrealenelaAcuiviyevent.ono© AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Commandprivate function processReports(string $frequency): voidAutomaleakeportscommana.ong• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.php125126127128129130= custom.log= laravel.log4 SF ljiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActivi1154133134135136137138139140141142143144145146147148149150151152153154155156157161162163164165166167168169170117111721174175176177$job = $report->isAskJiminnyReport()? new RequestGenerateAskJiminnyReportJob($report->getUvid(): new RequestGenerateReportJob($report->getUvid());$this->dispatcher->dispatch($job);munus-porsoaucher-ro.soauchoyncloo..AcceptKenecuprivate function getReportById(string $reportId): Collection$report = $this->reportRepository->findById0rUuid($reportId);if ($report === null) €$this->Logger->warning(self::LOG_PREFIX •' Report not found for --report-id'. ['reportidl => $reportid]);$this->warn( string: "Report not found: [$reportId?");return collect(;lif C! $report->getStatus(O) |€$this->logger->warning(self::LOG_PREFIXReport is inactive, processing anyway (manual override)'ll'reportId' => SreportId,'reportUuid' => $report->getUvidO,I);$this-›warn( string: 'Report is inactive - processing anyway (manual override).'):$team = $report->getTeam();if ($team->getStatus() !== Team::STATUS_ACTIVE) ($this->Logger->warning(self::LOG_PREFIX •|' Team is not active, processing anyway (manual override)'" ['reportId' => SreportId,=> $report->getUvid(),'teamid" => sreport->getleamid@=> $team->getStatus(.I);$this->warn( string:"Team #{$report->getTeamId()} is not active - processing anyway (manual override) .");|GддДif ($report->isExpiredO) {$this->Loggen->warning(self!:|LOG_PREFIX |.||' Report is expired, processing anyway (manual override)||tl'reportId' => SreportId,=> $report->getUvid(),'expiresAt'=> $report->getExpiresAt()?->toDateStringO.ID:Sthis->warn( string: |'Report is expired (expires_at: |||||Sreport->getExpiresAt()?->toDateString() • "P - processing anyway (manual overrad 61$now = Carbon: :now();$frequency = $report->getFrequency();$wouldRunToday = match ($frequency)AutomatedReportsservice:: FREQUENÉ& gAtL* =>V Accept File g-X Reject File t3@* 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)private const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored o* no date constraint .* @return string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:04• RequestGenerateAskJiminnyReportJobTest -CascadeFixing ReportControlleAutomated Report MarAutomated Report Lip#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terninal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leamsuir-o( 4 spaces...
|
NULL
|
1004296687196404424
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditViewFV faVsco.js vProject vNavigat PhpStormFileEditViewFV faVsco.js vProject vNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny k vToolsWindowHelpProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack• TeamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantissues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic© ImportRecording.php@ Imnortl|sercFromCcvEill( Iteratel IsersCommand r(C) JiminnvCacheClearCom(c) minnv Deouacommanc© JiminnySetEncryptedTo© JiminnyTokenInfoComn© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php(©) PurgeSoftDeletedOppol© PurgeSyncBatchesCom© RecalculateDealRisksCaC) RemoveDeleteMarkersd© RemoveExpiredNudgest© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpC AutomatedReportsRepository.phpJiminnybeouecommana.ongAutomatedReportsService.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsSendCommand.php© AutomatedReportsCallbackService.php(c CrealenelaAcuiviyevent.ono© AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Commandprivate function processReports(string $frequency): voidAutomaleakeportscommana.ong• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.php125126127128129130= custom.log= laravel.log4 SF ljiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActivi1154133134135136137138139140141142143144145146147148149150151152153154155156157161162163164165166167168169170117111721174175176177$job = $report->isAskJiminnyReport()? new RequestGenerateAskJiminnyReportJob($report->getUvid(): new RequestGenerateReportJob($report->getUvid());$this->dispatcher->dispatch($job);munus-porsoaucher-ro.soauchoyncloo..AcceptKenecuprivate function getReportById(string $reportId): Collection$report = $this->reportRepository->findById0rUuid($reportId);if ($report === null) €$this->Logger->warning(self::LOG_PREFIX •' Report not found for --report-id'. ['reportidl => $reportid]);$this->warn( string: "Report not found: [$reportId?");return collect(;lif C! $report->getStatus(O) |€$this->logger->warning(self::LOG_PREFIXReport is inactive, processing anyway (manual override)'ll'reportId' => SreportId,'reportUuid' => $report->getUvidO,I);$this-›warn( string: 'Report is inactive - processing anyway (manual override).'):$team = $report->getTeam();if ($team->getStatus() !== Team::STATUS_ACTIVE) ($this->Logger->warning(self::LOG_PREFIX •|' Team is not active, processing anyway (manual override)'" ['reportId' => SreportId,=> $report->getUvid(),'teamid" => sreport->getleamid@=> $team->getStatus(.I);$this->warn( string:"Team #{$report->getTeamId()} is not active - processing anyway (manual override) .");|GддДif ($report->isExpiredO) {$this->Loggen->warning(self!:|LOG_PREFIX |.||' Report is expired, processing anyway (manual override)||tl'reportId' => SreportId,=> $report->getUvid(),'expiresAt'=> $report->getExpiresAt()?->toDateStringO.ID:Sthis->warn( string: |'Report is expired (expires_at: |||||Sreport->getExpiresAt()?->toDateString() • "P - processing anyway (manual overrad 61$now = Carbon: :now();$frequency = $report->getFrequency();$wouldRunToday = match ($frequency)AutomatedReportsservice:: FREQUENÉ& gAtL* =>V Accept File g-X Reject File t3@* 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)private const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored o* no date constraint .* @return string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:04• RequestGenerateAskJiminnyReportJobTest -CascadeFixing ReportControlleAutomated Report MarAutomated Report Lip#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terninal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leamsuir-o( 4 spaces...
|
NULL
|
|
10873
|
215
|
51
|
2026-04-14T09:02:07.154416+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157327154_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewFV faVsco.js vNavigateCodeLara PhpStormFileEditViewFV faVsco.js vNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny k vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack• TeamsD TracksO TranscriptionO TwilioD UsersC Vocabulary@Zoom© CoachingFeedbacksUpr© Command.phpcreateDatabaseusers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen©FeatureFlagsHelper.php© FixCrossTenantlssues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.p© JiminnyCacheClearCom© JiminnyDebugCommanc© Jiminnysetencryptedlo(c) Jiminny okenintocomm© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e RecalculatebealkiskscoC) RemoveDeleteMarkersd(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.onoAutomaleakeportscommana.ong© AddLayoutEntities.php© Team.php© TrackProviderInstalledEvent.phpCreateActivityLoggedEvent.php© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsCommand extends Commandprivate function processReports(string $frequency): void11551341351361371381391401411421451144145146147148149150151152115.51154private function getReportById(string $reportId): Collection1150157158159160161162116.5116416516616716816917017117217317417511761117.180181182$report = $this->reportRepository->findById0rUuid($reportId);if ($report === null) €$this->logger->warning(self::LOG_PREFIX|' Report not found for --report-id'. ['reportid' => $reportId]):|$this->warn( string: "Report not found: (($reportId)");return coltectsif (! $report->getStatus(D) k$this->logger->warning(self::LOG_PREFIX • ' Report is inactive, processing anyway (manual override)""L'reportId' => SreportId,'reportuvid' => $report->getUvid().I);$this->warn( string: 'Report is inactive - processing anyway (manual override).');$team = $report->getTeam();if ($team->getStatus() !== Team::STATUS_ACTIVE) ($this->Logger->warning(self::LOG_PREFIX •|' Team is not active, processing anyway (manual override)'" ['reportId' => $reportId,'reportuvid' => $report->getUvid(),'teamId' => $report->getTeamId(),'teamstatus' => $team->getStatus(),$this->warn( string: "Team #{$report->getTeamId()} is not active - processing anyway (manual override) .");€ InteractsWithIOif ($report->isExpiredO) {$this->logger->warning(self::LOG_PREFIX ' Rep'reportId' => $reportId,'reportUvid'=> $report->getUvid(),'expiresat'→> $report->getExpiresAt()?->tolpublic function warn(ssurino.$verbosity = nullrride)"l): void1):$this->warn( string: "Report is expired (expires_aWrite a stripg as warning output.Overrides:InteractsWithIO: :warnParameters: string $stringstring|string|stringlstringlstrineinulu sveroos ityIO ||'b - processing anyway (manual overrid$now = Carbon::now();$frequency = $report->getFrequencyO);$wouldRunToday = match ($frequency) {Returns:AutomatedReportsService::FREQUENCY_DAILY →> truSource:AutomatedReportsService::FREQUENCY_WEEKLY => $nAutomatedReportsService::FREQUENCY_MONTHLY => $AutomatedReportsService::FREQUENCY_QUARTERLY => pnum-quaydefault => false,vendor/laravel/framework/src/Illuminate/Console/Concerns/nterarswtnu ono4, 7, 10].strict: true),if (! $wouldRunToday) €T 6 of 6 edits +v Accept File % +X keectrlle tae+ 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)E custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log) {...}* Fetch activity IDs fo* Date filters stored o* no date constraint .* @return string[] Actipublic function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge(Sreqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:07• RequestGenerateAskJiminnyReportJobTest -CascadeFixing ReportControlleAutomated Report MarAutomated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terninal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasur leamsuir-o( 4 spaces...
|
NULL
|
-9058127334772828761
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditViewFV faVsco.js vNavigateCodeLara PhpStormFileEditViewFV faVsco.js vNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny k vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack• TeamsD TracksO TranscriptionO TwilioD UsersC Vocabulary@Zoom© CoachingFeedbacksUpr© Command.phpcreateDatabaseusers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen©FeatureFlagsHelper.php© FixCrossTenantlssues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.p© JiminnyCacheClearCom© JiminnyDebugCommanc© Jiminnysetencryptedlo(c) Jiminny okenintocomm© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e RecalculatebealkiskscoC) RemoveDeleteMarkersd(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.onoAutomaleakeportscommana.ong© AddLayoutEntities.php© Team.php© TrackProviderInstalledEvent.phpCreateActivityLoggedEvent.php© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsCommand extends Commandprivate function processReports(string $frequency): void11551341351361371381391401411421451144145146147148149150151152115.51154private function getReportById(string $reportId): Collection1150157158159160161162116.5116416516616716816917017117217317417511761117.180181182$report = $this->reportRepository->findById0rUuid($reportId);if ($report === null) €$this->logger->warning(self::LOG_PREFIX|' Report not found for --report-id'. ['reportid' => $reportId]):|$this->warn( string: "Report not found: (($reportId)");return coltectsif (! $report->getStatus(D) k$this->logger->warning(self::LOG_PREFIX • ' Report is inactive, processing anyway (manual override)""L'reportId' => SreportId,'reportuvid' => $report->getUvid().I);$this->warn( string: 'Report is inactive - processing anyway (manual override).');$team = $report->getTeam();if ($team->getStatus() !== Team::STATUS_ACTIVE) ($this->Logger->warning(self::LOG_PREFIX •|' Team is not active, processing anyway (manual override)'" ['reportId' => $reportId,'reportuvid' => $report->getUvid(),'teamId' => $report->getTeamId(),'teamstatus' => $team->getStatus(),$this->warn( string: "Team #{$report->getTeamId()} is not active - processing anyway (manual override) .");€ InteractsWithIOif ($report->isExpiredO) {$this->logger->warning(self::LOG_PREFIX ' Rep'reportId' => $reportId,'reportUvid'=> $report->getUvid(),'expiresat'→> $report->getExpiresAt()?->tolpublic function warn(ssurino.$verbosity = nullrride)"l): void1):$this->warn( string: "Report is expired (expires_aWrite a stripg as warning output.Overrides:InteractsWithIO: :warnParameters: string $stringstring|string|stringlstringlstrineinulu sveroos ityIO ||'b - processing anyway (manual overrid$now = Carbon::now();$frequency = $report->getFrequencyO);$wouldRunToday = match ($frequency) {Returns:AutomatedReportsService::FREQUENCY_DAILY →> truSource:AutomatedReportsService::FREQUENCY_WEEKLY => $nAutomatedReportsService::FREQUENCY_MONTHLY => $AutomatedReportsService::FREQUENCY_QUARTERLY => pnum-quaydefault => false,vendor/laravel/framework/src/Illuminate/Console/Concerns/nterarswtnu ono4, 7, 10].strict: true),if (! $wouldRunToday) €T 6 of 6 edits +v Accept File % +X keectrlle tae+ 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)E custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log) {...}* Fetch activity IDs fo* Date filters stored o* no date constraint .* @return string[] Actipublic function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge(Sreqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:07• RequestGenerateAskJiminnyReportJobTest -CascadeFixing ReportControlleAutomated Report MarAutomated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terninal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasur leamsuir-o( 4 spaces...
|
10872
|
|
10874
|
215
|
52
|
2026-04-14T09:02:13.235154+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157333235_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsCommand.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Reports;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Collection;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\RequestGenerateReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
class AutomatedReportsCommand extends Command
{
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[automated-reports]';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'automated-reports {--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly). Use --report-id to manually trigger a specific report by ID or UUID.';
public function __construct(
private readonly LoggerInterface $logger,
private readonly BusDispatcher $dispatcher,
private readonly AutomatedReportsRepository $reportRepository
) {
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle(): int
{
$this->logger->info(self::LOG_PREFIX . ' Started');
$now = Carbon::now();
$isMonday = $now->isMonday();
$isFirstDayOfMonth = $now->day === 1;
$currentMonth = $now->month;
// Check if the current month is a quarterly month (January, April, July, October)
$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);
$this->logger->info(self::LOG_PREFIX . ' Checking conditions', [
'isMonday' => $isMonday,
'isFirstDayOfMonth' => $isFirstDayOfMonth,
'currentMonth' => $currentMonth,
'isQuarterlyMonth' => $isQuarterlyMonth,
]);
// Process daily reports
$this->processReports(AutomatedReportsService::FREQUENCY_DAILY);
// Process weekly reports on Mondays
if ($isMonday) {
$this->processReports(AutomatedReportsService::FREQUENCY_WEEKLY);
}
// Process monthly reports on the first day of the month
if ($isFirstDayOfMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_MONTHLY);
}
// Process quarterly reports on the first day of January, April, July, and October
if ($isFirstDayOfMonth && $isQuarterlyMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_QUARTERLY);
}
$this->logger->info(self::LOG_PREFIX . ' Completed');
return 0;
}
/**
* Process reports for a specific frequency.
*
* @param string $frequency
*
* @return void
*/
private function processReports(string $frequency): void
{
$this->logger->info(self::LOG_PREFIX . " Processing $frequency reports");
$reportId = $this->option('report-id');
if ($reportId !== null) {
$reports = $this->getReportById($reportId);
} else {
// Get all enabled, not deleted reports with active teams for the specified frequency
$reports = $this->reportRepository->getActiveReportsByFrequency($frequency);
}
$this->logger->info(self::LOG_PREFIX . " Found {$reports->count()} $frequency reports to process");
/** @var AutomatedReport $report */
foreach ($reports as $report) {
$this->logger->info(self::LOG_PREFIX . ' Dispatching Generate Report job for report', [
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'frequency' => $report->getFrequency(),
'type' => $report->getType(),
]);
$job = $report->isAskJiminnyReport()
? new RequestGenerateAskJiminnyReportJob($report->getUuid())
: new RequestGenerateReportJob($report->getUuid());
// $this->dispatcher->dispatch($job);
$this->dispatcher->dispatchSync($job);
}
}
private function getReportById(string $reportId): Collection
{
$report = $this->reportRepository->findByIdOrUuid($reportId);
if ($report === null) {
$this->logger->warning(self::LOG_PREFIX . ' Report not found for --report-id', ['reportId' => $reportId]);
$this->warn("Report not found: {$reportId}");
return collect();
}
if (! $report->getStatus()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is inactive, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
]);
$this->warn('Report is inactive — processing anyway (manual override).');
}
$team = $report->getTeam();
if ($team->getStatus() !== Team::STATUS_ACTIVE) {
$this->logger->warning(self::LOG_PREFIX . ' Team is not active, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'teamStatus' => $team->getStatus(),
]);
$this->warn("Team #{$report->getTeamId()} is not active — processing anyway (manual override).");
}
if ($report->isExpired()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is expired, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'expiresAt' => $report->getExpiresAt()?->toDateString(),
]);
$this->warn('Report is expired (expires_at: ' . $report->getExpiresAt()?->toDateString() . ') — processing anyway (manual override).');
}
$now = Carbon::now();
$frequency = $report->getFrequency();
$wouldRunToday = match ($frequency) {
AutomatedReportsService::FREQUENCY_DAILY => true,
AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),
AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,
AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10], true),
default => false,
};
if (! $wouldRunToday) {
$this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'frequency' => $frequency,
]);
$this->warn("Report frequency is '{$frequency}' — would NOT run today, processing anyway (manual override).");
}
return collect([$report]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityService
{
private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;
private const array DATE_FILTER_KEYS = [
ActivityActualDate::PARAM_START_DATE,
ActivityActualDate::PARAM_END_DATE,
ActivityUpdatedDate::PARAM_UPDATED_FROM,
ActivityUpdatedDate::PARAM_UPDATED_TO,
ClosingPeriodFilter::KEY_START_DATE,
ClosingPeriodFilter::KEY_END_DATE,
];
public function __construct(
private readonly ActivitySearch $activitySearch,
private readonly ElasticActivityRepository $elasticRepository,
private readonly LoggerInterface $logger,
) {
}
/**
* Fetch activity IDs for a saved search, passing its filters as-is to Criteria.
* Date filters stored on the saved search are excluded; if no other filters exist,
* no date constraint is applied — matching the behaviour of getContextForAskAnythingByFilter.
*
* @return string[] Activity IDs
*/
public function getActivityIdsForSavedSearch(
Search $savedSearch,
User $user,
): array {
$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);
$criteria = Criteria::createFromRequest(
array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),
$user->getTimezone()
);
$filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);
$activityIds = $this->elasticRepository->onDemandSearchIdsOnly($user, $criteria, $filterSet);
$this->logger->info('[AskJiminnyReport] Fetched activity IDs for saved search', [
'saved_search_id' => $savedSearch->getId(),
'user_id' => $user->getId(),
'activity_count' => count($activityIds),
]);
return $activityIds;
}
private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array
{
$params = [];
$arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);
foreach ($savedSearch->getFilters() as $filter) {
$key = $filter->getFilterProperty();
$value = $filter->getFilterValue();
if (in_array($key, self::DATE_FILTER_KEYS, true)) {
continue;
}
if (isset($params[$key])) {
$params[$key][] = $value;
} elseif (in_array($key, $arrayFilterKeys, true)) {
$params[$key] = [$value];
} else {
$params[$key] = $value;
}
}
return $params;
}
}
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.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","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.76171875,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.7796875,"top":0.017361112,"width":0.12109375,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.049609374,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"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\\Console\\Commands\\Reports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\n\nclass AutomatedReportsCommand extends Command\n{\n /**\n * Log prefix for all log messages\n */\n private const string LOG_PREFIX = '[automated-reports]';\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'automated-reports {--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly). Use --report-id to manually trigger a specific report by ID or UUID.';\n\n\n public function __construct(\n private readonly LoggerInterface $logger,\n private readonly BusDispatcher $dispatcher,\n private readonly AutomatedReportsRepository $reportRepository\n ) {\n parent::__construct();\n }\n\n /**\n * Execute the console command.\n *\n * @return int\n */\n public function handle(): int\n {\n $this->logger->info(self::LOG_PREFIX . ' Started');\n\n $now = Carbon::now();\n $isMonday = $now->isMonday();\n $isFirstDayOfMonth = $now->day === 1;\n $currentMonth = $now->month;\n\n // Check if the current month is a quarterly month (January, April, July, October)\n $isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);\n\n $this->logger->info(self::LOG_PREFIX . ' Checking conditions', [\n 'isMonday' => $isMonday,\n 'isFirstDayOfMonth' => $isFirstDayOfMonth,\n 'currentMonth' => $currentMonth,\n 'isQuarterlyMonth' => $isQuarterlyMonth,\n ]);\n\n // Process daily reports\n $this->processReports(AutomatedReportsService::FREQUENCY_DAILY);\n\n // Process weekly reports on Mondays\n if ($isMonday) {\n $this->processReports(AutomatedReportsService::FREQUENCY_WEEKLY);\n }\n\n // Process monthly reports on the first day of the month\n if ($isFirstDayOfMonth) {\n $this->processReports(AutomatedReportsService::FREQUENCY_MONTHLY);\n }\n\n // Process quarterly reports on the first day of January, April, July, and October\n if ($isFirstDayOfMonth && $isQuarterlyMonth) {\n $this->processReports(AutomatedReportsService::FREQUENCY_QUARTERLY);\n }\n\n $this->logger->info(self::LOG_PREFIX . ' Completed');\n\n return 0;\n }\n\n /**\n * Process reports for a specific frequency.\n *\n * @param string $frequency\n *\n * @return void\n */\n private function processReports(string $frequency): void\n {\n $this->logger->info(self::LOG_PREFIX . \" Processing $frequency reports\");\n\n $reportId = $this->option('report-id');\n if ($reportId !== null) {\n $reports = $this->getReportById($reportId);\n } else {\n // Get all enabled, not deleted reports with active teams for the specified frequency\n $reports = $this->reportRepository->getActiveReportsByFrequency($frequency);\n }\n\n $this->logger->info(self::LOG_PREFIX . \" Found {$reports->count()} $frequency reports to process\");\n\n /** @var AutomatedReport $report */\n foreach ($reports as $report) {\n $this->logger->info(self::LOG_PREFIX . ' Dispatching Generate Report job for report', [\n 'reportUuid' => $report->getUuid(),\n 'teamId' => $report->getTeamId(),\n 'frequency' => $report->getFrequency(),\n 'type' => $report->getType(),\n ]);\n\n $job = $report->isAskJiminnyReport()\n ? new RequestGenerateAskJiminnyReportJob($report->getUuid())\n : new RequestGenerateReportJob($report->getUuid());\n\n // $this->dispatcher->dispatch($job);\n $this->dispatcher->dispatchSync($job);\n }\n }\n\n private function getReportById(string $reportId): Collection\n {\n $report = $this->reportRepository->findByIdOrUuid($reportId);\n\n if ($report === null) {\n $this->logger->warning(self::LOG_PREFIX . ' Report not found for --report-id', ['reportId' => $reportId]);\n $this->warn(\"Report not found: {$reportId}\");\n\n return collect();\n }\n\n if (! $report->getStatus()) {\n $this->logger->warning(self::LOG_PREFIX . ' Report is inactive, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n ]);\n $this->warn('Report is inactive — processing anyway (manual override).');\n }\n\n $team = $report->getTeam();\n if ($team->getStatus() !== Team::STATUS_ACTIVE) {\n $this->logger->warning(self::LOG_PREFIX . ' Team is not active, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'teamId' => $report->getTeamId(),\n 'teamStatus' => $team->getStatus(),\n ]);\n $this->warn(\"Team #{$report->getTeamId()} is not active — processing anyway (manual override).\");\n }\n\n if ($report->isExpired()) {\n $this->logger->warning(self::LOG_PREFIX . ' Report is expired, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'expiresAt' => $report->getExpiresAt()?->toDateString(),\n ]);\n $this->warn('Report is expired (expires_at: ' . $report->getExpiresAt()?->toDateString() . ') — processing anyway (manual override).');\n }\n\n $now = Carbon::now();\n $frequency = $report->getFrequency();\n $wouldRunToday = match ($frequency) {\n AutomatedReportsService::FREQUENCY_DAILY => true,\n AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),\n AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,\n AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10], true),\n default => false,\n };\n\n if (! $wouldRunToday) {\n $this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'frequency' => $frequency,\n ]);\n $this->warn(\"Report frequency is '{$frequency}' — would NOT run today, processing anyway (manual override).\");\n }\n\n return collect([$report]);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Reports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\n\nclass AutomatedReportsCommand extends Command\n{\n /**\n * Log prefix for all log messages\n */\n private const string LOG_PREFIX = '[automated-reports]';\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'automated-reports {--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly). Use --report-id to manually trigger a specific report by ID or UUID.';\n\n\n public function __construct(\n private readonly LoggerInterface $logger,\n private readonly BusDispatcher $dispatcher,\n private readonly AutomatedReportsRepository $reportRepository\n ) {\n parent::__construct();\n }\n\n /**\n * Execute the console command.\n *\n * @return int\n */\n public function handle(): int\n {\n $this->logger->info(self::LOG_PREFIX . ' Started');\n\n $now = Carbon::now();\n $isMonday = $now->isMonday();\n $isFirstDayOfMonth = $now->day === 1;\n $currentMonth = $now->month;\n\n // Check if the current month is a quarterly month (January, April, July, October)\n $isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);\n\n $this->logger->info(self::LOG_PREFIX . ' Checking conditions', [\n 'isMonday' => $isMonday,\n 'isFirstDayOfMonth' => $isFirstDayOfMonth,\n 'currentMonth' => $currentMonth,\n 'isQuarterlyMonth' => $isQuarterlyMonth,\n ]);\n\n // Process daily reports\n $this->processReports(AutomatedReportsService::FREQUENCY_DAILY);\n\n // Process weekly reports on Mondays\n if ($isMonday) {\n $this->processReports(AutomatedReportsService::FREQUENCY_WEEKLY);\n }\n\n // Process monthly reports on the first day of the month\n if ($isFirstDayOfMonth) {\n $this->processReports(AutomatedReportsService::FREQUENCY_MONTHLY);\n }\n\n // Process quarterly reports on the first day of January, April, July, and October\n if ($isFirstDayOfMonth && $isQuarterlyMonth) {\n $this->processReports(AutomatedReportsService::FREQUENCY_QUARTERLY);\n }\n\n $this->logger->info(self::LOG_PREFIX . ' Completed');\n\n return 0;\n }\n\n /**\n * Process reports for a specific frequency.\n *\n * @param string $frequency\n *\n * @return void\n */\n private function processReports(string $frequency): void\n {\n $this->logger->info(self::LOG_PREFIX . \" Processing $frequency reports\");\n\n $reportId = $this->option('report-id');\n if ($reportId !== null) {\n $reports = $this->getReportById($reportId);\n } else {\n // Get all enabled, not deleted reports with active teams for the specified frequency\n $reports = $this->reportRepository->getActiveReportsByFrequency($frequency);\n }\n\n $this->logger->info(self::LOG_PREFIX . \" Found {$reports->count()} $frequency reports to process\");\n\n /** @var AutomatedReport $report */\n foreach ($reports as $report) {\n $this->logger->info(self::LOG_PREFIX . ' Dispatching Generate Report job for report', [\n 'reportUuid' => $report->getUuid(),\n 'teamId' => $report->getTeamId(),\n 'frequency' => $report->getFrequency(),\n 'type' => $report->getType(),\n ]);\n\n $job = $report->isAskJiminnyReport()\n ? new RequestGenerateAskJiminnyReportJob($report->getUuid())\n : new RequestGenerateReportJob($report->getUuid());\n\n // $this->dispatcher->dispatch($job);\n $this->dispatcher->dispatchSync($job);\n }\n }\n\n private function getReportById(string $reportId): Collection\n {\n $report = $this->reportRepository->findByIdOrUuid($reportId);\n\n if ($report === null) {\n $this->logger->warning(self::LOG_PREFIX . ' Report not found for --report-id', ['reportId' => $reportId]);\n $this->warn(\"Report not found: {$reportId}\");\n\n return collect();\n }\n\n if (! $report->getStatus()) {\n $this->logger->warning(self::LOG_PREFIX . ' Report is inactive, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n ]);\n $this->warn('Report is inactive — processing anyway (manual override).');\n }\n\n $team = $report->getTeam();\n if ($team->getStatus() !== Team::STATUS_ACTIVE) {\n $this->logger->warning(self::LOG_PREFIX . ' Team is not active, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'teamId' => $report->getTeamId(),\n 'teamStatus' => $team->getStatus(),\n ]);\n $this->warn(\"Team #{$report->getTeamId()} is not active — processing anyway (manual override).\");\n }\n\n if ($report->isExpired()) {\n $this->logger->warning(self::LOG_PREFIX . ' Report is expired, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'expiresAt' => $report->getExpiresAt()?->toDateString(),\n ]);\n $this->warn('Report is expired (expires_at: ' . $report->getExpiresAt()?->toDateString() . ') — processing anyway (manual override).');\n }\n\n $now = Carbon::now();\n $frequency = $report->getFrequency();\n $wouldRunToday = match ($frequency) {\n AutomatedReportsService::FREQUENCY_DAILY => true,\n AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),\n AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,\n AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10], true),\n default => false,\n };\n\n if (! $wouldRunToday) {\n $this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'frequency' => $frequency,\n ]);\n $this->warn(\"Report frequency is '{$frequency}' — would NOT run today, processing anyway (manual override).\");\n }\n\n return collect([$report]);\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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.049609374,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.6699219,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.6816406,"top":0.19513889,"width":0.00859375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6921875,"top":0.19375,"width":0.00859375,"height":0.015972223},"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.7007812,"top":0.19375,"width":0.008203125,"height":0.015972223},"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\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityService\n{\n private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;\n\n private const array DATE_FILTER_KEYS = [\n ActivityActualDate::PARAM_START_DATE,\n ActivityActualDate::PARAM_END_DATE,\n ActivityUpdatedDate::PARAM_UPDATED_FROM,\n ActivityUpdatedDate::PARAM_UPDATED_TO,\n ClosingPeriodFilter::KEY_START_DATE,\n ClosingPeriodFilter::KEY_END_DATE,\n ];\n\n public function __construct(\n private readonly ActivitySearch $activitySearch,\n private readonly ElasticActivityRepository $elasticRepository,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n /**\n * Fetch activity IDs for a saved search, passing its filters as-is to Criteria.\n * Date filters stored on the saved search are excluded; if no other filters exist,\n * no date constraint is applied — matching the behaviour of getContextForAskAnythingByFilter.\n *\n * @return string[] Activity IDs\n */\n public function getActivityIdsForSavedSearch(\n Search $savedSearch,\n User $user,\n ): array {\n $requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);\n\n $criteria = Criteria::createFromRequest(\n array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);\n\n $activityIds = $this->elasticRepository->onDemandSearchIdsOnly($user, $criteria, $filterSet);\n\n $this->logger->info('[AskJiminnyReport] Fetched activity IDs for saved search', [\n 'saved_search_id' => $savedSearch->getId(),\n 'user_id' => $user->getId(),\n 'activity_count' => count($activityIds),\n ]);\n\n return $activityIds;\n }\n\n private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array\n {\n $params = [];\n $arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);\n\n foreach ($savedSearch->getFilters() as $filter) {\n $key = $filter->getFilterProperty();\n $value = $filter->getFilterValue();\n\n if (in_array($key, self::DATE_FILTER_KEYS, true)) {\n continue;\n }\n\n if (isset($params[$key])) {\n $params[$key][] = $value;\n } elseif (in_array($key, $arrayFilterKeys, true)) {\n $params[$key] = [$value];\n } else {\n $params[$key] = $value;\n }\n }\n\n return $params;\n }\n}","depth":4,"bounds":{"left":0.6238281,"top":0.0,"width":0.31953126,"height":1.0},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityService\n{\n private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;\n\n private const array DATE_FILTER_KEYS = [\n ActivityActualDate::PARAM_START_DATE,\n ActivityActualDate::PARAM_END_DATE,\n ActivityUpdatedDate::PARAM_UPDATED_FROM,\n ActivityUpdatedDate::PARAM_UPDATED_TO,\n ClosingPeriodFilter::KEY_START_DATE,\n ClosingPeriodFilter::KEY_END_DATE,\n ];\n\n public function __construct(\n private readonly ActivitySearch $activitySearch,\n private readonly ElasticActivityRepository $elasticRepository,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n /**\n * Fetch activity IDs for a saved search, passing its filters as-is to Criteria.\n * Date filters stored on the saved search are excluded; if no other filters exist,\n * no date constraint is applied — matching the behaviour of getContextForAskAnythingByFilter.\n *\n * @return string[] Activity IDs\n */\n public function getActivityIdsForSavedSearch(\n Search $savedSearch,\n User $user,\n ): array {\n $requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);\n\n $criteria = Criteria::createFromRequest(\n array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);\n\n $activityIds = $this->elasticRepository->onDemandSearchIdsOnly($user, $criteria, $filterSet);\n\n $this->logger->info('[AskJiminnyReport] Fetched activity IDs for saved search', [\n 'saved_search_id' => $savedSearch->getId(),\n 'user_id' => $user->getId(),\n 'activity_count' => count($activityIds),\n ]);\n\n return $activityIds;\n }\n\n private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array\n {\n $params = [];\n $arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);\n\n foreach ($savedSearch->getFilters() as $filter) {\n $key = $filter->getFilterProperty();\n $value = $filter->getFilterValue();\n\n if (in_array($key, self::DATE_FILTER_KEYS, true)) {\n continue;\n }\n\n if (isset($params[$key])) {\n $params[$key][] = $value;\n } elseif (in_array($key, $arrayFilterKeys, true)) {\n $params[$key] = [$value];\n } else {\n $params[$key] = $value;\n }\n }\n\n return $params;\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.0140625,"top":0.041666668,"width":0.028515626,"height":0.021527778},"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2209877803940756757
|
6995382047715846964
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Reports;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Collection;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\RequestGenerateReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
class AutomatedReportsCommand extends Command
{
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[automated-reports]';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'automated-reports {--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly). Use --report-id to manually trigger a specific report by ID or UUID.';
public function __construct(
private readonly LoggerInterface $logger,
private readonly BusDispatcher $dispatcher,
private readonly AutomatedReportsRepository $reportRepository
) {
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle(): int
{
$this->logger->info(self::LOG_PREFIX . ' Started');
$now = Carbon::now();
$isMonday = $now->isMonday();
$isFirstDayOfMonth = $now->day === 1;
$currentMonth = $now->month;
// Check if the current month is a quarterly month (January, April, July, October)
$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);
$this->logger->info(self::LOG_PREFIX . ' Checking conditions', [
'isMonday' => $isMonday,
'isFirstDayOfMonth' => $isFirstDayOfMonth,
'currentMonth' => $currentMonth,
'isQuarterlyMonth' => $isQuarterlyMonth,
]);
// Process daily reports
$this->processReports(AutomatedReportsService::FREQUENCY_DAILY);
// Process weekly reports on Mondays
if ($isMonday) {
$this->processReports(AutomatedReportsService::FREQUENCY_WEEKLY);
}
// Process monthly reports on the first day of the month
if ($isFirstDayOfMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_MONTHLY);
}
// Process quarterly reports on the first day of January, April, July, and October
if ($isFirstDayOfMonth && $isQuarterlyMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_QUARTERLY);
}
$this->logger->info(self::LOG_PREFIX . ' Completed');
return 0;
}
/**
* Process reports for a specific frequency.
*
* @param string $frequency
*
* @return void
*/
private function processReports(string $frequency): void
{
$this->logger->info(self::LOG_PREFIX . " Processing $frequency reports");
$reportId = $this->option('report-id');
if ($reportId !== null) {
$reports = $this->getReportById($reportId);
} else {
// Get all enabled, not deleted reports with active teams for the specified frequency
$reports = $this->reportRepository->getActiveReportsByFrequency($frequency);
}
$this->logger->info(self::LOG_PREFIX . " Found {$reports->count()} $frequency reports to process");
/** @var AutomatedReport $report */
foreach ($reports as $report) {
$this->logger->info(self::LOG_PREFIX . ' Dispatching Generate Report job for report', [
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'frequency' => $report->getFrequency(),
'type' => $report->getType(),
]);
$job = $report->isAskJiminnyReport()
? new RequestGenerateAskJiminnyReportJob($report->getUuid())
: new RequestGenerateReportJob($report->getUuid());
// $this->dispatcher->dispatch($job);
$this->dispatcher->dispatchSync($job);
}
}
private function getReportById(string $reportId): Collection
{
$report = $this->reportRepository->findByIdOrUuid($reportId);
if ($report === null) {
$this->logger->warning(self::LOG_PREFIX . ' Report not found for --report-id', ['reportId' => $reportId]);
$this->warn("Report not found: {$reportId}");
return collect();
}
if (! $report->getStatus()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is inactive, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
]);
$this->warn('Report is inactive — processing anyway (manual override).');
}
$team = $report->getTeam();
if ($team->getStatus() !== Team::STATUS_ACTIVE) {
$this->logger->warning(self::LOG_PREFIX . ' Team is not active, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'teamStatus' => $team->getStatus(),
]);
$this->warn("Team #{$report->getTeamId()} is not active — processing anyway (manual override).");
}
if ($report->isExpired()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is expired, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'expiresAt' => $report->getExpiresAt()?->toDateString(),
]);
$this->warn('Report is expired (expires_at: ' . $report->getExpiresAt()?->toDateString() . ') — processing anyway (manual override).');
}
$now = Carbon::now();
$frequency = $report->getFrequency();
$wouldRunToday = match ($frequency) {
AutomatedReportsService::FREQUENCY_DAILY => true,
AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),
AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,
AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10], true),
default => false,
};
if (! $wouldRunToday) {
$this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'frequency' => $frequency,
]);
$this->warn("Report frequency is '{$frequency}' — would NOT run today, processing anyway (manual override).");
}
return collect([$report]);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityService
{
private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;
private const array DATE_FILTER_KEYS = [
ActivityActualDate::PARAM_START_DATE,
ActivityActualDate::PARAM_END_DATE,
ActivityUpdatedDate::PARAM_UPDATED_FROM,
ActivityUpdatedDate::PARAM_UPDATED_TO,
ClosingPeriodFilter::KEY_START_DATE,
ClosingPeriodFilter::KEY_END_DATE,
];
public function __construct(
private readonly ActivitySearch $activitySearch,
private readonly ElasticActivityRepository $elasticRepository,
private readonly LoggerInterface $logger,
) {
}
/**
* Fetch activity IDs for a saved search, passing its filters as-is to Criteria.
* Date filters stored on the saved search are excluded; if no other filters exist,
* no date constraint is applied — matching the behaviour of getContextForAskAnythingByFilter.
*
* @return string[] Activity IDs
*/
public function getActivityIdsForSavedSearch(
Search $savedSearch,
User $user,
): array {
$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);
$criteria = Criteria::createFromRequest(
array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),
$user->getTimezone()
);
$filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);
$activityIds = $this->elasticRepository->onDemandSearchIdsOnly($user, $criteria, $filterSet);
$this->logger->info('[AskJiminnyReport] Fetched activity IDs for saved search', [
'saved_search_id' => $savedSearch->getId(),
'user_id' => $user->getId(),
'activity_count' => count($activityIds),
]);
return $activityIds;
}
private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array
{
$params = [];
$arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);
foreach ($savedSearch->getFilters() as $filter) {
$key = $filter->getFilterProperty();
$value = $filter->getFilterValue();
if (in_array($key, self::DATE_FILTER_KEYS, true)) {
continue;
}
if (isset($params[$key])) {
$params[$key][] = $value;
} elseif (in_array($key, $arrayFilterKeys, true)) {
$params[$key] = [$value];
} else {
$params[$key] = $value;
}
}
return $params;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
10878
|
215
|
54
|
2026-04-14T09:02:22.353055+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157342353_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditFV faVsco.js vViewNavigateCodeLara PhpStormFileEditFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantlssues.p(c) -ushro espermissionsc(e) Generatelnterna wepho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.f© JiminnyCacheClearCom© JiminnyDebugCommanc© JiminnySetEncryptedTo(c) Jiminny okenintocommMakeslackLIvecoaching(c Manacescimror eam.o© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.onoAutomaleakeportscommana.ong• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Commandprivate function getReportById(string $reportId): Collection135138139140141142143144146114/1481491501511521531541551561571581591601611621631641651661671l08110717011/-172173A74175176177178180181182183184185186187188189190if ($report === null) €$this->logger->warning(self::LOG_PREFIX •' Report not found for --report-id'. ['reportid' => $reportId]);|$this->warn( string: "Report not found: {$reportId}'");return collect():if (! $report->getStatus(D) {$this->Logger->warning(self::LOG_PREFIX •' Report is inactive, processing anyway (manual override)'" ['reportId' => SreportId,'reportuuid' => $report->getUvid(),1):$this->warn( string: "Report is inactive - processing anyway (manual override).'):$team = Sreport->getTeam():if ($team->getStatus() !== Team::STATUS_ACTIVE) k$this->logger->warning(self::LOG_PREFIX •' Team is not active, processing anyway (manual override)'. L'reportId' => SreportId,'reportUvid' => $report->getUvid),'teamId' => $report->getTeamId(),'teamStatus'=> $team->getStatus(),1):$this-›warn( string: "Team #{$report-›getTeamId(} is not active - processing anyway (manual override) ."»);|if ($report->isExpiredO) €$this->logger->warning(self::LOG_PREFIX •' Report is expired, processing anyway (manual override)". E=> SreportId,→nrecor-paeruuou'expiresAt'=> $report->getExpiresAt()?->toDateStringO,1D:$this->warn( string: 'Report is expired (expires_at: ' • Sreport->getExpiresAt()?->toDateString() •I'P - processing anyway (manual overrid$now = Carbon: : now():$frequency = $report->getFrequency():$wouldRunToday = match ($frequency) {AUtomatedReporESservice::FREQUENCY_UALLY → CrUe,AutomatedReportsService: :FREQUENCY_WEEKLY => $now->isMonday(),AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10],default => false,strict: true),if (! $wouldRunToday) €$this->Logger->info(seLf::LOG_PREFIX|.| Report frequency would not run today, processing anyway (manual override)'l ['reportId' => SreportId,'reportUvid' => $report->getUvid(,=> $frequency,lID:$this->warn( string: "Report frteqoh@ydits 4$ v Accept File %~ 10X RelectFileunasoday, ProbReiesng anyway (manual override) ."):Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)СД СЛ= custom.log= laravel.logs Sr iminny@localnosuiA HS_local [jiminny@localhost]s console ProDI4 console [EU]I console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored* no date constraint .* @return string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($req$user->getTimezo);$filterSet = $this->$activityIds = $this$this->logger->info(' saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:22• RequestGenerateAskJiminnyReportJobTest-CascadeFixing ReportControlleAutomated Report Mar• Automated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsre.oslorv.oneAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasur leams1/4:1 (49/ chars, o line breaksuir-o( 4 spaces...
|
NULL
|
-718343674341230477
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditFV faVsco.js vViewNavigateCodeLara PhpStormFileEditFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantlssues.p(c) -ushro espermissionsc(e) Generatelnterna wepho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.f© JiminnyCacheClearCom© JiminnyDebugCommanc© JiminnySetEncryptedTo(c) Jiminny okenintocommMakeslackLIvecoaching(c Manacescimror eam.o© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.onoAutomaleakeportscommana.ong• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Commandprivate function getReportById(string $reportId): Collection135138139140141142143144146114/1481491501511521531541551561571581591601611621631641651661671l08110717011/-172173A74175176177178180181182183184185186187188189190if ($report === null) €$this->logger->warning(self::LOG_PREFIX •' Report not found for --report-id'. ['reportid' => $reportId]);|$this->warn( string: "Report not found: {$reportId}'");return collect():if (! $report->getStatus(D) {$this->Logger->warning(self::LOG_PREFIX •' Report is inactive, processing anyway (manual override)'" ['reportId' => SreportId,'reportuuid' => $report->getUvid(),1):$this->warn( string: "Report is inactive - processing anyway (manual override).'):$team = Sreport->getTeam():if ($team->getStatus() !== Team::STATUS_ACTIVE) k$this->logger->warning(self::LOG_PREFIX •' Team is not active, processing anyway (manual override)'. L'reportId' => SreportId,'reportUvid' => $report->getUvid),'teamId' => $report->getTeamId(),'teamStatus'=> $team->getStatus(),1):$this-›warn( string: "Team #{$report-›getTeamId(} is not active - processing anyway (manual override) ."»);|if ($report->isExpiredO) €$this->logger->warning(self::LOG_PREFIX •' Report is expired, processing anyway (manual override)". E=> SreportId,→nrecor-paeruuou'expiresAt'=> $report->getExpiresAt()?->toDateStringO,1D:$this->warn( string: 'Report is expired (expires_at: ' • Sreport->getExpiresAt()?->toDateString() •I'P - processing anyway (manual overrid$now = Carbon: : now():$frequency = $report->getFrequency():$wouldRunToday = match ($frequency) {AUtomatedReporESservice::FREQUENCY_UALLY → CrUe,AutomatedReportsService: :FREQUENCY_WEEKLY => $now->isMonday(),AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10],default => false,strict: true),if (! $wouldRunToday) €$this->Logger->info(seLf::LOG_PREFIX|.| Report frequency would not run today, processing anyway (manual override)'l ['reportId' => SreportId,'reportUvid' => $report->getUvid(,=> $frequency,lID:$this->warn( string: "Report frteqoh@ydits 4$ v Accept File %~ 10X RelectFileunasoday, ProbReiesng anyway (manual override) ."):Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)СД СЛ= custom.log= laravel.logs Sr iminny@localnosuiA HS_local [jiminny@localhost]s console ProDI4 console [EU]I console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored* no date constraint .* @return string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($req$user->getTimezo);$filterSet = $this->$activityIds = $this$this->logger->info(' saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:22• RequestGenerateAskJiminnyReportJobTest-CascadeFixing ReportControlleAutomated Report Mar• Automated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsre.oslorv.oneAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasur leams1/4:1 (49/ chars, o line breaksuir-o( 4 spaces...
|
NULL
|
|
10880
|
215
|
55
|
2026-04-14T09:02:25.355820+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157345355_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormProject vFileEditFV faVsco.js vViewNavigat PhpStormProject vFileEditFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantlssues.p(c) -ushro espermissionsa(e) Generatelnterna wepho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.f© JiminnyCacheClearCom© JiminnyDebugCommanc© JiminnySetEncryptedTo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.o© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.onoAutomaleakeportscommana.ong• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.phpclass AutomatedReportsCommand extends Commandprivate function getReportById(string $reportId): Collection135138140141142E custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]4 console [EU]I console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTestX281лclass AskJiminnyReportActivi1451461471481491501511521531541551561571581591601611O 411051641651661671681691701711721731741751761771781791801811821185184185186187188189190if ($report === null) ($this->logger->warning(self::LOG_PREFIX •|' Report not found for --report-id'. ['reportid' => $reportid]):$this->warn( string: "Report not found: {$reportId}");return collect();if (! Sreport->getStatus() €$this->Logger->warning(self::LOG_PREFIX*' Report is inactive, processing anyway (manual override)'. ['reportId' => SreportId,Перогсбва+ фероги-дена!ID:$this->warn( string: "Report is inactive - processing anyway (manual override). D:$team = $report->getTeam();if |($team->getStatus(| |== Team::STATUS_ACTIVE) |d$this->logger->warning(self::LOG_PREFIXTeam is not active, processing anyway (manual override)'.d'reportId' => SreportId,'reportUvid' => $report->getUvid(),'teamId' > $report->getTeamId(),=> $team->getStatus(),ID:$this->warn ( string: "Team #[$report->getTeamId()} is not active - processing anyway (manual override) . "):if ($report->isExpiredO) {$this->Logger->warning(self:|LOG_PREFIX |.||' Report is expired, processing anyway (manual override)|Cl'reportId' => SreportId,=> $report->getUvid(),=> $report->getExpiresAt()?->toDateString().1D:$this-›warn( string: |'Report is expired (expires_at: |'|| Sreport->getExpiresAt()?->toDateString( |.||b - processing anyway (manual overrid47$now = Carbon::nowO):$frequency = $report->getFrequency();$wouldRunToday = match ($frequency) {AutomatedReportsService::FREQUENCY_DAILY => true,AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,AutomatedReportsService::FREQUENCY_QUARTERLY |→> $now->day === 1 && in_array($now->month, [1, 4, 7, 10],strict: true),default = false,СД СЛif (! $wouldRunToday) €$this->Rogger->info(seLf::LOG_PREFIX •|' Report frequency would not run today, processing anyway (manual override)". E'reportId' => $reportId,=> $report->getUuid(,=> $frequency,1):$this->warn( string: "Report fiteqenGydits +$t v Accept File *~ VOXL RejeCtiFileunatoday, poodessiny anyway (manual override).");Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)private const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($req$user->getTimezo);$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:25• RequestGenerateAskJiminnyReportJobTest-CascadeFixing ReportControlleAutomated Report Mar3Automated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternninal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leams180:50uir-o( 4 spaces...
|
NULL
|
3417673730617968111
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormProject vFileEditFV faVsco.js vViewNavigat PhpStormProject vFileEditFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantlssues.p(c) -ushro espermissionsa(e) Generatelnterna wepho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.f© JiminnyCacheClearCom© JiminnyDebugCommanc© JiminnySetEncryptedTo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.o© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.onoAutomaleakeportscommana.ong• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.phpclass AutomatedReportsCommand extends Commandprivate function getReportById(string $reportId): Collection135138140141142E custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]4 console [EU]I console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTestX281лclass AskJiminnyReportActivi1451461471481491501511521531541551561571581591601611O 411051641651661671681691701711721731741751761771781791801811821185184185186187188189190if ($report === null) ($this->logger->warning(self::LOG_PREFIX •|' Report not found for --report-id'. ['reportid' => $reportid]):$this->warn( string: "Report not found: {$reportId}");return collect();if (! Sreport->getStatus() €$this->Logger->warning(self::LOG_PREFIX*' Report is inactive, processing anyway (manual override)'. ['reportId' => SreportId,Перогсбва+ фероги-дена!ID:$this->warn( string: "Report is inactive - processing anyway (manual override). D:$team = $report->getTeam();if |($team->getStatus(| |== Team::STATUS_ACTIVE) |d$this->logger->warning(self::LOG_PREFIXTeam is not active, processing anyway (manual override)'.d'reportId' => SreportId,'reportUvid' => $report->getUvid(),'teamId' > $report->getTeamId(),=> $team->getStatus(),ID:$this->warn ( string: "Team #[$report->getTeamId()} is not active - processing anyway (manual override) . "):if ($report->isExpiredO) {$this->Logger->warning(self:|LOG_PREFIX |.||' Report is expired, processing anyway (manual override)|Cl'reportId' => SreportId,=> $report->getUvid(),=> $report->getExpiresAt()?->toDateString().1D:$this-›warn( string: |'Report is expired (expires_at: |'|| Sreport->getExpiresAt()?->toDateString( |.||b - processing anyway (manual overrid47$now = Carbon::nowO):$frequency = $report->getFrequency();$wouldRunToday = match ($frequency) {AutomatedReportsService::FREQUENCY_DAILY => true,AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,AutomatedReportsService::FREQUENCY_QUARTERLY |→> $now->day === 1 && in_array($now->month, [1, 4, 7, 10],strict: true),default = false,СД СЛif (! $wouldRunToday) €$this->Rogger->info(seLf::LOG_PREFIX •|' Report frequency would not run today, processing anyway (manual override)". E'reportId' => $reportId,=> $report->getUuid(,=> $frequency,1):$this->warn( string: "Report fiteqenGydits +$t v Accept File *~ VOXL RejeCtiFileunatoday, poodessiny anyway (manual override).");Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)private const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($req$user->getTimezo);$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:25• RequestGenerateAskJiminnyReportJobTest-CascadeFixing ReportControlleAutomated Report Mar3Automated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternninal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leams180:50uir-o( 4 spaces...
|
10878
|
|
10883
|
215
|
57
|
2026-04-14T09:02:35.194438+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157355194_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodeLaravelRefactonToo PhpStormFileFditViewNavigateCodeLaravelRefactonToolsWindowHelpFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny K vProject vProphetAiv → Reports(C AutomatedReportsC(©) AutomatedReportsR(C) AutomatedReportsS© CreateMockAsKJimirC DeleteReportcomma© GenerateMarketingR©leam.phpC) Usage.phpM Slack→ Teams→ Tracks_ TranscriptionD TwilioD Users_ Vocabulary_ 4oom© coachingeedbacksupcg command.phpcreateDatabaseusers.pc Daraoase oecountoiC DeleteOldAiCrmNotesC(©) DeleteS3LeftoversCom|(C DevPostmanCommand.lC DiarizeViaAiParticipantk(©) EncryptTokensComman(©) EngagementStatsRegerT FeatureFlagsHelper.php© rixcross|enantissues.p(c) -ushro espermissionsa(e) Generatelnterna wepho(C) GroupSetDefaultLanquaC) HelperTruncateCoachin(©) HubspotJournalPollingC(©) HubspotWebhookServic(c) ImportRecording.phpC ImportUsersFromCsvFilC IterateUsersCommand.g(©) JiminnyCacheClearCom© JiminnyDebugCommanc© Jiminnysetencryptedlo(c) Jiminny okenintocommC MakeSlackLiveCoachins(c Manacescimror eam.o(©) MarkBranchForEnvironn(C) MuteOrganizerChannel.(C) PhpApm.php(C PropagateCoachingFee(©) PurgeConterences.php(©) PurgeSoftDeletedOppot© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoesc removeunusecrarcloC ResetElasticSearch.php(C) RestoreActivityCrmProv(C) RestoreActivityTypeCor(©) ReportController.phpJiminnyDeouecommana.ongc) AutomatedReorssenccommane.onoAutomaleakeportscommana.ongC AddLayoutEntities.php(C) Team.phpC AutomatedReportsRepository.phpC AutomatedReportsService.phpc CrealenelaAcuiviyevent.ono© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php9 ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.php©) RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Command113513914014114214314414514614711481private function getReportByld(string Sreportid): Collection115-1152153154155156157158115911601611621631164165166167168110911117/011117111174175117617717817911 8011811831841851861187188189190191if (Sreport === null) {$this->Logger->warning(self::LOG_PREFIX • Report not found for --report-id'. L'reportid => $reportidi);Sthis->warn( string: "Report not found: HSreportidr"):return collectohif (! $report->getStatus())$this->Logger->warning(self::LOG_PREFIX .' Report is inactive, processing anyway (manual override)'. [Mreporclo s> oreoortlo.reDOrCUULO"I=> $report->getUuidO.I):$this->warn( string: 'Report is inactive - processing anyway (manual override)."):steam = sreport->getreamchif ($team->getStatus() !== Team::STATUS_ACTIVE) K$this->logger->warning(self::LOG_PREFIX .' Team is not active, processing anyway (manual override)',[reporuld" => sreporula,Перогсбва+ фероги-деона!"ceamid" => preport->gecleantau).reallstatus" → preall->getotacus.ID:$this->warn( string: "Team #ISreport->getTeamIdOl- is not active - processing anyway (manual override)."):lif ($report->isExpired@) k$this->logger->warning(self::LOG_PREFIX .' Report is expired, processing anyway (manual override)'. ['reportid => Sreportid,'reportuuld"=> $report->getUvid(),"exoriresAt'=> $report->getExpiresAt()?->toDateStringO.]D:nunus->warnu sting:'Report is expired (expires_at:' - Sreport->getExpiresAtQ?->toDateStringO .') - processing anyway (manual overrid$now = Carbon::nowO:$frequency = Sreport->getFrequencyO:$wouldRunToday = match $frequency)AutomatedReportsserv1ce::FREQUENCY_DAILY => true,AutomatedReportsserv1ce::FREQUENCY_WEEKLY => snow->1sMondayAutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1AutomatedRenortsService::FRFQUENCY QUARTERLY => Snow->dav === 1 && in arrav(Snow->month. [1. 4. 7. 101. strict: true).default => false,if (! $wouldRunToday) €$this->Logger->info(self::LOG_PREFIX.' Report frequency would not run today, processing anyway (manual override)'. ['reportid => Sreportid.'reportluid'=> Sreport->getUuidO."frequencv"= Sfrequency,1D:sth1s->warn( string: "Report frequency 1s 'Rsfrequencysi• would NOT run today, processing anyway (manual override)."):T 6 of 6 edits JAccept File &+X Reiect Cile As8/9< 2 of 2 files →Winasurt changelog 2.12.21: A new version is avallable. l View Changelog (today 10:35)= custom.log= laravel.log4 SF [iiminny@localhostlc HS_local Liminny@localhost)s console ProDI¿ console (EU]I console [STAGING)AskJiminnyReportActivityService.php XC RequestGenerateAskJiminnyReportJobTesMLAI^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualbate:ActivityUpdatedDate:ActivityUpdatedDate:ClosingPer1odrilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored* no date constraint* @return stringl] Act:43*/public function getActivSearch SsavedSearchUser Suser,): array {$requestParams = $thScriteria = Criteriaarray_mergelsrec$user->getTimezo);SfilterSet = Sthis-SactivityIds = $thissthis->logger->infol'saved_search_10'user_id'= SUS'activity count1);return Sactivitvids:, 0labl: Support Daily • in 2h 58 m100% [2Tue 14 Apr 12:02:35• RequestGenerateAskJiminnyReportJobTest-CascadeFixing ReportControlleAutomated Report Ma3 Automated Report !1n7 211 and adc valication with loas insideGAutomatedRenortscommand. 0ho.5 209-710et me read the current state of the command tile firstkead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycollection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSingleReport/warnlfNotApp Licab leForSchedu lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):AutomatedReportsCommand.php+1-1• AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID•Non-numenc → Uu d ookuo via tooptimizedoBoth use withTrashed() so soft-deleted reports are findable manuallygetReportByld() (AutomatedReportsCommand.php: 135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.chockBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terninal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesWC1l -2 files +81 -5>Ask anything (&+L)+ <› Code.Claude Sennet 4.6Reject allAccept allwinasun leams181:20468 chars, / line breaksuir-oia 4 spaces...
|
NULL
|
-2681782285175838863
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodeLaravelRefactonToo PhpStormFileFditViewNavigateCodeLaravelRefactonToolsWindowHelpFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny K vProject vProphetAiv → Reports(C AutomatedReportsC(©) AutomatedReportsR(C) AutomatedReportsS© CreateMockAsKJimirC DeleteReportcomma© GenerateMarketingR©leam.phpC) Usage.phpM Slack→ Teams→ Tracks_ TranscriptionD TwilioD Users_ Vocabulary_ 4oom© coachingeedbacksupcg command.phpcreateDatabaseusers.pc Daraoase oecountoiC DeleteOldAiCrmNotesC(©) DeleteS3LeftoversCom|(C DevPostmanCommand.lC DiarizeViaAiParticipantk(©) EncryptTokensComman(©) EngagementStatsRegerT FeatureFlagsHelper.php© rixcross|enantissues.p(c) -ushro espermissionsa(e) Generatelnterna wepho(C) GroupSetDefaultLanquaC) HelperTruncateCoachin(©) HubspotJournalPollingC(©) HubspotWebhookServic(c) ImportRecording.phpC ImportUsersFromCsvFilC IterateUsersCommand.g(©) JiminnyCacheClearCom© JiminnyDebugCommanc© Jiminnysetencryptedlo(c) Jiminny okenintocommC MakeSlackLiveCoachins(c Manacescimror eam.o(©) MarkBranchForEnvironn(C) MuteOrganizerChannel.(C) PhpApm.php(C PropagateCoachingFee(©) PurgeConterences.php(©) PurgeSoftDeletedOppot© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoesc removeunusecrarcloC ResetElasticSearch.php(C) RestoreActivityCrmProv(C) RestoreActivityTypeCor(©) ReportController.phpJiminnyDeouecommana.ongc) AutomatedReorssenccommane.onoAutomaleakeportscommana.ongC AddLayoutEntities.php(C) Team.phpC AutomatedReportsRepository.phpC AutomatedReportsService.phpc CrealenelaAcuiviyevent.ono© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php9 ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.php©) RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Command113513914014114214314414514614711481private function getReportByld(string Sreportid): Collection115-1152153154155156157158115911601611621631164165166167168110911117/011117111174175117617717817911 8011811831841851861187188189190191if (Sreport === null) {$this->Logger->warning(self::LOG_PREFIX • Report not found for --report-id'. L'reportid => $reportidi);Sthis->warn( string: "Report not found: HSreportidr"):return collectohif (! $report->getStatus())$this->Logger->warning(self::LOG_PREFIX .' Report is inactive, processing anyway (manual override)'. [Mreporclo s> oreoortlo.reDOrCUULO"I=> $report->getUuidO.I):$this->warn( string: 'Report is inactive - processing anyway (manual override)."):steam = sreport->getreamchif ($team->getStatus() !== Team::STATUS_ACTIVE) K$this->logger->warning(self::LOG_PREFIX .' Team is not active, processing anyway (manual override)',[reporuld" => sreporula,Перогсбва+ фероги-деона!"ceamid" => preport->gecleantau).reallstatus" → preall->getotacus.ID:$this->warn( string: "Team #ISreport->getTeamIdOl- is not active - processing anyway (manual override)."):lif ($report->isExpired@) k$this->logger->warning(self::LOG_PREFIX .' Report is expired, processing anyway (manual override)'. ['reportid => Sreportid,'reportuuld"=> $report->getUvid(),"exoriresAt'=> $report->getExpiresAt()?->toDateStringO.]D:nunus->warnu sting:'Report is expired (expires_at:' - Sreport->getExpiresAtQ?->toDateStringO .') - processing anyway (manual overrid$now = Carbon::nowO:$frequency = Sreport->getFrequencyO:$wouldRunToday = match $frequency)AutomatedReportsserv1ce::FREQUENCY_DAILY => true,AutomatedReportsserv1ce::FREQUENCY_WEEKLY => snow->1sMondayAutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1AutomatedRenortsService::FRFQUENCY QUARTERLY => Snow->dav === 1 && in arrav(Snow->month. [1. 4. 7. 101. strict: true).default => false,if (! $wouldRunToday) €$this->Logger->info(self::LOG_PREFIX.' Report frequency would not run today, processing anyway (manual override)'. ['reportid => Sreportid.'reportluid'=> Sreport->getUuidO."frequencv"= Sfrequency,1D:sth1s->warn( string: "Report frequency 1s 'Rsfrequencysi• would NOT run today, processing anyway (manual override)."):T 6 of 6 edits JAccept File &+X Reiect Cile As8/9< 2 of 2 files →Winasurt changelog 2.12.21: A new version is avallable. l View Changelog (today 10:35)= custom.log= laravel.log4 SF [iiminny@localhostlc HS_local Liminny@localhost)s console ProDI¿ console (EU]I console [STAGING)AskJiminnyReportActivityService.php XC RequestGenerateAskJiminnyReportJobTesMLAI^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualbate:ActivityUpdatedDate:ActivityUpdatedDate:ClosingPer1odrilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored* no date constraint* @return stringl] Act:43*/public function getActivSearch SsavedSearchUser Suser,): array {$requestParams = $thScriteria = Criteriaarray_mergelsrec$user->getTimezo);SfilterSet = Sthis-SactivityIds = $thissthis->logger->infol'saved_search_10'user_id'= SUS'activity count1);return Sactivitvids:, 0labl: Support Daily • in 2h 58 m100% [2Tue 14 Apr 12:02:35• RequestGenerateAskJiminnyReportJobTest-CascadeFixing ReportControlleAutomated Report Ma3 Automated Report !1n7 211 and adc valication with loas insideGAutomatedRenortscommand. 0ho.5 209-710et me read the current state of the command tile firstkead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycollection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSingleReport/warnlfNotApp Licab leForSchedu lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):AutomatedReportsCommand.php+1-1• AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID•Non-numenc → Uu d ookuo via tooptimizedoBoth use withTrashed() so soft-deleted reports are findable manuallygetReportByld() (AutomatedReportsCommand.php: 135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.chockBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terninal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesWC1l -2 files +81 -5>Ask anything (&+L)+ <› Code.Claude Sennet 4.6Reject allAccept allwinasun leams181:20468 chars, / line breaksuir-oia 4 spaces...
|
10881
|
|
10884
|
215
|
58
|
2026-04-14T09:02:38.241378+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157358241_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFV faVsco.js vViewNavigateCodeLaravelR PhpStormFileFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.phpcreateDatabaseusers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen©FeatureFlagsHelper.php© FixCrossTenantlssues.p(c) -ushro espermissionsa(e) Generatelnterna wepho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.f© JiminnyCacheClearCom© JiminnyDebugCommanc© JiminnySetEncryptedTo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.o© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnybebuecommana.ongAutomaleakeporssenacommana.ongAutomaleakeportscommana.ong© AddLayoutEntities.php© Team.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.ono© TrackProviderInstalledEvent.phpCreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsCommand extends Commandprivate function getReportById(string $reportId): Collection'reportuuid' => $report->getUvid(),© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.phpE custom.log= laravel.logs Sr iminny@localnosuiA HS_local [jiminny@localhost]s console ProDIAl console [EU]1351491501511521531541551561571581591601611621631641651661l0816911/0117117217317417517617717817918018118218318418518618718811891190117J1921931941951D:$this->warn( string: 'Report is inactive - processing anyway (manual override).');I console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActivi$team = $report->getTeam();if ($team->getStatus() !== Team::STATUS_ACTIVE) ($this->logger->warning(self::LOG_PREFIX' Team is not active, processing anyway (manual override)"Lгeроrсlа → sreporcla,'reportUvid'=> $report->getUvid(),'teamId' => $report->getTeamId(),'teamStatus'=> $team->getStatus(),1D:$this->warn( string: "Team #[$report->getTeamId(} is not active - processing anyway (manual override)."):if ($report->isExpired() €$this->logger->warning(self::LOG_PREFIX •' Report is expired, processing anyway (manual override)". Eireoorclo so oreoorcro.reDOrCUULO"I=> $report->getUvid),'expiresAt'=> $report->getExpiresAt()?->toDateStringO.|1D:$this->warn( string: |'Report is expired (expires_at: " - Sreport->getExpiresAt()?->toDateString( •l'P - processing anyway (manual overrid37$now = Carbon:: now():Cascade & XICommand &el$frequency = $report->getl$wouldRunToday = match ($frequency) €AUtomatedReportsservice::FREQUENCY_UALLY → trUe,AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10],strict: true),default => false,3;if (! $wouLdRunToday) {$this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)'. ['reportId' = SreportId,=> $report->getUvid(),= $frequency,1):nunus->larn suine. "Keoort trecuency isonreouencyr'- would wul run coday, processing anyway (manual overrtde).orExtract Surround / = :СД СЛT 6 of 6 edits JV Accept File +X Reject File t3€+ 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)private const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log) 4..3* Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return Sactivitvids:, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:38• RequestGenerateAskJiminnyReportJobTest-CascadeFixing ReportControlleAutomated Report Mar• Automated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allWinasun leams191:10 93o chars, 1/ line breaksuir-o( 4 spaces...
|
NULL
|
-6210599152134966063
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFV faVsco.js vViewNavigateCodeLaravelR PhpStormFileFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.phpcreateDatabaseusers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen©FeatureFlagsHelper.php© FixCrossTenantlssues.p(c) -ushro espermissionsa(e) Generatelnterna wepho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.f© JiminnyCacheClearCom© JiminnyDebugCommanc© JiminnySetEncryptedTo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.o© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnybebuecommana.ongAutomaleakeporssenacommana.ongAutomaleakeportscommana.ong© AddLayoutEntities.php© Team.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.ono© TrackProviderInstalledEvent.phpCreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsCommand extends Commandprivate function getReportById(string $reportId): Collection'reportuuid' => $report->getUvid(),© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.phpE custom.log= laravel.logs Sr iminny@localnosuiA HS_local [jiminny@localhost]s console ProDIAl console [EU]1351491501511521531541551561571581591601611621631641651661l0816911/0117117217317417517617717817918018118218318418518618718811891190117J1921931941951D:$this->warn( string: 'Report is inactive - processing anyway (manual override).');I console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActivi$team = $report->getTeam();if ($team->getStatus() !== Team::STATUS_ACTIVE) ($this->logger->warning(self::LOG_PREFIX' Team is not active, processing anyway (manual override)"Lгeроrсlа → sreporcla,'reportUvid'=> $report->getUvid(),'teamId' => $report->getTeamId(),'teamStatus'=> $team->getStatus(),1D:$this->warn( string: "Team #[$report->getTeamId(} is not active - processing anyway (manual override)."):if ($report->isExpired() €$this->logger->warning(self::LOG_PREFIX •' Report is expired, processing anyway (manual override)". Eireoorclo so oreoorcro.reDOrCUULO"I=> $report->getUvid),'expiresAt'=> $report->getExpiresAt()?->toDateStringO.|1D:$this->warn( string: |'Report is expired (expires_at: " - Sreport->getExpiresAt()?->toDateString( •l'P - processing anyway (manual overrid37$now = Carbon:: now():Cascade & XICommand &el$frequency = $report->getl$wouldRunToday = match ($frequency) €AUtomatedReportsservice::FREQUENCY_UALLY → trUe,AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10],strict: true),default => false,3;if (! $wouLdRunToday) {$this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)'. ['reportId' = SreportId,=> $report->getUvid(),= $frequency,1):nunus->larn suine. "Keoort trecuency isonreouencyr'- would wul run coday, processing anyway (manual overrtde).orExtract Surround / = :СД СЛT 6 of 6 edits JV Accept File +X Reject File t3€+ 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)private const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log) 4..3* Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return Sactivitvids:, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:38• RequestGenerateAskJiminnyReportJobTest-CascadeFixing ReportControlleAutomated Report Mar• Automated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allWinasun leams191:10 93o chars, 1/ line breaksuir-o( 4 spaces...
|
NULL
|
|
10885
|
215
|
59
|
2026-04-14T09:02:41.246585+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157361246_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny K vProject vToolsWindowHelp© ReportController.phpJiminnyDeouecommana.ong© AutomatedReportsCommand.php X= custom.log= laravel.logProphetAiAutomatedReportsSendCommand.php >© AddLayoutEntities.php© Team.php<?phps Sr iminny@localnosuiv D Reports© AutomatedReportsClAutomatedReportsService.phpdeclare(strict_types=1);A HS_local [jiminny@localhost]© AutomatedReportsReу IгаскrrovldernstalleacventoneA console (PROD]Al console [EU]© AutomatedReportsStc UserrilotacuiviiyListener.oneC ActivityLogged.phpnamespace Jiminny\Console\Commands\Reports;4 console [STAGING© CreateMockAskJimir© DeleteReportComma(e AutomatedRenortscalllbackService.onv© RequestGenerateAskJiminnyReportJob.phpuse Carbon\Carbon;AskJiminnyReportActivityService.php x© GenerateMarketingR© RequestGenerateReportJob.php© AutomatedReportResult.phpluse uumnare vonsole conmano.© RequestGenerateAskJiminnyReportJobTest© Team.phpuse uumnare conuracus bus usparcher as bususpatchert© Usage.php(C) AutomatedReport.phpluseuunnare suooor coctecconAcceptD Slackclass AutomatedReportsSendCommand extends CommandAnalyzing...Rejectuse Jiminny Jobs AutomatedReports RequestGenerateAskJiminnvReportJob:class AskJiminnyReportActivi_leams* ovar stringuse Jllinny Joos Automaceareporus requescbeneracereportJob*/D Tracks25 Ctprotected $signature = 'automated-reports:send';use valeny mouels Aucollldteunesore.private const int DEFAULO TranscriptionJuse Jiminny\Models\Team;O Twiliouse Jiminny\Repositories\AutomatedReportsRepository;private const array DATED Usersuse Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;ActivityActualDate:* The console command description.Vocabularyuse Psr\Log\LoggerInterface;ActivityActualDate::CZoomActivityUpdatedDate:30* @var string© CoachingFeedbacksUpr19 Dclass AutomatedReportsCommand extends CommandActivityUpdatedDate:31© Command.phpClosingPeriodFilter:32 Gtprocected sdescription = sends aucomated reports Dased on user tinc Crearevaroaseusers.oClosingPeriodFilter:c Daraoase oecountoi* Log prefix for all log messages© DeleteOldAiCrmNotesC:*/35 C© DeleteS3LeftoversComipublic function __construct(private readonly LoggerInterface $logger,DevPostmanCommand./private const string LOG_PREFIX = '[automated-reports]':public function __constrprivate readonly Actprivate readonly AutomatedReportsRepository $reportRepository,© DiarizeViaAiParticipantk/**private readonly Ela38private readonly AutomatedReportsService $automatedReportsServi© EncryptTokensComman* The name and signature of the console command.private readonly Log39private readonly BusDispatcher $dispatcher,© EngagementStatsRegen) {...}© FeatureFlagsHelper.php40Df..3* @var string© FixCrossTenantissues.p43/**© FlushRolesPermissionsCprotected $signature = 'automated-reports';* Fetch activity IDs fo45* Execute the console command.© GeneratelnternalWebho* Date filters stored• GroupSetDefaultLangua31 GtCascade & Y!Command &elprotected $signature = l'automated-reports f--report-id= : Process 40* no date constraint .© HelperTruncateCoachin© HubspotJournalPollingC/*** Creturn string[] Actipublic function handle(): int© HubspotWebhookServic* The console command description.*/© ImportRecording.phppublic function getActiv@ Imnortli|sercFromCcvEil$reportResults = $this->reportRepository->getGeneratedNotSentRe* Ovar stringSearch $savedSearch© IterateUsersCommand.foreach ($reportResults as $reportResult) {*/User $user,cJiminnvcacheclearcomprotected $description = 'Process automated reports based on theil47): array {/** @var AutomatedReportResult $reportResult */© JiminnyDebugCommanc(c)Jminnvser-ncrvotedio$validRecipients = $this->automatedReportsService->getValic38 Gprotected Sdescription ="Process automated reports based on thei, 48$requestParams = $thif ($this->automatedReportsService->shouldSendReport($valic(c) Jiminny okenintocomm$criteria = Criteria$this->logger->info(self::LOG_PREFIX'Dispatching© MakeSlackLiveCoaching'uuid' => $reportResult->getUuid(),41 đtpublic function __construct(array_merge(Sreq© ManageScimForTeam.p1):nuser->certnezoprivate readonly LoggerInterface $logger,© MarkBranchForEnvironnprivate readonly BusDispatcher $dispatcher,© MuteOrganizerChannel.$this->dispatcher->dispatch(new SendReportJob($reportReprivate readonly AutomatedReportsRepository $reportRepositon© PhpApm.php$filterSet = $this->© PropagateCoachingFeerparent::__constructO);© PurgeConferences.php$activityIds = $this© PurgeSoftDeletedOpporreturn commandallas. • SuccEss.© PurgeSyncBatchesCom$this->logger->info((C) RecalculateDealRisksCd50* Execute the console command.C) RemoveDeleteMarkersd61'saved_search_id'user_id'= Sus© RemoveExpiredNudgest* Oreturn int'activity_count'© RemoveUnusedParticip:1);© ResetElasticSearch.phppublic function handle(): int© RestoreActivityCrmProvreturn $activityIds;© RestoreActivityTypeCor1 1 of 6 estitsish>1 v Accept File *-1** Retect FitE PDX®. ESPapftedle); →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33), 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:41• RequestGenerateAskJiminnyReportJobTest -CascadeFixing ReportControlleAutomated Report MarAutomated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns emoty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terninal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leamslo:lyso chars, 1/ line breaksuir-o( 4 spaces...
|
NULL
|
-3979618984081972417
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny K vProject vToolsWindowHelp© ReportController.phpJiminnyDeouecommana.ong© AutomatedReportsCommand.php X= custom.log= laravel.logProphetAiAutomatedReportsSendCommand.php >© AddLayoutEntities.php© Team.php<?phps Sr iminny@localnosuiv D Reports© AutomatedReportsClAutomatedReportsService.phpdeclare(strict_types=1);A HS_local [jiminny@localhost]© AutomatedReportsReу IгаскrrovldernstalleacventoneA console (PROD]Al console [EU]© AutomatedReportsStc UserrilotacuiviiyListener.oneC ActivityLogged.phpnamespace Jiminny\Console\Commands\Reports;4 console [STAGING© CreateMockAskJimir© DeleteReportComma(e AutomatedRenortscalllbackService.onv© RequestGenerateAskJiminnyReportJob.phpuse Carbon\Carbon;AskJiminnyReportActivityService.php x© GenerateMarketingR© RequestGenerateReportJob.php© AutomatedReportResult.phpluse uumnare vonsole conmano.© RequestGenerateAskJiminnyReportJobTest© Team.phpuse uumnare conuracus bus usparcher as bususpatchert© Usage.php(C) AutomatedReport.phpluseuunnare suooor coctecconAcceptD Slackclass AutomatedReportsSendCommand extends CommandAnalyzing...Rejectuse Jiminny Jobs AutomatedReports RequestGenerateAskJiminnvReportJob:class AskJiminnyReportActivi_leams* ovar stringuse Jllinny Joos Automaceareporus requescbeneracereportJob*/D Tracks25 Ctprotected $signature = 'automated-reports:send';use valeny mouels Aucollldteunesore.private const int DEFAULO TranscriptionJuse Jiminny\Models\Team;O Twiliouse Jiminny\Repositories\AutomatedReportsRepository;private const array DATED Usersuse Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;ActivityActualDate:* The console command description.Vocabularyuse Psr\Log\LoggerInterface;ActivityActualDate::CZoomActivityUpdatedDate:30* @var string© CoachingFeedbacksUpr19 Dclass AutomatedReportsCommand extends CommandActivityUpdatedDate:31© Command.phpClosingPeriodFilter:32 Gtprocected sdescription = sends aucomated reports Dased on user tinc Crearevaroaseusers.oClosingPeriodFilter:c Daraoase oecountoi* Log prefix for all log messages© DeleteOldAiCrmNotesC:*/35 C© DeleteS3LeftoversComipublic function __construct(private readonly LoggerInterface $logger,DevPostmanCommand./private const string LOG_PREFIX = '[automated-reports]':public function __constrprivate readonly Actprivate readonly AutomatedReportsRepository $reportRepository,© DiarizeViaAiParticipantk/**private readonly Ela38private readonly AutomatedReportsService $automatedReportsServi© EncryptTokensComman* The name and signature of the console command.private readonly Log39private readonly BusDispatcher $dispatcher,© EngagementStatsRegen) {...}© FeatureFlagsHelper.php40Df..3* @var string© FixCrossTenantissues.p43/**© FlushRolesPermissionsCprotected $signature = 'automated-reports';* Fetch activity IDs fo45* Execute the console command.© GeneratelnternalWebho* Date filters stored• GroupSetDefaultLangua31 GtCascade & Y!Command &elprotected $signature = l'automated-reports f--report-id= : Process 40* no date constraint .© HelperTruncateCoachin© HubspotJournalPollingC/*** Creturn string[] Actipublic function handle(): int© HubspotWebhookServic* The console command description.*/© ImportRecording.phppublic function getActiv@ Imnortli|sercFromCcvEil$reportResults = $this->reportRepository->getGeneratedNotSentRe* Ovar stringSearch $savedSearch© IterateUsersCommand.foreach ($reportResults as $reportResult) {*/User $user,cJiminnvcacheclearcomprotected $description = 'Process automated reports based on theil47): array {/** @var AutomatedReportResult $reportResult */© JiminnyDebugCommanc(c)Jminnvser-ncrvotedio$validRecipients = $this->automatedReportsService->getValic38 Gprotected Sdescription ="Process automated reports based on thei, 48$requestParams = $thif ($this->automatedReportsService->shouldSendReport($valic(c) Jiminny okenintocomm$criteria = Criteria$this->logger->info(self::LOG_PREFIX'Dispatching© MakeSlackLiveCoaching'uuid' => $reportResult->getUuid(),41 đtpublic function __construct(array_merge(Sreq© ManageScimForTeam.p1):nuser->certnezoprivate readonly LoggerInterface $logger,© MarkBranchForEnvironnprivate readonly BusDispatcher $dispatcher,© MuteOrganizerChannel.$this->dispatcher->dispatch(new SendReportJob($reportReprivate readonly AutomatedReportsRepository $reportRepositon© PhpApm.php$filterSet = $this->© PropagateCoachingFeerparent::__constructO);© PurgeConferences.php$activityIds = $this© PurgeSoftDeletedOpporreturn commandallas. • SuccEss.© PurgeSyncBatchesCom$this->logger->info((C) RecalculateDealRisksCd50* Execute the console command.C) RemoveDeleteMarkersd61'saved_search_id'user_id'= Sus© RemoveExpiredNudgest* Oreturn int'activity_count'© RemoveUnusedParticip:1);© ResetElasticSearch.phppublic function handle(): int© RestoreActivityCrmProvreturn $activityIds;© RestoreActivityTypeCor1 1 of 6 estitsish>1 v Accept File *-1** Retect FitE PDX®. ESPapftedle); →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33), 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:41• RequestGenerateAskJiminnyReportJobTest -CascadeFixing ReportControlleAutomated Report MarAutomated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns emoty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terninal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leamslo:lyso chars, 1/ line breaksuir-o( 4 spaces...
|
10884
|
|
10888
|
215
|
61
|
2026-04-14T09:02:47.688998+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157367688_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFVtavsco.isvViewNavigateCodeLaravelRef PhpStormFileFVtavsco.isvViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny kvToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack• TeamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.phpo Cearevaroaseusers.oc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand.|© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantissues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic© ImportRecording.php@ Imnortl|sercFromCcvEill(c) IterateUsersCommand.cJiminnvcacheclearcom(c) minnv Deouacommanc(c)Jminnvser-ncrvotedio(c) Jiminny okenintocomm© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(C) RecalculateDealRisksCdC) RemoveDeleteMarkersd© RemoveExpiredNudgest© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnybebuecommana.ongAutomaleakeportscommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpAulomaleakeporisservice.onoc CrealenelaAcuiviyevent.ono• TrackProviderInstalledEvent.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.php© UserPilotActivityListener.php© AutomatedReportResult.phps.ong© ActivityLogged.php© AutomatedReport.phpdeclare(strict_types=1);namespace Jiminny\Console\Commands\Reports;use Carbon\Carbon;uuse uunnare console conmanoruse uumnare conuracus bus usparcher as bususoatcher.[useumnare suooor Locrecclomuse sainny oos Auronareckeoors reoues.cenerareask...mnnvreoortJoo.use Jiminny\Jobs\AutomatedReports\RequestGenerateReportJob;use valuny mouees Aucolllaceuneoore.Juse Jiminny \Models\Team;use Jiminny\Repositories\AutomatedReportsRepository:use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;use Psr\Log\LoggerInterface;kenect19 Dclass AutonaredreoorrStonmano extenos conmano23/*** Log prefix for all log messages*/private const string LOG_PREFIX =[automated-reports]'/*** The name and signature of the console command.29* @var string*/Cascade & XICommand &elprotected $signature = 'automated-reports';31 Gtprotected $signature = 'automated-reports {--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}':*** The console command description.* Ovar stringprotected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly)' ;38 Ctprotected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly). Use --report-id to manually trigger4041 đtpublic function __construct(private readonly LoggerInterface $logger,private readonly BusDispatcher $dispatcher,private readonly AutomatedReportsRepository $reportRepository* Execute the console command.* Oreturn intT 1 of 6 editsAccept File &~X Reject File t3@+ 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.log4 SF ljiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING]© AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F/*** Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:47• RequestGenerateAskJiminnyReportJobTest-CascadeFixing ReportControlleAutomated Report MaAutomated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terninal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasur leamsuir-o( 4 spaces...
|
NULL
|
-5431219693283045843
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFVtavsco.isvViewNavigateCodeLaravelRef PhpStormFileFVtavsco.isvViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny kvToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack• TeamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.phpo Cearevaroaseusers.oc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand.|© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantissues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic© ImportRecording.php@ Imnortl|sercFromCcvEill(c) IterateUsersCommand.cJiminnvcacheclearcom(c) minnv Deouacommanc(c)Jminnvser-ncrvotedio(c) Jiminny okenintocomm© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(C) RecalculateDealRisksCdC) RemoveDeleteMarkersd© RemoveExpiredNudgest© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnybebuecommana.ongAutomaleakeportscommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpAulomaleakeporisservice.onoc CrealenelaAcuiviyevent.ono• TrackProviderInstalledEvent.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.php© UserPilotActivityListener.php© AutomatedReportResult.phps.ong© ActivityLogged.php© AutomatedReport.phpdeclare(strict_types=1);namespace Jiminny\Console\Commands\Reports;use Carbon\Carbon;uuse uunnare console conmanoruse uumnare conuracus bus usparcher as bususoatcher.[useumnare suooor Locrecclomuse sainny oos Auronareckeoors reoues.cenerareask...mnnvreoortJoo.use Jiminny\Jobs\AutomatedReports\RequestGenerateReportJob;use valuny mouees Aucolllaceuneoore.Juse Jiminny \Models\Team;use Jiminny\Repositories\AutomatedReportsRepository:use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;use Psr\Log\LoggerInterface;kenect19 Dclass AutonaredreoorrStonmano extenos conmano23/*** Log prefix for all log messages*/private const string LOG_PREFIX =[automated-reports]'/*** The name and signature of the console command.29* @var string*/Cascade & XICommand &elprotected $signature = 'automated-reports';31 Gtprotected $signature = 'automated-reports {--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}':*** The console command description.* Ovar stringprotected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly)' ;38 Ctprotected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly). Use --report-id to manually trigger4041 đtpublic function __construct(private readonly LoggerInterface $logger,private readonly BusDispatcher $dispatcher,private readonly AutomatedReportsRepository $reportRepository* Execute the console command.* Oreturn intT 1 of 6 editsAccept File &~X Reject File t3@+ 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.log4 SF ljiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING]© AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F/*** Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:47• RequestGenerateAskJiminnyReportJobTest-CascadeFixing ReportControlleAutomated Report MaAutomated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terninal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +81 -5 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasur leamsuir-o( 4 spaces...
|
10887
|
|
10893
|
215
|
64
|
2026-04-14T09:02:53.772170+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157373772_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewFV faVsco.js vNavigateCodeLara PhpStormFileEditViewFV faVsco.js vNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack• TeamsD TracksO TranscriptionO TwilioD UsersVocabulary@Zoom© CoachingFeedbacksUpr© Command.phpo Cearevaroaseusers.oc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantlssues.p(c) -ushro espermissionsa(e) Generatelnterna wepho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.p© JiminnyCacheClearCom© JiminnyDebugCommanc© JiminnySetEncryptedTo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.oc мarkbranchrorenvironh© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoesc removeunusecrarclo© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnybeouecommana.ong© AutomatedReportsCommand.php x|© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.phpCreateHeldActivityEvent.php• TrackProviderInstalledEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.php© AutomatedReportResult.phpclass AutomatedReportsCommand extends Commandpublic function handle(): intD):© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.php899099100101102103104105106108109110111112113115116117118119120// Process daily reportspuh1s->processkeporus trequency: AUtomacedкeportsservice: :FREQUENCY_DALLY)HProcess veekty recors on monoaysif ($isMonday) €$this->processReports( frequency: AutomatedReportsService: :FREQUENCY_WEEKLY);// Process monthly reports on the first day of the monthif ($isFirstDay0fMonth) €$this->processReports( frequency: AutomatedReportsService::FREQUENCY_MONTHLY);// Process quarterly reports on the first day of January, April, July, and Octoberif ($isFirstDay0fMonth && $isQuarterZyMonth) &$this->processReports( frequency: AutomatedReportsService::FREQUENCY_QUARTERLY);$this->logger->info(self::LOG_PREFIXCompleted');return 0;* Process reports for a spec:Cascade & YICommand Sel* @param string $frequency* Oreturn void*/private function processReports(string $frequency): void$this->logger-›info(self::L0G_PREFIX . " Processing $frequency reports");// Get all enabled, not deleted reports with active teams for the specified frequency$reports = $this->reportRepository->getActiveReportsByFrequency ($frequency);$reports = collect([AutomatedReport: :find (68)]);$reportId = $this->option( key: 'report-id');if ($reportid !== nulU) k$reports = $this->getReportById($reportId);felse {// Get all enabled, not deleted reports with active teams for the specified frequency$reports = $this-›reportRepository->getActiveReportsByFrequency($frequency);AcceptReject$this->logger→>info(self::L0G_PREFIX• " Found ($reports->count()} $frequency reports to process");/** @var AutomatedReport $report */foreach ($reports as $report) {$this->logger->info(self::LOG_PREFIX'reportUuid'=> $report-›getuuidoWindsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActivi3334ДДAAд57private const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info(' saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:53• RequestGenerateAskJiminnyReportJobTest -CascadeFixing ReportControlleAutomated Report MarAutomated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1Done. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +77 -3 >Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leams14:2uir-o( 4 spaces...
|
NULL
|
3583820075929564160
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditViewFV faVsco.js vNavigateCodeLara PhpStormFileEditViewFV faVsco.js vNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack• TeamsD TracksO TranscriptionO TwilioD UsersVocabulary@Zoom© CoachingFeedbacksUpr© Command.phpo Cearevaroaseusers.oc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantlssues.p(c) -ushro espermissionsa(e) Generatelnterna wepho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.p© JiminnyCacheClearCom© JiminnyDebugCommanc© JiminnySetEncryptedTo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.oc мarkbranchrorenvironh© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e Recalculatebealkisksco(c) Removebe eremarkersc(e) Remove-xoiredNudoesc removeunusecrarclo© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnybeouecommana.ong© AutomatedReportsCommand.php x|© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.phpCreateHeldActivityEvent.php• TrackProviderInstalledEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.php© AutomatedReportResult.phpclass AutomatedReportsCommand extends Commandpublic function handle(): intD):© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php© RequestGenerateReportJob.php899099100101102103104105106108109110111112113115116117118119120// Process daily reportspuh1s->processkeporus trequency: AUtomacedкeportsservice: :FREQUENCY_DALLY)HProcess veekty recors on monoaysif ($isMonday) €$this->processReports( frequency: AutomatedReportsService: :FREQUENCY_WEEKLY);// Process monthly reports on the first day of the monthif ($isFirstDay0fMonth) €$this->processReports( frequency: AutomatedReportsService::FREQUENCY_MONTHLY);// Process quarterly reports on the first day of January, April, July, and Octoberif ($isFirstDay0fMonth && $isQuarterZyMonth) &$this->processReports( frequency: AutomatedReportsService::FREQUENCY_QUARTERLY);$this->logger->info(self::LOG_PREFIXCompleted');return 0;* Process reports for a spec:Cascade & YICommand Sel* @param string $frequency* Oreturn void*/private function processReports(string $frequency): void$this->logger-›info(self::L0G_PREFIX . " Processing $frequency reports");// Get all enabled, not deleted reports with active teams for the specified frequency$reports = $this->reportRepository->getActiveReportsByFrequency ($frequency);$reports = collect([AutomatedReport: :find (68)]);$reportId = $this->option( key: 'report-id');if ($reportid !== nulU) k$reports = $this->getReportById($reportId);felse {// Get all enabled, not deleted reports with active teams for the specified frequency$reports = $this-›reportRepository->getActiveReportsByFrequency($frequency);AcceptReject$this->logger→>info(self::L0G_PREFIX• " Found ($reports->count()} $frequency reports to process");/** @var AutomatedReport $report */foreach ($reports as $report) {$this->logger->info(self::LOG_PREFIX'reportUuid'=> $report-›getuuidoWindsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActivi3334ДДAAд57private const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info(' saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;, 0lablSupport Daily - in 2h 58mA100% C•Tue 14 Apr 12:02:53• RequestGenerateAskJiminnyReportJobTest -CascadeFixing ReportControlleAutomated Report MarAutomated Report Lp#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1Done. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +77 -3 >Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leams14:2uir-o( 4 spaces...
|
NULL
|
|
10895
|
215
|
65
|
2026-04-14T09:02:56.821118+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157376821_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsCommand.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityService
{
private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;
private const array DATE_FILTER_KEYS = [
ActivityActualDate::PARAM_START_DATE,
ActivityActualDate::PARAM_END_DATE,
ActivityUpdatedDate::PARAM_UPDATED_FROM,
ActivityUpdatedDate::PARAM_UPDATED_TO,
ClosingPeriodFilter::KEY_START_DATE,
ClosingPeriodFilter::KEY_END_DATE,
];
public function __construct(
private readonly ActivitySearch $activitySearch,
private readonly ElasticActivityRepository $elasticRepository,
private readonly LoggerInterface $logger,
) {
}
/**
* Fetch activity IDs for a saved search, passing its filters as-is to Criteria.
* Date filters stored on the saved search are excluded; if no other filters exist,
* no date constraint is applied — matching the behaviour of getContextForAskAnythingByFilter.
*
* @return string[] Activity IDs
*/
public function getActivityIdsForSavedSearch(
Search $savedSearch,
User $user,
): array {
$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);
$criteria = Criteria::createFromRequest(
array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),
$user->getTimezone()
);
$filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);
$activityIds = $this->elasticRepository->onDemandSearchIdsOnly($user, $criteria, $filterSet);
$this->logger->info('[AskJiminnyReport] Fetched activity IDs for saved search', [
'saved_search_id' => $savedSearch->getId(),
'user_id' => $user->getId(),
'activity_count' => count($activityIds),
]);
return $activityIds;
}
private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array
{
$params = [];
$arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);
foreach ($savedSearch->getFilters() as $filter) {
$key = $filter->getFilterProperty();
$value = $filter->getFilterValue();
if (in_array($key, self::DATE_FILTER_KEYS, true)) {
continue;
}
if (isset($params[$key])) {
$params[$key][] = $value;
} elseif (in_array($key, $arrayFilterKeys, true)) {
$params[$key] = [$value];
} else {
$params[$key] = $value;
}
}
return $params;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Reports;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Collection;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\RequestGenerateReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
class AutomatedReportsCommand extends Command
{
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[automated-reports]';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'automated-reports {--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly). Use --report-id to manually trigger a specific report by ID or UUID.';
public function __construct(
private readonly LoggerInterface $logger,
private readonly BusDispatcher $dispatcher,
private readonly AutomatedReportsRepository $reportRepository
) {
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle(): int
{
$this->logger->info(self::LOG_PREFIX . ' Started');
$now = Carbon::now();
$isMonday = $now->isMonday();
$isFirstDayOfMonth = $now->day === 1;
$currentMonth = $now->month;
// Check if the current month is a quarterly month (January, April, July, October)
$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);
$this->logger->info(self::LOG_PREFIX . ' Checking conditions', [
'isMonday' => $isMonday,
'isFirstDayOfMonth' => $isFirstDayOfMonth,
'currentMonth' => $currentMonth,
'isQuarterlyMonth' => $isQuarterlyMonth,
]);
// Process daily reports
$this->processReports(AutomatedReportsService::FREQUENCY_DAILY);
// Process weekly reports on Mondays
if ($isMonday) {
$this->processReports(AutomatedReportsService::FREQUENCY_WEEKLY);
}
// Process monthly reports on the first day of the month
if ($isFirstDayOfMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_MONTHLY);
}
// Process quarterly reports on the first day of January, April, July, and October
if ($isFirstDayOfMonth && $isQuarterlyMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_QUARTERLY);
}
$this->logger->info(self::LOG_PREFIX . ' Completed');
return 0;
}
/**
* Process reports for a specific frequency.
*
* @param string $frequency
*
* @return void
*/
private function processReports(string $frequency): void
{
$this->logger->info(self::LOG_PREFIX . " Processing $frequency reports");
$reportId = $this->option('report-id');
if ($reportId !== null) {
$reports = $this->getReportById($reportId);
} else {
// Get all enabled, not deleted reports with active teams for the specified frequency
$reports = $this->reportRepository->getActiveReportsByFrequency($frequency);
}
$this->logger->info(self::LOG_PREFIX . " Found {$reports->count()} $frequency reports to process");
/** @var AutomatedReport $report */
foreach ($reports as $report) {
$this->logger->info(self::LOG_PREFIX . ' Dispatching Generate Report job for report', [
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'frequency' => $report->getFrequency(),
'type' => $report->getType(),
]);
$job = $report->isAskJiminnyReport()
? new RequestGenerateAskJiminnyReportJob($report->getUuid())
: new RequestGenerateReportJob($report->getUuid());
// $this->dispatcher->dispatch($job);
$this->dispatcher->dispatchSync($job);
}
}
private function getReportById(string $reportId): Collection
{
$report = $this->reportRepository->findByIdOrUuid($reportId);
if ($report === null) {
$this->logger->warning(self::LOG_PREFIX . ' Report not found for --report-id', ['reportId' => $reportId]);
$this->warn("Report not found: {$reportId}");
return collect();
}
if (! $report->getStatus()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is inactive, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
]);
$this->warn('Report is inactive — processing anyway (manual override).');
}
$team = $report->getTeam();
if ($team->getStatus() !== Team::STATUS_ACTIVE) {
$this->logger->warning(self::LOG_PREFIX . ' Team is not active, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'teamStatus' => $team->getStatus(),
]);
$this->warn("Team #{$report->getTeamId()} is not active — processing anyway (manual override).");
}
if ($report->isExpired()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is expired, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'expiresAt' => $report->getExpiresAt()?->toDateString(),
]);
$this->warn('Report is expired (expires_at: ' . $report->getExpiresAt()?->toDateString() . ') — processing anyway (manual override).');
}
$now = Carbon::now();
$frequency = $report->getFrequency();
$wouldRunToday = match ($frequency) {
AutomatedReportsService::FREQUENCY_DAILY => true,
AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),
AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,
AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10], true),
default => false,
};
if (! $wouldRunToday) {
$this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'frequency' => $frequency,
]);
$this->warn("Report frequency is '{$frequency}' — would NOT run today, processing anyway (manual override).");
}
return collect([$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.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","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.76171875,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.7796875,"top":0.017361112,"width":0.12109375,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.049609374,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.6699219,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.6816406,"top":0.19513889,"width":0.00859375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6921875,"top":0.19375,"width":0.00859375,"height":0.015972223},"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.7007812,"top":0.19375,"width":0.008203125,"height":0.015972223},"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\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityService\n{\n private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;\n\n private const array DATE_FILTER_KEYS = [\n ActivityActualDate::PARAM_START_DATE,\n ActivityActualDate::PARAM_END_DATE,\n ActivityUpdatedDate::PARAM_UPDATED_FROM,\n ActivityUpdatedDate::PARAM_UPDATED_TO,\n ClosingPeriodFilter::KEY_START_DATE,\n ClosingPeriodFilter::KEY_END_DATE,\n ];\n\n public function __construct(\n private readonly ActivitySearch $activitySearch,\n private readonly ElasticActivityRepository $elasticRepository,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n /**\n * Fetch activity IDs for a saved search, passing its filters as-is to Criteria.\n * Date filters stored on the saved search are excluded; if no other filters exist,\n * no date constraint is applied — matching the behaviour of getContextForAskAnythingByFilter.\n *\n * @return string[] Activity IDs\n */\n public function getActivityIdsForSavedSearch(\n Search $savedSearch,\n User $user,\n ): array {\n $requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);\n\n $criteria = Criteria::createFromRequest(\n array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);\n\n $activityIds = $this->elasticRepository->onDemandSearchIdsOnly($user, $criteria, $filterSet);\n\n $this->logger->info('[AskJiminnyReport] Fetched activity IDs for saved search', [\n 'saved_search_id' => $savedSearch->getId(),\n 'user_id' => $user->getId(),\n 'activity_count' => count($activityIds),\n ]);\n\n return $activityIds;\n }\n\n private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array\n {\n $params = [];\n $arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);\n\n foreach ($savedSearch->getFilters() as $filter) {\n $key = $filter->getFilterProperty();\n $value = $filter->getFilterValue();\n\n if (in_array($key, self::DATE_FILTER_KEYS, true)) {\n continue;\n }\n\n if (isset($params[$key])) {\n $params[$key][] = $value;\n } elseif (in_array($key, $arrayFilterKeys, true)) {\n $params[$key] = [$value];\n } else {\n $params[$key] = $value;\n }\n }\n\n return $params;\n }\n}","depth":4,"bounds":{"left":0.6238281,"top":0.0,"width":0.31953126,"height":1.0},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityService\n{\n private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;\n\n private const array DATE_FILTER_KEYS = [\n ActivityActualDate::PARAM_START_DATE,\n ActivityActualDate::PARAM_END_DATE,\n ActivityUpdatedDate::PARAM_UPDATED_FROM,\n ActivityUpdatedDate::PARAM_UPDATED_TO,\n ClosingPeriodFilter::KEY_START_DATE,\n ClosingPeriodFilter::KEY_END_DATE,\n ];\n\n public function __construct(\n private readonly ActivitySearch $activitySearch,\n private readonly ElasticActivityRepository $elasticRepository,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n /**\n * Fetch activity IDs for a saved search, passing its filters as-is to Criteria.\n * Date filters stored on the saved search are excluded; if no other filters exist,\n * no date constraint is applied — matching the behaviour of getContextForAskAnythingByFilter.\n *\n * @return string[] Activity IDs\n */\n public function getActivityIdsForSavedSearch(\n Search $savedSearch,\n User $user,\n ): array {\n $requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);\n\n $criteria = Criteria::createFromRequest(\n array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);\n\n $activityIds = $this->elasticRepository->onDemandSearchIdsOnly($user, $criteria, $filterSet);\n\n $this->logger->info('[AskJiminnyReport] Fetched activity IDs for saved search', [\n 'saved_search_id' => $savedSearch->getId(),\n 'user_id' => $user->getId(),\n 'activity_count' => count($activityIds),\n ]);\n\n return $activityIds;\n }\n\n private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array\n {\n $params = [];\n $arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);\n\n foreach ($savedSearch->getFilters() as $filter) {\n $key = $filter->getFilterProperty();\n $value = $filter->getFilterValue();\n\n if (in_array($key, self::DATE_FILTER_KEYS, true)) {\n continue;\n }\n\n if (isset($params[$key])) {\n $params[$key][] = $value;\n } elseif (in_array($key, $arrayFilterKeys, true)) {\n $params[$key] = [$value];\n } else {\n $params[$key] = $value;\n }\n }\n\n return $params;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.009375,"height":0.0},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"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.23320313,"top":1.0,"width":0.008203125,"height":0.0},"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\\Console\\Commands\\Reports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\n\nclass AutomatedReportsCommand extends Command\n{\n /**\n * Log prefix for all log messages\n */\n private const string LOG_PREFIX = '[automated-reports]';\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'automated-reports {--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly). Use --report-id to manually trigger a specific report by ID or UUID.';\n\n\n public function __construct(\n private readonly LoggerInterface $logger,\n private readonly BusDispatcher $dispatcher,\n private readonly AutomatedReportsRepository $reportRepository\n ) {\n parent::__construct();\n }\n\n /**\n * Execute the console command.\n *\n * @return int\n */\n public function handle(): int\n {\n $this->logger->info(self::LOG_PREFIX . ' Started');\n\n $now = Carbon::now();\n $isMonday = $now->isMonday();\n $isFirstDayOfMonth = $now->day === 1;\n $currentMonth = $now->month;\n\n // Check if the current month is a quarterly month (January, April, July, October)\n $isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);\n\n $this->logger->info(self::LOG_PREFIX . ' Checking conditions', [\n 'isMonday' => $isMonday,\n 'isFirstDayOfMonth' => $isFirstDayOfMonth,\n 'currentMonth' => $currentMonth,\n 'isQuarterlyMonth' => $isQuarterlyMonth,\n ]);\n\n // Process daily reports\n $this->processReports(AutomatedReportsService::FREQUENCY_DAILY);\n\n // Process weekly reports on Mondays\n if ($isMonday) {\n $this->processReports(AutomatedReportsService::FREQUENCY_WEEKLY);\n }\n\n // Process monthly reports on the first day of the month\n if ($isFirstDayOfMonth) {\n $this->processReports(AutomatedReportsService::FREQUENCY_MONTHLY);\n }\n\n // Process quarterly reports on the first day of January, April, July, and October\n if ($isFirstDayOfMonth && $isQuarterlyMonth) {\n $this->processReports(AutomatedReportsService::FREQUENCY_QUARTERLY);\n }\n\n $this->logger->info(self::LOG_PREFIX . ' Completed');\n\n return 0;\n }\n\n /**\n * Process reports for a specific frequency.\n *\n * @param string $frequency\n *\n * @return void\n */\n private function processReports(string $frequency): void\n {\n $this->logger->info(self::LOG_PREFIX . \" Processing $frequency reports\");\n\n $reportId = $this->option('report-id');\n if ($reportId !== null) {\n $reports = $this->getReportById($reportId);\n } else {\n // Get all enabled, not deleted reports with active teams for the specified frequency\n $reports = $this->reportRepository->getActiveReportsByFrequency($frequency);\n }\n\n $this->logger->info(self::LOG_PREFIX . \" Found {$reports->count()} $frequency reports to process\");\n\n /** @var AutomatedReport $report */\n foreach ($reports as $report) {\n $this->logger->info(self::LOG_PREFIX . ' Dispatching Generate Report job for report', [\n 'reportUuid' => $report->getUuid(),\n 'teamId' => $report->getTeamId(),\n 'frequency' => $report->getFrequency(),\n 'type' => $report->getType(),\n ]);\n\n $job = $report->isAskJiminnyReport()\n ? new RequestGenerateAskJiminnyReportJob($report->getUuid())\n : new RequestGenerateReportJob($report->getUuid());\n\n // $this->dispatcher->dispatch($job);\n $this->dispatcher->dispatchSync($job);\n }\n }\n\n private function getReportById(string $reportId): Collection\n {\n $report = $this->reportRepository->findByIdOrUuid($reportId);\n\n if ($report === null) {\n $this->logger->warning(self::LOG_PREFIX . ' Report not found for --report-id', ['reportId' => $reportId]);\n $this->warn(\"Report not found: {$reportId}\");\n\n return collect();\n }\n\n if (! $report->getStatus()) {\n $this->logger->warning(self::LOG_PREFIX . ' Report is inactive, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n ]);\n $this->warn('Report is inactive — processing anyway (manual override).');\n }\n\n $team = $report->getTeam();\n if ($team->getStatus() !== Team::STATUS_ACTIVE) {\n $this->logger->warning(self::LOG_PREFIX . ' Team is not active, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'teamId' => $report->getTeamId(),\n 'teamStatus' => $team->getStatus(),\n ]);\n $this->warn(\"Team #{$report->getTeamId()} is not active — processing anyway (manual override).\");\n }\n\n if ($report->isExpired()) {\n $this->logger->warning(self::LOG_PREFIX . ' Report is expired, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'expiresAt' => $report->getExpiresAt()?->toDateString(),\n ]);\n $this->warn('Report is expired (expires_at: ' . $report->getExpiresAt()?->toDateString() . ') — processing anyway (manual override).');\n }\n\n $now = Carbon::now();\n $frequency = $report->getFrequency();\n $wouldRunToday = match ($frequency) {\n AutomatedReportsService::FREQUENCY_DAILY => true,\n AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),\n AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,\n AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10], true),\n default => false,\n };\n\n if (! $wouldRunToday) {\n $this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'frequency' => $frequency,\n ]);\n $this->warn(\"Report frequency is '{$frequency}' — would NOT run today, processing anyway (manual override).\");\n }\n\n return collect([$report]);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Reports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateReportJob;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\n\nclass AutomatedReportsCommand extends Command\n{\n /**\n * Log prefix for all log messages\n */\n private const string LOG_PREFIX = '[automated-reports]';\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'automated-reports {--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly). Use --report-id to manually trigger a specific report by ID or UUID.';\n\n\n public function __construct(\n private readonly LoggerInterface $logger,\n private readonly BusDispatcher $dispatcher,\n private readonly AutomatedReportsRepository $reportRepository\n ) {\n parent::__construct();\n }\n\n /**\n * Execute the console command.\n *\n * @return int\n */\n public function handle(): int\n {\n $this->logger->info(self::LOG_PREFIX . ' Started');\n\n $now = Carbon::now();\n $isMonday = $now->isMonday();\n $isFirstDayOfMonth = $now->day === 1;\n $currentMonth = $now->month;\n\n // Check if the current month is a quarterly month (January, April, July, October)\n $isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);\n\n $this->logger->info(self::LOG_PREFIX . ' Checking conditions', [\n 'isMonday' => $isMonday,\n 'isFirstDayOfMonth' => $isFirstDayOfMonth,\n 'currentMonth' => $currentMonth,\n 'isQuarterlyMonth' => $isQuarterlyMonth,\n ]);\n\n // Process daily reports\n $this->processReports(AutomatedReportsService::FREQUENCY_DAILY);\n\n // Process weekly reports on Mondays\n if ($isMonday) {\n $this->processReports(AutomatedReportsService::FREQUENCY_WEEKLY);\n }\n\n // Process monthly reports on the first day of the month\n if ($isFirstDayOfMonth) {\n $this->processReports(AutomatedReportsService::FREQUENCY_MONTHLY);\n }\n\n // Process quarterly reports on the first day of January, April, July, and October\n if ($isFirstDayOfMonth && $isQuarterlyMonth) {\n $this->processReports(AutomatedReportsService::FREQUENCY_QUARTERLY);\n }\n\n $this->logger->info(self::LOG_PREFIX . ' Completed');\n\n return 0;\n }\n\n /**\n * Process reports for a specific frequency.\n *\n * @param string $frequency\n *\n * @return void\n */\n private function processReports(string $frequency): void\n {\n $this->logger->info(self::LOG_PREFIX . \" Processing $frequency reports\");\n\n $reportId = $this->option('report-id');\n if ($reportId !== null) {\n $reports = $this->getReportById($reportId);\n } else {\n // Get all enabled, not deleted reports with active teams for the specified frequency\n $reports = $this->reportRepository->getActiveReportsByFrequency($frequency);\n }\n\n $this->logger->info(self::LOG_PREFIX . \" Found {$reports->count()} $frequency reports to process\");\n\n /** @var AutomatedReport $report */\n foreach ($reports as $report) {\n $this->logger->info(self::LOG_PREFIX . ' Dispatching Generate Report job for report', [\n 'reportUuid' => $report->getUuid(),\n 'teamId' => $report->getTeamId(),\n 'frequency' => $report->getFrequency(),\n 'type' => $report->getType(),\n ]);\n\n $job = $report->isAskJiminnyReport()\n ? new RequestGenerateAskJiminnyReportJob($report->getUuid())\n : new RequestGenerateReportJob($report->getUuid());\n\n // $this->dispatcher->dispatch($job);\n $this->dispatcher->dispatchSync($job);\n }\n }\n\n private function getReportById(string $reportId): Collection\n {\n $report = $this->reportRepository->findByIdOrUuid($reportId);\n\n if ($report === null) {\n $this->logger->warning(self::LOG_PREFIX . ' Report not found for --report-id', ['reportId' => $reportId]);\n $this->warn(\"Report not found: {$reportId}\");\n\n return collect();\n }\n\n if (! $report->getStatus()) {\n $this->logger->warning(self::LOG_PREFIX . ' Report is inactive, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n ]);\n $this->warn('Report is inactive — processing anyway (manual override).');\n }\n\n $team = $report->getTeam();\n if ($team->getStatus() !== Team::STATUS_ACTIVE) {\n $this->logger->warning(self::LOG_PREFIX . ' Team is not active, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'teamId' => $report->getTeamId(),\n 'teamStatus' => $team->getStatus(),\n ]);\n $this->warn(\"Team #{$report->getTeamId()} is not active — processing anyway (manual override).\");\n }\n\n if ($report->isExpired()) {\n $this->logger->warning(self::LOG_PREFIX . ' Report is expired, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'expiresAt' => $report->getExpiresAt()?->toDateString(),\n ]);\n $this->warn('Report is expired (expires_at: ' . $report->getExpiresAt()?->toDateString() . ') — processing anyway (manual override).');\n }\n\n $now = Carbon::now();\n $frequency = $report->getFrequency();\n $wouldRunToday = match ($frequency) {\n AutomatedReportsService::FREQUENCY_DAILY => true,\n AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),\n AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,\n AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10], true),\n default => false,\n };\n\n if (! $wouldRunToday) {\n $this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)', [\n 'reportId' => $reportId,\n 'reportUuid' => $report->getUuid(),\n 'frequency' => $frequency,\n ]);\n $this->warn(\"Report frequency is '{$frequency}' — would NOT run today, processing anyway (manual override).\");\n }\n\n return collect([$report]);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.0140625,"top":0.041666668,"width":0.028515626,"height":0.021527778},"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-4164496969910098014
|
7004952196924009268
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityService
{
private const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;
private const array DATE_FILTER_KEYS = [
ActivityActualDate::PARAM_START_DATE,
ActivityActualDate::PARAM_END_DATE,
ActivityUpdatedDate::PARAM_UPDATED_FROM,
ActivityUpdatedDate::PARAM_UPDATED_TO,
ClosingPeriodFilter::KEY_START_DATE,
ClosingPeriodFilter::KEY_END_DATE,
];
public function __construct(
private readonly ActivitySearch $activitySearch,
private readonly ElasticActivityRepository $elasticRepository,
private readonly LoggerInterface $logger,
) {
}
/**
* Fetch activity IDs for a saved search, passing its filters as-is to Criteria.
* Date filters stored on the saved search are excluded; if no other filters exist,
* no date constraint is applied — matching the behaviour of getContextForAskAnythingByFilter.
*
* @return string[] Activity IDs
*/
public function getActivityIdsForSavedSearch(
Search $savedSearch,
User $user,
): array {
$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);
$criteria = Criteria::createFromRequest(
array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),
$user->getTimezone()
);
$filterSet = $this->activitySearch->getOnDemandPageFilterSet($criteria, $user);
$activityIds = $this->elasticRepository->onDemandSearchIdsOnly($user, $criteria, $filterSet);
$this->logger->info('[AskJiminnyReport] Fetched activity IDs for saved search', [
'saved_search_id' => $savedSearch->getId(),
'user_id' => $user->getId(),
'activity_count' => count($activityIds),
]);
return $activityIds;
}
private function buildRequestParamsFromSearch(Search $savedSearch, User $user): array
{
$params = [];
$arrayFilterKeys = $this->activitySearch->getArrayFilterKeys($user);
foreach ($savedSearch->getFilters() as $filter) {
$key = $filter->getFilterProperty();
$value = $filter->getFilterValue();
if (in_array($key, self::DATE_FILTER_KEYS, true)) {
continue;
}
if (isset($params[$key])) {
$params[$key][] = $value;
} elseif (in_array($key, $arrayFilterKeys, true)) {
$params[$key] = [$value];
} else {
$params[$key] = $value;
}
}
return $params;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Reports;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Collection;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\RequestGenerateReportJob;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
class AutomatedReportsCommand extends Command
{
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[automated-reports]';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'automated-reports {--report-id= : Process a specific report by ID or UUID (bypasses frequency scheduling)}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Process automated reports based on their frequency (weekly, monthly, quarterly). Use --report-id to manually trigger a specific report by ID or UUID.';
public function __construct(
private readonly LoggerInterface $logger,
private readonly BusDispatcher $dispatcher,
private readonly AutomatedReportsRepository $reportRepository
) {
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle(): int
{
$this->logger->info(self::LOG_PREFIX . ' Started');
$now = Carbon::now();
$isMonday = $now->isMonday();
$isFirstDayOfMonth = $now->day === 1;
$currentMonth = $now->month;
// Check if the current month is a quarterly month (January, April, July, October)
$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);
$this->logger->info(self::LOG_PREFIX . ' Checking conditions', [
'isMonday' => $isMonday,
'isFirstDayOfMonth' => $isFirstDayOfMonth,
'currentMonth' => $currentMonth,
'isQuarterlyMonth' => $isQuarterlyMonth,
]);
// Process daily reports
$this->processReports(AutomatedReportsService::FREQUENCY_DAILY);
// Process weekly reports on Mondays
if ($isMonday) {
$this->processReports(AutomatedReportsService::FREQUENCY_WEEKLY);
}
// Process monthly reports on the first day of the month
if ($isFirstDayOfMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_MONTHLY);
}
// Process quarterly reports on the first day of January, April, July, and October
if ($isFirstDayOfMonth && $isQuarterlyMonth) {
$this->processReports(AutomatedReportsService::FREQUENCY_QUARTERLY);
}
$this->logger->info(self::LOG_PREFIX . ' Completed');
return 0;
}
/**
* Process reports for a specific frequency.
*
* @param string $frequency
*
* @return void
*/
private function processReports(string $frequency): void
{
$this->logger->info(self::LOG_PREFIX . " Processing $frequency reports");
$reportId = $this->option('report-id');
if ($reportId !== null) {
$reports = $this->getReportById($reportId);
} else {
// Get all enabled, not deleted reports with active teams for the specified frequency
$reports = $this->reportRepository->getActiveReportsByFrequency($frequency);
}
$this->logger->info(self::LOG_PREFIX . " Found {$reports->count()} $frequency reports to process");
/** @var AutomatedReport $report */
foreach ($reports as $report) {
$this->logger->info(self::LOG_PREFIX . ' Dispatching Generate Report job for report', [
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'frequency' => $report->getFrequency(),
'type' => $report->getType(),
]);
$job = $report->isAskJiminnyReport()
? new RequestGenerateAskJiminnyReportJob($report->getUuid())
: new RequestGenerateReportJob($report->getUuid());
// $this->dispatcher->dispatch($job);
$this->dispatcher->dispatchSync($job);
}
}
private function getReportById(string $reportId): Collection
{
$report = $this->reportRepository->findByIdOrUuid($reportId);
if ($report === null) {
$this->logger->warning(self::LOG_PREFIX . ' Report not found for --report-id', ['reportId' => $reportId]);
$this->warn("Report not found: {$reportId}");
return collect();
}
if (! $report->getStatus()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is inactive, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
]);
$this->warn('Report is inactive — processing anyway (manual override).');
}
$team = $report->getTeam();
if ($team->getStatus() !== Team::STATUS_ACTIVE) {
$this->logger->warning(self::LOG_PREFIX . ' Team is not active, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'teamId' => $report->getTeamId(),
'teamStatus' => $team->getStatus(),
]);
$this->warn("Team #{$report->getTeamId()} is not active — processing anyway (manual override).");
}
if ($report->isExpired()) {
$this->logger->warning(self::LOG_PREFIX . ' Report is expired, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'expiresAt' => $report->getExpiresAt()?->toDateString(),
]);
$this->warn('Report is expired (expires_at: ' . $report->getExpiresAt()?->toDateString() . ') — processing anyway (manual override).');
}
$now = Carbon::now();
$frequency = $report->getFrequency();
$wouldRunToday = match ($frequency) {
AutomatedReportsService::FREQUENCY_DAILY => true,
AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday(),
AutomatedReportsService::FREQUENCY_MONTHLY => $now->day === 1,
AutomatedReportsService::FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10], true),
default => false,
};
if (! $wouldRunToday) {
$this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)', [
'reportId' => $reportId,
'reportUuid' => $report->getUuid(),
'frequency' => $frequency,
]);
$this->warn("Report frequency is '{$frequency}' — would NOT run today, processing anyway (manual override).");
}
return collect([$report]);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
10893
|
|
10899
|
215
|
67
|
2026-04-14T09:03:02.379123+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157382379_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditFV faVsco.js vViewNavigateCodeLara PhpStormFileEditFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny k vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen©FeatureFlagsHelper.php© FixCrossTenantlssues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.p(©) JiminnyCacheClearCom(c) minnv Deouacommanc(c)Jminnvser-ncrvotedio(c) Jiminny okenintocomm© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e RecalculatebealkiskscoC) RemoveDeleteMarkersd(C) RemoveExpiredNudaes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ongAutomaleakeportscommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.ono• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsCommand extends Commandprivate function getReportById(string $reportId): Collection146147148if (! $report->getStatus()) €$this->Logger->warning(self::LOG_PREFIX*' Report is inactive, processing anyway (manual override)'. Eireoorclo so oreoorcro.redorcuuo"=> $report->getUuid(),© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php• RequestGenerateReportJob.php1501511521531541551561571581591601611621631641651661671681691701711721175174175176177179181183184185186187188189190191192193194195196I):$this->warn( string: |'Report is inactive - processing anyway (manual override).*P:$team = $report->getTeam();if ($team->getStatus() !== Team: :STATUS_ACTIVE) €$this->logger->warning(self::LOG_PREFIXTeam is not active, processing anyway (manual override)','reportId' => SreportId,'reportuvid' => $report->getUvid(),"Leamid" => preport-›gecleamta.Leallbtatus"→preall->getstacus.I):$this->warn( string: "Team #[$report->getTeamId()} is not active - processing anyway (manual override)."P:lif ($report->isExpired() €$this->logger->warning(self::LOG_PREFIX|!||' Report is expired, processing anyway (manual override)'|.|E|'reportId' => SreportId,"reportUvid'=> $report->getUvid(),'expiresAt'→> $report->getExpiresAt()?->toDateStringQ,ID:$this->warn( string:Cascade & XICommand &1Sreport->getExpiresAt()P→>toDateString() • |'P - processing anyway (manual overrid 40$now = Carbon: : now();$frequency = $report->getFrequency();$wouldRunToday = match ($frequency) {AutomatedReportsService::FREQUENCY_DAILY => true,AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday() ,AutomatedReportsService: : FREQUENCY_MONTHLY => $now->day === 1,AutomatedReportsService: :FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10],stict wruen.default = false,if (! $wouLdRunToday) €$this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)', ['reportId' => $reportId,'reportUuid' => $report->getUuid(),$frequency,1):$this->warp ( string: "Report frequency is '($frequency}' - would NOT run today, processing anyway (manval override).");return collect([$report]):T 1 of 6 edits +v Accept File % +X Reject File 0*€+ 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.logs Sr iminny@localnosuiA HS_local [jiminny@localhost]s console ProDI4 console [EU]console [STAGING) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTestX281лclass AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored o* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo);$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;Support Daily - in 2 h 57mA100% C•Tue 14 Apr 12:03:02RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MarAutomated Report Lip#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino loo + terminal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +70 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leams19b:lgol chars, 22 line breaksuir-o( 4 spaces...
|
NULL
|
-6394312236682759465
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditFV faVsco.js vViewNavigateCodeLara PhpStormFileEditFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-liminny k vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen©FeatureFlagsHelper.php© FixCrossTenantlssues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.p(©) JiminnyCacheClearCom(c) minnv Deouacommanc(c)Jminnvser-ncrvotedio(c) Jiminny okenintocomm© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e RecalculatebealkiskscoC) RemoveDeleteMarkersd(C) RemoveExpiredNudaes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ongAutomaleakeportscommana.ong© AutomatedReportsSendCommand.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php(c CrealenelaAcuiviyevent.ono• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsCommand extends Commandprivate function getReportById(string $reportId): Collection146147148if (! $report->getStatus()) €$this->Logger->warning(self::LOG_PREFIX*' Report is inactive, processing anyway (manual override)'. Eireoorclo so oreoorcro.redorcuuo"=> $report->getUuid(),© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php• RequestGenerateReportJob.php1501511521531541551561571581591601611621631641651661671681691701711721175174175176177179181183184185186187188189190191192193194195196I):$this->warn( string: |'Report is inactive - processing anyway (manual override).*P:$team = $report->getTeam();if ($team->getStatus() !== Team: :STATUS_ACTIVE) €$this->logger->warning(self::LOG_PREFIXTeam is not active, processing anyway (manual override)','reportId' => SreportId,'reportuvid' => $report->getUvid(),"Leamid" => preport-›gecleamta.Leallbtatus"→preall->getstacus.I):$this->warn( string: "Team #[$report->getTeamId()} is not active - processing anyway (manual override)."P:lif ($report->isExpired() €$this->logger->warning(self::LOG_PREFIX|!||' Report is expired, processing anyway (manual override)'|.|E|'reportId' => SreportId,"reportUvid'=> $report->getUvid(),'expiresAt'→> $report->getExpiresAt()?->toDateStringQ,ID:$this->warn( string:Cascade & XICommand &1Sreport->getExpiresAt()P→>toDateString() • |'P - processing anyway (manual overrid 40$now = Carbon: : now();$frequency = $report->getFrequency();$wouldRunToday = match ($frequency) {AutomatedReportsService::FREQUENCY_DAILY => true,AutomatedReportsService::FREQUENCY_WEEKLY => $now->isMonday() ,AutomatedReportsService: : FREQUENCY_MONTHLY => $now->day === 1,AutomatedReportsService: :FREQUENCY_QUARTERLY => $now->day === 1 && in_array($now->month, [1, 4, 7, 10],stict wruen.default = false,if (! $wouLdRunToday) €$this->logger->info(self::LOG_PREFIX . ' Report frequency would not run today, processing anyway (manual override)', ['reportId' => $reportId,'reportUuid' => $report->getUuid(),$frequency,1):$this->warp ( string: "Report frequency is '($frequency}' - would NOT run today, processing anyway (manval override).");return collect([$report]):T 1 of 6 edits +v Accept File % +X Reject File 0*€+ 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.logs Sr iminny@localnosuiA HS_local [jiminny@localhost]s console ProDI4 console [EU]console [STAGING) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTestX281лclass AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F* Fetch activity IDs fo* Date filters stored o* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo);$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;Support Daily - in 2 h 57mA100% C•Tue 14 Apr 12:03:02RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MarAutomated Report Lip#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino loo + terminal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +70 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leams19b:lgol chars, 22 line breaksuir-o( 4 spaces...
|
10898
|
|
10900
|
215
|
68
|
2026-04-14T09:03:05.438317+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157385438_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewFV faVsco.js vNavigateCodeLara PhpStormFileEditViewFV faVsco.js vNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen©FeatureFlagsHelper.php© FixCrossTenantissues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php@ Imnortli|sercFromCcvEil© IterateUsersCommand.c)Jiminnvcacheclearcom(c) minnv Deouacommanc(c)Jminnvser-ncrvotedio(c) Jiminny okenintocomm© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e RecalculatebealkiskscoC) RemoveDeleteMarkersd(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ongAutomaleakeportscommana.ong© AutomatedReportsSendCommand.phpAutomatedReportsRepository.phpC AutomatedReportsService.php© UserPilotActivityListener.php© ActivityLogged.phpc CrealenelaAcuiviyevent.ono© AutomatedReportsCallbackService.php• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Commandprivate function processReports(string $frequency): void© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php• RequestGenerateReportJob.php1321331154Rejectprivate function getReportById(string $reportId): Collection1150137138139140142143144145146147148149150151152153154155156158159160161162163164165166167168169170171172173174117511178$report = $this->reportRepository->findById0rUuid($reportId);if ($report === null) €$this->logger->warning(self::LOG_PREFIX .' Report not found for --report-id'. ['reportid' => $reportId]);$this->warn( string: "Report not found: {$reportId}");return collect():if C! $report->getStatus()) k$this->Logger->warning(self::LOG_PREFIX •' Report is inactive, processing anyway (manual override)'" ['reportId' = SreportId,'reportUvid' => $report->getUvid(),1):$this->warn( string: 'Report is inactive - processing anyway (manual override).'):$team = $report->getTeam();if ($team->getStatus() !== Team::STATUS_ACTIVE)$this->logger->warning(self::LOG_PREFIX'reportId' => $rep'reportuuid' => $1Cascade & XICommand Sel'teamId' => $report->getTeamIdO).'teamstatus'' => $team->getstatus(),Team is not active, processing anyway (manual override)'.[I);$this->warn( string: "Team #{$report->getTeamId(} is not active - processing anyway (manual override) .");|if ($report->isExpiredO) {$this->Logger->warning(self::LOG_PREFIX." Report is expired, processing anyway (manual override)". ['reportId' => $reportId,'reportUuid' => $report->getUuidO,'expiresAt'| => $report->getExpiresAt()?->toDateString().|I):$this->warn( string: |'Report is expired (expires_at: |' • Sreport->getExpiresAt(?->toDateString( •') - processing anyway (manual overridreturn collect([$report]);1 eal+ v Accept File %=X Reject File t3€+ 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log)4...3* Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info(' saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;Support Daily - in 2 h 57mA100% C•Tue 14 Apr 12:03:05RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report Mar• Automated Report Lip#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automaleakeporscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1Done. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +52 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allWinasun leams1/4.uir-o( 4 spaces...
|
NULL
|
8326474074468691993
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditViewFV faVsco.js vNavigateCodeLara PhpStormFileEditViewFV faVsco.js vNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack_leamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen©FeatureFlagsHelper.php© FixCrossTenantissues.p© FlushRolesPermissionsC© GeneratelnternalWebho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php@ Imnortli|sercFromCcvEil© IterateUsersCommand.c)Jiminnvcacheclearcom(c) minnv Deouacommanc(c)Jminnvser-ncrvotedio(c) Jiminny okenintocomm© MakeSlackLiveCoaching© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e RecalculatebealkiskscoC) RemoveDeleteMarkersd(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpJiminnyDeouecommana.ongAutomaleakeportscommana.ong© AutomatedReportsSendCommand.phpAutomatedReportsRepository.phpC AutomatedReportsService.php© UserPilotActivityListener.php© ActivityLogged.phpc CrealenelaAcuiviyevent.ono© AutomatedReportsCallbackService.php• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AutomatedReportResult.phpc) Automatedkeport.oneclass AutomatedReportsCommand extends Commandprivate function processReports(string $frequency): void© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php• RequestGenerateReportJob.php1321331154Rejectprivate function getReportById(string $reportId): Collection1150137138139140142143144145146147148149150151152153154155156158159160161162163164165166167168169170171172173174117511178$report = $this->reportRepository->findById0rUuid($reportId);if ($report === null) €$this->logger->warning(self::LOG_PREFIX .' Report not found for --report-id'. ['reportid' => $reportId]);$this->warn( string: "Report not found: {$reportId}");return collect():if C! $report->getStatus()) k$this->Logger->warning(self::LOG_PREFIX •' Report is inactive, processing anyway (manual override)'" ['reportId' = SreportId,'reportUvid' => $report->getUvid(),1):$this->warn( string: 'Report is inactive - processing anyway (manual override).'):$team = $report->getTeam();if ($team->getStatus() !== Team::STATUS_ACTIVE)$this->logger->warning(self::LOG_PREFIX'reportId' => $rep'reportuuid' => $1Cascade & XICommand Sel'teamId' => $report->getTeamIdO).'teamstatus'' => $team->getstatus(),Team is not active, processing anyway (manual override)'.[I);$this->warn( string: "Team #{$report->getTeamId(} is not active - processing anyway (manual override) .");|if ($report->isExpiredO) {$this->Logger->warning(self::LOG_PREFIX." Report is expired, processing anyway (manual override)". ['reportId' => $reportId,'reportUuid' => $report->getUuidO,'expiresAt'| => $report->getExpiresAt()?->toDateString().|I):$this->warn( string: |'Report is expired (expires_at: |' • Sreport->getExpiresAt(?->toDateString( •') - processing anyway (manual overridreturn collect([$report]);1 eal+ v Accept File %=X Reject File t3€+ 2 of 2 files →Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]4 console [STAGING)) AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log)4...3* Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo$filterSet = $this->$activityIds = $this$this->logger->info(' saved_search_id'user_id'= Sus'activity_count'1);return $activityIds;Support Daily - in 2 h 57mA100% C•Tue 14 Apr 12:03:05RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report Mar• Automated Report Lip#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automaleakeporscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1Done. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +52 ›Ask anything (XAL)+ <> CodeClaude Sonnet 4.6Reject allAccept allWinasun leams1/4.uir-o( 4 spaces...
|
NULL
|
|
10903
|
215
|
70
|
2026-04-14T09:03:13.236891+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157393236_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFV faVsco.js vViewNavigateCodeLaravelR PhpStormFileFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack• TeamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.phpc Crearevaroaseusers.oc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantlssues.p©FlushRolesPermissionsC(e) Generatelnterna wepho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.p© JiminnyCacheClearCom© JiminnyDebugCommanc© JiminnySetEncryptedTo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.o© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e RecalculatebealkiskscoC) RemoveDeleteMarkersd(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php© UserPilotActivityListener.phpJiminnybeouecommana.ong© AutomatedReportsCommand.php xCreateHeldActivityEvent.php© AutomatedReportsCallbackService.php© ActivityLogged.php© AutomatedReportResult.phpclass AutomatedReportsCommand extends Commandpublic function handle(): intscurrencmonch = snow->month;© AutomatedReportsSendCommand.php• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php• RequestGenerateReportJob.php// Cneck It the current monch is a quarterly monch (vanuary, April, July, uccoder)SisOuarterlvMonth = in array($currentMonth. 11. 4. 7. 101.1sulel. Truen$this->logger->info(self::LOG_PREFIX . ' Checking conditions', ['isMonday' => $isMonday,'isFirstDay0fMonth' => $isFirstDay0fMonth,'currentMonth' => $currentMonth,'isQuarterLyMonth' => $isQuarterlyMonth,I);// Process daily reportsфuh1s->processkeporus( trequency: AUtomacedкeportsservice:.FREQUENCY_DALLY)HProcess weekly reports on Mondavsif ($isMonday) {$this->processReports( frequency: AutomatedReportsService: :FREQUENCY_WEEKLY);// Process monthly reports on the first day of the monthif ($isFirstDay0fMonth) {$this->processReports( frequency: AutomatedReportsService::FREQUENCY_MONTHLY);// Process quarterly reports on the first day of January, April, July, and Octoberif ($isFirstDay0fMonth &&Cascade 8e XICommand &1$this->processReports(-service::FREQUENCY_QUARTERLY);$this->logger->info(self::LOG_PREFIX .'Completed');return 0;/*** Process reports for a specific frequency.991100101102103104105106107108109110111112113114* @param string $frequency* Oreturn voidprivate function processReports(string $frequency): void$this->logger-›info(self::L0G_PREFIX . " Processing $frequency reports");$reportId = Sthis->option( key: 'report-id');if ($reportId !== null) {$reports = $this->getReportById($reportId);felse {// Get all enabled, not deleted reports with active teams for the specified frequency$reports = $this->reportRepository->getActiveReportsByFrequency($frequency);Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)43= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]I console [STAGING)AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F/*** Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo);$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return SactivitvidsSupport Daily - in 2 h 57mA100% C•Tue 14 Apr 12:03:13RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MarAutomated Report Lip#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automaleakeporscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1Done. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +51 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leams134:1uir-o( 4 spaces...
|
NULL
|
-3191793147998243425
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFV faVsco.js vViewNavigateCodeLaravelR PhpStormFileFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProject vProphetAiv D Reports© AutomatedReportsCl© AutomatedReportsRe© AutomatedReportsSt© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpD Slack• TeamsD TracksO TranscriptionO TwilioD UsersVocabularyDZoom© CoachingFeedbacksUpr© Command.phpc Crearevaroaseusers.oc Daraoase oecountoi© DeleteOldAiCrmNotesC:© DeleteS3LeftoversComiDevPostmanCommand./© DiarizeViaAiParticipantk© EncryptTokensComman© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantlssues.p©FlushRolesPermissionsC(e) Generatelnterna wepho• GroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic©ImportRecording.php© ImportUsersFromCsvFil© IterateUsersCommand.p© JiminnyCacheClearCom© JiminnyDebugCommanc© JiminnySetEncryptedTo(c) Jiminny okenintocommMakeslackLvecoaching(c Manacescimror eam.o© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesCom(e RecalculatebealkiskscoC) RemoveDeleteMarkersd(e) Remove-xoiredNudoes© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© ReportController.phpC AutomatedReportsRepository.phpC AutomatedReportsService.php© UserPilotActivityListener.phpJiminnybeouecommana.ong© AutomatedReportsCommand.php xCreateHeldActivityEvent.php© AutomatedReportsCallbackService.php© ActivityLogged.php© AutomatedReportResult.phpclass AutomatedReportsCommand extends Commandpublic function handle(): intscurrencmonch = snow->month;© AutomatedReportsSendCommand.php• TrackProviderInstalledEvent.php© RequestGenerateAskJiminnyReportJob.php© AddLayoutEntities.php© Team.phpCreateActivityLoggedEvent.php• RequestGenerateReportJob.php// Cneck It the current monch is a quarterly monch (vanuary, April, July, uccoder)SisOuarterlvMonth = in array($currentMonth. 11. 4. 7. 101.1sulel. Truen$this->logger->info(self::LOG_PREFIX . ' Checking conditions', ['isMonday' => $isMonday,'isFirstDay0fMonth' => $isFirstDay0fMonth,'currentMonth' => $currentMonth,'isQuarterLyMonth' => $isQuarterlyMonth,I);// Process daily reportsфuh1s->processkeporus( trequency: AUtomacedкeportsservice:.FREQUENCY_DALLY)HProcess weekly reports on Mondavsif ($isMonday) {$this->processReports( frequency: AutomatedReportsService: :FREQUENCY_WEEKLY);// Process monthly reports on the first day of the monthif ($isFirstDay0fMonth) {$this->processReports( frequency: AutomatedReportsService::FREQUENCY_MONTHLY);// Process quarterly reports on the first day of January, April, July, and Octoberif ($isFirstDay0fMonth &&Cascade 8e XICommand &1$this->processReports(-service::FREQUENCY_QUARTERLY);$this->logger->info(self::LOG_PREFIX .'Completed');return 0;/*** Process reports for a specific frequency.991100101102103104105106107108109110111112113114* @param string $frequency* Oreturn voidprivate function processReports(string $frequency): void$this->logger-›info(self::L0G_PREFIX . " Processing $frequency reports");$reportId = Sthis->option( key: 'report-id');if ($reportId !== null) {$reports = $this->getReportById($reportId);felse {// Get all enabled, not deleted reports with active teams for the specified frequency$reports = $this->reportRepository->getActiveReportsByFrequency($frequency);Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)43= custom.log= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]A console (PROD]Al console [EU]I console [STAGING)AskJiminnyReportActivityService.php x© RequestGenerateAskJiminnyReportJobTest×2 21 ^class AskJiminnyReportActiviprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate::ActivityUpdatedDate:ActivityUpdatedDate:ClosingPeriodFilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly LogDf..F/*** Fetch activity IDs fo* Date filters stored* no date constraint .* Creturn string[] Acti*/public function getActivSearch $savedSearchUser $user,): array {$requestParams = $th$criteria = Criteriaarray_merge($reqnuser->certnezo);$filterSet = $this->$activityIds = $this$this->logger->info('saved_search_id'user_id'= Sus'activity_count'1);return SactivitvidsSupport Daily - in 2 h 57mA100% C•Tue 14 Apr 12:03:13RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MarAutomated Report Lip#L211 and add validation with logs [EMAIL]#L209-213wLet me read the current state of the command file first.kead Automaleakeporscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycoLlection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:• AutomatedReportsRepository.phpAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1AutomatedReportsCommand.php+1 -1Done. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violation,but sull rerurns the repor so processing continues.CheckBehaviour on failINot Tounewarhina loe + terminal wam, rerurns empty collection sklos processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredFrequency wouldn't run todaywarning log + terminal warn, continuesinfo log + terminal warn, continuesC1l -2 files +51 ›Ask anything (&AL)+ <> CodeClaude Sonnet 4.6Reject allAccept allwinasun leams134:1uir-o( 4 spaces...
|
NULL
|
|
10905
|
215
|
71
|
2026-04-14T09:03:19.478066+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157399478_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodelaravelRefactonRun PhpStormFileFditViewNavigateCodelaravelRefactonRunToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-jiminny k ~Project v© Partner.phpC Permission.php© PhoneNumber.phpg Playback lheme.phpC Playbook.phpPlaybookcategory.phpC) Plavlist.phoC RateLimit.phpC) Region.pho(C) Role.phpC RoleChangeEvent.phpC) ScopeGroup.php(C) Session.phpg SlackBot.phpsocialAccount.php© Stage.phpC Task.php© Team.phpC) TeamAiContext.phpC) TeamDomain.phpC) TeamFeature.php©) TeamSettings.phpC TextRelay.php© Track.phpC) TranscriptionModel.php© TranscriptionModelLocale.|© TranscriptionProvider.phpC User. ohp© UserSettings.phpc) Vocabularv.ohp© VocabularyPronunciation.pC) VoiceAccess.php(C) VoiceConsentPrefix.php> _ Notifications• _ Observers> _ Policies>D Providers>D Queuev | Repositories> MAi> AutoScoring> Calendar>DCrm> → Geography© ActiveStreamsRepository.p(C) ActivityCommentRepositor(©) ActivityLogRepository.phpC) ActivityMessageRepository© ActivityMomentRepository.© ActivityProviderRepositoryC) ActivitvRepositorv.phpC) ActivitvSearchFilterReposil(C) ActivitvShareRepositorv.ohC) ActivityUploadSettingRepo(C) AiPromptRepository.phpC) AskAnythingRepository.phC AutomatedReportsReposit©) CallimportRepository.phpC) CoachingFeedbackReposit(©) ReportController.php© JiminnyDebugCommand.phpC AutomatedReportsCommand.phpC) AutomatedReportsSendCommand.phpC) AddLayoutEntities.php(C) Team.php© AutomatedReportsRepository.php xC AutomatedReportsService.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass Aucomaceareporcskepostcory477280* Oreturn AutomatedReport*/pubLic tunccion createlarray paata). Аuсопасеакероrиr. . .л/**|* Find an automated report bu UUID* @param string Suuid* dreturn Automatedkeport/nullpubLic tunccion tindbyuu1d(scring suuld): :Automaсedкерогиre atomеероt.ee, оmерrcoupamizealoouna atmetTusagepublic function findByld0rUuid(string Sid0rUuid): ?AutomatedReportAccesmReiectlif (is_numeric($idorUuid)) €return AutomatedReport::w1thlrashed(->f1nd((1nt) s1d0rUu1d);recurn Automacedkeport::Wichlrasnedt-›wherel column: "Ju1d, Automatedкeporu:. couptimized slauruula-tirstun* Retrieve all standard (non-Ask Jiminny) automated reports.* @param string $sortColumnThe column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to "created_at'.* aparam string SsortDirection The sort direction. Allowed values:'asc', 'desc'. Defaults to 'desc'.* dreturn collection<Automatedreport>12 usagespubLic tunccion gecALLscandardkeportslstring ssortcolumn = "created_at",string SsortDirection = 'desc': Collection (...l* Retrieve all Ask Jiminny reports created by the given user.* dparam UsersuserThe user whose reports to retrieve.* dparam string ssortcolumnThe column to sort by. Allowed values: 'created_by', "created_at'. Defaults to 'created_at".* @param string $sortDirection The sort direction. Allowed values:"asc", "desc". veraults to "desc".* drerurn couuectonsaurondredredor14 usadespublic function getAskJiminnyReportsByUserdUser Suser.string SsortColumn = created at'1 eait+Y Accept File &+X Reject File 1 38 €Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.logs Sr iminny@localnosuic HS_local Jiminny@localhost)e console (PROD]e console (EU]I console [STAGING)AskJiminnyReportActivityService.php XC RequestGenerateAskJiminnyReportJobTesMLAI^class AskJiminnyReportActivigg лнg9 gnprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate:ActivityUpdatedDate:ActivityUpdatedDate:ClosingPer1odrilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log)4.}* Fetch activity IDs fo* Date filters stored* no dace constraint* @return stringl] Act:*/public function getActivSearch SsavedSearchUser suser): array {srequestParams = sthnenrera s untuerarray_mergelsrecnuser->certnezo);SfilterSet = $this->SactivityIds = $thissthis->logger->infol'saved_search_10'User_1d'= SUSactvt counte1);return Sactivitvids:Support Daily • in 2h 57 m100% |45]Tue 14 Apr 12:03:19RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report Ma•Automated Report !ip#L211 and add validation with logs insideGAutomatedRenortscommand.0ho11209-710et me read the current state of the command tile firstkead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycollection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSing leReport/warnlfNotApp Licab leForSchedu Lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):AutomatedReportsCommand.php+1-1• AutomatedReportsCommand.php+1 -1Done. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID•Non-numenc → Uu d ookuo via tooptimizedoBoth use withTrashed() so soft-deleted reports are findable manuallygetReportByld() (AutomatedReportsCommand.php: 135-194) — checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.chockBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesWC1l -2 files +51 >Ask anything (&+L)+ & CodeClaude Sennet 4.6Reject allAccept allwinasun leams4/:21uir-oia 4 spaces...
|
NULL
|
4016787003287284930
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodelaravelRefactonRun PhpStormFileFditViewNavigateCodelaravelRefactonRunToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-jiminny k ~Project v© Partner.phpC Permission.php© PhoneNumber.phpg Playback lheme.phpC Playbook.phpPlaybookcategory.phpC) Plavlist.phoC RateLimit.phpC) Region.pho(C) Role.phpC RoleChangeEvent.phpC) ScopeGroup.php(C) Session.phpg SlackBot.phpsocialAccount.php© Stage.phpC Task.php© Team.phpC) TeamAiContext.phpC) TeamDomain.phpC) TeamFeature.php©) TeamSettings.phpC TextRelay.php© Track.phpC) TranscriptionModel.php© TranscriptionModelLocale.|© TranscriptionProvider.phpC User. ohp© UserSettings.phpc) Vocabularv.ohp© VocabularyPronunciation.pC) VoiceAccess.php(C) VoiceConsentPrefix.php> _ Notifications• _ Observers> _ Policies>D Providers>D Queuev | Repositories> MAi> AutoScoring> Calendar>DCrm> → Geography© ActiveStreamsRepository.p(C) ActivityCommentRepositor(©) ActivityLogRepository.phpC) ActivityMessageRepository© ActivityMomentRepository.© ActivityProviderRepositoryC) ActivitvRepositorv.phpC) ActivitvSearchFilterReposil(C) ActivitvShareRepositorv.ohC) ActivityUploadSettingRepo(C) AiPromptRepository.phpC) AskAnythingRepository.phC AutomatedReportsReposit©) CallimportRepository.phpC) CoachingFeedbackReposit(©) ReportController.php© JiminnyDebugCommand.phpC AutomatedReportsCommand.phpC) AutomatedReportsSendCommand.phpC) AddLayoutEntities.php(C) Team.php© AutomatedReportsRepository.php xC AutomatedReportsService.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass Aucomaceareporcskepostcory477280* Oreturn AutomatedReport*/pubLic tunccion createlarray paata). Аuсопасеакероrиr. . .л/**|* Find an automated report bu UUID* @param string Suuid* dreturn Automatedkeport/nullpubLic tunccion tindbyuu1d(scring suuld): :Automaсedкерогиre atomеероt.ee, оmерrcoupamizealoouna atmetTusagepublic function findByld0rUuid(string Sid0rUuid): ?AutomatedReportAccesmReiectlif (is_numeric($idorUuid)) €return AutomatedReport::w1thlrashed(->f1nd((1nt) s1d0rUu1d);recurn Automacedkeport::Wichlrasnedt-›wherel column: "Ju1d, Automatedкeporu:. couptimized slauruula-tirstun* Retrieve all standard (non-Ask Jiminny) automated reports.* @param string $sortColumnThe column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to "created_at'.* aparam string SsortDirection The sort direction. Allowed values:'asc', 'desc'. Defaults to 'desc'.* dreturn collection<Automatedreport>12 usagespubLic tunccion gecALLscandardkeportslstring ssortcolumn = "created_at",string SsortDirection = 'desc': Collection (...l* Retrieve all Ask Jiminny reports created by the given user.* dparam UsersuserThe user whose reports to retrieve.* dparam string ssortcolumnThe column to sort by. Allowed values: 'created_by', "created_at'. Defaults to 'created_at".* @param string $sortDirection The sort direction. Allowed values:"asc", "desc". veraults to "desc".* drerurn couuectonsaurondredredor14 usadespublic function getAskJiminnyReportsByUserdUser Suser.string SsortColumn = created at'1 eait+Y Accept File &+X Reject File 1 38 €Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log= laravel.logs Sr iminny@localnosuic HS_local Jiminny@localhost)e console (PROD]e console (EU]I console [STAGING)AskJiminnyReportActivityService.php XC RequestGenerateAskJiminnyReportJobTesMLAI^class AskJiminnyReportActivigg лнg9 gnprivate const int DEFAULprivate const array DATEActivityActualDate:ActivityActualDate:ActivityUpdatedDate:ActivityUpdatedDate:ClosingPer1odrilter:ClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log)4.}* Fetch activity IDs fo* Date filters stored* no dace constraint* @return stringl] Act:*/public function getActivSearch SsavedSearchUser suser): array {srequestParams = sthnenrera s untuerarray_mergelsrecnuser->certnezo);SfilterSet = $this->SactivityIds = $thissthis->logger->infol'saved_search_10'User_1d'= SUSactvt counte1);return Sactivitvids:Support Daily • in 2h 57 m100% |45]Tue 14 Apr 12:03:19RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report Ma•Automated Report !ip#L211 and add validation with logs insideGAutomatedRenortscommand.0ho11209-710et me read the current state of the command tile firstkead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycollection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSing leReport/warnlfNotApp Licab leForSchedu Lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):AutomatedReportsCommand.php+1-1• AutomatedReportsCommand.php+1 -1Done. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int ID•Non-numenc → Uu d ookuo via tooptimizedoBoth use withTrashed() so soft-deleted reports are findable manuallygetReportByld() (AutomatedReportsCommand.php: 135-194) — checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.chockBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + ternnal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesWC1l -2 files +51 >Ask anything (&+L)+ & CodeClaude Sennet 4.6Reject allAccept allwinasun leams4/:21uir-oia 4 spaces...
|
10903
|
|
10906
|
215
|
72
|
2026-04-14T09:03:22.610600+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157402610_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodelaraveRefactonRunT PhpStormFileFditViewNavigateCodelaraveRefactonRunToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-jiminny k ~Project v(©) ReportController.php© JiminnyDebugCommand.phpC AutomatedReportsCommand.phpC) AutomatedReportsSendCommand.phpC) AddLayoutEntities.php(©) Team.php© DeviceRepository.php© AutomatedReportsRepository.php xAulomaleakeporisservice.onpc CrealenelaAcuiviyevent.ono© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.phpC ElasticActivityRepository.p© EmailMessageRepository.p© GenericAiPromptRepositor© GroupRepository.php(C InboxEmailBatchRepositon)© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass AucomaceareporcskepostcoryC InboxRepository.pnp© InvitationRepository.phpC) JobRepository.phpC) LanquageRepository.php© MomentRepository.phpNotificationRepository.phpC ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.phpC PlavlistActivityRepository.p(© PlaylistRepository.png(C PlaylistShareRepository.phC) QuestionRepository.php(C) RoleChangeEventRepositolC RoleRepository.php© SearchRepository.phpC SnapshotRepository.phpC) SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.(C) TaskRepository.pho© TeamAiContextRepository.©) TeamDomainsRepository.p(©) TeaminsightsRepository.phC) TeamRepository.phpC ThemeRepository.phpC TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.phpC) TranscriptionModelLocaleF© TranscriptionRepository.prC) TranscriptionSummarvRepC UserRepository.php© VocabularyRepository.pnp› Rulesv D Services>D Activity>D AReports>D AvatarcalendarM ConferenceM Crm>MImport> MInternallv → Kioskv _ AutomatedReports(C) ActivityTypeService.(©) AskJiminnyReportAc(C) AutomatedReportse(C) AutomatedReportsS* Oreturn AutomatedReportpubLic tunccion createlarray paata). Аuсопасеакероrиr. . .л* Find an automated report bu UUID* Oparam string Suuid* dreturn Automatedkeport/nullpubLic tunccion tindbyuu1d(scring suuld): :Automaсedкерогиre atomеероt.ee, оmерrcoupamizealoouna atmetTusagepublic function findByld0rUuid(string Sid0rUuid): ?AutomatedReportAcceamReiectif (is_numeric($id0rUuid)) (return AutomatedReport::w1thlrashed(->f1nd((1nt) s1d0rUu1d);recurn Automacedkeport::Wichlrasnedt-›wherel column: "Ju1d, Automatedкeporu:. couptimized slauruula-tirstun* Retrieve all standard (non-Ask Jiminny) automated reports.* @param string $sortColumnThe column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to "created_at'.* aparam string SsortDirection The sort direction. Allowed values:'asc', 'desc'. Defaults to 'desc'.* dreturn collection<Automatedreport>12 usagespubLic tunction gecALLstandardkeportsstring ssortcolumn = "created_at",scring ssortbirection = 'desc': Collection (...l* Retrieve all Ask Jiminny reports created by the given user.* dparam UsersuserThe user whose reports to retrieve.* dparam string ssortcolumnThe column to sort by. Allowed values: 'created_by', "created_at'. Defaults to 'created_at".* @param string $sortDirection The sort direction. Allowed values:"asc, "desc". veraults to "desc".* drerurn couuectonsaurondredredor14 usagespublic function getAskJiminnyReportsByUserdUser Suser.1 eallstring SsortColumn = created at'Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)\ Sa= custom.log= laravel.logs Sr iminny@localnosuic HS_local Liminny@localhost)e console (PROD]¿ console (EU]A console [STAGINGAskJiminnyReportActivityService.php xC RequestGenerateAskJiminnyReportJobTestclass ASkJiminnyReportActiviClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log) {...}* Fetch activity IDs fo* Date filters stored o* no dque conscrouns* dreturn stringl Actipublic function getActivSearch SsavedSearchUser suser,0: array {srequestParams = sthnenrera s urtueraAcceptmarcetsreqarray merge (Srecsuser->getTimez):btulterset = sthis-MacuVVOS =109Sthis->loqger->infod'saved search id'user id' => Sus'activity_countID:return sactivityidsprivate tuncuion bullakeJ v Accept File &+X Reject File 1 38&Support Daily • in 2h 57 m100% |45]Tue 14 Apr 12:03:22RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MaAutomated Reportip#L211 and add validation with logs insideGAutomatedRenortscommand. 0ho.5 209-710et me read the current state of the command tile firstkead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycollection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSing leReport/warnlfNotApp Licab leForSchedu Lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1• AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric strine→ tindovinubNon-numenc → Uud ookuo via tooptimizedoBoth use withTrashed() so soft-deleted reports are findable manuallygetReportByld() (AutomatedReportsCommand.php: 135-194) — checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.chockBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terminal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesWC1l -2 files +51 >Ask anything (&+L)401 auesde Claude Sonnet 46Reject allAccept allwinasun leams51:1uir-oia 4 spaces...
|
NULL
|
-3311114688567086906
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodelaraveRefactonRunT PhpStormFileFditViewNavigateCodelaraveRefactonRunToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-jiminny k ~Project v(©) ReportController.php© JiminnyDebugCommand.phpC AutomatedReportsCommand.phpC) AutomatedReportsSendCommand.phpC) AddLayoutEntities.php(©) Team.php© DeviceRepository.php© AutomatedReportsRepository.php xAulomaleakeporisservice.onpc CrealenelaAcuiviyevent.ono© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.phpC ElasticActivityRepository.p© EmailMessageRepository.p© GenericAiPromptRepositor© GroupRepository.php(C InboxEmailBatchRepositon)© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass AucomaceareporcskepostcoryC InboxRepository.pnp© InvitationRepository.phpC) JobRepository.phpC) LanquageRepository.php© MomentRepository.phpNotificationRepository.phpC ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.phpC PlavlistActivityRepository.p(© PlaylistRepository.png(C PlaylistShareRepository.phC) QuestionRepository.php(C) RoleChangeEventRepositolC RoleRepository.php© SearchRepository.phpC SnapshotRepository.phpC) SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.(C) TaskRepository.pho© TeamAiContextRepository.©) TeamDomainsRepository.p(©) TeaminsightsRepository.phC) TeamRepository.phpC ThemeRepository.phpC TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.phpC) TranscriptionModelLocaleF© TranscriptionRepository.prC) TranscriptionSummarvRepC UserRepository.php© VocabularyRepository.pnp› Rulesv D Services>D Activity>D AReports>D AvatarcalendarM ConferenceM Crm>MImport> MInternallv → Kioskv _ AutomatedReports(C) ActivityTypeService.(©) AskJiminnyReportAc(C) AutomatedReportse(C) AutomatedReportsS* Oreturn AutomatedReportpubLic tunccion createlarray paata). Аuсопасеакероrиr. . .л* Find an automated report bu UUID* Oparam string Suuid* dreturn Automatedkeport/nullpubLic tunccion tindbyuu1d(scring suuld): :Automaсedкерогиre atomеероt.ee, оmерrcoupamizealoouna atmetTusagepublic function findByld0rUuid(string Sid0rUuid): ?AutomatedReportAcceamReiectif (is_numeric($id0rUuid)) (return AutomatedReport::w1thlrashed(->f1nd((1nt) s1d0rUu1d);recurn Automacedkeport::Wichlrasnedt-›wherel column: "Ju1d, Automatedкeporu:. couptimized slauruula-tirstun* Retrieve all standard (non-Ask Jiminny) automated reports.* @param string $sortColumnThe column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to "created_at'.* aparam string SsortDirection The sort direction. Allowed values:'asc', 'desc'. Defaults to 'desc'.* dreturn collection<Automatedreport>12 usagespubLic tunction gecALLstandardkeportsstring ssortcolumn = "created_at",scring ssortbirection = 'desc': Collection (...l* Retrieve all Ask Jiminny reports created by the given user.* dparam UsersuserThe user whose reports to retrieve.* dparam string ssortcolumnThe column to sort by. Allowed values: 'created_by', "created_at'. Defaults to 'created_at".* @param string $sortDirection The sort direction. Allowed values:"asc, "desc". veraults to "desc".* drerurn couuectonsaurondredredor14 usagespublic function getAskJiminnyReportsByUserdUser Suser.1 eallstring SsortColumn = created at'Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)\ Sa= custom.log= laravel.logs Sr iminny@localnosuic HS_local Liminny@localhost)e console (PROD]¿ console (EU]A console [STAGINGAskJiminnyReportActivityService.php xC RequestGenerateAskJiminnyReportJobTestclass ASkJiminnyReportActiviClosingPeriodFilter:public function __constrprivate readonly Actprivate readonly Elaprivate readonly Log) {...}* Fetch activity IDs fo* Date filters stored o* no dque conscrouns* dreturn stringl Actipublic function getActivSearch SsavedSearchUser suser,0: array {srequestParams = sthnenrera s urtueraAcceptmarcetsreqarray merge (Srecsuser->getTimez):btulterset = sthis-MacuVVOS =109Sthis->loqger->infod'saved search id'user id' => Sus'activity_countID:return sactivityidsprivate tuncuion bullakeJ v Accept File &+X Reject File 1 38&Support Daily • in 2h 57 m100% |45]Tue 14 Apr 12:03:22RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MaAutomated Reportip#L211 and add validation with logs insideGAutomatedRenortscommand. 0ho.5 209-710et me read the current state of the command tile firstkead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycollection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucomaceakepo rtscommand.onpRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSing leReport/warnlfNotApp Licab leForSchedu Lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsreroslorv.onoAlso tix the import order (Collection should be betore the models alphabetically):• AutomatedReportsCommand.php+1 -1• AutomatedReportsCommand.php+1 -1vone. oummary or changes.AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric strine→ tindovinubNon-numenc → Uud ookuo via tooptimizedoBoth use withTrashed() so soft-deleted reports are findable manuallygetReportByld() (AutomatedReportsCommand.php: 135-194) — checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.chockBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terminal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesWC1l -2 files +51 >Ask anything (&+L)401 auesde Claude Sonnet 46Reject allAccept allwinasun leams51:1uir-oia 4 spaces...
|
NULL
|
|
10911
|
217
|
1
|
2026-04-14T09:03:44.009370+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157424009_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodelaravelPetactonToo PhpStormFileFditViewNavigateCodelaravelPetactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vProject vD UnitActionsComponent› Configuration> MConsole> M ContractsM DomainD DTO• Enums_ Events_ Exceptions→ fixturesHelpersD Http>_Integrations> Minteractions• D Jobs> M Activitv> M AiAutomation>_ Audiov _ AutomatedReports©) CreateResultsTest.pl(C) RequestGenerateAs'© RequestGenerateRerC SendReportJobTest.(ch SendRenortMailJobtcallendar!1CrmDeaksksM Mailbox_ Streaming→ Team_ TelephonyD User(c) ImportRecallAlRecordins(c) SqsVisibilityControlTest→I Listeners→]Mal> MModelsM Notifications› M Observers› D PoliciesProvidersRepositories> D Rulesv Services_ Activity_ ActivityProvidersI IAvatarcallendarConference! CinmiM InternallKioskv _ AutomatedReports©) ActivityTypeServi(c) AskJiminnyRepor(c) AskJiminnyRepor(c AutomatedRenor(©) ReportController.phpJiminnybeouecommana.ongc) Automatedreoonscommane.oneutomatedRevor ssendCommane.onoC AddLayoutEntities.php(©) Team.php© AutomatedReportsRepository.php XC AutomatedReportsService.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php(0) RequestGenerate.sk.liminnvRenor.oh.ohn© RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass Aucomaceareporcskepostcory56 E72* Oreturn AutomatedReportpubLic tunccion createlarray paata). Аuсопасеакероrиr. . .л/**|* Find an automated report bu UUID* @param string Suuid* dreturn Automatedkeport/nullpubLic tuncclon tindbyuu1d(string puu1d): :Automatedкeрoгиre atomеероt.ee, оmерrcoupamizealoouna atmetTusagepublic function findByld0rUuid(string Sid0rUuid): ?AutomatedReportAcceotlif (is_numeric($idorUuid)) €return AutomatedReport::w1thlrashed->f1nd((1nt) s1d0rUu1d)*recurn Automacedkeport::Wichlrasned()-›wherel column: "Ju1d, Automatedкeporu:. couptimized slauruula-tirstun* Retrieve all standard (non-Ask Jiminny) automated reports.* @param string $sortColumnThe column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to "created_at'.* aparam string SsortDirection The sort direction. Allowed values:'asc','desc'. Defaults to 'desc'.* dreturn collection<Automatedreport>12 usagespubLic tunction gecALLstandardkeportsstring ssortcolumn = "created_at",scring ssortbirection = 'desc: Collection (...* Retrieve all Ask Jiminny reports created by the given user.* dparam UsersuserThe user whose reports to retrieve.* dparam string ssortcolumnThe column to sort by. Allowed values: 'created_by', "created_at'. Defaults to 'created_at".* dparam string ssortuireccion ine sorc aireccion. ALlowed values:"asc","desc' etalus to 'dese'* drerurn couuectonsaurondredredor14 usagespublic function getAskJiminnyReportsByUserdUser Suser.string SsortColumn =created atwinasurt change0g 2.12.21: A new version is available. // View Changelog (today 10:33)Reiect1 eall= custom.log= laravel.logL SF [jiminny@localhost]c HS_local Liminny@localhost)console PRob)¿ console (EU]A console [STAGINGAskJiminnyReportActivityService.php© AskJiminnyReportActivityServiceTest.phpC RequestGenerateAskJiminnyReportJobTesclass AskJiminnyReportActiv100117157—184185205—206224231275orivate tunccion makeusprivate function makesapublic function testbetouo uc runction testhenpublic function testGetpublic function testGetpublic function testGetpublic function testfetpubuic tunction testbet$user = $this->makeSsavedSearch = Sthi$filterSet = Sthissthis->activitySearscapturedcriteria%thas->actvitvsaar->method( con=>WalLLke turnite"unus-›elasclckedosSthis->loqger->methsthis->service->qetsthis->assertNotllu$this->assertFalse(pubuic tunction tescuetV Accept File &+X Reject File 1 38 @Support Daily • in 2h 57 m100% |45]Tue 14 Apr 12:03:43RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MaAutomated Report1n7 211 and adc valication with loas insideGAutomatedRenortscommand. 0hn1 209-210et me read the current state of the command tile firstkead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycollection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSing leReport/warnlfNotApp Licab leForSchedu Lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsre.oslorv.oneAlso tix the import order (Collection should be before the models alphabetically):AutomatedReportsCommand.php+1-1• AutomatedReportsCommand.php+1 -1Done. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int IDNon-numenc → Uu d ookuo via tooptimizedoBoth use withTrashed() so soft-deleted reports are findable manuallygetReportByld() (AutomatedReportsCommand.php: 135-194) — checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.chockBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terminal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesWC1l -2 files +51>Ask anything (&+L)3,0l &uesde Claude Sonnet 46Reject allAccept allwinasun leamsuir-oia 4 spaces...
|
NULL
|
5919062211770618231
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodelaravelPetactonToo PhpStormFileFditViewNavigateCodelaravelPetactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vProject vD UnitActionsComponent› Configuration> MConsole> M ContractsM DomainD DTO• Enums_ Events_ Exceptions→ fixturesHelpersD Http>_Integrations> Minteractions• D Jobs> M Activitv> M AiAutomation>_ Audiov _ AutomatedReports©) CreateResultsTest.pl(C) RequestGenerateAs'© RequestGenerateRerC SendReportJobTest.(ch SendRenortMailJobtcallendar!1CrmDeaksksM Mailbox_ Streaming→ Team_ TelephonyD User(c) ImportRecallAlRecordins(c) SqsVisibilityControlTest→I Listeners→]Mal> MModelsM Notifications› M Observers› D PoliciesProvidersRepositories> D Rulesv Services_ Activity_ ActivityProvidersI IAvatarcallendarConference! CinmiM InternallKioskv _ AutomatedReports©) ActivityTypeServi(c) AskJiminnyRepor(c) AskJiminnyRepor(c AutomatedRenor(©) ReportController.phpJiminnybeouecommana.ongc) Automatedreoonscommane.oneutomatedRevor ssendCommane.onoC AddLayoutEntities.php(©) Team.php© AutomatedReportsRepository.php XC AutomatedReportsService.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php(0) RequestGenerate.sk.liminnvRenor.oh.ohn© RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass Aucomaceareporcskepostcory56 E72* Oreturn AutomatedReportpubLic tunccion createlarray paata). Аuсопасеакероrиr. . .л/**|* Find an automated report bu UUID* @param string Suuid* dreturn Automatedkeport/nullpubLic tuncclon tindbyuu1d(string puu1d): :Automatedкeрoгиre atomеероt.ee, оmерrcoupamizealoouna atmetTusagepublic function findByld0rUuid(string Sid0rUuid): ?AutomatedReportAcceotlif (is_numeric($idorUuid)) €return AutomatedReport::w1thlrashed->f1nd((1nt) s1d0rUu1d)*recurn Automacedkeport::Wichlrasned()-›wherel column: "Ju1d, Automatedкeporu:. couptimized slauruula-tirstun* Retrieve all standard (non-Ask Jiminny) automated reports.* @param string $sortColumnThe column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to "created_at'.* aparam string SsortDirection The sort direction. Allowed values:'asc','desc'. Defaults to 'desc'.* dreturn collection<Automatedreport>12 usagespubLic tunction gecALLstandardkeportsstring ssortcolumn = "created_at",scring ssortbirection = 'desc: Collection (...* Retrieve all Ask Jiminny reports created by the given user.* dparam UsersuserThe user whose reports to retrieve.* dparam string ssortcolumnThe column to sort by. Allowed values: 'created_by', "created_at'. Defaults to 'created_at".* dparam string ssortuireccion ine sorc aireccion. ALlowed values:"asc","desc' etalus to 'dese'* drerurn couuectonsaurondredredor14 usagespublic function getAskJiminnyReportsByUserdUser Suser.string SsortColumn =created atwinasurt change0g 2.12.21: A new version is available. // View Changelog (today 10:33)Reiect1 eall= custom.log= laravel.logL SF [jiminny@localhost]c HS_local Liminny@localhost)console PRob)¿ console (EU]A console [STAGINGAskJiminnyReportActivityService.php© AskJiminnyReportActivityServiceTest.phpC RequestGenerateAskJiminnyReportJobTesclass AskJiminnyReportActiv100117157—184185205—206224231275orivate tunccion makeusprivate function makesapublic function testbetouo uc runction testhenpublic function testGetpublic function testGetpublic function testGetpublic function testfetpubuic tunction testbet$user = $this->makeSsavedSearch = Sthi$filterSet = Sthissthis->activitySearscapturedcriteria%thas->actvitvsaar->method( con=>WalLLke turnite"unus-›elasclckedosSthis->loqger->methsthis->service->qetsthis->assertNotllu$this->assertFalse(pubuic tunction tescuetV Accept File &+X Reject File 1 38 @Support Daily • in 2h 57 m100% |45]Tue 14 Apr 12:03:43RequestGenerateAskJiminnyReportJobTestCascadeFixing ReportControlleAutomated Report MaAutomated Report1n7 211 and adc valication with loas insideGAutomatedRenortscommand. 0hn1 209-210et me read the current state of the command tile firstkead Automateakeportscommana.ongIcan see the user's approach— processsing lekeport already exists trom my earlier work dut qetkeporcbyla iswhat's being used in processReports.Ineed to implement getReportByld properly with validation + logs, and addine reposttory metnoo. Leume also check the eutumtnare supportycollection impon stuatlon:Searched use luminate Suooort Colectionin apo/Console/Commands/Renorts/AutomatedRenortsCommand.oh...Now implement both changes - the repository method and the getReportByld method with proper validation:Error whlle ealting Aucoma ceakepo rtscommand.ohoRead AutomatecRenortscommand.onoThe file is now only 140 lines - the user removed the processSing leReport/warnlfNotApp Licab leForSchedu Lemetnoas. Now limplementcom changes.• AutomatedReportsCommand.php+o -1Now add tindbyldoruuld to the repository:1 Aulomalecreoorsre.oslorv.oneAlso tix the import order (Collection should be before the models alphabetically):AutomatedReportsCommand.php+1-1• AutomatedReportsCommand.php+1 -1Done. Summary of changes:AUromareckedor skenos1rorv:: Tndbylouruu1o lautonarecrenorSkedos1t0rv.0no:4/—5492Numeric string → find() bv int IDNon-numenc → Uu d ookuo via tooptimizedoBoth use withTrashed() so soft-deleted reports are findable manuallygetReportByld() (AutomatedReportsCommand.php: 135-194) — checks all conditions that getActiveReportsByFrequency enforces, logging a warning to the log channel and printing a warn() to the terminal for each violationbut sull rerurns the repor so processing continues.chockBehaviour on failINot Tounewarhina loe + terminal warn, returns emoty collection skips processine)Inactive statuswarnino loe + terminal warn, continueseam not activewarnino lloo + terminal warn, continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo lod + terminal warn. continuesWC1l -2 files +51>Ask anything (&+L)3,0l &uesde Claude Sonnet 46Reject allAccept allwinasun leamsuir-oia 4 spaces...
|
10910
|
|
10917
|
217
|
4
|
2026-04-14T09:03:54.543327+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157434543_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.staging.jiminny.com/ondemand?topic_id[]=e02f09 app.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720
28
28
14
activities
Get Notified
Sort by Sort by: Most recent
Sort by
Sort by:
Most recent
Add Recording
common.ai-icon-alt
Topics:
Competitors
Show internal and external activities:
Show internal only
Save Search
Clear all
Saved searches Saved searches
Saved searches
Saved searches
Team
Search teams Search teams
Search teams
Search teams
Host
Search team members Search team members
Search team members
Search team members
Also search as participant...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11796875,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.12083333,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.14930555,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.17777778,"width":0.08671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SecurityGroup | EC2 | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.20625,"width":0.06484375,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.23472223,"width":0.18710938,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.26319444,"width":0.23476562,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.29166666,"width":0.1984375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"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":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","depth":4,"bounds":{"left":0.0,"top":0.33888888,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.34861112,"width":0.1640625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.3673611,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.37708333,"width":0.12617187,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.39583334,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.40555555,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.42430556,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4340278,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.45277777,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4625,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.48125,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.49097222,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.50972223,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.51944447,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.5395833,"width":0.08710937,"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":"Open 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":"Tabs from other devices","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 history (⇧⌘H)","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":"Open bookmarks (⌘B)","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":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 869720","depth":9,"bounds":{"left":0.09453125,"top":0.9875,"width":0.11796875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"28","depth":12,"bounds":{"left":0.096875,"top":0.925,"width":0.01875,"height":0.030555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"28","depth":14,"bounds":{"left":0.10664062,"top":0.9284722,"width":0.00546875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14","depth":14,"bounds":{"left":0.2421875,"top":0.061805554,"width":0.0109375,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activities","depth":14,"bounds":{"left":0.253125,"top":0.061805554,"width":0.031640626,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Get Notified","depth":13,"bounds":{"left":0.55078125,"top":0.058333334,"width":0.051171876,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Sort by Sort by: Most recent","depth":13,"bounds":{"left":0.36171874,"top":0.057638887,"width":0.091796875,"height":0.025694445},"value":"Sort by Sort by: Most recent","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Sort by","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sort by:","depth":15,"bounds":{"left":0.3660156,"top":0.06458333,"width":0.019921875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Most recent","depth":15,"bounds":{"left":0.3859375,"top":0.06458333,"width":0.030078124,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add Recording","depth":13,"bounds":{"left":0.4910156,"top":0.058333334,"width":0.056640625,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"common.ai-icon-alt","depth":14,"bounds":{"left":0.6050781,"top":0.05625,"width":0.0140625,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Topics:","depth":15,"bounds":{"left":0.24570313,"top":0.10069445,"width":0.014453125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Competitors","depth":15,"bounds":{"left":0.26210937,"top":0.10069445,"width":0.0265625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal and external activities:","depth":15,"bounds":{"left":0.30546874,"top":0.10069445,"width":0.07695313,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal only","depth":15,"bounds":{"left":0.384375,"top":0.10069445,"width":0.0390625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Save Search","depth":14,"bounds":{"left":0.440625,"top":0.09861111,"width":0.0390625,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear all","depth":14,"bounds":{"left":0.48359376,"top":0.09861111,"width":0.030078124,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Saved searches Saved searches","depth":13,"bounds":{"left":0.1265625,"top":0.05486111,"width":0.095703125,"height":0.025},"value":"Saved searches Saved searches","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Saved searches","depth":15,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Saved searches","depth":16,"bounds":{"left":0.13085938,"top":0.06111111,"width":0.037109375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team","depth":13,"bounds":{"left":0.1265625,"top":0.099305555,"width":0.012890625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search teams Search teams","depth":12,"bounds":{"left":0.1265625,"top":0.115277775,"width":0.095703125,"height":0.025},"value":"Search teams Search teams","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search teams","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search teams","depth":14,"bounds":{"left":0.13085938,"top":0.12222222,"width":0.032421876,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Host","depth":13,"bounds":{"left":0.1265625,"top":0.15,"width":0.01171875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search team members Search team members","depth":12,"bounds":{"left":0.1265625,"top":0.16944444,"width":0.095703125,"height":0.025},"value":"Search team members Search team members","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search team members","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search team members","depth":14,"bounds":{"left":0.13085938,"top":0.17638889,"width":0.05390625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Also search as participant","depth":13,"bounds":{"left":0.1265625,"top":0.19930555,"width":0.062109374,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8876423618644228424
|
1230984233880253134
|
visual_change
|
accessibility
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720
28
28
14
activities
Get Notified
Sort by Sort by: Most recent
Sort by
Sort by:
Most recent
Add Recording
common.ai-icon-alt
Topics:
Competitors
Show internal and external activities:
Show internal only
Save Search
Clear all
Saved searches Saved searches
Saved searches
Saved searches
Team
Search teams Search teams
Search teams
Search teams
Host
Search team members Search team members
Search team members
Search team members
Also search as participant...
|
NULL
|
|
10918
|
217
|
5
|
2026-04-14T09:03:57.556446+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157437556_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recentPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiZ Configure SSH access to multipleHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210niso searen as DarticloanuJY-20543 add AJ reports User pilcParuicipantSearch team members5 SRD-6779 | JY-20632 | Unable to$Jy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byMnyonePeriodAll timeTopicsCompetiActivity typlSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreselect Ai call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stages+ Add RecordingTopics: Competitors XShow internal and external activities: Show internal only X)( Save SearchClear allHostIActivityPSPhpStormJY-18909-automated-reports-ask-iiminny = 869720ContactActivityCurrent StagestatsTypeJiminny MSalestorce App IrainingJiminny WBekkie/ Jules - renewals and Contract..Jiminny MHandover training part 1Unknown Customer Md 6 Deal Insights playbook d $Exclaimer MExclaimer handoverAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer (played MTraining * - Jiminny App for Salesfor…Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer (played MAll-hands - Nov 1thiUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...Unlikelv ToRenew$42,126$I00 D 4D300D 2$0 228.ĐO DO0D6$0 922 1D7{0 83DUD3$082Đ0 D490 D 11 c2D 11Duration4/m44m34m17m43m28m51m25m39m41mA Get NotifiedDate11/0/2024.2:28 PMI25/06/2024, 3:09 PM10/06/2024, 12:02 PM28/05/2024, 12:56 PM13/03/2024, 11:28 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM0/119O/3.11:42 AMI31/10/2023, 11:35 AM25/10/2023, 11:46 AMQ InspectorP Filter URLsConsoleD DebuggerFllMLeSSMe Domain1206P.Mrlo.200 P...A8...206 P.A9...200 P...AD...200 P...A0...200 G..A aр....asoonxat o atrorm-stac xhn/api/5627310/envelope/2: fetch/api/5627310/envelope/?: fetch/api/5627310/envelope/?: fetch/api/5627310/envelope/?; fetchsearch?status[]=com200 G.A apр...200 G.A app...saved-search200 G.A ap...integrations•A xhr1206 G.A app...on-demand?topic_id200 P...A app...authenticate•A xhr200 G..A find...200 P...A r.lo...200 P...r.lo.200 P...Ar.lo..i?a=ponxaf/platform-stag xhr"a=oonxar olatromi?a=ponxaf/platform-stag xhr200 P..A r.lo...200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...r rlo..i?a=ponxaf/platform-stag xhr200 P... A r.lo...i?a=ponxaf/platform-stag xhrN1711U.TEa-pONAaIMIaLIUIISLa pEl200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...A r.lo...i?a=ponxaf/platform-stag xhr200) P...Ar.lo..iPa=ponxaf/plaWorm-stag xhr200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...r.lo..ra=ponxat plattorm-stac xhr200 P...A r.lo..i?a=ponxaf/platform-stag xhr200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...A r.o...i?a=ponxaf/platform-stag xhr200 P..r.lo.i?a=ponxaf/platform-stag xhr200 P...A r.o..i?a=ponxaf/platform-stag xhr200 P...A r.lo.i?a=ponxaf/platform-stag xhr200 P...A r.lo..i?a=ponxaf/platform-stag xhr200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...A r.lo...i?a=ponxaf/platform-stag xhr41 requests243.45 KB 2.22 MB transterredSupport Daily • in 2h 57 mA100% C•Tue 14 Apr 12:03:57N Network{) Style Editor( PerformanceO: MemoryE Storage0 99+_ Disable Cache No Throttling 50.HeadersCookiesRequestResponseTimingsSecurity5,59 KB0.Block Resend500 B 2 BGET nttos:aoostacing.lminnv.com/aoi/v/oage/on-cemanortooic 1c=e021093-co/0-4706003 286-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4500 B 2 B200500 B 2BHTTP/36.28 kB 2...55.54 kB (196.87 kB size)5.65 kB 1no-referrer-when-downgradesystem362kB 13.83 kB 5..55.54 .3.11 kB 9..slalusVersionTransferredReferrer PolicyDNS Resolutionkesponse Headers (2.900 Kb)alt-svc: h3=":443"; ma=86400cache-control: no-cache, onivatecontent-encoalng: ozlocontent-language: encontent-secuntv-policy-report-onv: scriot-src 'self 'unsate-inine 'unsate-eval" o oo: hitkawe307.70..1.74 Mb U.2.47 kB 0...4.91 kB 0.10.11 kB O...2.48 kB 0...24S KB 0.ucncio, slyto sie soll unsare mme mepencuttslasmebmimamcon mapedlonto yooMeaois.com nuos.cons.clouallare.com.mmg-sre sellmuos.con.stagmg.uminy.com/nuea.aoo.staging.liminnv.com [URL_WITH_CREDENTIALS]...
|
NULL
|
-8349689174085376944
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recentPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiZ Configure SSH access to multipleHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210niso searen as DarticloanuJY-20543 add AJ reports User pilcParuicipantSearch team members5 SRD-6779 | JY-20632 | Unable to$Jy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byMnyonePeriodAll timeTopicsCompetiActivity typlSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreselect Ai call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stages+ Add RecordingTopics: Competitors XShow internal and external activities: Show internal only X)( Save SearchClear allHostIActivityPSPhpStormJY-18909-automated-reports-ask-iiminny = 869720ContactActivityCurrent StagestatsTypeJiminny MSalestorce App IrainingJiminny WBekkie/ Jules - renewals and Contract..Jiminny MHandover training part 1Unknown Customer Md 6 Deal Insights playbook d $Exclaimer MExclaimer handoverAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer (played MTraining * - Jiminny App for Salesfor…Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer (played MAll-hands - Nov 1thiUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...Unlikelv ToRenew$42,126$I00 D 4D300D 2$0 228.ĐO DO0D6$0 922 1D7{0 83DUD3$082Đ0 D490 D 11 c2D 11Duration4/m44m34m17m43m28m51m25m39m41mA Get NotifiedDate11/0/2024.2:28 PMI25/06/2024, 3:09 PM10/06/2024, 12:02 PM28/05/2024, 12:56 PM13/03/2024, 11:28 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM0/119O/3.11:42 AMI31/10/2023, 11:35 AM25/10/2023, 11:46 AMQ InspectorP Filter URLsConsoleD DebuggerFllMLeSSMe Domain1206P.Mrlo.200 P...A8...206 P.A9...200 P...AD...200 P...A0...200 G..A aр....asoonxat o atrorm-stac xhn/api/5627310/envelope/2: fetch/api/5627310/envelope/?: fetch/api/5627310/envelope/?: fetch/api/5627310/envelope/?; fetchsearch?status[]=com200 G.A apр...200 G.A app...saved-search200 G.A ap...integrations•A xhr1206 G.A app...on-demand?topic_id200 P...A app...authenticate•A xhr200 G..A find...200 P...A r.lo...200 P...r.lo.200 P...Ar.lo..i?a=ponxaf/platform-stag xhr"a=oonxar olatromi?a=ponxaf/platform-stag xhr200 P..A r.lo...200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...r rlo..i?a=ponxaf/platform-stag xhr200 P... A r.lo...i?a=ponxaf/platform-stag xhrN1711U.TEa-pONAaIMIaLIUIISLa pEl200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...A r.lo...i?a=ponxaf/platform-stag xhr200) P...Ar.lo..iPa=ponxaf/plaWorm-stag xhr200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...r.lo..ra=ponxat plattorm-stac xhr200 P...A r.lo..i?a=ponxaf/platform-stag xhr200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...A r.o...i?a=ponxaf/platform-stag xhr200 P..r.lo.i?a=ponxaf/platform-stag xhr200 P...A r.o..i?a=ponxaf/platform-stag xhr200 P...A r.lo.i?a=ponxaf/platform-stag xhr200 P...A r.lo..i?a=ponxaf/platform-stag xhr200 P...A r.lo...i?a=ponxaf/platform-stag xhr200 P...A r.lo...i?a=ponxaf/platform-stag xhr41 requests243.45 KB 2.22 MB transterredSupport Daily • in 2h 57 mA100% C•Tue 14 Apr 12:03:57N Network{) Style Editor( PerformanceO: MemoryE Storage0 99+_ Disable Cache No Throttling 50.HeadersCookiesRequestResponseTimingsSecurity5,59 KB0.Block Resend500 B 2 BGET nttos:aoostacing.lminnv.com/aoi/v/oage/on-cemanortooic 1c=e021093-co/0-4706003 286-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4500 B 2 B200500 B 2BHTTP/36.28 kB 2...55.54 kB (196.87 kB size)5.65 kB 1no-referrer-when-downgradesystem362kB 13.83 kB 5..55.54 .3.11 kB 9..slalusVersionTransferredReferrer PolicyDNS Resolutionkesponse Headers (2.900 Kb)alt-svc: h3=":443"; ma=86400cache-control: no-cache, onivatecontent-encoalng: ozlocontent-language: encontent-secuntv-policy-report-onv: scriot-src 'self 'unsate-inine 'unsate-eval" o oo: hitkawe307.70..1.74 Mb U.2.47 kB 0...4.91 kB 0.10.11 kB O...2.48 kB 0...24S KB 0.ucncio, slyto sie soll unsare mme mepencuttslasmebmimamcon mapedlonto yooMeaois.com nuos.cons.clouallare.com.mmg-sre sellmuos.con.stagmg.uminy.com/nuea.aoo.staging.liminnv.com [URL_WITH_CREDENTIALS]...
|
10917
|
|
10919
|
217
|
6
|
2026-04-14T09:04:00.584545+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157440584_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodelaraveRetactonTool PhpStormFileFditViewNavigateCodelaraveRetactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vProject vD Unit_ ActionsComponent› Configuration> MConsoleM ContractsM DomainD DTO• Enums_ Events_ Exceptions→ fixtures_ HelpersD Http>_Integrations> Minteractions• D Jobs> M Activitv> M AiAutomation>_ Audiov _ AutomatedReports©) CreateResultsTest.pl(C) RequestGenerateAs'© RequestGenerateRerC SendReportJobTest.(ch SendRenortMailJobtcallendar!1CrmDeaksksM Mailbox_ Streaming→ Team_ TelephonyD User(c) ImportRecallAlRecordins(c) SqsVisibilityControlTest→I Listeners→]Mal> MModelsM Notifications› M ObserversPoliciesProvidersRepositories> D Rules• _ Services_ Activity_ ActivityProvidersI IAvatarcallendarConference! CinmiM InternallKioskv _ AutomatedReports©) ActivityTypeServi(c) AskJiminnyRepor(c) AskJiminnyRepor(c AutomatedRenorWinasun ch(©) ReportController.phpJiminnybeouecommana.ongC AutomatedReportsCommand.phpC) AutomatedReportsSendCommand.phpC AddLayoutEntities.php(C) Team.php© AutomatedReportsRepository.php XAulomaleakeporisservice.onp© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.php©) RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass Aucomaceareporcskepostcory52#15 V4A* dreturh AutomaredreporypubLic tunccion createlarray paata). Аuсопасеакероrиr. . .л/*** Find an automated report bu UUID* @param string suuid* dreturn Automatedreport/nullpubLic tuncclon tindbyuu1d(string puuld): :Automatedкeрoгиret atomaеероt.ee, оmеерrcouptamizeaoounaateetTusagepublic function findByld0rUuid(string $id0rUuid): ?AutomatedReportif (is_numeric($id0rUuid)) {return AutomatedReport::find((int) $1doruuid):recurn Automacedkeport.:where vuld", Automacedкeport.. couptimized(slauruula->tirstn/*** Retrieve all standard (non-Ask Jiminny) automated reports.* @param string $sortColumnThe column to sort by. Allowed values: "created_by','created_at'. Defaults to 'created_at'* @param string $sortDirection The sort direction. Allowed values:'asc','desc'. Defaults to 'desc'.* dreturn collection<Automatedreport>12 usagespubLic tunction gecALLstandardkeportsstring ssortcolumn="created_at",scring ssortbirection = 'desc: Collection (...*** Retrieve all Ask Jiminny reports created by the given user.* dparam UsersuserThe user whose reports to retrieve.* dparam string ssortcolumnThe column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at".* @param string $sortDirection The sort direction. Allowed values:"asc", "desc". veraults to "desc".* drerurn couuectonsaurondredredor"4 usadespublic function getAskJiminnyReportsByUserdUser suser.string SsortColumn = 'created at',stoind contiinection = "decc'ancelod loday 10:33.= custom.log= laravel.logL SF [jiminny@localhost]c HS_local Liminny@localhost)console PRob)¿ console (EU]4 console [STAGING)© AsKJiminnyReportActivityService.php© AskJiminnyReportActivityServiceTest.phpC RequestGenerateAskJiminnyReportJobTesclass AskJiminnyReportActiv71 >1A0 C>118 M >157 % >— 185 % >2052A6 VA S2251220250231—2322332342362452462501251252 D>275orivate tunccion makeusprivate function makesapublic function testbetpubuic tunction testbetpublic function testGetpublic function testGetpublic function testGetpublic function testfetpubuic tunction testbet$user = schis->makeSsavedSearch = Sthi$filterSet = Sthis-sthis-Yactivitysascapturedcriteria"thns->activitvsas->methodl cor- VaLLketurnlanunus-›elasu ickenps$this->logger->methsthis->service->qetsthis->assertNotllu$this->assertFalse(pubuic tunction tescuetAccept File &+X Reject File 1%gSupport Daily • in 2h 57 m100% |45]Tue 14 Apr 12:04:00RequestGenerateAskJiminnyReportJobTest vCascadeFixing ReportControlleAutomated Report Ma© Automated Report !nand.php#L211 and add validation with logs insideohu Lolla Leunevot tscomiallus pnowL405-419Let me read the current state of the command file first.kead Automareakeporscommand.ongIcan see the user's approach - processsing LeReport already exists trom my earlier work but getReportByld iswhat's being used in processReports.Ineed to implement getReportById properly with validation + logs, and addthe reposilory method. Let me also check the Illuminate Support collection impon situation:Searched use Illuminate (Support Collection in app/Console/Commands/Reports/AutomatedReportsCommand.ph.Now implement both changes - the repository method and the getReportByld method with proper validation:trror while editing automacedkeportscommand. ppkead Automateakeportscommana.ongThe file is now only 140 lines - the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now "l implement oot changes:AutomatedReportsCommand.php+57 -1Now add findByldorUuid to the repository:• AutomatedReportsRepository.phpAlso fix the import order Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1• AutomatedReportsCommand.php+1-1Done. summary or changes:AutomatedReportsRepository::findByld0rUuid() (AutomatedReportsRepository-php:47-54):• Numeric string → find() by int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand.php:135-194) - checks all conditions that getActiveReportsByFrequency entorces, loceine a warnine to the loe channel ane orintne a warn lo the terminal tor eaeh violation,out stlll returns the revort so orocessina continuesCheckBehaviour on failNot toundwarnino loo + terminal warn. returns emory collection skios processino))nactive statuswarning log + terminal warn, continuesTeam not activewarnind llod + terminal warn. continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo log + terminal warn, continuesWGAl mAsk anything (&+L)401 &uesde Claude Sonnet 46Winasun leams50:8uir-oia 4 spaces...
|
NULL
|
-7192952862747346748
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodelaraveRetactonTool PhpStormFileFditViewNavigateCodelaraveRetactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vProject vD Unit_ ActionsComponent› Configuration> MConsoleM ContractsM DomainD DTO• Enums_ Events_ Exceptions→ fixtures_ HelpersD Http>_Integrations> Minteractions• D Jobs> M Activitv> M AiAutomation>_ Audiov _ AutomatedReports©) CreateResultsTest.pl(C) RequestGenerateAs'© RequestGenerateRerC SendReportJobTest.(ch SendRenortMailJobtcallendar!1CrmDeaksksM Mailbox_ Streaming→ Team_ TelephonyD User(c) ImportRecallAlRecordins(c) SqsVisibilityControlTest→I Listeners→]Mal> MModelsM Notifications› M ObserversPoliciesProvidersRepositories> D Rules• _ Services_ Activity_ ActivityProvidersI IAvatarcallendarConference! CinmiM InternallKioskv _ AutomatedReports©) ActivityTypeServi(c) AskJiminnyRepor(c) AskJiminnyRepor(c AutomatedRenorWinasun ch(©) ReportController.phpJiminnybeouecommana.ongC AutomatedReportsCommand.phpC) AutomatedReportsSendCommand.phpC AddLayoutEntities.php(C) Team.php© AutomatedReportsRepository.php XAulomaleakeporisservice.onp© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.php© RequestGenerateAskJiminnyReportJob.php©) RequestGenerateReportJob.php(©) AutomatedReportResult.phpc) Automatedkeport.oneclass Aucomaceareporcskepostcory52#15 V4A* dreturh AutomaredreporypubLic tunccion createlarray paata). Аuсопасеакероrиr. . .л/*** Find an automated report bu UUID* @param string suuid* dreturn Automatedreport/nullpubLic tuncclon tindbyuu1d(string puuld): :Automatedкeрoгиret atomaеероt.ee, оmеерrcouptamizeaoounaateetTusagepublic function findByld0rUuid(string $id0rUuid): ?AutomatedReportif (is_numeric($id0rUuid)) {return AutomatedReport::find((int) $1doruuid):recurn Automacedkeport.:where vuld", Automacedкeport.. couptimized(slauruula->tirstn/*** Retrieve all standard (non-Ask Jiminny) automated reports.* @param string $sortColumnThe column to sort by. Allowed values: "created_by','created_at'. Defaults to 'created_at'* @param string $sortDirection The sort direction. Allowed values:'asc','desc'. Defaults to 'desc'.* dreturn collection<Automatedreport>12 usagespubLic tunction gecALLstandardkeportsstring ssortcolumn="created_at",scring ssortbirection = 'desc: Collection (...*** Retrieve all Ask Jiminny reports created by the given user.* dparam UsersuserThe user whose reports to retrieve.* dparam string ssortcolumnThe column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at".* @param string $sortDirection The sort direction. Allowed values:"asc", "desc". veraults to "desc".* drerurn couuectonsaurondredredor"4 usadespublic function getAskJiminnyReportsByUserdUser suser.string SsortColumn = 'created at',stoind contiinection = "decc'ancelod loday 10:33.= custom.log= laravel.logL SF [jiminny@localhost]c HS_local Liminny@localhost)console PRob)¿ console (EU]4 console [STAGING)© AsKJiminnyReportActivityService.php© AskJiminnyReportActivityServiceTest.phpC RequestGenerateAskJiminnyReportJobTesclass AskJiminnyReportActiv71 >1A0 C>118 M >157 % >— 185 % >2052A6 VA S2251220250231—2322332342362452462501251252 D>275orivate tunccion makeusprivate function makesapublic function testbetpubuic tunction testbetpublic function testGetpublic function testGetpublic function testGetpublic function testfetpubuic tunction testbet$user = schis->makeSsavedSearch = Sthi$filterSet = Sthis-sthis-Yactivitysascapturedcriteria"thns->activitvsas->methodl cor- VaLLketurnlanunus-›elasu ickenps$this->logger->methsthis->service->qetsthis->assertNotllu$this->assertFalse(pubuic tunction tescuetAccept File &+X Reject File 1%gSupport Daily • in 2h 57 m100% |45]Tue 14 Apr 12:04:00RequestGenerateAskJiminnyReportJobTest vCascadeFixing ReportControlleAutomated Report Ma© Automated Report !nand.php#L211 and add validation with logs insideohu Lolla Leunevot tscomiallus pnowL405-419Let me read the current state of the command file first.kead Automareakeporscommand.ongIcan see the user's approach - processsing LeReport already exists trom my earlier work but getReportByld iswhat's being used in processReports.Ineed to implement getReportById properly with validation + logs, and addthe reposilory method. Let me also check the Illuminate Support collection impon situation:Searched use Illuminate (Support Collection in app/Console/Commands/Reports/AutomatedReportsCommand.ph.Now implement both changes - the repository method and the getReportByld method with proper validation:trror while editing automacedkeportscommand. ppkead Automateakeportscommana.ongThe file is now only 140 lines - the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now "l implement oot changes:AutomatedReportsCommand.php+57 -1Now add findByldorUuid to the repository:• AutomatedReportsRepository.phpAlso fix the import order Collection should be before the models alphabetically):• AutomatedReportsCommand.php+1 -1• AutomatedReportsCommand.php+1-1Done. summary or changes:AutomatedReportsRepository::findByld0rUuid() (AutomatedReportsRepository-php:47-54):• Numeric string → find() by int ID• Non-numeric → UUID lookup via toOptimized()Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand.php:135-194) - checks all conditions that getActiveReportsByFrequency entorces, loceine a warnine to the loe channel ane orintne a warn lo the terminal tor eaeh violation,out stlll returns the revort so orocessina continuesCheckBehaviour on failNot toundwarnino loo + terminal warn. returns emory collection skios processino))nactive statuswarning log + terminal warn, continuesTeam not activewarnind llod + terminal warn. continuesExoiredwarning log + terminal warn, continuesFrequency wouldn't run todayinfo log + terminal warn, continuesWGAl mAsk anything (&+L)401 &uesde Claude Sonnet 46Winasun leams50:8uir-oia 4 spaces...
|
NULL
|
|
10921
|
217
|
7
|
2026-04-14T09:04:03.816186+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157443816_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditFV faVsco.js vViewNavigateCodeLara PhpStormFileEditFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProjectv© AiPromptRepository.php© AskAnythingRepository.phj© AutomatedReportsReposits© CallImportRepository.php© CoachingFeedbackReposit© CrmTemplateFilterRepositc© CrmTemplateRepository.pt© CrmTemplateRunRepositor© DeviceRepository.php© ElasticActivityRepository.plC EmailMessageRepository.p© GenericAiPromptRepositorC) GroupRepository.phpInboxEmailBatchRepositoryInboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.php© NotificationRepository.php© ParticipantRepository.phpC) ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php© PlaylistActivityRepository.f©PlaylistRepository.php© PlaylistShareRepository.ph©QuestionRepository.php© RoleChangeEventRepositor© RoleRepository.php©SearchRepository.php© SnapshotRepository.phpC) SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.TaskRepository.php© TeamAiContextRepository.© TeamDomainsRepository.p© TeamInsightsRepository.pr© TeamRepository.php© ThemeRepository.php© TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.ph© TranscriptionSummaryRepr© UserRepository.php© VocabularyRepository.php> DRulesv D Services> D Activity> M AiReports> Avatar> CalendarConference>DCrm© ReportController.phpC AutomatedReportsSendCommand.php) AutomatedReportsService.php© JiminnyDebugCommand.php© AddLayoutEntities.php© CreateHeldActivityEvent.phpAutomatedReportsCommand.phpC) Team.php© AutomatedReportsRepository.phpx© TrackProviderInstalledEvent.php© ActivityLogged.phpC RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsRepositoryB1 M41* @return AutomatedReportpublic function create(array $data): AutomatedReportf..}* Find an automated report by UUID* @param string $uvid71 % >* @return AutomatedReport/nullpublic function findByUuid(string $uvid): ?AutomatedReport118 % >return AutomatedReport: :Where('uvid', AutomatedReport::to0ptimized(Suvid))->first();157 % >Tusdyepublic function findById0rUuid(string $id0rUvid): ?AutomatedReportif (is_numeric($idOrUuid)) {return AutomatedReport: :where('uvid', AutomatedReport:: toOptimized(SidOrUuid))->first();206 г >224225 D22622722856/*** Retrieve all standard (non-Ask Jiminny) automated reports.250LOL232-233234* @param string $sortColumnThe column to sort by. Allowed values: 'created_by', 'created 235* Oparam string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults t 236* drerurn couuectonsaurondredredor*/12 usagespublic function getAllStandardReports(string $sortColumn ='created_at',string $sortDirection = 'desc'): Collection {...}243/*** Retrieve all Ask Ziminny reports created by the given user.247248249250251252 >* Oparam User$userThe user whose reports to retrieve.*oparan scring esortho lunnIne cocumn co sorc oy. ALcowed vacues. creaced_oy , "creaced 275)* Oparam string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. DefaultsT* Oreturn Collection<AutomatedReport>14 usagesWindsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.logconsole PRODE laravel.log4 console [EUlA SF [jiminny@localhost]A HS_local [iminny@localhost]A console [STAGING]© AskJiminnyReportActivityService.php© AskJiminnyReportActivityServiceTest.php x© RequestGenerateAskJiminnyReportJobTest.phpclass AskuLminnyreporcActIviLyservicelest extenas lescuase29 6t >protected function setUp(): voidf...}11 usagesprivate function makeFilter(string $key, ?string $value): SearchFilter&Mo8 usagesprivate function makeUser(): User&Mock0bjectf.}8 usagesprivate function makeSavedSearch(array $filters): Search&Mock0bjectf...}public function testGetActivityIdsForSavedSearchReturnsIds(): voidf...}pubLic tunctlon testbecAcuivitylasrorsavedsearchreturnsempcywnennoresuluspublic function testGetActivityIdsFilters0utDateFilters(): void{...}public function testGetActivityIdsFilters0utClosingPeriodDateFilters():.vpublic function testGetActivityIdsHandLesArrayFilters(): voidf...}public function testGetActivityIdsHandLesScalarFilters(): voidf...}public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFir:$user = $this->makeUserO:lnsaveobearcn = ounsezllakesaveosearco.uiur$filterSet = $this->createMock( originalClassName: FilterDefinitionCollect$this-›activitySearch->method( constraint: 'getArrayFilterKeys')->willRet$capturedCriteria = null;$this-›activitySearch->expects($this->onceO))->method( constraint:"getOnDemandPageFilterSet')->willReturnCallback(function (Criteria $criteria) use ($filterse$this->elasticRepository->method( constraint: 'onDemandSearchIdsOnLy'D+>u$this->Logger->method ( constraint: "info'):$this->service->getActivityIdsForSavedSearch($savedSearch, $user);$this->assertNotNull($capturedCriteria);$this-›assertFalse($capturedCriteria->isFirstRequestO);public function testGetActivityIdsLogsWithCorrectContext(): voidf...3, 0lablSupport Daily - in 2h 56 mA• RequestGenerateAskJiminnyReportJobTest v100% C•Tue 14 Apr 12:04:03CascadeFixing ReportControlleAutomated Report Mar© Automated Report !nand. php#L211 and add validation with logs insideohu Lolla Leunevot tscomlahus pnorL409-419wLet me read the current state of the command file first.kead Automareakeporscommand.ongI can see the user's approach - processSingleReport already exists from my earlier work but getReportById iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addthe reposilory method. Let me also check the Illuminate Support collection impon situation:Searched use Illuminate (Support Collection in app/Console/Commands/Reports/AutomatedReportsCommand.ph.Now implement both changes - the repository method and the getReportById method with proper validation:trror while editing automacedkeportscommand. pnpkead Automateakeporscommana.ongThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now "l implement oot changes:• AutomatedReportsCommand.phpNow add findByIdOrUuid to the repository:• AutomatedReportsRepository.phpAlso fix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php• AutomatedReportsCommand.php+57 -1+1-1+I-1Done. summary or changes:AutomatedReportsRepository::findById0rUuid() (AutomatedReportsRepository-php: 47-54):• Numeric string → find() by int ID• Non-numeric → UUID lookup via toOptimized()• Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency entorces, loceine a warnine to the loe channel ane orintne a warn lo the terminal tor eaeh violation,but still returns the report so processing continues:CheckBehaviour on failNot toundwarnino oo + terminal warn. returns emory collection skios processino))nactive statusTeam not activeExpiredwarning log + terminal warn, continueswarning log + terminal warn, continueswarning log + terminal warn, continuesrrecuency woulentrun toodyinfo log + terminal warn, continuesGAl mAsk anything (2*L)+ <> CodeClaude Sonnet 4.6Winasun leams50:8uir-o( 4 spaces...
|
NULL
|
4147674210703858553
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditFV faVsco.js vViewNavigateCodeLara PhpStormFileEditFV faVsco.js vViewNavigateCodeLaravelRefactor#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProjectv© AiPromptRepository.php© AskAnythingRepository.phj© AutomatedReportsReposits© CallImportRepository.php© CoachingFeedbackReposit© CrmTemplateFilterRepositc© CrmTemplateRepository.pt© CrmTemplateRunRepositor© DeviceRepository.php© ElasticActivityRepository.plC EmailMessageRepository.p© GenericAiPromptRepositorC) GroupRepository.phpInboxEmailBatchRepositoryInboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.php© NotificationRepository.php© ParticipantRepository.phpC) ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php© PlaylistActivityRepository.f©PlaylistRepository.php© PlaylistShareRepository.ph©QuestionRepository.php© RoleChangeEventRepositor© RoleRepository.php©SearchRepository.php© SnapshotRepository.phpC) SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.TaskRepository.php© TeamAiContextRepository.© TeamDomainsRepository.p© TeamInsightsRepository.pr© TeamRepository.php© ThemeRepository.php© TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.ph© TranscriptionSummaryRepr© UserRepository.php© VocabularyRepository.php> DRulesv D Services> D Activity> M AiReports> Avatar> CalendarConference>DCrm© ReportController.phpC AutomatedReportsSendCommand.php) AutomatedReportsService.php© JiminnyDebugCommand.php© AddLayoutEntities.php© CreateHeldActivityEvent.phpAutomatedReportsCommand.phpC) Team.php© AutomatedReportsRepository.phpx© TrackProviderInstalledEvent.php© ActivityLogged.phpC RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsRepositoryB1 M41* @return AutomatedReportpublic function create(array $data): AutomatedReportf..}* Find an automated report by UUID* @param string $uvid71 % >* @return AutomatedReport/nullpublic function findByUuid(string $uvid): ?AutomatedReport118 % >return AutomatedReport: :Where('uvid', AutomatedReport::to0ptimized(Suvid))->first();157 % >Tusdyepublic function findById0rUuid(string $id0rUvid): ?AutomatedReportif (is_numeric($idOrUuid)) {return AutomatedReport: :where('uvid', AutomatedReport:: toOptimized(SidOrUuid))->first();206 г >224225 D22622722856/*** Retrieve all standard (non-Ask Jiminny) automated reports.250LOL232-233234* @param string $sortColumnThe column to sort by. Allowed values: 'created_by', 'created 235* Oparam string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults t 236* drerurn couuectonsaurondredredor*/12 usagespublic function getAllStandardReports(string $sortColumn ='created_at',string $sortDirection = 'desc'): Collection {...}243/*** Retrieve all Ask Ziminny reports created by the given user.247248249250251252 >* Oparam User$userThe user whose reports to retrieve.*oparan scring esortho lunnIne cocumn co sorc oy. ALcowed vacues. creaced_oy , "creaced 275)* Oparam string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. DefaultsT* Oreturn Collection<AutomatedReport>14 usagesWindsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.logconsole PRODE laravel.log4 console [EUlA SF [jiminny@localhost]A HS_local [iminny@localhost]A console [STAGING]© AskJiminnyReportActivityService.php© AskJiminnyReportActivityServiceTest.php x© RequestGenerateAskJiminnyReportJobTest.phpclass AskuLminnyreporcActIviLyservicelest extenas lescuase29 6t >protected function setUp(): voidf...}11 usagesprivate function makeFilter(string $key, ?string $value): SearchFilter&Mo8 usagesprivate function makeUser(): User&Mock0bjectf.}8 usagesprivate function makeSavedSearch(array $filters): Search&Mock0bjectf...}public function testGetActivityIdsForSavedSearchReturnsIds(): voidf...}pubLic tunctlon testbecAcuivitylasrorsavedsearchreturnsempcywnennoresuluspublic function testGetActivityIdsFilters0utDateFilters(): void{...}public function testGetActivityIdsFilters0utClosingPeriodDateFilters():.vpublic function testGetActivityIdsHandLesArrayFilters(): voidf...}public function testGetActivityIdsHandLesScalarFilters(): voidf...}public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFir:$user = $this->makeUserO:lnsaveobearcn = ounsezllakesaveosearco.uiur$filterSet = $this->createMock( originalClassName: FilterDefinitionCollect$this-›activitySearch->method( constraint: 'getArrayFilterKeys')->willRet$capturedCriteria = null;$this-›activitySearch->expects($this->onceO))->method( constraint:"getOnDemandPageFilterSet')->willReturnCallback(function (Criteria $criteria) use ($filterse$this->elasticRepository->method( constraint: 'onDemandSearchIdsOnLy'D+>u$this->Logger->method ( constraint: "info'):$this->service->getActivityIdsForSavedSearch($savedSearch, $user);$this->assertNotNull($capturedCriteria);$this-›assertFalse($capturedCriteria->isFirstRequestO);public function testGetActivityIdsLogsWithCorrectContext(): voidf...3, 0lablSupport Daily - in 2h 56 mA• RequestGenerateAskJiminnyReportJobTest v100% C•Tue 14 Apr 12:04:03CascadeFixing ReportControlleAutomated Report Mar© Automated Report !nand. php#L211 and add validation with logs insideohu Lolla Leunevot tscomlahus pnorL409-419wLet me read the current state of the command file first.kead Automareakeporscommand.ongI can see the user's approach - processSingleReport already exists from my earlier work but getReportById iswhat's being used in processReports. I need to implement getReportById properly with validation + logs, and addthe reposilory method. Let me also check the Illuminate Support collection impon situation:Searched use Illuminate (Support Collection in app/Console/Commands/Reports/AutomatedReportsCommand.ph.Now implement both changes - the repository method and the getReportById method with proper validation:trror while editing automacedkeportscommand. pnpkead Automateakeporscommana.ongThe file is now only 140 lines — the user removed the processSingleReport/warnIfNotApplicableForSchedulemetnoas. Now "l implement oot changes:• AutomatedReportsCommand.phpNow add findByIdOrUuid to the repository:• AutomatedReportsRepository.phpAlso fix the import order (Collection should be before the models alphabetically):• AutomatedReportsCommand.php• AutomatedReportsCommand.php+57 -1+1-1+I-1Done. summary or changes:AutomatedReportsRepository::findById0rUuid() (AutomatedReportsRepository-php: 47-54):• Numeric string → find() by int ID• Non-numeric → UUID lookup via toOptimized()• Both use withTrashed() so soft-deleted reports are findable manuallygetReportById() (AutomatedReportsCommand. php:135-194) - checks all conditions that getActiveReportsByFrequency entorces, loceine a warnine to the loe channel ane orintne a warn lo the terminal tor eaeh violation,but still returns the report so processing continues:CheckBehaviour on failNot toundwarnino oo + terminal warn. returns emory collection skios processino))nactive statusTeam not activeExpiredwarning log + terminal warn, continueswarning log + terminal warn, continueswarning log + terminal warn, continuesrrecuency woulentrun toodyinfo log + terminal warn, continuesGAl mAsk anything (2*L)+ <> CodeClaude Sonnet 4.6Winasun leams50:8uir-o( 4 spaces...
|
10919
|
|
10924
|
217
|
9
|
2026-04-14T09:04:11.570224+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157451570_m2.jpg...
|
PhpStorm
|
faVsco.js – AskJiminnyReportActivityServiceTest.ph faVsco.js – AskJiminnyReportActivityServiceTest.php...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app
.circleci
.cursor
.github
.sonarlint
.vscode
.windsurf
app, sources root
Actions
Component
Configuration
Console
Commands
Activities
Analytics
Calendars
Crm
Hubspot
IntegrationApp
AddLayoutEntities.php, class
AutologDelayedCommand.php, class
BullhornCommandAbstract.php, abstract class
BullhornPingCommand.php, class
BullhornSearchCommand.php, class
BullhornSessionCommand.php, class
CheckActivityLoggableCommand.php, final class
CleanDuplicateFieldDataCommand.php, class
FullSyncOpportunityCommand.php, class
LogActivitiesCommand.php, final class
ManageSyncStrategyCommand.php, class
MatchCrmObjectsCommand.php, class
MatchOpportunityActivitiesCommand.php, class
MigrateProvider.php, class
ProcessHubspotObjectsSyncBatches.php, class
PurgeDeletedOpportunitiesCommand.php, class
ResetGovernorLimits.php, class
SendNotLogged.php, class
SetupActivityTypeForFollowUp.php, final class
SetupCloseCrm.php, class
SetupCopperCrm.php, class
SetupCrmCommand.php, abstract class
SetupLayouts.php, class
SyncAccount.php, class
SyncContact.php, class
SyncFieldMetadata.php, class
SyncHubspotActiveDeals.php, class
SyncLead.php, class
SyncObjects.php, class
SyncOpportunitiesMissingFieldDataCommand.php, class
SyncOpportunity.php, class
SyncProfileMetadata.php, class
SyncTeamMetadata.php, class
UpdateOpportunitySpecifications.php, class
DealInsights
Dev
Dialers
DTOs
Elasticsearch
EngagementStats
GeckoExport
Livestream
Mailboxes
Migrate
PlaybackThemes
Playbooks
Playlists
Postmark
ProphetAi
Reports
AutomatedReportsCommand.php, class...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","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.76171875,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.7796875,"top":0.017361112,"width":0.12109375,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.049609374,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.009375,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.009375,"height":0.0},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"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.23320313,"top":1.0,"width":0.008203125,"height":0.0},"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 Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","depth":4,"bounds":{"left":0.490625,"top":0.12777779,"width":0.3347656,"height":0.8722222},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.049609374,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"15","depth":4,"bounds":{"left":0.4234375,"top":0.1736111,"width":0.011328125,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.43710938,"top":0.1736111,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.4484375,"top":0.17222223,"width":0.00859375,"height":0.015972223},"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.45703125,"top":0.17222223,"width":0.008203125,"height":0.015972223},"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\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","depth":4,"bounds":{"left":0.15234375,"top":0.0,"width":0.39882812,"height":1.0},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\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.0140625,"top":0.041666668,"width":0.028515626,"height":0.021527778},"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app ~/jiminny/app","depth":6,"role_description":"text"},{"role":"AXStaticText","text":".circleci","depth":7,"role_description":"text"},{"role":"AXStaticText","text":".cursor","depth":7,"role_description":"text"},{"role":"AXStaticText","text":".github","depth":7,"role_description":"text"},{"role":"AXStaticText","text":".sonarlint","depth":7,"role_description":"text"},{"role":"AXStaticText","text":".vscode","depth":7,"role_description":"text"},{"role":"AXStaticText","text":".windsurf","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"app, sources root","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Actions","depth":8,"role_description":"text"},{"role":"AXStaticText","text":"Component","depth":8,"role_description":"text"},{"role":"AXStaticText","text":"Configuration","depth":8,"role_description":"text"},{"role":"AXStaticText","text":"Console","depth":8,"role_description":"text"},{"role":"AXStaticText","text":"Commands","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Activities","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Analytics","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Calendars","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Crm","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Hubspot","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"IntegrationApp","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"AddLayoutEntities.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"AutologDelayedCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"BullhornCommandAbstract.php, abstract class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"BullhornPingCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"BullhornSearchCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"BullhornSessionCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"CheckActivityLoggableCommand.php, final class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"CleanDuplicateFieldDataCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"FullSyncOpportunityCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"LogActivitiesCommand.php, final class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"ManageSyncStrategyCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"MatchCrmObjectsCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"MatchOpportunityActivitiesCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"MigrateProvider.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"ProcessHubspotObjectsSyncBatches.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"PurgeDeletedOpportunitiesCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"ResetGovernorLimits.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SendNotLogged.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SetupActivityTypeForFollowUp.php, final class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SetupCloseCrm.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SetupCopperCrm.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SetupCrmCommand.php, abstract class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SetupLayouts.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SyncAccount.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SyncContact.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SyncFieldMetadata.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SyncHubspotActiveDeals.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SyncLead.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SyncObjects.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SyncOpportunitiesMissingFieldDataCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SyncOpportunity.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SyncProfileMetadata.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"SyncTeamMetadata.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"UpdateOpportunitySpecifications.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"DealInsights","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Dev","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Dialers","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"DTOs","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Elasticsearch","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"EngagementStats","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"GeckoExport","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Livestream","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Mailboxes","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Migrate","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"PlaybackThemes","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Playbooks","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Playlists","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Postmark","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"ProphetAi","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Reports","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"AutomatedReportsCommand.php, class","depth":11,"role_description":"text"}]...
|
8105292536523201559
|
-8276794435621667532
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app
.circleci
.cursor
.github
.sonarlint
.vscode
.windsurf
app, sources root
Actions
Component
Configuration
Console
Commands
Activities
Analytics
Calendars
Crm
Hubspot
IntegrationApp
AddLayoutEntities.php, class
AutologDelayedCommand.php, class
BullhornCommandAbstract.php, abstract class
BullhornPingCommand.php, class
BullhornSearchCommand.php, class
BullhornSessionCommand.php, class
CheckActivityLoggableCommand.php, final class
CleanDuplicateFieldDataCommand.php, class
FullSyncOpportunityCommand.php, class
LogActivitiesCommand.php, final class
ManageSyncStrategyCommand.php, class
MatchCrmObjectsCommand.php, class
MatchOpportunityActivitiesCommand.php, class
MigrateProvider.php, class
ProcessHubspotObjectsSyncBatches.php, class
PurgeDeletedOpportunitiesCommand.php, class
ResetGovernorLimits.php, class
SendNotLogged.php, class
SetupActivityTypeForFollowUp.php, final class
SetupCloseCrm.php, class
SetupCopperCrm.php, class
SetupCrmCommand.php, abstract class
SetupLayouts.php, class
SyncAccount.php, class
SyncContact.php, class
SyncFieldMetadata.php, class
SyncHubspotActiveDeals.php, class
SyncLead.php, class
SyncObjects.php, class
SyncOpportunitiesMissingFieldDataCommand.php, class
SyncOpportunity.php, class
SyncProfileMetadata.php, class
SyncTeamMetadata.php, class
UpdateOpportunitySpecifications.php, class
DealInsights
Dev
Dialers
DTOs
Elasticsearch
EngagementStats
GeckoExport
Livestream
Mailboxes
Migrate
PlaybackThemes
Playbooks
Playlists
Postmark
ProphetAi
Reports
AutomatedReportsCommand.php, class...
|
10923
|
|
10927
|
217
|
11
|
2026-04-14T09:04:18.121929+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157458121_m2.jpg...
|
PhpStorm
|
faVsco.js – AskJiminnyReportActivityServiceTest.ph faVsco.js – AskJiminnyReportActivityServiceTest.php...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","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.76171875,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.7796875,"top":0.017361112,"width":0.12109375,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.049609374,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.009375,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.009375,"height":0.0},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"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.23320313,"top":1.0,"width":0.008203125,"height":0.0},"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 Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","depth":4,"bounds":{"left":0.490625,"top":0.12777779,"width":0.3347656,"height":0.8722222},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.049609374,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"15","depth":4,"bounds":{"left":0.4234375,"top":0.1736111,"width":0.011328125,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.43710938,"top":0.1736111,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.4484375,"top":0.17222223,"width":0.00859375,"height":0.015972223},"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.45703125,"top":0.17222223,"width":0.008203125,"height":0.015972223},"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\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","depth":4,"bounds":{"left":0.15234375,"top":0.0,"width":0.39882812,"height":1.0},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\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.0140625,"top":0.041666668,"width":0.028515626,"height":0.021527778},"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.23320313,"top":1.0,"width":0.01015625,"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
710421231581632929
|
-8276790037575160396
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected...
|
10926
|
|
10928
|
217
|
12
|
2026-04-14T09:04:36.333117+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157476333_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.staging.jiminny.com/ondemand?topic_id[]=e02f09 app.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720
28
28
14
activities
Get Notified
Sort by Sort by: Most recent
Sort by
Sort by:
Most recent
Add Recording
common.ai-icon-alt
Topics:
Competitors
Show internal and external activities:
Show internal only
Save Search
Clear all
Saved searches Saved searches
Saved searches
Saved searches
Team
Search teams Search teams
Search teams
Search teams
Host
Search team members Search team members
Search team members
Search team members
Also search as participant
Participant
Search team members Search team members
Search team members
Search team members
Customer
Customer
Transcript
Search transcript
Select option Said by
Select option
Said by
Select option Anyone
Select option
Anyone
Period
All time
Topics
Competitors × Search topics
Competitors
×
Search topics
Activity type
Search activity types Search activity types
Search activity types
Search activity types
Duration
Min (minutes)
Max (minutes)
AI call score
Select AI call score Select AI call score
Select AI call score
Select AI call score
Automated call score
Select automated call score Select automated call score
Select automated call score
Select automated call score
Coaching score
Select coaching score Select coaching score
Select coaching score
Select coaching score
Coach
Search coaches Search coaches
Search coaches
Search coaches
Stage at call
Search stages Search stages
Search stages
Search stages
Current stage
Search stages Search stages
Search stages
Search stages
Language
Search language Search language
Search language
Search language
Playlist
Search playlists Search playlists
Search playlists
Search playlists
Pending CRM notes
Not logged to CRM
Recorded
Search recorded Search recorded
Search recorded
Search recorded
Show internal and external activities
Select option Show internal only
Select option
Show internal only
Platform
Search platforms Search platforms
Search platforms
Search platforms
Call type
Search channels Search channels
Search channels
Search channels
Outcome
Search CRM Outcome Search CRM Outcome
Search CRM Outcome
Search CRM Outcome
Deal value
Min (amount)
Max (amount)
Deal close date
All time
Deal age
0
1359d
2717d+
Talking speed
0
177 wpm
252 wpm+
Talk ratio
0%
40%
60%
100%
Patience
0s
1s
2s
3s+
Longest monologue
0
5m
10m+
Longest customer story
0
5m
10m+
Rep questions
0
25
50+
Engaging questions
0
25
50+
Insightful questions
0
25
50+
Customer questions
0
25
50+
Comments
0
1
2
5
10
20+
Host
Activity
Contact
Activity Type
Current Stage
Stats
Duration
Date
Jiminny Web SA Jiminny Salesforce App Training Number of favorites 0 Number of shares 0 Number of comments 0 Number of plays 4 47m11/07/2024, 2:28 PM
Jiminny
Salesforce App Training
Number of favorites
0
Number of shares
0
Number of comments
0
Number of plays
4
47m
11/07/2024, 2:28 PM
Bekkie Wetz Jiminny Bekkie/ Jules - renewals and ContractBook Number of favorites 1 Number of shares 0 Number of comments 0 Number of plays 3 44m25/06/2024, 3:09 PM
Jiminny
Bekkie/ Jules - renewals and ContractBook
Number of favorites
1
Number of shares
0
Number of comments
0...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11796875,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.12083333,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.14930555,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.17777778,"width":0.08671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SecurityGroup | EC2 | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.20625,"width":0.06484375,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.23472223,"width":0.18710938,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.26319444,"width":0.23476562,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.29166666,"width":0.1984375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"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":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","depth":4,"bounds":{"left":0.0,"top":0.33888888,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.34861112,"width":0.1640625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.3673611,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.37708333,"width":0.12617187,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.39583334,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.40555555,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.42430556,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4340278,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.45277777,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4625,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.48125,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.49097222,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.50972223,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.51944447,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.5395833,"width":0.08710937,"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":"Open 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":"Tabs from other devices","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 history (⇧⌘H)","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":"Open bookmarks (⌘B)","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":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 869720","depth":9,"bounds":{"left":0.09453125,"top":0.9875,"width":0.11796875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"28","depth":12,"bounds":{"left":0.096875,"top":0.925,"width":0.01875,"height":0.030555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"28","depth":14,"bounds":{"left":0.10664062,"top":0.9284722,"width":0.00546875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14","depth":14,"bounds":{"left":0.2421875,"top":0.061805554,"width":0.0109375,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activities","depth":14,"bounds":{"left":0.253125,"top":0.061805554,"width":0.031640626,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Get Notified","depth":13,"bounds":{"left":0.55078125,"top":0.058333334,"width":0.051171876,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Sort by Sort by: Most recent","depth":13,"bounds":{"left":0.36171874,"top":0.057638887,"width":0.091796875,"height":0.025694445},"value":"Sort by Sort by: Most recent","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Sort by","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sort by:","depth":15,"bounds":{"left":0.3660156,"top":0.06458333,"width":0.019921875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Most recent","depth":15,"bounds":{"left":0.3859375,"top":0.06458333,"width":0.030078124,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add Recording","depth":13,"bounds":{"left":0.4910156,"top":0.058333334,"width":0.056640625,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"common.ai-icon-alt","depth":14,"bounds":{"left":0.6050781,"top":0.05625,"width":0.0140625,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Topics:","depth":15,"bounds":{"left":0.24570313,"top":0.10069445,"width":0.014453125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Competitors","depth":15,"bounds":{"left":0.26210937,"top":0.10069445,"width":0.0265625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal and external activities:","depth":15,"bounds":{"left":0.30546874,"top":0.10069445,"width":0.07695313,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal only","depth":15,"bounds":{"left":0.384375,"top":0.10069445,"width":0.0390625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Save Search","depth":14,"bounds":{"left":0.440625,"top":0.09861111,"width":0.0390625,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear all","depth":14,"bounds":{"left":0.48359376,"top":0.09861111,"width":0.030078124,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Saved searches Saved searches","depth":13,"bounds":{"left":0.1265625,"top":0.05486111,"width":0.095703125,"height":0.025},"value":"Saved searches Saved searches","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Saved searches","depth":15,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Saved searches","depth":16,"bounds":{"left":0.13085938,"top":0.06111111,"width":0.037109375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team","depth":13,"bounds":{"left":0.1265625,"top":0.099305555,"width":0.012890625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search teams Search teams","depth":12,"bounds":{"left":0.1265625,"top":0.115277775,"width":0.095703125,"height":0.025},"value":"Search teams Search teams","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search teams","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search teams","depth":14,"bounds":{"left":0.13085938,"top":0.12222222,"width":0.032421876,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Host","depth":13,"bounds":{"left":0.1265625,"top":0.15,"width":0.01171875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search team members Search team members","depth":12,"bounds":{"left":0.1265625,"top":0.16944444,"width":0.095703125,"height":0.025},"value":"Search team members Search team members","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search team members","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search team members","depth":14,"bounds":{"left":0.13085938,"top":0.17638889,"width":0.05390625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Also search as participant","depth":13,"bounds":{"left":0.1265625,"top":0.19930555,"width":0.062109374,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Participant","depth":13,"bounds":{"left":0.1265625,"top":0.225,"width":0.026953125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search team members Search team members","depth":12,"bounds":{"left":0.1265625,"top":0.24097222,"width":0.095703125,"height":0.025},"value":"Search team members Search team members","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search team members","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search team members","depth":14,"bounds":{"left":0.13085938,"top":0.24791667,"width":0.05390625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customer","depth":13,"bounds":{"left":0.1265625,"top":0.27569443,"width":0.025390625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Customer","depth":12,"bounds":{"left":0.14140625,"top":0.2923611,"width":0.065625,"height":0.025},"help_text":"","placeholder":"Customer or Subject","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Transcript","depth":13,"bounds":{"left":0.1265625,"top":0.32777777,"width":0.02578125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search transcript","depth":12,"bounds":{"left":0.14140625,"top":0.34791666,"width":0.065625,"height":0.025},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Select option Said by","depth":12,"bounds":{"left":0.1265625,"top":0.37708333,"width":0.095703125,"height":0.025694445},"value":"Select option Said by","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Said by","depth":14,"bounds":{"left":0.13085938,"top":0.38402778,"width":0.0171875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select option Anyone","depth":12,"bounds":{"left":0.1265625,"top":0.40625,"width":0.095703125,"height":0.025694445},"value":"Select option Anyone","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Anyone","depth":14,"bounds":{"left":0.13085938,"top":0.41319445,"width":0.01875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Period","depth":13,"bounds":{"left":0.1265625,"top":0.44166666,"width":0.016015625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All time","depth":14,"bounds":{"left":0.13203125,"top":0.46458334,"width":0.017578125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Topics","depth":13,"bounds":{"left":0.1265625,"top":0.4923611,"width":0.015234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Competitors × Search topics","depth":12,"bounds":{"left":0.1265625,"top":0.5083333,"width":0.095703125,"height":0.02638889},"value":"Competitors × Search topics","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Competitors","depth":15,"bounds":{"left":0.13359375,"top":0.5159722,"width":0.030859375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×","depth":16,"bounds":{"left":0.1671875,"top":0.5152778,"width":0.003125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search topics","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Activity type","depth":13,"bounds":{"left":0.1265625,"top":0.54444444,"width":0.03125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search activity types Search activity types","depth":12,"bounds":{"left":0.1265625,"top":0.56041664,"width":0.095703125,"height":0.025},"value":"Search activity types Search activity types","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search activity types","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search activity types","depth":14,"bounds":{"left":0.13085938,"top":0.5673611,"width":0.050390624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":13,"bounds":{"left":0.1265625,"top":0.5951389,"width":0.023046875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Min (minutes)","depth":13,"bounds":{"left":0.1265625,"top":0.6125,"width":0.03359375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Max (minutes)","depth":13,"bounds":{"left":0.16875,"top":0.6125,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI call score","depth":13,"bounds":{"left":0.1265625,"top":0.6597222,"width":0.029296875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select AI call score Select AI call score","depth":12,"bounds":{"left":0.1265625,"top":0.67569447,"width":0.095703125,"height":0.025},"value":"Select AI call score Select AI call score","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select AI call score","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select AI call score","depth":14,"bounds":{"left":0.13085938,"top":0.6826389,"width":0.0453125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Automated call score","depth":13,"bounds":{"left":0.1265625,"top":0.7104167,"width":0.0515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select automated call score Select automated call score","depth":12,"bounds":{"left":0.1265625,"top":0.7263889,"width":0.095703125,"height":0.036111113},"value":"Select automated call score Select automated call score","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select automated call score","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select automated call score","depth":14,"bounds":{"left":0.13085938,"top":0.73194444,"width":0.051953126,"height":0.025694445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Coaching score","depth":13,"bounds":{"left":0.1265625,"top":0.7722222,"width":0.037109375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select coaching score Select coaching score","depth":12,"bounds":{"left":0.1265625,"top":0.7881944,"width":0.095703125,"height":0.025},"value":"Select coaching score Select coaching score","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select coaching score","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select coaching score","depth":14,"bounds":{"left":0.13085938,"top":0.7951389,"width":0.051953126,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Coach","depth":13,"bounds":{"left":0.1265625,"top":0.8229167,"width":0.01640625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search coaches Search coaches","depth":12,"bounds":{"left":0.1265625,"top":0.8388889,"width":0.095703125,"height":0.025},"value":"Search coaches Search coaches","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search coaches","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search coaches","depth":14,"bounds":{"left":0.13085938,"top":0.84583336,"width":0.0375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stage at call","depth":13,"bounds":{"left":0.1265625,"top":0.8736111,"width":0.02890625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search stages Search stages","depth":12,"bounds":{"left":0.1265625,"top":0.88958335,"width":0.095703125,"height":0.025},"value":"Search stages Search stages","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search stages","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search stages","depth":14,"bounds":{"left":0.13085938,"top":0.89652777,"width":0.033203125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Current stage","depth":13,"bounds":{"left":0.1265625,"top":0.92430556,"width":0.03359375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search stages Search stages","depth":12,"bounds":{"left":0.1265625,"top":0.94027776,"width":0.095703125,"height":0.025},"value":"Search stages Search stages","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search stages","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search stages","depth":14,"bounds":{"left":0.13085938,"top":0.94722223,"width":0.033203125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language","depth":13,"bounds":{"left":0.1265625,"top":0.975,"width":0.0234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search language Search language","depth":12,"bounds":{"left":0.1265625,"top":0.9909722,"width":0.095703125,"height":0.009027779},"value":"Search language Search language","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search language","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search language","depth":14,"bounds":{"left":0.13085938,"top":0.99791664,"width":0.03984375,"height":0.0020833611},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Playlist","depth":13,"bounds":{"left":0.1265625,"top":1.0,"width":0.01796875,"height":-0.02569449},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search playlists Search playlists","depth":12,"bounds":{"left":0.1265625,"top":1.0,"width":0.095703125,"height":-0.041666627},"value":"Search playlists Search playlists","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search playlists","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search playlists","depth":14,"bounds":{"left":0.13085938,"top":1.0,"width":0.037890624,"height":-0.048611164},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pending CRM notes","depth":13,"bounds":{"left":0.1265625,"top":1.0,"width":0.048046876,"height":-0.076388836},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Not logged to CRM","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recorded","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search recorded Search recorded","depth":12,"value":"Search recorded Search recorded","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search recorded","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search recorded","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal and external activities","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select option Show internal only","depth":12,"value":"Select option Show internal only","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show internal only","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search platforms Search platforms","depth":12,"value":"Search platforms Search platforms","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search platforms","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search platforms","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Call type","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search channels Search channels","depth":12,"value":"Search channels Search channels","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search channels","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search channels","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Outcome","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search CRM Outcome Search CRM Outcome","depth":12,"value":"Search CRM Outcome Search CRM Outcome","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search CRM Outcome","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search CRM Outcome","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deal value","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Min (amount)","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Max (amount)","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deal close date","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All time","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deal age","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1359d","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2717d+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Talking speed","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"177 wpm","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"252 wpm+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Talk ratio","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"40%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"60%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Patience","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0s","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1s","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2s","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3s+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Longest monologue","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5m","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10m+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Longest customer story","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5m","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10m+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rep questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Engaging questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Insightful questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customer questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Comments","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Host","depth":15,"bounds":{"left":0.2511719,"top":0.14097223,"width":0.0109375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":15,"bounds":{"left":0.28632814,"top":0.14097223,"width":0.01796875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Contact","depth":15,"bounds":{"left":0.3839844,"top":0.14097223,"width":0.018359374,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity Type","depth":15,"bounds":{"left":0.4152344,"top":0.14097223,"width":0.01796875,"height":0.025},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Current Stage","depth":15,"bounds":{"left":0.44921875,"top":0.14097223,"width":0.03203125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stats","depth":15,"bounds":{"left":0.49179688,"top":0.14097223,"width":0.011328125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":15,"bounds":{"left":0.53085935,"top":0.14097223,"width":0.0203125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Date","depth":15,"bounds":{"left":0.5589844,"top":0.14097223,"width":0.011328125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny Web SA Jiminny Salesforce App Training Number of favorites 0 Number of shares 0 Number of comments 0 Number of plays 4 47m11/07/2024, 2:28 PM","depth":14,"bounds":{"left":0.24179688,"top":0.17847222,"width":0.37773436,"height":0.050694443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":18,"bounds":{"left":0.28632814,"top":0.19166666,"width":0.017578125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce App Training","depth":17,"bounds":{"left":0.28632814,"top":0.20555556,"width":0.053125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of favorites","depth":18,"bounds":{"left":0.49257812,"top":0.19027779,"width":0.0203125,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":18,"bounds":{"left":0.5015625,"top":0.19097222,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of shares","depth":18,"bounds":{"left":0.49257812,"top":0.19027779,"width":0.01875,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":18,"bounds":{"left":0.51875,"top":0.19097222,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of comments","depth":18,"bounds":{"left":0.49257812,"top":0.19027779,"width":0.023828125,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":18,"bounds":{"left":0.5015625,"top":0.2048611,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of plays","depth":18,"bounds":{"left":0.49257812,"top":0.19027779,"width":0.01875,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":18,"bounds":{"left":0.51875,"top":0.2048611,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"47m","depth":16,"bounds":{"left":0.53085935,"top":0.19791667,"width":0.01015625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11/07/2024, 2:28 PM","depth":16,"bounds":{"left":0.5589844,"top":0.19791667,"width":0.04921875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Bekkie Wetz Jiminny Bekkie/ Jules - renewals and ContractBook Number of favorites 1 Number of shares 0 Number of comments 0 Number of plays 3 44m25/06/2024, 3:09 PM","depth":14,"bounds":{"left":0.24179688,"top":0.22916667,"width":0.37773436,"height":0.050694443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":18,"bounds":{"left":0.28632814,"top":0.24236111,"width":0.017578125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bekkie/ Jules - renewals and ContractBook","depth":17,"bounds":{"left":0.28632814,"top":0.25625,"width":0.096875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of favorites","depth":18,"bounds":{"left":0.49257812,"top":0.24097222,"width":0.0203125,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.5015625,"top":0.24166666,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of shares","depth":18,"bounds":{"left":0.49257812,"top":0.24097222,"width":0.01875,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":18,"bounds":{"left":0.51875,"top":0.24166666,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of comments","depth":18,"bounds":{"left":0.49257812,"top":0.24097222,"width":0.023828125,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":18,"bounds":{"left":0.5015625,"top":0.25555557,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-7858395721120215887
|
4256266838360126146
|
visual_change
|
accessibility
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720
28
28
14
activities
Get Notified
Sort by Sort by: Most recent
Sort by
Sort by:
Most recent
Add Recording
common.ai-icon-alt
Topics:
Competitors
Show internal and external activities:
Show internal only
Save Search
Clear all
Saved searches Saved searches
Saved searches
Saved searches
Team
Search teams Search teams
Search teams
Search teams
Host
Search team members Search team members
Search team members
Search team members
Also search as participant
Participant
Search team members Search team members
Search team members
Search team members
Customer
Customer
Transcript
Search transcript
Select option Said by
Select option
Said by
Select option Anyone
Select option
Anyone
Period
All time
Topics
Competitors × Search topics
Competitors
×
Search topics
Activity type
Search activity types Search activity types
Search activity types
Search activity types
Duration
Min (minutes)
Max (minutes)
AI call score
Select AI call score Select AI call score
Select AI call score
Select AI call score
Automated call score
Select automated call score Select automated call score
Select automated call score
Select automated call score
Coaching score
Select coaching score Select coaching score
Select coaching score
Select coaching score
Coach
Search coaches Search coaches
Search coaches
Search coaches
Stage at call
Search stages Search stages
Search stages
Search stages
Current stage
Search stages Search stages
Search stages
Search stages
Language
Search language Search language
Search language
Search language
Playlist
Search playlists Search playlists
Search playlists
Search playlists
Pending CRM notes
Not logged to CRM
Recorded
Search recorded Search recorded
Search recorded
Search recorded
Show internal and external activities
Select option Show internal only
Select option
Show internal only
Platform
Search platforms Search platforms
Search platforms
Search platforms
Call type
Search channels Search channels
Search channels
Search channels
Outcome
Search CRM Outcome Search CRM Outcome
Search CRM Outcome
Search CRM Outcome
Deal value
Min (amount)
Max (amount)
Deal close date
All time
Deal age
0
1359d
2717d+
Talking speed
0
177 wpm
252 wpm+
Talk ratio
0%
40%
60%
100%
Patience
0s
1s
2s
3s+
Longest monologue
0
5m
10m+
Longest customer story
0
5m
10m+
Rep questions
0
25
50+
Engaging questions
0
25
50+
Insightful questions
0
25
50+
Customer questions
0
25
50+
Comments
0
1
2
5
10
20+
Host
Activity
Contact
Activity Type
Current Stage
Stats
Duration
Date
Jiminny Web SA Jiminny Salesforce App Training Number of favorites 0 Number of shares 0 Number of comments 0 Number of plays 4 47m11/07/2024, 2:28 PM
Jiminny
Salesforce App Training
Number of favorites
0
Number of shares
0
Number of comments
0
Number of plays
4
47m
11/07/2024, 2:28 PM
Bekkie Wetz Jiminny Bekkie/ Jules - renewals and ContractBook Number of favorites 1 Number of shares 0 Number of comments 0 Number of plays 3 44m25/06/2024, 3:09 PM
Jiminny
Bekkie/ Jules - renewals and ContractBook
Number of favorites
1
Number of shares
0
Number of comments
0...
|
NULL
|
|
10930
|
217
|
13
|
2026-04-14T09:04:39.335055+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157479335_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpapp.staging.jiminny.com/ondemand?topic_id[J=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=3You are currently impersonating Nikolay Yankov <)Saved searches14 activitiesSort by: Most recent* Add RecordingF: Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)HostIActivityZ Configure SSH access to multipleHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210Mise searen as DarticloanuJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatfornJY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantsearcn leam membersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byMnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesJiminny MSalestorce App IrainingJiminny MBekkie/ Jules - renewals and Contract..Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%Unknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played MTraining 8 - Jiminny Apo for Salesfor….Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer (played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720Save Search @ Clear allContactActivityTypeCurrent StagestatsDurationDateTomLaveryUnlikely toRenew$42,12647ml90 D444mĐ0 D3Đ0 D234mW0 %000D 2$0 228.DO DO17m$1 %0ĐO DO1hsim'90 D 4{0&2DOD643mĐ0 D428m2 151m{003Đ0D325m3ym0 82Đ0 D133m22.D0 D 1141m11/0//2024.2:28 PM25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.56 PM13/03/2024, 11:28 AM26/02 9024.2:30 PM116/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM0//1100/3.11:42 AMI31/10/2023, 11:35 AM25/10/2023, 11:46 AMf Support Daily • in 2h 56mA100% C•Tue 14 Apr 12:04:39Q InspectorFilter URLs• ConsoleD DebuggerN Network( PerformanceAlIHMLeSS290 PA200 P...206 P.200 P...200 P.200 G.200 G.200 G..200 G..296G200 P..200 G.A0...A0...A app.A aр...A aрp...A app.A app...А aрp.A find...A r.lo...200P.A r.lo...200 P...Ar.lo..1200 P.A r...200 P..A r.lo...200 P..A r.lo...200 P...a r.lo...200 P...A r.lo...200 P...A r.lo..200 P...A r.lo...206 P..Ar.o...200 P...A r.lo...200 P...A r.l...200 P...A r.o...200 P..A r.l...200 P...Ar.lo..200 P...A r.lo...200) P...A r.lo...200 P..A r.lo...206 P..r.lo.200 P...Ar.o..1200 P.A r.lo..200 P...A r.o...200P.A r.l...200 P...A r....200 P...A r.lo...200 P...A r.lo..200 P..A r.lo...200 P...A r.lo...200 P...A r.l...200 P...A r.lo...200 P...A r.o...200 P...A r.lo..200 P...Ar.lo...200 P...Ar.o...200 P...A r.lo...Me: Domain FileMrlo.Tasoonxat o attorm-stac xhiA8.../api/5627310/envelope/2: fetch/api/5627310/envelope/2: fetch/api/5627310/envelope/?: fetch/api/5627310/envelope/?; fetchH Xhisaved-searchintegrationson-demand?topic_id•A xhr•A xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platformi?a=ponxaf/platform-stag xhriPa=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhriza=ponxaf/platform-stag xhri?a=ponxaf/platform xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhriPa=ponxaf/platform-stag xhriPa=ponxaf/platform-staç xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhrÔ 48 requests{) Style EditorO: MemoryE Storage0 99+No Throttling :HeadersCookiesRequestResponseTimingsSecurity5,59 KB1Block Resend500 B 2BgET nttos:laoostacing.lminnv.com/aoi/v/oage/on-demanertooic 10=e0210934-c0/0-4106003 285-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4500 B 2 B200500 B 2BHTTP/36.28 kB 2...55.54 kB (196.87 kB size)5.65 kB 1no-referrer-when-downgradesystem3.62 kB 1...3.83 kB 5..55.54 .3.11 kB 9..cached 6...slalusVersionTransferredReferrer PolicyDNS Resolutionkesponse Headers (2.900 Kb)alt-svc: h3=":443"; ma=86400cache-control: no-cache, onivatecontent-encoalng: oziocontent-language: encontent-secuntv-policv-revort-onv: scriot-src 'self 'unsate-inine' 'unsate-eval" • oo: hit.kawe307.701./4 Mb U.2.47 kB 0...4.91 kB 0.10.11 kB O...2.48 kB 0...2.43 kB 0...2.49 kB 0..2.48 kB O...2.73 kB O...2.43 kB 0...2.48 kB 0...2.48 kB 0...ucncio, slyto sie soll unsare mme mepencuttslasmebmimamcon mapedlonto yooMeaois.com nuos.cons.clouatare.com.me-sre sellmos.con.stagmg.tminy.com/nttes... nutos:S.intercomcan.com; connect-s/cnuos.apo.stacine.lminny.comnutos./meala.aoo.staging.liminnv.com [URL_WITH_CREDENTIALS] 4.61 min...
|
NULL
|
8660773583342473762
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpapp.staging.jiminny.com/ondemand?topic_id[J=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=3You are currently impersonating Nikolay Yankov <)Saved searches14 activitiesSort by: Most recent* Add RecordingF: Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)HostIActivityZ Configure SSH access to multipleHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210Mise searen as DarticloanuJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatfornJY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantsearcn leam membersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byMnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesJiminny MSalestorce App IrainingJiminny MBekkie/ Jules - renewals and Contract..Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%Unknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played MTraining 8 - Jiminny Apo for Salesfor….Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer (played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720Save Search @ Clear allContactActivityTypeCurrent StagestatsDurationDateTomLaveryUnlikely toRenew$42,12647ml90 D444mĐ0 D3Đ0 D234mW0 %000D 2$0 228.DO DO17m$1 %0ĐO DO1hsim'90 D 4{0&2DOD643mĐ0 D428m2 151m{003Đ0D325m3ym0 82Đ0 D133m22.D0 D 1141m11/0//2024.2:28 PM25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.56 PM13/03/2024, 11:28 AM26/02 9024.2:30 PM116/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM0//1100/3.11:42 AMI31/10/2023, 11:35 AM25/10/2023, 11:46 AMf Support Daily • in 2h 56mA100% C•Tue 14 Apr 12:04:39Q InspectorFilter URLs• ConsoleD DebuggerN Network( PerformanceAlIHMLeSS290 PA200 P...206 P.200 P...200 P.200 G.200 G.200 G..200 G..296G200 P..200 G.A0...A0...A app.A aр...A aрp...A app.A app...А aрp.A find...A r.lo...200P.A r.lo...200 P...Ar.lo..1200 P.A r...200 P..A r.lo...200 P..A r.lo...200 P...a r.lo...200 P...A r.lo...200 P...A r.lo..200 P...A r.lo...206 P..Ar.o...200 P...A r.lo...200 P...A r.l...200 P...A r.o...200 P..A r.l...200 P...Ar.lo..200 P...A r.lo...200) P...A r.lo...200 P..A r.lo...206 P..r.lo.200 P...Ar.o..1200 P.A r.lo..200 P...A r.o...200P.A r.l...200 P...A r....200 P...A r.lo...200 P...A r.lo..200 P..A r.lo...200 P...A r.lo...200 P...A r.l...200 P...A r.lo...200 P...A r.o...200 P...A r.lo..200 P...Ar.lo...200 P...Ar.o...200 P...A r.lo...Me: Domain FileMrlo.Tasoonxat o attorm-stac xhiA8.../api/5627310/envelope/2: fetch/api/5627310/envelope/2: fetch/api/5627310/envelope/?: fetch/api/5627310/envelope/?; fetchH Xhisaved-searchintegrationson-demand?topic_id•A xhr•A xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platformi?a=ponxaf/platform-stag xhriPa=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhriza=ponxaf/platform-stag xhri?a=ponxaf/platform xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhriPa=ponxaf/platform-stag xhriPa=ponxaf/platform-staç xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhri?a=ponxaf/platform-stag xhrÔ 48 requests{) Style EditorO: MemoryE Storage0 99+No Throttling :HeadersCookiesRequestResponseTimingsSecurity5,59 KB1Block Resend500 B 2BgET nttos:laoostacing.lminnv.com/aoi/v/oage/on-demanertooic 10=e0210934-c0/0-4106003 285-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4500 B 2 B200500 B 2BHTTP/36.28 kB 2...55.54 kB (196.87 kB size)5.65 kB 1no-referrer-when-downgradesystem3.62 kB 1...3.83 kB 5..55.54 .3.11 kB 9..cached 6...slalusVersionTransferredReferrer PolicyDNS Resolutionkesponse Headers (2.900 Kb)alt-svc: h3=":443"; ma=86400cache-control: no-cache, onivatecontent-encoalng: oziocontent-language: encontent-secuntv-policv-revort-onv: scriot-src 'self 'unsate-inine' 'unsate-eval" • oo: hit.kawe307.701./4 Mb U.2.47 kB 0...4.91 kB 0.10.11 kB O...2.48 kB 0...2.43 kB 0...2.49 kB 0..2.48 kB O...2.73 kB O...2.43 kB 0...2.48 kB 0...2.48 kB 0...ucncio, slyto sie soll unsare mme mepencuttslasmebmimamcon mapedlonto yooMeaois.com nuos.cons.clouatare.com.me-sre sellmos.con.stagmg.tminy.com/nttes... nutos:S.intercomcan.com; connect-s/cnuos.apo.stacine.lminny.comnutos./meala.aoo.staging.liminnv.com [URL_WITH_CREDENTIALS] 4.61 min...
|
10928
|
|
10932
|
217
|
14
|
2026-04-14T09:04:42.339569+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157482339_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
https://app.staging.jiminny.com/ondemand?topic_id[
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720
28
28
14
activities
Get Notified
Sort by Sort by: Most recent
Sort by
Sort by:
Most recent
Add Recording
common.ai-icon-alt
Topics:
Competitors
Show internal and external activities:
Show internal only
Save Search
Clear all
Saved searches Saved searches
Saved searches
Saved searches
Team
Search teams Search teams
Search teams
Search teams
Host
Search team members Search team members
Search team members
Search team members
Also search as participant
Participant
Search team members Search team members
Search team members
Search team members
Customer
Customer
Transcript
Search transcript
Select option Said by
Select option
Said by
Select option Anyone
Select option
Anyone
Period
All time
Topics
Competitors × Search topics
Competitors
×
Search topics
Activity type
Search activity types Search activity types
Search activity types
Search activity types
Duration
Min (minutes)
Max (minutes)
AI call score
Select AI call score Select AI call score
Select AI call score
Select AI call score
Automated call score
Select automated call score Select automated call score
Select automated call score
Select automated call score
Coaching score
Select coaching score Select coaching score
Select coaching score
Select coaching score
Coach
Search coaches Search coaches
Search coaches
Search coaches
Stage at call
Search stages Search stages
Search stages
Search stages
Current stage
Search stages Search stages
Search stages
Search stages
Language
Search language Search language
Search language
Search language
Playlist
Search playlists Search playlists
Search playlists
Search playlists
Pending CRM notes
Not logged to CRM
Recorded
Search recorded Search recorded
Search recorded
Search recorded
Show internal and external activities
Select option Show internal only
Select option
Show internal only
Platform
Search platforms Search platforms
Search platforms
Search platforms
Call type
Search channels Search channels
Search channels
Search channels
Outcome
Search CRM Outcome Search CRM Outcome
Search CRM Outcome
Search CRM Outcome
Deal value
Min (amount)
Max (amount)
Deal close date
All time
Deal age
0
1359d
2717d+
Talking speed
0
177 wpm
252 wpm+
Talk ratio
0%
40%
60%
100%
Patience
0s
1s
2s
3s+
Longest monologue
0
5m
10m+
Longest customer story
0
5m
10m+
Rep questions
0
25
50+
Engaging questions
0
25
50+
Insightful questions
0
25
50+
Customer questions
0
25
50+
Comments
0
1
2
5
10
20+
Host
Activity
Contact
Activity Type
Current Stage
Stats
Duration
Date
Jiminny Web SA Jiminny Salesforce App Training Number of favorites 0 Number of shares 0 Number of comments 0 Number of plays 4 47m11/07/2024, 2:28 PM
Jiminny
Salesforce App Training
Number of favorites
0
Number of shares
0
Number of comments
0
Number of plays
4
47m
11/07/2024, 2:28 PM
Bekkie Wetz Jiminny Bekkie/ Jules - renewals and ContractBook Number of favorites 1 Number of shares 0 Number of comments 0 Number of plays 3 44m25/06/2024, 3:09 PM
Jiminny
Bekkie/ Jules - renewals and ContractBook...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11796875,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.12083333,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.14930555,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.17777778,"width":0.08671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SecurityGroup | EC2 | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.20625,"width":0.06484375,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.23472223,"width":0.18710938,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.26319444,"width":0.23476562,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.29166666,"width":0.1984375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"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":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","depth":4,"bounds":{"left":0.0,"top":0.33888888,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.34861112,"width":0.1640625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.3673611,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.37708333,"width":0.12617187,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.39583334,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.40555555,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.42430556,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4340278,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.45277777,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4625,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.48125,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.49097222,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.50972223,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.51944447,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.5395833,"width":0.08710937,"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":"Open 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":"Tabs from other devices","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 history (⇧⌘H)","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":"Open bookmarks (⌘B)","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":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 869720","depth":9,"bounds":{"left":0.09453125,"top":0.9875,"width":0.11796875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"28","depth":12,"bounds":{"left":0.096875,"top":0.925,"width":0.01875,"height":0.030555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"28","depth":14,"bounds":{"left":0.10664062,"top":0.9284722,"width":0.00546875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14","depth":14,"bounds":{"left":0.2421875,"top":0.061805554,"width":0.0109375,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activities","depth":14,"bounds":{"left":0.253125,"top":0.061805554,"width":0.031640626,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Get Notified","depth":13,"bounds":{"left":0.55078125,"top":0.058333334,"width":0.051171876,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Sort by Sort by: Most recent","depth":13,"bounds":{"left":0.36171874,"top":0.057638887,"width":0.091796875,"height":0.025694445},"value":"Sort by Sort by: Most recent","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Sort by","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sort by:","depth":15,"bounds":{"left":0.3660156,"top":0.06458333,"width":0.019921875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Most recent","depth":15,"bounds":{"left":0.3859375,"top":0.06458333,"width":0.030078124,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add Recording","depth":13,"bounds":{"left":0.4910156,"top":0.058333334,"width":0.056640625,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"common.ai-icon-alt","depth":14,"bounds":{"left":0.6050781,"top":0.05625,"width":0.0140625,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Topics:","depth":15,"bounds":{"left":0.24570313,"top":0.10069445,"width":0.014453125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Competitors","depth":15,"bounds":{"left":0.26210937,"top":0.10069445,"width":0.0265625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal and external activities:","depth":15,"bounds":{"left":0.30546874,"top":0.10069445,"width":0.07695313,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal only","depth":15,"bounds":{"left":0.384375,"top":0.10069445,"width":0.0390625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Save Search","depth":14,"bounds":{"left":0.440625,"top":0.09861111,"width":0.0390625,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear all","depth":14,"bounds":{"left":0.48359376,"top":0.09861111,"width":0.030078124,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Saved searches Saved searches","depth":13,"bounds":{"left":0.1265625,"top":0.05486111,"width":0.095703125,"height":0.025},"value":"Saved searches Saved searches","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Saved searches","depth":15,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Saved searches","depth":16,"bounds":{"left":0.13085938,"top":0.06111111,"width":0.037109375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team","depth":13,"bounds":{"left":0.1265625,"top":0.099305555,"width":0.012890625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search teams Search teams","depth":12,"bounds":{"left":0.1265625,"top":0.115277775,"width":0.095703125,"height":0.025},"value":"Search teams Search teams","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search teams","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search teams","depth":14,"bounds":{"left":0.13085938,"top":0.12222222,"width":0.032421876,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Host","depth":13,"bounds":{"left":0.1265625,"top":0.15,"width":0.01171875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search team members Search team members","depth":12,"bounds":{"left":0.1265625,"top":0.16944444,"width":0.095703125,"height":0.025},"value":"Search team members Search team members","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search team members","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search team members","depth":14,"bounds":{"left":0.13085938,"top":0.17638889,"width":0.05390625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Also search as participant","depth":13,"bounds":{"left":0.1265625,"top":0.19930555,"width":0.062109374,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Participant","depth":13,"bounds":{"left":0.1265625,"top":0.225,"width":0.026953125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search team members Search team members","depth":12,"bounds":{"left":0.1265625,"top":0.24097222,"width":0.095703125,"height":0.025},"value":"Search team members Search team members","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search team members","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search team members","depth":14,"bounds":{"left":0.13085938,"top":0.24791667,"width":0.05390625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customer","depth":13,"bounds":{"left":0.1265625,"top":0.27569443,"width":0.025390625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Customer","depth":12,"bounds":{"left":0.14140625,"top":0.2923611,"width":0.065625,"height":0.025},"help_text":"","placeholder":"Customer or Subject","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Transcript","depth":13,"bounds":{"left":0.1265625,"top":0.32777777,"width":0.02578125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search transcript","depth":12,"bounds":{"left":0.14140625,"top":0.34791666,"width":0.065625,"height":0.025},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Select option Said by","depth":12,"bounds":{"left":0.1265625,"top":0.37708333,"width":0.095703125,"height":0.025694445},"value":"Select option Said by","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Said by","depth":14,"bounds":{"left":0.13085938,"top":0.38402778,"width":0.0171875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select option Anyone","depth":12,"bounds":{"left":0.1265625,"top":0.40625,"width":0.095703125,"height":0.025694445},"value":"Select option Anyone","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Anyone","depth":14,"bounds":{"left":0.13085938,"top":0.41319445,"width":0.01875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Period","depth":13,"bounds":{"left":0.1265625,"top":0.44166666,"width":0.016015625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All time","depth":14,"bounds":{"left":0.13203125,"top":0.46458334,"width":0.017578125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Topics","depth":13,"bounds":{"left":0.1265625,"top":0.4923611,"width":0.015234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Competitors × Search topics","depth":12,"bounds":{"left":0.1265625,"top":0.5083333,"width":0.095703125,"height":0.02638889},"value":"Competitors × Search topics","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Competitors","depth":15,"bounds":{"left":0.13359375,"top":0.5159722,"width":0.030859375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×","depth":16,"bounds":{"left":0.1671875,"top":0.5152778,"width":0.003125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search topics","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Activity type","depth":13,"bounds":{"left":0.1265625,"top":0.54444444,"width":0.03125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search activity types Search activity types","depth":12,"bounds":{"left":0.1265625,"top":0.56041664,"width":0.095703125,"height":0.025},"value":"Search activity types Search activity types","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search activity types","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search activity types","depth":14,"bounds":{"left":0.13085938,"top":0.5673611,"width":0.050390624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":13,"bounds":{"left":0.1265625,"top":0.5951389,"width":0.023046875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Min (minutes)","depth":13,"bounds":{"left":0.1265625,"top":0.6125,"width":0.03359375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Max (minutes)","depth":13,"bounds":{"left":0.16875,"top":0.6125,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI call score","depth":13,"bounds":{"left":0.1265625,"top":0.6597222,"width":0.029296875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select AI call score Select AI call score","depth":12,"bounds":{"left":0.1265625,"top":0.67569447,"width":0.095703125,"height":0.025},"value":"Select AI call score Select AI call score","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select AI call score","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select AI call score","depth":14,"bounds":{"left":0.13085938,"top":0.6826389,"width":0.0453125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Automated call score","depth":13,"bounds":{"left":0.1265625,"top":0.7104167,"width":0.0515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select automated call score Select automated call score","depth":12,"bounds":{"left":0.1265625,"top":0.7263889,"width":0.095703125,"height":0.036111113},"value":"Select automated call score Select automated call score","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select automated call score","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select automated call score","depth":14,"bounds":{"left":0.13085938,"top":0.73194444,"width":0.051953126,"height":0.025694445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Coaching score","depth":13,"bounds":{"left":0.1265625,"top":0.7722222,"width":0.037109375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select coaching score Select coaching score","depth":12,"bounds":{"left":0.1265625,"top":0.7881944,"width":0.095703125,"height":0.025},"value":"Select coaching score Select coaching score","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select coaching score","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select coaching score","depth":14,"bounds":{"left":0.13085938,"top":0.7951389,"width":0.051953126,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Coach","depth":13,"bounds":{"left":0.1265625,"top":0.8229167,"width":0.01640625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search coaches Search coaches","depth":12,"bounds":{"left":0.1265625,"top":0.8388889,"width":0.095703125,"height":0.025},"value":"Search coaches Search coaches","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search coaches","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search coaches","depth":14,"bounds":{"left":0.13085938,"top":0.84583336,"width":0.0375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stage at call","depth":13,"bounds":{"left":0.1265625,"top":0.8736111,"width":0.02890625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search stages Search stages","depth":12,"bounds":{"left":0.1265625,"top":0.88958335,"width":0.095703125,"height":0.025},"value":"Search stages Search stages","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search stages","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search stages","depth":14,"bounds":{"left":0.13085938,"top":0.89652777,"width":0.033203125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Current stage","depth":13,"bounds":{"left":0.1265625,"top":0.92430556,"width":0.03359375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search stages Search stages","depth":12,"bounds":{"left":0.1265625,"top":0.94027776,"width":0.095703125,"height":0.025},"value":"Search stages Search stages","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search stages","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search stages","depth":14,"bounds":{"left":0.13085938,"top":0.94722223,"width":0.033203125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language","depth":13,"bounds":{"left":0.1265625,"top":0.975,"width":0.0234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search language Search language","depth":12,"bounds":{"left":0.1265625,"top":0.9909722,"width":0.095703125,"height":0.009027779},"value":"Search language Search language","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search language","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search language","depth":14,"bounds":{"left":0.13085938,"top":0.99791664,"width":0.03984375,"height":0.0020833611},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Playlist","depth":13,"bounds":{"left":0.1265625,"top":1.0,"width":0.01796875,"height":-0.02569449},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search playlists Search playlists","depth":12,"bounds":{"left":0.1265625,"top":1.0,"width":0.095703125,"height":-0.041666627},"value":"Search playlists Search playlists","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search playlists","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search playlists","depth":14,"bounds":{"left":0.13085938,"top":1.0,"width":0.037890624,"height":-0.048611164},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pending CRM notes","depth":13,"bounds":{"left":0.1265625,"top":1.0,"width":0.048046876,"height":-0.076388836},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Not logged to CRM","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recorded","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search recorded Search recorded","depth":12,"value":"Search recorded Search recorded","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search recorded","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search recorded","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal and external activities","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select option Show internal only","depth":12,"value":"Select option Show internal only","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show internal only","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search platforms Search platforms","depth":12,"value":"Search platforms Search platforms","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search platforms","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search platforms","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Call type","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search channels Search channels","depth":12,"value":"Search channels Search channels","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search channels","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search channels","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Outcome","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search CRM Outcome Search CRM Outcome","depth":12,"value":"Search CRM Outcome Search CRM Outcome","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search CRM Outcome","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search CRM Outcome","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deal value","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Min (amount)","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Max (amount)","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deal close date","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All time","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deal age","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1359d","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2717d+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Talking speed","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"177 wpm","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"252 wpm+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Talk ratio","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"40%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"60%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Patience","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0s","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1s","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2s","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3s+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Longest monologue","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5m","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10m+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Longest customer story","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5m","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10m+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rep questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Engaging questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Insightful questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customer questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Comments","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Host","depth":15,"bounds":{"left":0.2511719,"top":0.14097223,"width":0.0109375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":15,"bounds":{"left":0.28632814,"top":0.14097223,"width":0.01796875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Contact","depth":15,"bounds":{"left":0.3839844,"top":0.14097223,"width":0.018359374,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity Type","depth":15,"bounds":{"left":0.4152344,"top":0.14097223,"width":0.01796875,"height":0.025},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Current Stage","depth":15,"bounds":{"left":0.44921875,"top":0.14097223,"width":0.03203125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stats","depth":15,"bounds":{"left":0.49179688,"top":0.14097223,"width":0.011328125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":15,"bounds":{"left":0.53085935,"top":0.14097223,"width":0.0203125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Date","depth":15,"bounds":{"left":0.5589844,"top":0.14097223,"width":0.011328125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny Web SA Jiminny Salesforce App Training Number of favorites 0 Number of shares 0 Number of comments 0 Number of plays 4 47m11/07/2024, 2:28 PM","depth":14,"bounds":{"left":0.24179688,"top":0.17847222,"width":0.37773436,"height":0.050694443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":18,"bounds":{"left":0.28632814,"top":0.19166666,"width":0.017578125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce App Training","depth":17,"bounds":{"left":0.28632814,"top":0.20555556,"width":0.053125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of favorites","depth":18,"bounds":{"left":0.49257812,"top":0.19027779,"width":0.0203125,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":18,"bounds":{"left":0.5015625,"top":0.19097222,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of shares","depth":18,"bounds":{"left":0.49257812,"top":0.19027779,"width":0.01875,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":18,"bounds":{"left":0.51875,"top":0.19097222,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of comments","depth":18,"bounds":{"left":0.49257812,"top":0.19027779,"width":0.023828125,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":18,"bounds":{"left":0.5015625,"top":0.2048611,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Number of plays","depth":18,"bounds":{"left":0.49257812,"top":0.19027779,"width":0.01875,"height":0.03888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":18,"bounds":{"left":0.51875,"top":0.2048611,"width":0.002734375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"47m","depth":16,"bounds":{"left":0.53085935,"top":0.19791667,"width":0.01015625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11/07/2024, 2:28 PM","depth":16,"bounds":{"left":0.5589844,"top":0.19791667,"width":0.04921875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Bekkie Wetz Jiminny Bekkie/ Jules - renewals and ContractBook Number of favorites 1 Number of shares 0 Number of comments 0 Number of plays 3 44m25/06/2024, 3:09 PM","depth":14,"bounds":{"left":0.24179688,"top":0.22916667,"width":0.37773436,"height":0.050694443},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":18,"bounds":{"left":0.28632814,"top":0.24236111,"width":0.017578125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bekkie/ Jules - renewals and ContractBook","depth":17,"bounds":{"left":0.28632814,"top":0.25625,"width":0.096875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-7551692132713273702
|
4256266838224859842
|
visual_change
|
accessibility
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720
28
28
14
activities
Get Notified
Sort by Sort by: Most recent
Sort by
Sort by:
Most recent
Add Recording
common.ai-icon-alt
Topics:
Competitors
Show internal and external activities:
Show internal only
Save Search
Clear all
Saved searches Saved searches
Saved searches
Saved searches
Team
Search teams Search teams
Search teams
Search teams
Host
Search team members Search team members
Search team members
Search team members
Also search as participant
Participant
Search team members Search team members
Search team members
Search team members
Customer
Customer
Transcript
Search transcript
Select option Said by
Select option
Said by
Select option Anyone
Select option
Anyone
Period
All time
Topics
Competitors × Search topics
Competitors
×
Search topics
Activity type
Search activity types Search activity types
Search activity types
Search activity types
Duration
Min (minutes)
Max (minutes)
AI call score
Select AI call score Select AI call score
Select AI call score
Select AI call score
Automated call score
Select automated call score Select automated call score
Select automated call score
Select automated call score
Coaching score
Select coaching score Select coaching score
Select coaching score
Select coaching score
Coach
Search coaches Search coaches
Search coaches
Search coaches
Stage at call
Search stages Search stages
Search stages
Search stages
Current stage
Search stages Search stages
Search stages
Search stages
Language
Search language Search language
Search language
Search language
Playlist
Search playlists Search playlists
Search playlists
Search playlists
Pending CRM notes
Not logged to CRM
Recorded
Search recorded Search recorded
Search recorded
Search recorded
Show internal and external activities
Select option Show internal only
Select option
Show internal only
Platform
Search platforms Search platforms
Search platforms
Search platforms
Call type
Search channels Search channels
Search channels
Search channels
Outcome
Search CRM Outcome Search CRM Outcome
Search CRM Outcome
Search CRM Outcome
Deal value
Min (amount)
Max (amount)
Deal close date
All time
Deal age
0
1359d
2717d+
Talking speed
0
177 wpm
252 wpm+
Talk ratio
0%
40%
60%
100%
Patience
0s
1s
2s
3s+
Longest monologue
0
5m
10m+
Longest customer story
0
5m
10m+
Rep questions
0
25
50+
Engaging questions
0
25
50+
Insightful questions
0
25
50+
Customer questions
0
25
50+
Comments
0
1
2
5
10
20+
Host
Activity
Contact
Activity Type
Current Stage
Stats
Duration
Date
Jiminny Web SA Jiminny Salesforce App Training Number of favorites 0 Number of shares 0 Number of comments 0 Number of plays 4 47m11/07/2024, 2:28 PM
Jiminny
Salesforce App Training
Number of favorites
0
Number of shares
0
Number of comments
0
Number of plays
4
47m
11/07/2024, 2:28 PM
Bekkie Wetz Jiminny Bekkie/ Jules - renewals and ContractBook Number of favorites 1 Number of shares 0 Number of comments 0 Number of plays 3 44m25/06/2024, 3:09 PM
Jiminny
Bekkie/ Jules - renewals and ContractBook...
|
NULL
|
|
10933
|
217
|
15
|
2026-04-14T09:04:45.367220+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157485367_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelphttps://app.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1|[URL_WITH_CREDENTIALS] 49 requestspeL-nuobMororoXr oo-xAblolylerosreceg meoe IrmoNCHICOLOJgKOlAZUT IMISSYUROeMeJb@qNlax-ebkay1Nt_luaGiUarFrtaz1/hrvgrDr-SBrUsupbs/Bclmcvbmhx8KplJfmK59243.45 KB 2.24 MB transterredFinish: 4.6/ min...
|
NULL
|
-4333485181252438742
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelphttps://app.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1|[URL_WITH_CREDENTIALS] 49 requestspeL-nuobMororoXr oo-xAblolylerosreceg meoe IrmoNCHICOLOJgKOlAZUT IMISSYUROeMeJb@qNlax-ebkay1Nt_luaGiUarFrtaz1/hrvgrDr-SBrUsupbs/Bclmcvbmhx8KplJfmK59243.45 KB 2.24 MB transterredFinish: 4.6/ min...
|
10932
|
|
10934
|
217
|
16
|
2026-04-14T09:04:48.407831+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157488407_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.staging.jiminny.com/ondemand?topic_id[]=e02f09 app.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720
28
28
0
activities
Get Notified
Sort by Sort by: Most recent
Sort by
Sort by:
Most recent
Add Recording
common.ai-icon-alt
Team:
Product
Topics:
Competitors
Duration:
1m and above
Recorded:
Only Recorded
Show internal and external activities:
Show internal only
Save Search
Clear all
Saved searches Saved searches
Saved searches
Saved searches
Team
Product × Search teams
Product
×
Search teams
Host
Search team members Search team members
Search team members
Search team members
Also search as participant
Participant
Search team members Search team members
Search team members
Search team members
Customer
Customer
Transcript
Search transcript
Select option Said by
Select option
Said by
Select option Anyone
Select option
Anyone
Period
All time
Topics
Competitors × Search topics
Competitors
×
Search topics
Activity type
Search activity types Search activity types
Search activity types
Search activity types
Duration
Min (minutes)
1
Max (minutes)
AI call score
Select AI call score Select AI call score
Select AI call score
Select AI call score
Automated call score
Select automated call score Select automated call score
Select automated call score
Select automated call score
Coaching score
Select coaching score Select coaching score
Select coaching score
Select coaching score
Coach
Search coaches Search coaches
Search coaches
Search coaches
Stage at call
Search stages Search stages
Search stages
Search stages
Current stage
Search stages Search stages
Search stages
Search stages
Language
Search language Search language
Search language
Search language
Playlist
Search playlists Search playlists
Search playlists
Search playlists
Pending CRM notes
Not logged to CRM
Recorded
Search recorded Only Recorded
Search recorded
Only Recorded
Show internal and external activities
Select option Show internal only
Select option
Show internal only
Platform
Search platforms Search platforms
Search platforms
Search platforms
Call type
Search channels Search channels
Search channels
Search channels
Outcome
Search CRM Outcome Search CRM Outcome
Search CRM Outcome
Search CRM Outcome
Deal value
Min (amount)
Max (amount)
Deal close date
All time
Deal age
0
1359d
2717d+
Talking speed
0
177 wpm
252 wpm+
Talk ratio
0%
40%
60%
100%
Patience
0s
1s
2s
3s+
Longest monologue
0
5m
10m+
Longest customer story
0
5m
10m+
Rep questions
0
25
50+
Engaging questions
0
25
50+
Insightful questions
0
25
50+
Customer questions
0
25
50+...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11796875,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.12083333,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.14930555,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.17777778,"width":0.08671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SecurityGroup | EC2 | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.20625,"width":0.06484375,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.23472223,"width":0.18710938,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.26319444,"width":0.23476562,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.29166666,"width":0.1984375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"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":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","depth":4,"bounds":{"left":0.0,"top":0.33888888,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.34861112,"width":0.1640625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.3673611,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.37708333,"width":0.12617187,"height":0.009722223},"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,"bounds":{"left":0.0,"top":0.39583334,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.40555555,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.42430556,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4340278,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.45277777,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.4625,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.48125,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.49097222,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.50972223,"width":0.09375,"height":0.028472222},"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,"bounds":{"left":0.015625,"top":0.51944447,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.5395833,"width":0.08710937,"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":"Open 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":"Tabs from other devices","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 history (⇧⌘H)","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":"Open bookmarks (⌘B)","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":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 869720","depth":9,"bounds":{"left":0.09453125,"top":0.9875,"width":0.11796875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"28","depth":12,"bounds":{"left":0.096875,"top":0.925,"width":0.01875,"height":0.030555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"28","depth":14,"bounds":{"left":0.10664062,"top":0.9284722,"width":0.00546875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":14,"bounds":{"left":0.2421875,"top":0.061805554,"width":0.00625,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activities","depth":14,"bounds":{"left":0.2484375,"top":0.061805554,"width":0.031640626,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Get Notified","depth":13,"bounds":{"left":0.55078125,"top":0.058333334,"width":0.051171876,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Sort by Sort by: Most recent","depth":13,"bounds":{"left":0.36171874,"top":0.057638887,"width":0.091796875,"height":0.025694445},"value":"Sort by Sort by: Most recent","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Sort by","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sort by:","depth":15,"bounds":{"left":0.3660156,"top":0.06458333,"width":0.019921875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Most recent","depth":15,"bounds":{"left":0.3859375,"top":0.06458333,"width":0.030078124,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add Recording","depth":13,"bounds":{"left":0.4910156,"top":0.058333334,"width":0.056640625,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"common.ai-icon-alt","depth":14,"bounds":{"left":0.6050781,"top":0.05625,"width":0.0140625,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Team:","depth":15,"bounds":{"left":0.24570313,"top":0.09652778,"width":0.0125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Product","depth":15,"bounds":{"left":0.26015624,"top":0.09652778,"width":0.016796876,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Topics:","depth":15,"bounds":{"left":0.29375,"top":0.09652778,"width":0.014453125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Competitors","depth":15,"bounds":{"left":0.31015626,"top":0.09652778,"width":0.0265625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":15,"bounds":{"left":0.35351562,"top":0.09652778,"width":0.019921875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1m and above","depth":15,"bounds":{"left":0.37539062,"top":0.09652778,"width":0.02890625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recorded:","depth":15,"bounds":{"left":0.42109376,"top":0.09652778,"width":0.021484375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Only Recorded","depth":15,"bounds":{"left":0.44453126,"top":0.09652778,"width":0.031640626,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal and external activities:","depth":15,"bounds":{"left":0.24570313,"top":0.121527776,"width":0.07734375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal only","depth":15,"bounds":{"left":0.325,"top":0.121527776,"width":0.038671874,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Save Search","depth":14,"bounds":{"left":0.2421875,"top":0.14930555,"width":0.0390625,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear all","depth":14,"bounds":{"left":0.28515625,"top":0.14930555,"width":0.030078124,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Saved searches Saved searches","depth":13,"bounds":{"left":0.1265625,"top":0.05486111,"width":0.095703125,"height":0.025},"value":"Saved searches Saved searches","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Saved searches","depth":15,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Saved searches","depth":16,"bounds":{"left":0.13085938,"top":0.06111111,"width":0.037109375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team","depth":13,"bounds":{"left":0.1265625,"top":0.099305555,"width":0.012890625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Product × Search teams","depth":12,"bounds":{"left":0.1265625,"top":0.115277775,"width":0.095703125,"height":0.02638889},"value":"Product × Search teams","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Product","depth":15,"bounds":{"left":0.13359375,"top":0.12291667,"width":0.01953125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×","depth":16,"bounds":{"left":0.15585938,"top":0.12222222,"width":0.003125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search teams","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Host","depth":13,"bounds":{"left":0.1265625,"top":0.15138888,"width":0.01171875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search team members Search team members","depth":12,"bounds":{"left":0.1265625,"top":0.17083333,"width":0.095703125,"height":0.025},"value":"Search team members Search team members","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search team members","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search team members","depth":14,"bounds":{"left":0.13085938,"top":0.17777778,"width":0.05390625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Also search as participant","depth":13,"bounds":{"left":0.1265625,"top":0.20069444,"width":0.062109374,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Participant","depth":13,"bounds":{"left":0.1265625,"top":0.22638889,"width":0.026953125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search team members Search team members","depth":12,"bounds":{"left":0.1265625,"top":0.24236111,"width":0.095703125,"height":0.025},"value":"Search team members Search team members","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search team members","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search team members","depth":14,"bounds":{"left":0.13085938,"top":0.24930556,"width":0.05390625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customer","depth":13,"bounds":{"left":0.1265625,"top":0.27708334,"width":0.025390625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Customer","depth":12,"bounds":{"left":0.14140625,"top":0.29375,"width":0.065625,"height":0.025},"help_text":"","placeholder":"Customer or Subject","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Transcript","depth":13,"bounds":{"left":0.1265625,"top":0.32916668,"width":0.02578125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search transcript","depth":12,"bounds":{"left":0.14140625,"top":0.34930557,"width":0.065625,"height":0.025},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Select option Said by","depth":12,"bounds":{"left":0.1265625,"top":0.3784722,"width":0.095703125,"height":0.025694445},"value":"Select option Said by","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Said by","depth":14,"bounds":{"left":0.13085938,"top":0.38541666,"width":0.0171875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select option Anyone","depth":12,"bounds":{"left":0.1265625,"top":0.40763888,"width":0.095703125,"height":0.025694445},"value":"Select option Anyone","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Anyone","depth":14,"bounds":{"left":0.13085938,"top":0.41458333,"width":0.01875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Period","depth":13,"bounds":{"left":0.1265625,"top":0.44305557,"width":0.016015625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All time","depth":14,"bounds":{"left":0.13203125,"top":0.46597221,"width":0.017578125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Topics","depth":13,"bounds":{"left":0.1265625,"top":0.49375,"width":0.015234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Competitors × Search topics","depth":12,"bounds":{"left":0.1265625,"top":0.50972223,"width":0.095703125,"height":0.02638889},"value":"Competitors × Search topics","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Competitors","depth":15,"bounds":{"left":0.13359375,"top":0.5173611,"width":0.030859375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×","depth":16,"bounds":{"left":0.1671875,"top":0.51666665,"width":0.003125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search topics","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Activity type","depth":13,"bounds":{"left":0.1265625,"top":0.54583335,"width":0.03125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search activity types Search activity types","depth":12,"bounds":{"left":0.1265625,"top":0.56180555,"width":0.095703125,"height":0.025},"value":"Search activity types Search activity types","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search activity types","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search activity types","depth":14,"bounds":{"left":0.13085938,"top":0.56875,"width":0.050390624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":13,"bounds":{"left":0.1265625,"top":0.59652776,"width":0.023046875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Min (minutes)","depth":13,"bounds":{"left":0.1265625,"top":0.61388886,"width":0.03359375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":13,"bounds":{"left":0.13203125,"top":0.6333333,"width":0.003125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Max (minutes)","depth":13,"bounds":{"left":0.16875,"top":0.61388886,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI call score","depth":13,"bounds":{"left":0.1265625,"top":0.6611111,"width":0.029296875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select AI call score Select AI call score","depth":12,"bounds":{"left":0.1265625,"top":0.6770833,"width":0.095703125,"height":0.025},"value":"Select AI call score Select AI call score","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select AI call score","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select AI call score","depth":14,"bounds":{"left":0.13085938,"top":0.6840278,"width":0.0453125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Automated call score","depth":13,"bounds":{"left":0.1265625,"top":0.7118056,"width":0.0515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select automated call score Select automated call score","depth":12,"bounds":{"left":0.1265625,"top":0.7277778,"width":0.095703125,"height":0.036111113},"value":"Select automated call score Select automated call score","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select automated call score","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select automated call score","depth":14,"bounds":{"left":0.13085938,"top":0.73333335,"width":0.051953126,"height":0.025694445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Coaching score","depth":13,"bounds":{"left":0.1265625,"top":0.7736111,"width":0.037109375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select coaching score Select coaching score","depth":12,"bounds":{"left":0.1265625,"top":0.7895833,"width":0.095703125,"height":0.025},"value":"Select coaching score Select coaching score","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select coaching score","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select coaching score","depth":14,"bounds":{"left":0.13085938,"top":0.7965278,"width":0.051953126,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Coach","depth":13,"bounds":{"left":0.1265625,"top":0.82430553,"width":0.01640625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search coaches Search coaches","depth":12,"bounds":{"left":0.1265625,"top":0.8402778,"width":0.095703125,"height":0.025},"value":"Search coaches Search coaches","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search coaches","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search coaches","depth":14,"bounds":{"left":0.13085938,"top":0.8472222,"width":0.0375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stage at call","depth":13,"bounds":{"left":0.1265625,"top":0.875,"width":0.02890625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search stages Search stages","depth":12,"bounds":{"left":0.1265625,"top":0.8909722,"width":0.095703125,"height":0.025},"value":"Search stages Search stages","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search stages","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search stages","depth":14,"bounds":{"left":0.13085938,"top":0.8979167,"width":0.033203125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Current stage","depth":13,"bounds":{"left":0.1265625,"top":0.92569447,"width":0.03359375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search stages Search stages","depth":12,"bounds":{"left":0.1265625,"top":0.94166666,"width":0.095703125,"height":0.025},"value":"Search stages Search stages","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search stages","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search stages","depth":14,"bounds":{"left":0.13085938,"top":0.94861114,"width":0.033203125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Language","depth":13,"bounds":{"left":0.1265625,"top":0.9763889,"width":0.0234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search language Search language","depth":12,"bounds":{"left":0.1265625,"top":0.9923611,"width":0.095703125,"height":0.0076388717},"value":"Search language Search language","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search language","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search language","depth":14,"bounds":{"left":0.13085938,"top":0.99930555,"width":0.03984375,"height":0.0006944537},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Playlist","depth":13,"bounds":{"left":0.1265625,"top":1.0,"width":0.01796875,"height":-0.027083278},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search playlists Search playlists","depth":12,"bounds":{"left":0.1265625,"top":1.0,"width":0.095703125,"height":-0.043055534},"value":"Search playlists Search playlists","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search playlists","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search playlists","depth":14,"bounds":{"left":0.13085938,"top":1.0,"width":0.037890624,"height":-0.049999952},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pending CRM notes","depth":13,"bounds":{"left":0.1265625,"top":1.0,"width":0.048046876,"height":-0.07777774},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Not logged to CRM","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recorded","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search recorded Only Recorded","depth":12,"value":"Search recorded Only Recorded","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search recorded","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Only Recorded","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show internal and external activities","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select option Show internal only","depth":12,"value":"Select option Show internal only","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select option","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show internal only","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search platforms Search platforms","depth":12,"value":"Search platforms Search platforms","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search platforms","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search platforms","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Call type","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search channels Search channels","depth":12,"value":"Search channels Search channels","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search channels","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search channels","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Outcome","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Search CRM Outcome Search CRM Outcome","depth":12,"value":"Search CRM Outcome Search CRM Outcome","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Search CRM Outcome","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search CRM Outcome","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deal value","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Min (amount)","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Max (amount)","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deal close date","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All time","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deal age","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1359d","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2717d+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Talking speed","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"177 wpm","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"252 wpm+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Talk ratio","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"40%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"60%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100%","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Patience","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0s","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1s","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2s","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3s+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Longest monologue","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5m","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10m+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Longest customer story","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5m","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10m+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rep questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Engaging questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Insightful questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Customer questions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
4131468604803394450
|
1369459477212459242
|
visual_change
|
accessibility
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
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
Close tab
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
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
New Tab
CloudWatch | us-east-2
CloudWatch | us-east-2
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 869720
28
28
0
activities
Get Notified
Sort by Sort by: Most recent
Sort by
Sort by:
Most recent
Add Recording
common.ai-icon-alt
Team:
Product
Topics:
Competitors
Duration:
1m and above
Recorded:
Only Recorded
Show internal and external activities:
Show internal only
Save Search
Clear all
Saved searches Saved searches
Saved searches
Saved searches
Team
Product × Search teams
Product
×
Search teams
Host
Search team members Search team members
Search team members
Search team members
Also search as participant
Participant
Search team members Search team members
Search team members
Search team members
Customer
Customer
Transcript
Search transcript
Select option Said by
Select option
Said by
Select option Anyone
Select option
Anyone
Period
All time
Topics
Competitors × Search topics
Competitors
×
Search topics
Activity type
Search activity types Search activity types
Search activity types
Search activity types
Duration
Min (minutes)
1
Max (minutes)
AI call score
Select AI call score Select AI call score
Select AI call score
Select AI call score
Automated call score
Select automated call score Select automated call score
Select automated call score
Select automated call score
Coaching score
Select coaching score Select coaching score
Select coaching score
Select coaching score
Coach
Search coaches Search coaches
Search coaches
Search coaches
Stage at call
Search stages Search stages
Search stages
Search stages
Current stage
Search stages Search stages
Search stages
Search stages
Language
Search language Search language
Search language
Search language
Playlist
Search playlists Search playlists
Search playlists
Search playlists
Pending CRM notes
Not logged to CRM
Recorded
Search recorded Only Recorded
Search recorded
Only Recorded
Show internal and external activities
Select option Show internal only
Select option
Show internal only
Platform
Search platforms Search platforms
Search platforms
Search platforms
Call type
Search channels Search channels
Search channels
Search channels
Outcome
Search CRM Outcome Search CRM Outcome
Search CRM Outcome
Search CRM Outcome
Deal value
Min (amount)
Max (amount)
Deal close date
All time
Deal age
0
1359d
2717d+
Talking speed
0
177 wpm
252 wpm+
Talk ratio
0%
40%
60%
100%
Patience
0s
1s
2s
3s+
Longest monologue
0
5m
10m+
Longest customer story
0
5m
10m+
Rep questions
0
25
50+
Engaging questions
0
25
50+
Insightful questions
0
25
50+
Customer questions
0
25
50+...
|
NULL
|
|
10935
|
217
|
17
|
2026-04-14T09:04:51.448363+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157491448_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpapp.staging.jiminny.com/ondemand?topic_id[=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1You are currently impersonating Nikolay Yankov <)Saved searchesO activitiesSort by: Most recentPlatform Sprint 1 Q2 - Platform TealeamJY-20543 add AJ reports User pilo(Product x)Z Configure SSH access to multipleHost@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-210Search team membersAlso search as participantJY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleFal CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParticipantSearch team membersCustomer (?• Customer or SubiectiTranscript ©Q Search transcriptSaid byAnyonePeriodiAll timeIopIcs( Competitors *)Activity typeSearch activity typesDuration ®Min (minutes) Max (minutes)Al call scoreSelect Al call scoreAutomated call scoreSelect automated callscoreCoaching scoreSelect coaching scoreCoach ©Search coachesStage at callSearch stagesCurrent stageSearch stagesleam: ProductxTopics: Competitors xDuration: 1m and above XRecorded: Only Recorded XShow internal and external activities: Show internal only X )b) Save Search(—) Clear alliSorry, we didn't find any matches for your filters.JY-18909-automated-reports-ask-iiminny = 869720* Add Recording |A Get Notified, 0half Support Daily • in 2h 56mACR O InspectorConsole• DebuggerN Network{) Style Editor( Performance7 Filter URLsAll HTMLCSsMediaotheCtatucMethodDomainInitiator200POSTAr.loar-in.comTasoonxat/olattorm-staqinaxr=0-019d8028-3ett-/ xhn200POSTA Y 036719.ing.../api/5627310/envelope/?sentry_version=7&sentry_ke fetch200POST• g 036719.ing..ap1/562/310/envelope/?sentryversion=/&sentry_ke tetch200POSTA B 036719.ing.../api/5627310/envelope/?sentry_version=7&sentry_ke sentry-B0ScDkXd...200POSTA 7 036719.ing...apl/boz/s1u envelooe sentry version=/asentry ke sentrv-buscukxo.200GETA app.staging.ji...search?status[l=completed&sort_by=dateHeld& xhr200GETA app.staging.ji..recentA xhr200200GETA app.stagingji...saved-searchA xhrGETapp.staging ji..integrationsxhr200GETA app.stagingji...on-demandrtopic 1c=e021093-co/0-4706-ac4 Xhn200GETA find.userpilot.ioNX-094be170200POST200A app.staging,-ji...xhrPOSTAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b28-3eff-7c xhrO: MemoryTypeIsonjsonjsonjson100% C•Tue 14 Apr 12:04:51E Storage0 99+_ Disable Cache No Throttling 50.Transferred6,12 KB500 B179 ms2 B | 147 msb00 B500 B19o me500 B2B95 mg6,28 KВ 2421kB1483 ms5.65 kB 15.26 kB801ms3.62 kB1.42 kB• 1010 ms3.83 kB5.53 kB1331 ms864k31481 mscached3.11 KB127.67 kB62 B0 ms96 B1 595 msI 355 msÔ 13 requests|131./9KB 185 KB transterredFinish: 4.31s DOMContentLoaded: 369 ms load: 518 ms...
|
NULL
|
-4179115651899084107
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpapp.staging.jiminny.com/ondemand?topic_id[=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1You are currently impersonating Nikolay Yankov <)Saved searchesO activitiesSort by: Most recentPlatform Sprint 1 Q2 - Platform TealeamJY-20543 add AJ reports User pilo(Product x)Z Configure SSH access to multipleHost@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-210Search team membersAlso search as participantJY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleFal CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParticipantSearch team membersCustomer (?• Customer or SubiectiTranscript ©Q Search transcriptSaid byAnyonePeriodiAll timeIopIcs( Competitors *)Activity typeSearch activity typesDuration ®Min (minutes) Max (minutes)Al call scoreSelect Al call scoreAutomated call scoreSelect automated callscoreCoaching scoreSelect coaching scoreCoach ©Search coachesStage at callSearch stagesCurrent stageSearch stagesleam: ProductxTopics: Competitors xDuration: 1m and above XRecorded: Only Recorded XShow internal and external activities: Show internal only X )b) Save Search(—) Clear alliSorry, we didn't find any matches for your filters.JY-18909-automated-reports-ask-iiminny = 869720* Add Recording |A Get Notified, 0half Support Daily • in 2h 56mACR O InspectorConsole• DebuggerN Network{) Style Editor( Performance7 Filter URLsAll HTMLCSsMediaotheCtatucMethodDomainInitiator200POSTAr.loar-in.comTasoonxat/olattorm-staqinaxr=0-019d8028-3ett-/ xhn200POSTA Y 036719.ing.../api/5627310/envelope/?sentry_version=7&sentry_ke fetch200POST• g 036719.ing..ap1/562/310/envelope/?sentryversion=/&sentry_ke tetch200POSTA B 036719.ing.../api/5627310/envelope/?sentry_version=7&sentry_ke sentry-B0ScDkXd...200POSTA 7 036719.ing...apl/boz/s1u envelooe sentry version=/asentry ke sentrv-buscukxo.200GETA app.staging.ji...search?status[l=completed&sort_by=dateHeld& xhr200GETA app.staging.ji..recentA xhr200200GETA app.stagingji...saved-searchA xhrGETapp.staging ji..integrationsxhr200GETA app.stagingji...on-demandrtopic 1c=e021093-co/0-4706-ac4 Xhn200GETA find.userpilot.ioNX-094be170200POST200A app.staging,-ji...xhrPOSTAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b28-3eff-7c xhrO: MemoryTypeIsonjsonjsonjson100% C•Tue 14 Apr 12:04:51E Storage0 99+_ Disable Cache No Throttling 50.Transferred6,12 KB500 B179 ms2 B | 147 msb00 B500 B19o me500 B2B95 mg6,28 KВ 2421kB1483 ms5.65 kB 15.26 kB801ms3.62 kB1.42 kB• 1010 ms3.83 kB5.53 kB1331 ms864k31481 mscached3.11 KB127.67 kB62 B0 ms96 B1 595 msI 355 msÔ 13 requests|131./9KB 185 KB transterredFinish: 4.31s DOMContentLoaded: 369 ms load: 518 ms...
|
10934
|
|
10939
|
217
|
19
|
2026-04-14T09:04:54.450745+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157494450_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFilePlatform Sprint 1 Q2 - Platform TeaJY-2 FirefoxFilePlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multiple@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabEoitViewHistory10$BookmarksProfilesToolsWindowHelphttps://app.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1|Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira - jiminny.atlassian.net/jira/software/c/projects/JY/boards/37JY-20543 add AJ reports User pilot tracking by LakyLak • Pull Request #11932 • jiminny/app Switch to TabTeaJiminny - app.staging.jiminny.com/ai-reportsInbox (1,540) - [EMAIL] - Jiminny Mail - mail.google.com/mail/u/0/#inboxHosCloudWatch | us-east-2 Switch to TabMeet - Daily - Platform - meet.google.com/mie-gawc-dsiAlsowikipeala - wikipedia.orgParlCUSRecent searchesgmailTrending on Googleтурска лираTrarкарлос алкарас3 керлнска праресионален тенисистSearch transcriptSaid byAnyonePeriodiAll timeIopIcs( Competitors *)Activity typeSearch activity typesDuration ®Min (minutes) Max (minutes)Al call scoreSelect Al call scoreAutomated call scoreSelect automated callscoreCoaching scoreSelect coaching scoreCoach ©Search coachesStage at callSearch stagesCurrent stageSearch stagesJY-18909-automated-reports-ask-iiminny = 869720)halSupport Daily - in 2h 56 mA100% CS•Tue 14 Apr 12:04:54Waes"mhoomE Storage0 99+_ Disable Cache No Throttling + 50:Transferred5.12 kB0 8 |179 ms500 B2 B | 147 msb00 B2 B 1 95 ms500 B2 B |95 ms500 B2B95 ms6.28 KB 24.21 kB 1483 ms5.65 kB 15.26 kB/801 ms3.62 kB1.42 KB1010 ms3.83 kB5.53 kB1331 ms864k31481 mscached62 B3.11 KB96B127.67 kB3.39 kB1 595 ms1 355 ms148 ms© 14 requests|131./9KB/ 188.39 kB transterredFinish: 7.50 s DOMContentLoaded: 369 ms load: 518 ms...
|
NULL
|
-1288930026332589331
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFilePlatform Sprint 1 Q2 - Platform TeaJY-2 FirefoxFilePlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multiple@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabEoitViewHistory10$BookmarksProfilesToolsWindowHelphttps://app.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1|Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira - jiminny.atlassian.net/jira/software/c/projects/JY/boards/37JY-20543 add AJ reports User pilot tracking by LakyLak • Pull Request #11932 • jiminny/app Switch to TabTeaJiminny - app.staging.jiminny.com/ai-reportsInbox (1,540) - [EMAIL] - Jiminny Mail - mail.google.com/mail/u/0/#inboxHosCloudWatch | us-east-2 Switch to TabMeet - Daily - Platform - meet.google.com/mie-gawc-dsiAlsowikipeala - wikipedia.orgParlCUSRecent searchesgmailTrending on Googleтурска лираTrarкарлос алкарас3 керлнска праресионален тенисистSearch transcriptSaid byAnyonePeriodiAll timeIopIcs( Competitors *)Activity typeSearch activity typesDuration ®Min (minutes) Max (minutes)Al call scoreSelect Al call scoreAutomated call scoreSelect automated callscoreCoaching scoreSelect coaching scoreCoach ©Search coachesStage at callSearch stagesCurrent stageSearch stagesJY-18909-automated-reports-ask-iiminny = 869720)halSupport Daily - in 2h 56 mA100% CS•Tue 14 Apr 12:04:54Waes"mhoomE Storage0 99+_ Disable Cache No Throttling + 50:Transferred5.12 kB0 8 |179 ms500 B2 B | 147 msb00 B2 B 1 95 ms500 B2 B |95 ms500 B2B95 ms6.28 KB 24.21 kB 1483 ms5.65 kB 15.26 kB/801 ms3.62 kB1.42 KB1010 ms3.83 kB5.53 kB1331 ms864k31481 mscached62 B3.11 KB96B127.67 kB3.39 kB1 595 ms1 355 ms148 ms© 14 requests|131./9KB/ 188.39 kB transterredFinish: 7.50 s DOMContentLoaded: 369 ms load: 518 ms...
|
10937
|
|
10942
|
217
|
21
|
2026-04-14T09:04:57.951808+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157497951_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.stagingjiminny.com/ondemand?topic_id[=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)O activitiesSort by: Most recent-@(©AdRecordingPlatform Sprint 1 Q2 - Platform TealeamJY-20543 add AJ reports User pilo(Product x)Z Configure SSH access to multipleHost@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-210Search team membersAlso search as participantJY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity•Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleFal CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParticipantSearch team membersCustomer (?Customer or subiectiTranscript ©Q Search transcriptSaid byAnyonePeriodiAll timeIopIcs( Competitors *)Activity typeSearch activity typesDuration ®Min (minutes) Max (minutes)Al call scoreSelect Al call scoreAutomated call scoreSelect automated callscoreCoaching scoreSelect coaching scoreCoach ©Search coachesStage at callSearch stagesCurrent stageSearch stagesleam: ProductxTopics: Competitors X) Duration: 1m and above X)Show internal and external activities: Show internal only X )Recorded: Only Recorded Xb) Save Search(—) Clear alliSorry, we didn't find any matches for your filters.JY-18909-automated-reports-ask-iiminny = 869720)halSupport Daily - in 2h 56 mA100% CS•Tue 14 Apr 12:04:57: Get NotifiedCR O Inspector| T Filter URLSAll HTML CSS• ConsoleD DebuggerTt Network{) Style Editor( Performance: MemoryE StoragemagesMediaother• Perform a request orReload the page to see detalled information about network activity.• Click on the obutton to start perormance analysis. 2_ Disable Cache No Throttling + 50:Ô No requests...
|
NULL
|
-8544112698791903079
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.stagingjiminny.com/ondemand?topic_id[=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)O activitiesSort by: Most recent-@(©AdRecordingPlatform Sprint 1 Q2 - Platform TealeamJY-20543 add AJ reports User pilo(Product x)Z Configure SSH access to multipleHost@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-210Search team membersAlso search as participantJY-20543 add AJ reports User piloSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity•Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleFal CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParticipantSearch team membersCustomer (?Customer or subiectiTranscript ©Q Search transcriptSaid byAnyonePeriodiAll timeIopIcs( Competitors *)Activity typeSearch activity typesDuration ®Min (minutes) Max (minutes)Al call scoreSelect Al call scoreAutomated call scoreSelect automated callscoreCoaching scoreSelect coaching scoreCoach ©Search coachesStage at callSearch stagesCurrent stageSearch stagesleam: ProductxTopics: Competitors X) Duration: 1m and above X)Show internal and external activities: Show internal only X )Recorded: Only Recorded Xb) Save Search(—) Clear alliSorry, we didn't find any matches for your filters.JY-18909-automated-reports-ask-iiminny = 869720)halSupport Daily - in 2h 56 mA100% CS•Tue 14 Apr 12:04:57: Get NotifiedCR O Inspector| T Filter URLSAll HTML CSS• ConsoleD DebuggerTt Network{) Style Editor( Performance: MemoryE StoragemagesMediaother• Perform a request orReload the page to see detalled information about network activity.• Click on the obutton to start perormance analysis. 2_ Disable Cache No Throttling + 50:Ô No requests...
|
10941
|
|
10943
|
217
|
22
|
2026-04-14T09:05:00.982367+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157500982_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfllesToolsWi FirefoxFileEoitViewHistoryBookmarksProfllesToolsWindowHelpapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)j Support Daily • in 2h 55 mA100% C•Tue 14 Apr 12:05:00• DebuggerN Network(} Style Editor( PerformanceO: MemoryE StorageNo tilters annlied0 99+_ Disable Cache No Throttling + 50:Platform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multipleConsole Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User pilo5 SRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201- Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New Tab10InspectorConsole| T Filter URLSAll HTML CSSCtatucMethod Domain200POST8 8 036719.ing...200POSTA 8 036779.ing...200POST• g 036719.ing..POSTA B 036719.ing...GETA app.staging.i..A app.staging.ji...A app.staging.ji.A app.stagingji...app.staging.jimin...ttind, userollot.loA app.staging.i...MediaInitiatorap1b0 310 envelodelsentry versionssentrv xe tetch/api/5627310/envelope/?sentry_version=7&sentry_ke fetchap1/562/310/envelope/?sentryversion=/&sentry_ke tetch/api/5627310/envelope/?sentry_version=7&sentry_ke fetchsearch?statusl|=completed&sort_by=dateHeld& * xhrrecentsaved-searchA xhrintegrationsA xhron-demand?topic_idll=e02f0932-cb76-41b6-ac +a xhrNX-0940e17authenticatexhrTypeIsonsonTransferredb008500 Bb00 B500 B6.28 kB 24.21 kB5.65 kB15.26 kB3.62 kB1.42 kB3.83 kB5.53 KBcacheo3.12 kB96 B43 ms| 43 ms1537 ms211 ms1508 m;1253 ms620 msJY-18909-automated-reports-ask-iiminny = 869720)© 11 requests|46.68 KB 24.49 KB transterredFinish: 2.13sDOMContentLoaded: 42 ms load: 195 ms...
|
NULL
|
-3387436160434246656
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfllesToolsWi FirefoxFileEoitViewHistoryBookmarksProfllesToolsWindowHelpapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)j Support Daily • in 2h 55 mA100% C•Tue 14 Apr 12:05:00• DebuggerN Network(} Style Editor( PerformanceO: MemoryE StorageNo tilters annlied0 99+_ Disable Cache No Throttling + 50:Platform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multipleConsole Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User pilo5 SRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201- Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New Tab10InspectorConsole| T Filter URLSAll HTML CSSCtatucMethod Domain200POST8 8 036719.ing...200POSTA 8 036779.ing...200POST• g 036719.ing..POSTA B 036719.ing...GETA app.staging.i..A app.staging.ji...A app.staging.ji.A app.stagingji...app.staging.jimin...ttind, userollot.loA app.staging.i...MediaInitiatorap1b0 310 envelodelsentry versionssentrv xe tetch/api/5627310/envelope/?sentry_version=7&sentry_ke fetchap1/562/310/envelope/?sentryversion=/&sentry_ke tetch/api/5627310/envelope/?sentry_version=7&sentry_ke fetchsearch?statusl|=completed&sort_by=dateHeld& * xhrrecentsaved-searchA xhrintegrationsA xhron-demand?topic_idll=e02f0932-cb76-41b6-ac +a xhrNX-0940e17authenticatexhrTypeIsonsonTransferredb008500 Bb00 B500 B6.28 kB 24.21 kB5.65 kB15.26 kB3.62 kB1.42 kB3.83 kB5.53 KBcacheo3.12 kB96 B43 ms| 43 ms1537 ms211 ms1508 m;1253 ms620 msJY-18909-automated-reports-ask-iiminny = 869720)© 11 requests|46.68 KB 24.49 KB transterredFinish: 2.13sDOMContentLoaded: 42 ms load: 195 ms...
|
NULL
|
|
10944
|
217
|
23
|
2026-04-14T09:05:04.006941+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157504006_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent* Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityCurrent StagestatsDuration DateZ Configure SSH access to multipleHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210niso searen as particioantJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantsearcn leam memdersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byMnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesLanguageapp.staging.jiminny.com/plavback/eb99550a-72b3-4a5a-afd3-6764fd731cb5ContactActivityTypeJiminny MSalestorce App IrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...Unlikely toRenew$42,12647mlĐ0 D444mĐ0 D3Đ0D234m$0%0Đ0 D2$0 228.DODO17m31m43m28mD0 E1 sim25m39m33m53122ĐO D 1141m11/0/2024.2:28 PMI25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.96 PMI13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AMj Support Daily • in 2h 55 mA100% C•Tue 14 Apr 12:05:03Q InspectorFilter URLsConsoleD DebuggerN Network{} Style Editor( PerformanceO: Memory0 99+AlIHMLeSSMethod296200POs IPOSTPOsIPOSTMedia200200200200200GETGETGETGET200200POSTPOsIDomainA D 036719.ing...A Y 036719.ing...036/19.ing..A B 036719.ing...apo.stagino.l..A app.staging.ji...A app.stagingji...A app.stagingji...A app.stagingji...ttind, userollot.loA app.stagingji...r.logr-in.comInitiatorap1b0 310 envelodelsentry versionssentrv xe tetch/api/5627310/envelope/?sentry_version=7&sentry_ke fetchap1/562/310/envelope/?sentryversion=/&sentry_ke tetch/api/5627310/envelope/?sentry_version=7&sentry_ke fetchsearch?statusl|=completed&sort_by=dateHeld& * xhrrecentsaved-search" Xhiintegrationson-demand?topic_idll=e02f0932-cb76-41b6-ac +a xhrNX-0940e17authenticateA xhrYa=ponxat plattorm-staging&r=b-019d8b28-3eft-/c xhrE Storage_ Disable Cache No Throttling + 50:TransferredIsonsonb00843 ms500 Bb00 B500 B| 43 ms6.28 kB24.21 kB1537 ms5.65 KB15.26 kB| 211 ms3.62 kB1.42 KB3.83 kB5.53 kB55.53 kB 196.86.1253 ms2288 mscacheo3.12 kB126.39 KB96 BI 620 ms359 ms12 requests| 243.44 kB / 206.41 kB transferredFinish: 4.39s DOMContentLoaded: 42 ms load: 195 ms...
|
NULL
|
6058075518634320600
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpSaved searchesapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent* Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityCurrent StagestatsDuration DateZ Configure SSH access to multipleHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210niso searen as particioantJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc& Configure SSH access to multiple eCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantsearcn leam memdersCustomer ©Customer or SubjectTranscript ©• Search transcript |Said byMnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesLanguageapp.staging.jiminny.com/plavback/eb99550a-72b3-4a5a-afd3-6764fd731cb5ContactActivityTypeJiminny MSalestorce App IrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterprise MJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...Unlikely toRenew$42,12647mlĐ0 D444mĐ0 D3Đ0D234m$0%0Đ0 D2$0 228.DODO17m31m43m28mD0 E1 sim25m39m33m53122ĐO D 1141m11/0/2024.2:28 PMI25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.96 PMI13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AMj Support Daily • in 2h 55 mA100% C•Tue 14 Apr 12:05:03Q InspectorFilter URLsConsoleD DebuggerN Network{} Style Editor( PerformanceO: Memory0 99+AlIHMLeSSMethod296200POs IPOSTPOsIPOSTMedia200200200200200GETGETGETGET200200POSTPOsIDomainA D 036719.ing...A Y 036719.ing...036/19.ing..A B 036719.ing...apo.stagino.l..A app.staging.ji...A app.stagingji...A app.stagingji...A app.stagingji...ttind, userollot.loA app.stagingji...r.logr-in.comInitiatorap1b0 310 envelodelsentry versionssentrv xe tetch/api/5627310/envelope/?sentry_version=7&sentry_ke fetchap1/562/310/envelope/?sentryversion=/&sentry_ke tetch/api/5627310/envelope/?sentry_version=7&sentry_ke fetchsearch?statusl|=completed&sort_by=dateHeld& * xhrrecentsaved-search" Xhiintegrationson-demand?topic_idll=e02f0932-cb76-41b6-ac +a xhrNX-0940e17authenticateA xhrYa=ponxat plattorm-staging&r=b-019d8b28-3eft-/c xhrE Storage_ Disable Cache No Throttling + 50:TransferredIsonsonb00843 ms500 Bb00 B500 B| 43 ms6.28 kB24.21 kB1537 ms5.65 KB15.26 kB| 211 ms3.62 kB1.42 KB3.83 kB5.53 kB55.53 kB 196.86.1253 ms2288 mscacheo3.12 kB126.39 KB96 BI 620 ms359 ms12 requests| 243.44 kB / 206.41 kB transferredFinish: 4.39s DOMContentLoaded: 42 ms load: 195 ms...
|
10943
|
|
10951
|
217
|
27
|
2026-04-14T09:05:13.613450+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157513613_m2.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (DM) - Jiminny Inc - 1 new item - Slack...
|
1
|
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
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Galya Dimitrova
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Yankov
Nikolay Yankov
Jira Cloud
Toast
Google Calendar
Messages
Messages
Add canvas
Add canvas
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Today at 10:34:10 AM
10:34 AM
не само daily но трябва да се пусне команда
Today at 10:35:08 AM
10:35
php artisan automated-reports
Nikolay Yankov
Today at 10:35:39 AM
10:35 AM
значи не създава веднага по принцип, в някакъв час на деня ли стъздава?
Lukas Kovalik
Today at 10:36:11 AM
10:36 AM
това ще гледа всичко applicable за днес (ако не понедлник или начало на месец е само daily)
Today at 10:36:27 AM
10:36
крон го пуска през нощ
Today at 10:37:19 AM
10:37
така че мануално пусни при тестване
Today at 10:38:26 AM
10:38
ако трябва да тестваме други репорти може да променя команда за тестване да приема параметър за report template и д си пускаме определен когато тестваме
Nikolay Yankov
Today at 10:41:03 AM
10:41 AM
можеш ли да я ръннеш ти командата
Lukas Kovalik
Today at 10:43:05 AM
10:43 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
Nikolay Yankov
Today at 10:45:52 AM
10:45 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
Today at 10:52:52 AM
10:52 AM
забавих се че ми се разбазикаха settings за среди
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 10:53:07 AM
10:53
пуснах и мина и fail-на
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 10:53:20 AM
10:53
има result но е failed
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 10:58:08 AM
10:58
значи
REASON_NOT_ENOUGH_ACTIVITIES
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 10:58:57 AM
10:58
виж дали има нещо в OD със този филтър
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 11:01:28 AM
11:01 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
Nikolay Yankov
Today at 11:39:27 AM
11:39 AM
я рънни пак
Lukas
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
Today at 11:43:00 AM
11:43 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
Today at 11:44:24 AM
11:44
същото
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 11:47:25 AM
11:47
Competitive pitches беше втория нали така
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Nikolay Yankov
Today at 12:04:33 PM
12:04 PM
Да, там има 14 активитита, защо не сработи този път?
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.23867187,"top":1.0,"width":0.0125,"height":-0.05486107},"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.23867187,"top":1.0,"width":0.0125,"height":-0.090972185},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"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.26054686,"top":1.0,"width":0.0203125,"height":-0.048611164},"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.26484376,"top":1.0,"width":0.01171875,"height":-0.08124995},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.26054686,"top":1.0,"width":0.0203125,"height":-0.0958333},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.3,"top":1.0,"width":0.022265624,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.3,"top":1.0,"width":0.020703126,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.3,"top":1.0,"width":0.021484375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.3,"top":1.0,"width":0.034375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.3,"top":1.0,"width":0.028515626,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Google Calendar","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.3765625,"top":1.0,"width":0.036328126,"height":-0.079861164},"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.3875,"top":1.0,"width":0.022265624,"height":-0.087499976},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.4140625,"top":1.0,"width":0.040234376,"height":-0.079861164},"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.425,"top":1.0,"width":0.026171874,"height":-0.087499976},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.45546874,"top":1.0,"width":0.012890625,"height":-0.079861164},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 10:34:10 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:34 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"не само daily но трябва да се пусне команда","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 10:35:08 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:35","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"php artisan automated-reports","depth":25,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 10:35:39 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:35 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"значи не създава веднага по принцип, в някакъв час на деня ли стъздава?","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 10:36:11 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:36 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"това ще гледа всичко applicable за днес (ако не понедлник или начало на месец е само daily)","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 10:36:27 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:36","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"крон го пуска през нощ","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 10:37:19 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:37","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"така че мануално пусни при тестване","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 10:38:26 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:38","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"ако трябва да тестваме други репорти може да променя команда за тестване да приема параметър за report template и д си пускаме определен когато тестваме","depth":25,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 10:41:03 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:41 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"можеш ли да я ръннеш ти командата","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 10:43:05 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:43 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"да","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 10:45:52 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:45 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"пиши кат оя ръннеш","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 10:52:52 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:52 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"забавих се че ми се разбазикаха settings за среди","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 10:53:07 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"пуснах и мина и fail-на","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 10:53:20 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:53","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"има result но е failed","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 10:58:08 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:58","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"значи","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"REASON_NOT_ENOUGH_ACTIVITIES","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 10:58:57 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:58","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"виж дали има нещо в OD със този филтър","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 11:01:28 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:01 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Добре","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 11:39:27 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:39 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"я рънни пак","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Lukas","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 11:43:00 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:43 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"готово","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 11:44:24 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:44","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"същото","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 11:47:25 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:47","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Competitive pitches беше втория нали така","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"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,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":22,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 12:04:33 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:04 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Да, там има 14 активитита, защо не сработи този път?","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"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,"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,"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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3633154138292956942
|
-1285472192273661616
|
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
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Galya Dimitrova
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Yankov
Nikolay Yankov
Jira Cloud
Toast
Google Calendar
Messages
Messages
Add canvas
Add canvas
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Today at 10:34:10 AM
10:34 AM
не само daily но трябва да се пусне команда
Today at 10:35:08 AM
10:35
php artisan automated-reports
Nikolay Yankov
Today at 10:35:39 AM
10:35 AM
значи не създава веднага по принцип, в някакъв час на деня ли стъздава?
Lukas Kovalik
Today at 10:36:11 AM
10:36 AM
това ще гледа всичко applicable за днес (ако не понедлник или начало на месец е само daily)
Today at 10:36:27 AM
10:36
крон го пуска през нощ
Today at 10:37:19 AM
10:37
така че мануално пусни при тестване
Today at 10:38:26 AM
10:38
ако трябва да тестваме други репорти може да променя команда за тестване да приема параметър за report template и д си пускаме определен когато тестваме
Nikolay Yankov
Today at 10:41:03 AM
10:41 AM
можеш ли да я ръннеш ти командата
Lukas Kovalik
Today at 10:43:05 AM
10:43 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
Nikolay Yankov
Today at 10:45:52 AM
10:45 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
Today at 10:52:52 AM
10:52 AM
забавих се че ми се разбазикаха settings за среди
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 10:53:07 AM
10:53
пуснах и мина и fail-на
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 10:53:20 AM
10:53
има result но е failed
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 10:58:08 AM
10:58
значи
REASON_NOT_ENOUGH_ACTIVITIES
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 10:58:57 AM
10:58
виж дали има нещо в OD със този филтър
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Today at 11:01:28 AM
11:01 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
Nikolay Yankov
Today at 11:39:27 AM
11:39 AM
я рънни пак
Lukas
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
Today at 11:43:00 AM
11:43 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
Today at 11:44:24 AM
11:44
същото
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 11:47:25 AM
11:47
Competitive pitches беше втория нали така
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Nikolay Yankov
Today at 12:04:33 PM
12:04 PM
Да, там има 14 активитита, защо не сработи този път?
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
FirefoxFileEditViewHistoryBookmarks)ProfilesToolsWindowHeldSaved searchesapp.staging.jiminny.com/ondemand?topic_id[]=e02f0932-cb76-41b6-ac4f-6b8db1392146&include_internal_conversations=1&sequence_number=4You are currently impersonating Nikolay Yankov <)14 activitiesSort by: Most recent* Add RecordingA Get NotifiedPlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloleamSearch teamsiTopics: Competitors XShow internal and external activities: Show internal only *)Save Search @ Clear allHostIActivityCurrent StagestatsZ Configure SSH access to multipleHost@ Console Home | Console Home | usSearch team membersiSecurityGroup | EC2 |us-east-210niso searen as DarticloanuJY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity8 Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2New TabCa CloudWatch | us-east-2+ New TabParuicipantSearch team membersCustomer ®Customer or SubjectTranscript ©• Search transcript |Said byMnyonePeriodAll timeTopicsCompetitors *)Activity typeSearch activity typesDuration ©Min (minutes)Max (minutes)Al call scoreSelect Al call scoreMulomalea call scoreSelect automated calliCoaching scoreSelect coaching scoreCoach ®Search coaches.Stage at callSearch stagesCurrent stageSearch stagesContactActivityTypeDurationDateJiminny MSalestorce App IrainingJiminny MBekkie/ Jules - renewals and Contract…Jiminny MHandover training part 1Unknown Customer M2 8 Deal Insights playbook 2 €Exclaimer MExclaimer handoverUnknown Customer MHow to run an Intro CallTom Lavery at Plamen enterpriseMJiminny & - All-hands meeting i%TomLaveryUnknown Customer MAll -hands Jan 9thUnknown Customer MNotetaker added on 11-28-23 @04:01Unknown Customer played) 1Training P - Jiminny App for Salesfor..Unknown Customer MAll-hands - Thank Yous, What Went, L...Unknown Customer played MAll-hands - Nov /thUnknown Customer 1All Hands - October 31st ©Unknown Customer MDeal Insights Referesher/Training w/T...JY-18909-automated-reports-ask-iiminny = 869720Unlikely toRenew$42,12647mĐ0 D444m90 о 3Đ0D234m$0%000D 2$0 228.DODO17m31m43m28mD0 E1 sim25m39m33m53122ĐO D 1141m11/0/2024.2:28 PMI25/06/2024, 3:09 PM10/06/2024, 12:02 PM18/05/9014. 19.96 PMI13/03/2024, 11:28 AM26/02/2024, 2:30 PM16/01/2024, 11:43 AM09/01/2024, 11:45 AM28/11/2023, 11:30 AM22/11/2023, 11:56 AM14/11/2023, 11:27 AM07/11/2023, 11:42 AM31/10/2023, 11:35 AM25/10/2023, 11:46 AMSupport Daily • in 2h 55 mTue 14 Aor 12:05:13Q InspectorConsoleD DebuggerN Network{) Style Editor( PerformanceELE MemoryE Storage© 99+Filter URLsAlIHMLeSSImages200200206200200200200200200206200200MediaotheMethodPOs IPOSTInitiatorPOsIPOSTGETGETGETGETGETGETPOSTPOsIPOSTPUSIPOSTDomainA D 036719.ing...A Y 036719.ing...036/19.ing..A B 036719.ing...apo.stagino.l..A app.staging.ji...A app.staging.ji.A app.stagingji...A app.stagingji...ttind, userollot.loA app.stagingji...ap1b0 310 envelodelsentry versionssentrv xe tetch/api/5627310/envelope/?sentry_version=7&sentry_ke fetchap1/562/310/envelope/?sentryversion=/&sentry_ke tetch/api/5627310/envelope/?sentry_version=7&sentry_ke fetchsearch?statusl|=completed&sort_by=dateHeld& * xhrrecentsaved-search" Xhiintegrationson-demand?topic_idll=e02f0932-cb76-41b6-ac +a xhrNX-0940e17authenticateA xhrAr.logr-in.comr.locl-in.comAr.logr-in.comYa=ponxat plattorm-staging&r=b-019d8b28-3eft-/c xhri?a=ponxaf/platform-staging&r=6-019d8b28-3eff-7c xhri?a=ponxaf/platform-staging&r=6-019d8b28-3eff-7c xhri?a=ponxaf/platform-staging&r=6-019d8b28-3eff-7c xhr_ Disable Cache No Throttling + 50:TransferredIsonb0088 | 43 ms500 B2 B | 43 msb00 B23 44 ms500 B2 B | 43 ms6.28 kB24.21 kB1537 ms5.65 kB15.26 kB | 211 ms3.62 kB1.42 Kb 1508 ms3.83 kB5.53 kB | 1253 ms55.53 kB 196.86..2299 mscacheo3.12 kB126.39 KB7.89 kB6.41 kB348kR96 B | 620 ms359 ms|158 ms153 ms|150 ms15 requests| 243.44 kB / 224.19 kB transferredFinish: 14.72 sDOMContentLoaded: 42 ms load: 195 ms...
|
10950
|