Files
Odoo-Modules/fusion_accounting/fusion_accounting_ai/graphify-out/GRAPH_REPORT.md
gsinghpal 9ebf89bde2 changes
2026-05-16 13:18:52 -04:00

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)

God Nodes (most connected - your core abstractions)

  1. FusionChatPanel - 38 edges
  2. DataAdapter - 38 edges
  3. get_adapter() - 37 edges
  4. FollowupAdapter - 28 edges
  5. ReportsAdapter - 27 edges
  6. FusionAccountingAgent - 22 edges
  7. FusionInteractiveTable - 21 edges
  8. BankRecAdapter - 20 edges
  9. AssetsAdapter - 15 edges
  10. AdapterMode - 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.py
  • Return 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.py
  • Accept 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.py
  • Reverse 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.py
  • Engine-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.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 24 (2 nodes): FusionAccountingTool, accounting_tool.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 25 (2 nodes): ResConfigSettings, accounting_config.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 26 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 27 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 28 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 29 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 30 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 31 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 32 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 33 (1 nodes): __manifest__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 34 (1 nodes): test_api_live.py Too 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 reconcil Too 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 paym Too 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() connect Community 5 to Community 1? High betweenness centrality (0.205) - this node is a cross-community bridge.
  • Why does FusionInteractiveTable connect Community 0 to Community 1? High betweenness centrality (0.184) - this node is a cross-community bridge.
  • Why does get_adapter() connect Community 3 to Community 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. with TestDataAdapterBase and TestBankRecAdapter) actually correct? DataAdapter has 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_accou to the rest of the system? 86 weakly-connected nodes found - possible documentation gaps or missing edges.
  • Should Community 0 be split into smaller, more focused modules? Cohesion score 0.04 - nodes in this community are weakly interconnected.