Files
gsinghpal 41d0908ade changes
2026-04-24 21:04:38 -04:00

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)

God Nodes (most connected - your core abstractions)

  1. FusionCalendarAccount - 35 edges
  2. PortalSchedule - 17 edges
  3. create() - 10 edges
  4. oauth_callback() - 8 edges
  5. navigateWeek() - 6 edges
  6. schedule_ai_suggest() - 6 edges
  7. formatDateStr() - 5 edges
  8. renderWeekCalendar() - 5 edges
  9. schedule_page() - 5 edges
  10. schedule_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.py
  • oauth_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.py
  • oauth_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.py
  • schedule_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
  • public_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.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 11 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 12 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 13 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 14 (1 nodes): __manifest__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 15 (1 nodes): __init__.py Too 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 cal Too 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 cale Too 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 lin Too 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 FusionCalendarAccount connect Community 1 to Community 8, Community 2, Community 3, Community 4? High betweenness centrality (0.133) - this node is a cross-community bridge.
  • Why does PortalSchedule connect Community 0 to Community 2, Community 3? High betweenness centrality (0.063) - this node is a cross-community bridge.
  • Why does create() connect Community 2 to Community 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 0 be split into smaller, more focused modules? Cohesion score 0.09 - nodes in this community are weakly interconnected.