18 KiB
Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_schedule (2026-04-22)
Corpus Check
- 14 files · ~13,839 words
- Verdict: corpus is large enough that graph structure adds value.
Summary
- 207 nodes · 322 edges · 45 communities detected
- Extraction: 87% EXTRACTED · 13% INFERRED · 0% AMBIGUOUS · INFERRED: 42 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
Community Hubs (Navigation)
- _COMMUNITY_Community 0
- _COMMUNITY_Community 1
- _COMMUNITY_Community 2
- _COMMUNITY_Community 3
- _COMMUNITY_Community 4
- _COMMUNITY_Community 5
- _COMMUNITY_Community 6
- _COMMUNITY_Community 7
- _COMMUNITY_Community 8
- _COMMUNITY_Community 9
- _COMMUNITY_Community 10
- _COMMUNITY_Community 11
- _COMMUNITY_Community 12
- _COMMUNITY_Community 13
- _COMMUNITY_Community 14
- _COMMUNITY_Community 15
- _COMMUNITY_Community 16
- _COMMUNITY_Community 17
- _COMMUNITY_Community 18
- _COMMUNITY_Community 19
- _COMMUNITY_Community 20
- _COMMUNITY_Community 21
- _COMMUNITY_Community 22
- _COMMUNITY_Community 23
- _COMMUNITY_Community 24
- _COMMUNITY_Community 25
- _COMMUNITY_Community 26
- _COMMUNITY_Community 27
- _COMMUNITY_Community 28
- _COMMUNITY_Community 29
- _COMMUNITY_Community 30
- _COMMUNITY_Community 31
- _COMMUNITY_Community 32
- _COMMUNITY_Community 33
- _COMMUNITY_Community 34
- _COMMUNITY_Community 35
- _COMMUNITY_Community 36
- _COMMUNITY_Community 37
- _COMMUNITY_Community 38
- _COMMUNITY_Community 39
- _COMMUNITY_Community 40
- _COMMUNITY_Community 41
- _COMMUNITY_Community 42
- _COMMUNITY_Community 43
- _COMMUNITY_Community 44
God Nodes (most connected - your core abstractions)
FusionCalendarAccount- 35 edgesPortalSchedule- 17 edgescreate()- 10 edgesoauth_callback()- 8 edgesnavigateWeek()- 6 edgesschedule_ai_suggest()- 6 edgesformatDateStr()- 5 edgesrenderWeekCalendar()- 5 edgesschedule_page()- 5 edgesschedule_book_submit()- 5 edges
Surprising Connections (you probably didn't know these)
oauth_callback()--calls-->_fetch_google_email()[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_schedule/controllers/portal_schedule.py → /Users/gurpreet/Github/Odoo-Modules/fusion_schedule/models/fusion_calendar_account.pyoauth_callback()--calls-->_fetch_microsoft_email()[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_schedule/controllers/portal_schedule.py → /Users/gurpreet/Github/Odoo-Modules/fusion_schedule/models/fusion_calendar_account.pyoauth_callback()--calls-->create()[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_schedule/controllers/portal_schedule.py → /Users/gurpreet/Github/Odoo-Modules/fusion_schedule/models/res_users.pyschedule_book_submit()--calls-->create()[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_schedule/controllers/portal_schedule.py → /Users/gurpreet/Github/Odoo-Modules/fusion_schedule/models/res_users.pypublic_book_submit()--calls-->create()[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_schedule/controllers/portal_schedule.py → /Users/gurpreet/Github/Odoo-Modules/fusion_schedule/models/res_users.py
Communities
Community 0 - "Community 0"
Cohesion: 0.09 Nodes (30): CustomerPortal, connect_google(), connect_microsoft(), _format_hour(), PortalSchedule, public_available_slots(), public_booking_page(), public_manage_page() (+22 more)
Community 1 - "Community 1"
Cohesion: 0.09 Nodes (16): FusionCalendarAccount, Return a valid access token, refreshing if necessary., Refresh the access token using the refresh token., Refresh Google OAuth token., Refresh Microsoft OAuth token., Exchange Google auth code for tokens., Exchange Microsoft auth code for tokens., Convert Microsoft Graph API event dict to Odoo calendar.event vals. (+8 more)
Community 2 - "Community 2"
Cohesion: 0.13 Nodes (12): Context flags to suppress all email notifications during sync., Find an existing calendar event matching name+start+stop to avoid duplicates., Create or update a link between an Odoo event and an external event. If, Process a single Google Calendar event., Convert Google Calendar event dict to Odoo calendar.event vals., Process a single Microsoft Calendar event., public_book_submit(), After booking, calculate travel time from/to adjacent appointments and c (+4 more)
Community 3 - "Community 3"
Cohesion: 0.12 Nodes (11): _cron_sync_all_accounts(), _fetch_google_email(), _fetch_microsoft_email(), Push Odoo-native events to the FIRST active external calendar only. Onl, Pull events from the external calendar into Odoo., Pull events from Google Calendar., GET request with automatic retry on 429 / 503 and connection errors., sync_current_user() (+3 more)
Community 4 - "Community 4"
Cohesion: 0.13 Nodes (11): CalendarEvent, Check if Fusion Schedule should skip syncing (native Odoo sync active)., On delete, also remove from all linked external calendars., On update, push changes to all linked external calendars., Disconnect this calendar account and clean up., Delete an event from Google Calendar., Delete an event from Microsoft Calendar., public_manage_cancel() (+3 more)
Community 5 - "Community 5"
Cohesion: 0.35 Nodes (11): addDays(), fetchAiSuggestions(), fetchSlots(), fetchWeekEvents(), formatDateStr(), getAppointmentTypeId(), getMonday(), navigateWeek() (+3 more)
Community 6 - "Community 6"
Cohesion: 0.29 Nodes (0):
Community 7 - "Community 7"
Cohesion: 0.4 Nodes (2): _loadFusionAccounts(), onFusionSyncNow()
Community 8 - "Community 8"
Cohesion: 0.5 Nodes (2): Pull events from Microsoft Calendar., GET request with automatic retry on 429 / 503 and connection errors.
Community 9 - "Community 9"
Cohesion: 0.5 Nodes (1): ResConfigSettings
Community 10 - "Community 10"
Cohesion: 1.0 Nodes (1): FusionCalendarEventLink
Community 11 - "Community 11"
Cohesion: 1.0 Nodes (0):
Community 12 - "Community 12"
Cohesion: 1.0 Nodes (0):
Community 13 - "Community 13"
Cohesion: 1.0 Nodes (0):
Community 14 - "Community 14"
Cohesion: 1.0 Nodes (0):
Community 15 - "Community 15"
Cohesion: 1.0 Nodes (0):
Community 16 - "Community 16"
Cohesion: 1.0 Nodes (1): Get the email of the authenticated Google account.
Community 17 - "Community 17"
Cohesion: 1.0 Nodes (1): Get the email of the authenticated Microsoft account.
Community 18 - "Community 18"
Cohesion: 1.0 Nodes (1): Return connected calendar accounts for the current user (called from backend cal
Community 19 - "Community 19"
Cohesion: 1.0 Nodes (1): Trigger immediate sync for the current user's accounts (called from backend cale
Community 20 - "Community 20"
Cohesion: 1.0 Nodes (1): Cron entry point: sync all active accounts.
Community 21 - "Community 21"
Cohesion: 1.0 Nodes (1): Schedule overview: upcoming appointments, connected calendars, and shareable lin
Community 22 - "Community 22"
Cohesion: 1.0 Nodes (1): Save the user's schedule preferences.
Community 23 - "Community 23"
Cohesion: 1.0 Nodes (1): Booking form for a new appointment.
Community 24 - "Community 24"
Cohesion: 1.0 Nodes (1): Convert a decimal hour (e.g. 13.5) to '1:30 PM'.
Community 25 - "Community 25"
Cohesion: 1.0 Nodes (1): JSON-RPC endpoint: return available time slots for a date.
Community 26 - "Community 26"
Cohesion: 1.0 Nodes (1): Return the user's calendar events for the Mon-Sun week containing selected_date.
Community 27 - "Community 27"
Cohesion: 1.0 Nodes (1): Process the booking form submission.
Community 28 - "Community 28"
Cohesion: 1.0 Nodes (1): Cancel (delete) a calendar event owned by the current user.
Community 29 - "Community 29"
Cohesion: 1.0 Nodes (1): Reschedule a calendar event to a new date/time.
Community 30 - "Community 30"
Cohesion: 1.0 Nodes (1): Public page for visitors to view/manage their booked appointment.
Community 31 - "Community 31"
Cohesion: 1.0 Nodes (1): Public cancel -- visitor cancels their appointment via token.
Community 32 - "Community 32"
Cohesion: 1.0 Nodes (1): Public reschedule -- visitor picks a new slot via token.
Community 33 - "Community 33"
Cohesion: 1.0 Nodes (1): Return available slots for the staff user tied to this event.
Community 34 - "Community 34"
Cohesion: 1.0 Nodes (1): AI-powered slot suggestions considering travel and schedule.
Community 35 - "Community 35"
Cohesion: 1.0 Nodes (1): AI-powered schedule optimization for an entire day.
Community 36 - "Community 36"
Cohesion: 1.0 Nodes (1): Start Google OAuth flow to connect a Google Calendar account.
Community 37 - "Community 37"
Cohesion: 1.0 Nodes (1): Start Microsoft OAuth flow to connect an Outlook Calendar account.
Community 38 - "Community 38"
Cohesion: 1.0 Nodes (1): Handle OAuth callback from Google or Microsoft.
Community 39 - "Community 39"
Cohesion: 1.0 Nodes (1): Disconnect a calendar account.
Community 40 - "Community 40"
Cohesion: 1.0 Nodes (1): Trigger immediate sync for a calendar account.
Community 41 - "Community 41"
Cohesion: 1.0 Nodes (1): Public booking page — no login required.
Community 42 - "Community 42"
Cohesion: 1.0 Nodes (1): Public endpoint: return available slots for a date (no login needed).
Community 43 - "Community 43"
Cohesion: 1.0 Nodes (1): Process public booking form submission.
Community 44 - "Community 44"
Cohesion: 1.0 Nodes (1): Enable or disable public booking page.
Knowledge Gaps
- 79 isolated node(s):
Return a valid access token, refreshing if necessary.,Refresh the access token using the refresh token.,Refresh Google OAuth token.,Refresh Microsoft OAuth token.,Exchange Google auth code for tokens.(+74 more) These have ≤1 connection - possible missing edges or undocumented components. - Thin community
Community 10(2 nodes):FusionCalendarEventLink,fusion_calendar_event_link.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 11(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 12(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 13(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 14(1 nodes):__manifest__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 15(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 16(1 nodes):Get the email of the authenticated Google account.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 17(1 nodes):Get the email of the authenticated Microsoft account.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 18(1 nodes):Return connected calendar accounts for the current user (called from backend calToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 19(1 nodes):Trigger immediate sync for the current user's accounts (called from backend caleToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 20(1 nodes):Cron entry point: sync all active accounts.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 21(1 nodes):Schedule overview: upcoming appointments, connected calendars, and shareable linToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 22(1 nodes):Save the user's schedule preferences.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 23(1 nodes):Booking form for a new appointment.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 24(1 nodes):Convert a decimal hour (e.g. 13.5) to '1:30 PM'.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 25(1 nodes):JSON-RPC endpoint: return available time slots for a date.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 26(1 nodes):Return the user's calendar events for the Mon-Sun week containing selected_date.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 27(1 nodes):Process the booking form submission.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 28(1 nodes):Cancel (delete) a calendar event owned by the current user.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 29(1 nodes):Reschedule a calendar event to a new date/time.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 30(1 nodes):Public page for visitors to view/manage their booked appointment.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 31(1 nodes):Public cancel -- visitor cancels their appointment via token.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 32(1 nodes):Public reschedule -- visitor picks a new slot via token.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 33(1 nodes):Return available slots for the staff user tied to this event.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 34(1 nodes):AI-powered slot suggestions considering travel and schedule.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 35(1 nodes):AI-powered schedule optimization for an entire day.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 36(1 nodes):Start Google OAuth flow to connect a Google Calendar account.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 37(1 nodes):Start Microsoft OAuth flow to connect an Outlook Calendar account.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 38(1 nodes):Handle OAuth callback from Google or Microsoft.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 39(1 nodes):Disconnect a calendar account.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 40(1 nodes):Trigger immediate sync for a calendar account.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 41(1 nodes):Public booking page — no login required.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 42(1 nodes):Public endpoint: return available slots for a date (no login needed).Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 43(1 nodes):Process public booking form submission.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 44(1 nodes):Enable or disable public booking page.Too small to be a meaningful cluster - may be noise or needs more connections extracted.
Suggested Questions
Questions this graph is uniquely positioned to answer:
- Why does
FusionCalendarAccountconnectCommunity 1toCommunity 8,Community 2,Community 3,Community 4? High betweenness centrality (0.133) - this node is a cross-community bridge. - Why does
PortalScheduleconnectCommunity 0toCommunity 2,Community 3? High betweenness centrality (0.063) - this node is a cross-community bridge. - Why does
create()connectCommunity 2toCommunity 1,Community 3? High betweenness centrality (0.056) - this node is a cross-community bridge. - Are the 8 inferred relationships involving
create()(e.g. with._upsert_event_link()and._process_google_event()) actually correct?create()has 8 INFERRED edges - model-reasoned connections that need verification. - Are the 6 inferred relationships involving
oauth_callback()(e.g. with._exchange_google_code()and_fetch_google_email()) actually correct?oauth_callback()has 6 INFERRED edges - model-reasoned connections that need verification. - What connects
Return a valid access token, refreshing if necessary.,Refresh the access token using the refresh token.,Refresh Google OAuth token.to the rest of the system? 79 weakly-connected nodes found - possible documentation gaps or missing edges. - Should
Community 0be split into smaller, more focused modules? Cohesion score 0.09 - nodes in this community are weakly interconnected.