304 lines
16 KiB
Markdown
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._ |