16 KiB
Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai (2026-04-22)
Corpus Check
- 61 files · ~40,430 words
- Verdict: corpus is large enough that graph structure adds value.
Summary
- 602 nodes · 894 edges · 40 communities detected
- Extraction: 79% EXTRACTED · 21% INFERRED · 0% AMBIGUOUS · INFERRED: 192 edges (avg confidence: 0.71)
- 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
God Nodes (most connected - your core abstractions)
FusionChatPanel- 38 edgesDataAdapter- 38 edgesget_adapter()- 37 edgesFollowupAdapter- 28 edgesReportsAdapter- 27 edgesFusionAccountingAgent- 22 edgesFusionInteractiveTable- 21 edgesBankRecAdapter- 20 edgesAssetsAdapter- 15 edgesAdapterMode- 14 edges
Surprising Connections (you probably didn't know these)
Community shape + fusion AI fields (top suggestion, band, attachments).--uses-->DataAdapter[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.pyReturn AI suggestions per bank line. Shape: ``{line_id: [{'id', 'rank',--uses-->DataAdapter[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.pyAccept a fusion AI suggestion and reconcile against its proposal. Retur--uses-->DataAdapter[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.pyReverse a reconciliation by partial IDs. Returns ``{'unreconciled_line_--uses-->DataAdapter[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.pyEngine-free unreconcile for installs without fusion_accounting_bank_rec.--uses-->DataAdapter[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.py
Communities
Community 0 - "Community 0"
Cohesion: 0.04 Nodes (6): FusionApprovalCard, FusionChatPanel, inlineFormat(), mdToHtml(), parseFusionTableBlock(), FusionInteractiveTable
Community 1 - "Community 1"
Cohesion: 0.05 Nodes (21): _compute_display_label(), _compute_tool_display_name(), FusionAccountingMatchHistory, FusionAccountingRule, FusionAccountingAgent, Build a one-line summary of what a tool call did, for the collapsed tool log., Build a rich approval payload so the UI can show exactly what's being approved., Smart model routing: Haiku for routine tool calling, Sonnet for complex analysis (+13 more)
Community 2 - "Community 2"
Cohesion: 0.04
Nodes (39): BankRecAdapter, Return AI suggestions per bank line. Shape: {line_id: [{'id', 'rank',, Accept a fusion AI suggestion and reconcile against its proposal. Retur, Reverse a reconciliation by partial IDs. Returns {'unreconciled_line_, Engine-free unreconcile for installs without fusion_accounting_bank_rec., Community shape + fusion AI fields (top suggestion, band, attachments)., check_recurring_pattern(), _extract_partner_from_ref() (+31 more)
Community 3 - "Community 3"
Cohesion: 0.05 Nodes (37): get_ap_aging(), Return AP aging buckets. Routed through FollowupAdapter for tri-mode consistency, get_ar_aging(), get_followup_report(), get_overdue_invoices(), get_partner_balance(), Return the follow-up report HTML for a partner. Routed through FollowupAdapter., Return overdue customer invoices. Routed through FollowupAdapter. (+29 more)
Community 4 - "Community 4"
Cohesion: 0.07 Nodes (30): Assets data adapter — routes asset queries through fusion engine if installed., Bank reconciliation data adapter. Routes bank-rec data lookups across: - FUSION, Return unreconciled bank statement lines. All filter params are optiona, AdapterMode, DataAdapter, Base class. Subclasses set FUSION_MODEL and ENTERPRISE_MODULE class attrs an, Pick FUSION if the model is loaded, else ENTERPRISE if the module is ins, Follow-up data adapter. Routes follow-up / aged-balance / collections data look (+22 more)
Community 5 - "Community 5"
Cohesion: 0.05 Nodes (27): audit_account_balances(), audit_reconciliation_integrity(), audit_tax_compliance(), check_hash_chain(), check_sequence_gaps(), get_audit_report(), run_full_audit(), fusion_generate_followup_text() (+19 more)
Community 6 - "Community 6"
Cohesion: 0.07 Nodes (14): Look up <method_name>via on self and call it. E.g. method_name=, _company_id(), fusion_compare_periods(), fusion_drill_down_report_line(), fusion_generate_commentary(), fusion_get_anomalies(), fusion_run_report(), Fusion-engine-routed AI tools for financial reports. These 5 tools route throug (+6 more)
Community 7 - "Community 7"
Cohesion: 0.08 Nodes (14): LLMProvider, LLMProvider contract - every adapter must conform. Phase 1 generalisation: make, Contract every LLM backend must satisfy. Adapters declare capabilities as cl, Plain text completion. Required for ALL providers. Returns: {'content':, Tool-calling completion. Optional - caller checks supports_tool_calling first., Embeddings. Optional - caller checks supports_embeddings first. Returns, ClaudeAdapter, FusionAccountingAdapterClaude (+6 more)
Community 8 - "Community 8"
Cohesion: 0.11 Nodes (13): FusionAccountingSession, get_execution_state(), Get the current execution state for a session (called by polling endpoint)., approve_action(), approve_all(), chat(), chat_status(), close_session() (+5 more)
Community 9 - "Community 9"
Cohesion: 0.1 Nodes (13): AccountMoveAuditHook, create_vendor_bill(), find_similar_bank_lines(), Search for partners/vendors by name keyword., Find past reconciled bank lines with similar description to suggest coding patte, [Tier 3] Create a vendor bill (account.move with move_type='in_invoice'). Re, [Tier 3] Register payment on a posted vendor bill and optionally reconcile to ba, register_bill_payment() (+5 more)
Community 10 - "Community 10"
Cohesion: 0.13 Nodes (3): _bucket_for_days(), FollowupAdapter, Shared aging-bucket implementation for receivable/payable accounts. Ret
Community 11 - "Community 11"
Cohesion: 0.12 Nodes (5): fusion_dispose_asset(), fusion_suggest_asset_useful_life(), Fusion-engine-routed AI tools for asset management., AssetsAdapter, DataAdapter
Community 12 - "Community 12"
Cohesion: 0.14 Nodes (10): create_payroll_journal_entry(), get_cra_remittance_due(), get_cra_remittance_status(), get_payroll_cost_report(), get_payroll_entries(), prepare_cra_payment(), Resolve an account code or ID to a valid account ID. Accepts: integer ID, st, _resolve_account_id() (+2 more)
Community 13 - "Community 13"
Cohesion: 0.2 Nodes (1): FusionAccountingDashboard
Community 14 - "Community 14"
Cohesion: 0.25 Nodes (2): Register payments for a batch of ADP invoices from a remittance advice. Tak, register_adp_batch_payment()
Community 15 - "Community 15"
Cohesion: 0.33 Nodes (1): FusionDashboard
Community 16 - "Community 16"
Cohesion: 0.4 Nodes (2): get_inventory_turnover(), get_stock_valuation()
Community 17 - "Community 17"
Cohesion: 0.5 Nodes (2): FusionVendorTaxProfile, Rebuild all vendor tax profiles from posted bill history. Called by cron
Community 18 - "Community 18"
Cohesion: 0.5 Nodes (2): FusionRecurringPattern, Scan reconciled bank lines for recurring patterns and cache how they were coded.
Community 19 - "Community 19"
Cohesion: 0.5 Nodes (1): FusionHealthCard
Community 20 - "Community 20"
Cohesion: 0.5 Nodes (3): build_prompt(), Bank reconciliation AI re-rank prompt. Used by fusion_accounting_bank_rec/servi, Build (system_prompt, user_prompt) for AI re-rank. Args: statement_
Community 21 - "Community 21"
Cohesion: 0.67 Nodes (1): Reassign ir_model_data ownership from fusion_accounting to fusion_accounting_ai.
Community 22 - "Community 22"
Cohesion: 0.67 Nodes (1): FusionRuleWizard
Community 23 - "Community 23"
Cohesion: 1.0 Nodes (0):
Community 24 - "Community 24"
Cohesion: 1.0 Nodes (1): FusionAccountingTool
Community 25 - "Community 25"
Cohesion: 1.0 Nodes (1): ResConfigSettings
Community 26 - "Community 26"
Cohesion: 1.0 Nodes (0):
Community 27 - "Community 27"
Cohesion: 1.0 Nodes (0):
Community 28 - "Community 28"
Cohesion: 1.0 Nodes (0):
Community 29 - "Community 29"
Cohesion: 1.0 Nodes (0):
Community 30 - "Community 30"
Cohesion: 1.0 Nodes (0):
Community 31 - "Community 31"
Cohesion: 1.0 Nodes (0):
Community 32 - "Community 32"
Cohesion: 1.0 Nodes (0):
Community 33 - "Community 33"
Cohesion: 1.0 Nodes (0):
Community 34 - "Community 34"
Cohesion: 1.0 Nodes (0):
Community 35 - "Community 35"
Cohesion: 1.0 Nodes (1): Poll the live execution state of a running chat — returns thinking text,
Community 36 - "Community 36"
Cohesion: 1.0 Nodes (1): Live search for matching journal items — called directly by the reconcil
Community 37 - "Community 37"
Cohesion: 1.0 Nodes (1): List recent sessions for the session picker dropdown.
Community 38 - "Community 38"
Cohesion: 1.0 Nodes (1): Automatically reconcile inter-account credit card payments. When a paym
Community 39 - "Community 39"
Cohesion: 1.0 Nodes (1): Reconcile payroll cheque bank lines using writeoff to Payroll Liabilities (2201)
Knowledge Gaps
- 86 isolated node(s):
Reassign ir_model_data ownership from fusion_accounting to fusion_accounting_ai.,Verify ir_model_data ownership transferred from fusion_accounting to fusion_acco,No fusion-related model/view/data record should still claim module='fusion_accou,Spot-check that key xml-ids are reachable under the new module name.,FusionAccountingTool(+81 more) These have ≤1 connection - possible missing edges or undocumented components. - Thin community
Community 23(2 nodes):get_db_param(),test_claude_api.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 24(2 nodes):FusionAccountingTool,accounting_tool.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 25(2 nodes):ResConfigSettings,accounting_config.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 26(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 27(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 28(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 29(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 30(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 31(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 32(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 33(1 nodes):__manifest__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 34(1 nodes):test_api_live.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 35(1 nodes):Poll the live execution state of a running chat — returns thinking text,Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 36(1 nodes):Live search for matching journal items — called directly by the reconcilToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 37(1 nodes):List recent sessions for the session picker dropdown.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 38(1 nodes):Automatically reconcile inter-account credit card payments. When a paymToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 39(1 nodes):Reconcile payroll cheque bank lines using writeoff to Payroll Liabilities (2201)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
get_audit_report()connectCommunity 5toCommunity 1? High betweenness centrality (0.205) - this node is a cross-community bridge. - Why does
FusionInteractiveTableconnectCommunity 0toCommunity 1? High betweenness centrality (0.184) - this node is a cross-community bridge. - Why does
get_adapter()connectCommunity 3toCommunity 2,Community 4,Community 5,Community 6,Community 11? High betweenness centrality (0.168) - this node is a cross-community bridge. - Are the 33 inferred relationships involving
DataAdapter(e.g. withTestDataAdapterBaseandTestBankRecAdapter) actually correct?DataAdapterhas 33 INFERRED edges - model-reasoned connections that need verification. - Are the 35 inferred relationships involving
get_adapter()(e.g. with.test_list_unreconciled_returns_our_test_line()and.test_trial_balance_returns_rows_in_pure_community()) actually correct?get_adapter()has 35 INFERRED edges - model-reasoned connections that need verification. - What connects
Reassign ir_model_data ownership from fusion_accounting to fusion_accounting_ai.,Verify ir_model_data ownership transferred from fusion_accounting to fusion_acco,No fusion-related model/view/data record should still claim module='fusion_accouto the rest of the system? 86 weakly-connected nodes found - possible documentation gaps or missing edges. - Should
Community 0be split into smaller, more focused modules? Cohesion score 0.04 - nodes in this community are weakly interconnected.