# Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_faxes (2026-04-22) ## Corpus Check - 13 files · ~4,507 words - Verdict: corpus is large enough that graph structure adds value. ## Summary - 98 nodes · 116 edges · 21 communities detected - Extraction: 97% EXTRACTED · 3% INFERRED · 0% AMBIGUOUS · INFERRED: 3 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]] ## God Nodes (most connected - your core abstractions) 1. `FusionFax` - 18 edges 2. `FusionFaxDashboard` - 10 edges 3. `create()` - 4 edges 4. `_fetch_faxes_from_rc()` - 4 edges 5. `SendFaxWizard` - 3 edges 6. `AccountMove` - 3 edges 7. `SaleOrder` - 3 edges 8. `ResConfigSettings` - 3 edges 9. `_onchange_file_upload()` - 2 edges 10. `FusionFaxDocument` - 2 edges ## Surprising Connections (you probably didn't know these) - `_onchange_file_upload()` --calls--> `create()` [INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_faxes/wizard/send_fax_wizard_line.py → /Users/gurpreet/Github/Odoo-Modules/fusion_faxes/models/fusion_fax.py ## Communities ### Community 0 - "Community 0" Cohesion: 0.21 Nodes (7): create(), _cron_fetch_incoming_faxes(), _fetch_faxes_from_rc(), Import a single inbound fax message dict from RingCentral., _run_historical_fax_import(), _onchange_file_upload(), SendFaxWizardLine ### Community 1 - "Community 1" Cohesion: 0.27 Nodes (1): FusionFaxDashboard ### Community 2 - "Community 2" Cohesion: 0.22 Nodes (4): Return attachments in the correct order: document_ids by sequence, or legacy att, Send this fax record via RingCentral API. Tries JWT/SDK first (if confi, Button action to send this fax., Resend a previously sent fax with all the same attachments. ### Community 3 - "Community 3" Cohesion: 0.36 Nodes (4): FusionFax, Initialize and authenticate the RingCentral SDK. Returns (sdk, platform) tuple., Send fax using the RingCentral Python SDK (JWT auth)., Post a chatter message on the linked sale order or invoice. ### Community 4 - "Community 4" Cohesion: 0.29 Nodes (3): Create a fusion.fax record and send it., Generate a PDF of the linked sale order or invoice., SendFaxWizard ### Community 5 - "Community 5" Cohesion: 0.29 Nodes (3): AccountMove, Open the Send Fax wizard pre-filled with this invoice., Open fax history for this invoice. ### Community 6 - "Community 6" Cohesion: 0.29 Nodes (3): Open the Send Fax wizard pre-filled with this sale order., Open fax history for this sale order., SaleOrder ### Community 7 - "Community 7" Cohesion: 0.33 Nodes (3): Post chatter message when a sale order or invoice is linked., Post a message on the sale order when a fax is linked to it., Reset a failed fax back to draft. ### Community 8 - "Community 8" Cohesion: 0.33 Nodes (3): Protect credential fields from being blanked accidentally., Test connection to RingCentral using stored credentials., ResConfigSettings ### Community 9 - "Community 9" Cohesion: 0.4 Nodes (2): Open fax history for this contact., ResPartner ### Community 10 - "Community 10" Cohesion: 0.5 Nodes (2): FusionFaxDocument, Open the attachment in Odoo's built-in PDF viewer dialog. ### Community 11 - "Community 11" Cohesion: 0.5 Nodes (2): Return the active rc.config record or raise., Send fax using rc.config OAuth with multipart POST. ### Community 12 - "Community 12" Cohesion: 1.0 Nodes (1): Open the linked sale order. ### 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): Create an ir.attachment when a file is uploaded. ### Community 18 - "Community 18" Cohesion: 1.0 Nodes (1): Poll RingCentral for inbound faxes via rc.config OAuth. ### Community 19 - "Community 19" Cohesion: 1.0 Nodes (1): Background job: import up to 12 months of inbound faxes in monthly chunks. ### Community 20 - "Community 20" Cohesion: 1.0 Nodes (1): Fetch inbound faxes from RingCentral and create records. Returns import count. ## Knowledge Gaps - **29 isolated node(s):** `Generate a PDF of the linked sale order or invoice.`, `Create a fusion.fax record and send it.`, `SendFaxWizardLine`, `Create an ir.attachment when a file is uploaded.`, `Open the attachment in Odoo's built-in PDF viewer dialog.` (+24 more) These have ≤1 connection - possible missing edges or undocumented components. - **Thin community `Community 12`** (2 nodes): `.action_open_sale_order()`, `Open the linked sale order.` 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): `Create an ir.attachment when a file is uploaded.` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 18`** (1 nodes): `Poll RingCentral for inbound faxes via rc.config OAuth.` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 19`** (1 nodes): `Background job: import up to 12 months of inbound faxes in monthly chunks.` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 20`** (1 nodes): `Fetch inbound faxes from RingCentral and create records. Returns import count.` 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 `FusionFax` connect `Community 3` to `Community 0`, `Community 2`, `Community 7`, `Community 11`, `Community 12`?** _High betweenness centrality (0.142) - this node is a cross-community bridge._ - **Why does `create()` connect `Community 0` to `Community 4`?** _High betweenness centrality (0.044) - this node is a cross-community bridge._ - **Are the 2 inferred relationships involving `create()` (e.g. with `.action_send()` and `_onchange_file_upload()`) actually correct?** _`create()` has 2 INFERRED edges - model-reasoned connections that need verification._ - **What connects `Generate a PDF of the linked sale order or invoice.`, `Create a fusion.fax record and send it.`, `SendFaxWizardLine` to the rest of the system?** _29 weakly-connected nodes found - possible documentation gaps or missing edges._