Files
Odoo-Modules/fusion_ringcentral/graphify-out/GRAPH_REPORT.md
gsinghpal 41d0908ade changes
2026-04-24 21:04:38 -04:00

304 lines
16 KiB
Markdown

# Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral (2026-04-22)
## Corpus Check
- 18 files · ~9,229 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 220 nodes · 293 edges · 38 communities detected
- Extraction: 89% EXTRACTED · 11% INFERRED · 0% AMBIGUOUS · INFERRED: 32 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
## Community Hubs (Navigation)
- [[_COMMUNITY_Community 0|Community 0]]
- [[_COMMUNITY_Community 1|Community 1]]
- [[_COMMUNITY_Community 2|Community 2]]
- [[_COMMUNITY_Community 3|Community 3]]
- [[_COMMUNITY_Community 4|Community 4]]
- [[_COMMUNITY_Community 5|Community 5]]
- [[_COMMUNITY_Community 6|Community 6]]
- [[_COMMUNITY_Community 7|Community 7]]
- [[_COMMUNITY_Community 8|Community 8]]
- [[_COMMUNITY_Community 9|Community 9]]
- [[_COMMUNITY_Community 10|Community 10]]
- [[_COMMUNITY_Community 11|Community 11]]
- [[_COMMUNITY_Community 12|Community 12]]
- [[_COMMUNITY_Community 13|Community 13]]
- [[_COMMUNITY_Community 14|Community 14]]
- [[_COMMUNITY_Community 15|Community 15]]
- [[_COMMUNITY_Community 16|Community 16]]
- [[_COMMUNITY_Community 17|Community 17]]
- [[_COMMUNITY_Community 18|Community 18]]
- [[_COMMUNITY_Community 19|Community 19]]
- [[_COMMUNITY_Community 20|Community 20]]
- [[_COMMUNITY_Community 21|Community 21]]
- [[_COMMUNITY_Community 22|Community 22]]
- [[_COMMUNITY_Community 23|Community 23]]
- [[_COMMUNITY_Community 24|Community 24]]
- [[_COMMUNITY_Community 25|Community 25]]
- [[_COMMUNITY_Community 26|Community 26]]
- [[_COMMUNITY_Community 27|Community 27]]
- [[_COMMUNITY_Community 28|Community 28]]
- [[_COMMUNITY_Community 29|Community 29]]
- [[_COMMUNITY_Community 30|Community 30]]
- [[_COMMUNITY_Community 31|Community 31]]
- [[_COMMUNITY_Community 32|Community 32]]
- [[_COMMUNITY_Community 33|Community 33]]
- [[_COMMUNITY_Community 34|Community 34]]
- [[_COMMUNITY_Community 35|Community 35]]
- [[_COMMUNITY_Community 36|Community 36]]
- [[_COMMUNITY_Community 37|Community 37]]
## God Nodes (most connected - your core abstractions)
1. `RcConfig` - 22 edges
2. `RcVoicemail` - 18 edges
3. `RcCallHistory` - 12 edges
4. `_get_active_config()` - 12 edges
5. `RcCallDashboard` - 11 edges
6. `FusionFaxRC` - 9 edges
7. `create()` - 8 edges
8. `_run_backfill_voicemail_media()` - 7 edges
9. `RcSystrayItem` - 7 edges
10. `create()` - 4 edges
## Surprising Connections (you probably didn't know these)
- `_run_backfill_voicemail_media()` --calls--> `_get_active_config()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral/models/rc_voicemail.py → /Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral/models/rc_config.py
- `_cron_sync_call_history()` --calls--> `_get_active_config()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral/models/rc_call_history.py → /Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral/models/rc_config.py
- `_cron_daily_catchup_sync()` --calls--> `_get_active_config()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral/models/rc_call_history.py → /Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral/models/rc_config.py
- `_cron_fetch_transcripts()` --calls--> `_get_active_config()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral/models/rc_call_history.py → /Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral/models/rc_config.py
- `_run_historical_fax_import()` --calls--> `_get_active_config()` [INFERRED]
/Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral/models/fusion_fax.py → /Users/gurpreet/Github/Odoo-Modules/fusion_ringcentral/models/rc_config.py
## Communities
### Community 0 - "Community 0"
Cohesion: 0.09
Nodes (19): Revoke tokens and disconnect., Exchange authorization code for access/refresh tokens., Refresh the access token using the refresh token. Uses SELECT ... FOR U, Ensure we have a valid access token, refreshing proactively., Return authorization headers for API calls., Make an authenticated GET request with rate-limit handling., Central API request method with automatic rate-limit retry. RingCentral, Fetch the connected user's extension info. (+11 more)
### Community 1 - "Community 1"
Cohesion: 0.09
Nodes (15): _build_timeline(), create(), _cron_transcribe_voicemails(), _match_voicemail_partner(), _normalize_phone(), Process one page of voicemail records with bulk dedup., Import a single voicemail message and download its audio., Download voicemail transcription text from RC. (+7 more)
### Community 2 - "Community 2"
Cohesion: 0.08
Nodes (17): create(), _cron_daily_catchup_sync(), _cron_sync_call_history(), _match_partner(), _normalize_phone(), Open the linked contact., Open sale orders for the linked contact., Open invoices for the linked contact. (+9 more)
### Community 3 - "Community 3"
Cohesion: 0.11
Nodes (13): create(), FusionFaxRC, _match_fax_partner(), _normalize_fax_phone(), Open Send Fax wizard with this fax's documents pre-attached., Open Send Fax wizard pre-filled with this fax's contact info., Extend fusion.fax with contact matching, smart buttons, forward fax, and sen, Fetch faxes (inbound + outbound) from RC message-store via OAuth. (+5 more)
### Community 4 - "Community 4"
Cohesion: 0.1
Nodes (4): Open the RingCentral dialer via the Embeddable widget., Open the RingCentral SMS compose via the Embeddable widget., Open the Send Fax wizard., RcCallDashboard
### Community 5 - "Community 5"
Cohesion: 0.16
Nodes (11): _cron_refresh_tokens(), _get_active_config(), _run_historical_import(), _cron_daily_voicemail_catchup(), _cron_sync_voicemails(), Fetch voicemails from RC Message Store for a date range., _run_historical_voicemail_import(), RcRecordingController (+3 more)
### Community 6 - "Community 6"
Cohesion: 0.25
Nodes (5): _cron_fetch_transcripts(), _cron_renew_webhooks(), Make an authenticated POST request with rate-limit handling., Renew the webhook subscription., Send an SMS via the RingCentral REST API. :param str to_number: Recipie
### Community 7 - "Community 7"
Cohesion: 0.25
Nodes (1): RcSystrayItem
### Community 8 - "Community 8"
Cohesion: 0.33
Nodes (2): Placeholder for click-to-call -- actual dialing is handled by the JS widget., ResPartner
### Community 9 - "Community 9"
Cohesion: 0.67
Nodes (2): loadRcWidget(), start()
### Community 10 - "Community 10"
Cohesion: 0.67
Nodes (2): oauth_callback(), RcOAuthController
### Community 11 - "Community 11"
Cohesion: 1.0
Nodes (1): ResConfigSettings
### 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 (0):
### Community 17 - "Community 17"
Cohesion: 1.0
Nodes (1): Incremental sync: fetch voicemails since last sync.
### Community 18 - "Community 18"
Cohesion: 1.0
Nodes (1): Re-scan past 3 days for any missed voicemails.
### Community 19 - "Community 19"
Cohesion: 1.0
Nodes (1): Re-fetch audio and transcription for records missing them. Called via c
### Community 20 - "Community 20"
Cohesion: 1.0
Nodes (1): Background job: import up to 12 months of voicemails in monthly chunks.
### Community 21 - "Community 21"
Cohesion: 1.0
Nodes (1): Build a timeline string from Whisper segments showing silence gaps. Exa
### Community 22 - "Community 22"
Cohesion: 1.0
Nodes (1): Batch-transcribe voicemails that have audio but no transcript.
### Community 23 - "Community 23"
Cohesion: 1.0
Nodes (1): Auto-link a call to a partner by matching phone numbers. For outbound c
### Community 24 - "Community 24"
Cohesion: 1.0
Nodes (1): Strip a phone number to last 10 digits for comparison.
### Community 25 - "Community 25"
Cohesion: 1.0
Nodes (1): Incremental sync: only fetch calls since last successful sync. Uses `fu
### Community 26 - "Community 26"
Cohesion: 1.0
Nodes (1): Daily catchup: re-scan the past 3 days to catch anything missed. Covers
### Community 27 - "Community 27"
Cohesion: 1.0
Nodes (1): Fetch AI transcripts for calls that have recordings but no transcript.
### Community 28 - "Community 28"
Cohesion: 1.0
Nodes (1): Match a fax to a contact by fax number, phone, or mobile.
### Community 29 - "Community 29"
Cohesion: 1.0
Nodes (1): Background job: import up to 12 months of faxes in monthly chunks.
### Community 30 - "Community 30"
Cohesion: 1.0
Nodes (1): Return the first connected config, or False.
### Community 31 - "Community 31"
Cohesion: 1.0
Nodes (1): Background job: import up to 12 months of call history. Tracks which mo
### Community 32 - "Community 32"
Cohesion: 1.0
Nodes (1): Refresh tokens for connected configs nearing expiry and recover error configs.
### Community 33 - "Community 33"
Cohesion: 1.0
Nodes (1): Renew webhook subscriptions for all connected configs.
### Community 34 - "Community 34"
Cohesion: 1.0
Nodes (1): Return RingCentral widget configuration for the JS frontend.
### Community 35 - "Community 35"
Cohesion: 1.0
Nodes (1): Receive webhook events from RingCentral.
### Community 36 - "Community 36"
Cohesion: 1.0
Nodes (1): Proxy a call recording from RingCentral with authentication.
### Community 37 - "Community 37"
Cohesion: 1.0
Nodes (1): Handle the OAuth redirect from RingCentral after user authorizes.
## Knowledge Gaps
- **76 isolated node(s):** `Incremental sync: fetch voicemails since last sync.`, `Re-scan past 3 days for any missed voicemails.`, `Re-fetch audio and transcription for records missing them. Called via c`, `Background job: import up to 12 months of voicemails in monthly chunks.`, `Fetch voicemails from RC Message Store for a date range.` (+71 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **Thin community `Community 11`** (2 nodes): `ResConfigSettings`, `res_config_settings.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 12`** (2 nodes): `onClickCall()`, `rc_click_to_dial.js`
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): `__init__.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): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 17`** (1 nodes): `Incremental sync: fetch voicemails since last sync.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 18`** (1 nodes): `Re-scan past 3 days for any missed voicemails.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 19`** (1 nodes): `Re-fetch audio and transcription for records missing them. Called via c`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 20`** (1 nodes): `Background job: import up to 12 months of voicemails in monthly chunks.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 21`** (1 nodes): `Build a timeline string from Whisper segments showing silence gaps. Exa`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 22`** (1 nodes): `Batch-transcribe voicemails that have audio but no transcript.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 23`** (1 nodes): `Auto-link a call to a partner by matching phone numbers. For outbound c`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 24`** (1 nodes): `Strip a phone number to last 10 digits for comparison.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 25`** (1 nodes): `Incremental sync: only fetch calls since last successful sync. Uses `fu`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 26`** (1 nodes): `Daily catchup: re-scan the past 3 days to catch anything missed. Covers`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 27`** (1 nodes): `Fetch AI transcripts for calls that have recordings but no transcript.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 28`** (1 nodes): `Match a fax to a contact by fax number, phone, or mobile.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 29`** (1 nodes): `Background job: import up to 12 months of faxes in monthly chunks.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 30`** (1 nodes): `Return the first connected config, or False.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 31`** (1 nodes): `Background job: import up to 12 months of call history. Tracks which mo`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 32`** (1 nodes): `Refresh tokens for connected configs nearing expiry and recover error configs.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 33`** (1 nodes): `Renew webhook subscriptions for all connected configs.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 34`** (1 nodes): `Return RingCentral widget configuration for the JS frontend.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 35`** (1 nodes): `Receive webhook events from RingCentral.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 36`** (1 nodes): `Proxy a call recording from RingCentral with authentication.`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 37`** (1 nodes): `Handle the OAuth redirect from RingCentral after user authorizes.`
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 `RcConfig` connect `Community 0` to `Community 5`, `Community 6`?**
_High betweenness centrality (0.112) - this node is a cross-community bridge._
- **Why does `RcVoicemail` connect `Community 1` to `Community 0`, `Community 5`?**
_High betweenness centrality (0.079) - this node is a cross-community bridge._
- **Are the 10 inferred relationships involving `_get_active_config()` (e.g. with `_cron_sync_voicemails()` and `_cron_daily_voicemail_catchup()`) actually correct?**
_`_get_active_config()` has 10 INFERRED edges - model-reasoned connections that need verification._
- **What connects `Incremental sync: fetch voicemails since last sync.`, `Re-scan past 3 days for any missed voicemails.`, `Re-fetch audio and transcription for records missing them. Called via c` to the rest of the system?**
_76 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._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.09 - nodes in this community are weakly interconnected._
- **Should `Community 2` be split into smaller, more focused modules?**
_Cohesion score 0.08 - nodes in this community are weakly interconnected._