Repository navigation
feat(google): Learn longer working hours from past meetings - #2252
Open
sentry-junior[bot] wants to merge 4 commits into
Open
sentry-junior[bot] wants to merge 4 commits into
sentry-junior[bot] wants to merge 4 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Google Calendar does not expose the working hours people set in Calendar, so findMeetingTimes used one shared 09:00-17:00 window for everyone. Add setWorkingHours, which saves the requester's own weekday hours in a new junior_google_working_hours table. findMeetingTimes now searches each person's saved hours, else 09:00-17:00. A requested time of day can narrow saved hours but never widen them, and checked[] reports the hours used. Refs #2063 Co-Authored-By: David Cramer <david@sentry.io>
Drop the stored working hours. Junior should not keep its own copy of people's hours. findMeetingTimes now reads the last 3 weeks of free/busy data in the same query. When at least 3 past weekdays had a meeting before 09:00 or after 17:00 for a person, their hours grow to include that time. The hours never shrink, and a time of day that the requester asks for replaces them. Refs #2063 Co-Authored-By: David Cramer <david@sentry.io>
sentry-junior
Bot
force-pushed
the
feat/google-saved-working-hours
branch
from
October 27, 2026 18:54
2353b40 to
f34db5d
Compare
Do-not-schedule blocks, focus time, and personal events are busy in free/busy, so they made people's learned hours longer. Read the last 3 weeks of each person's events instead, in the request that already reads the calendar time zone. Count only timed, busy events with another attendee that the person did not decline. Refs #2063 Co-Authored-By: David Cramer <david@sentry.io>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 791976e. Configure here.
Sentry Evalsjunior-behavioral
Base commit junior-integration
Base commit |
The events field mask asks only for start/dateTime and end/dateTime, so Google leaves out start and end of all-day events. The history schema required both, so findMeetingTimes failed for any calendar with an all-day event in the last 3 weeks. Make them optional and skip such events. Refs #2063
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Google Calendar's public API does not return the working hours people set in Calendar. So
findMeetingTimesused one shared 09:00–17:00 window for everyone. With that window, London and Los Angeles share no time, even when someone in London often takes calls until 22:00.We decided not to keep a copy of people's hours in Junior. Instead,
findMeetingTimeslearns longer hours from each person's past meetings:events.listrequest per attendee to read the calendar time zone. That request now also returns the attendee's last 3 weeks of events, with only times, transparency, and attendees (no titles or descriptions). This adds no requests.workdayStart/workdayEndare now optional. When the requester asks for a time of day, the requested value replaces the learned value.checked[]reports the hours searched for each person.fromMeetingsis true when past meetings made the hours longer.An earlier commit on this branch added a stored
setWorkingHourstool. Later commits remove it, so the final diff has no table, migration, or new tool.Checks
pnpm --filter @sentry/junior-google test: 23 passed. The test covers late calls, do-not-schedule holds, declined calls, and weekend calls.typecheck,lint,prettier --check: cleanevents.listhandler returns events without attendees, so evals keep 09:00–17:00.Refs #2063
via David Cramer.
--
View Junior Session [Sentry]