Files
gsinghpal 9ebf89bde2 changes
2026-05-16 13:18:52 -04:00

257 lines
528 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>graphify - /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/graphify-out/graph.html</title>
<script src="https://unpkg.com/vis-network/standalone/umd/vis-network.min.js"></script>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { background: #0f0f1a; color: #e0e0e0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; display: flex; height: 100vh; overflow: hidden; }
#graph { flex: 1; }
#sidebar { width: 280px; background: #1a1a2e; border-left: 1px solid #2a2a4e; display: flex; flex-direction: column; overflow: hidden; }
#search-wrap { padding: 12px; border-bottom: 1px solid #2a2a4e; }
#search { width: 100%; background: #0f0f1a; border: 1px solid #3a3a5e; color: #e0e0e0; padding: 7px 10px; border-radius: 6px; font-size: 13px; outline: none; }
#search:focus { border-color: #4E79A7; }
#search-results { max-height: 140px; overflow-y: auto; padding: 4px 12px; border-bottom: 1px solid #2a2a4e; display: none; }
.search-item { padding: 4px 6px; cursor: pointer; border-radius: 4px; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.search-item:hover { background: #2a2a4e; }
#info-panel { padding: 14px; border-bottom: 1px solid #2a2a4e; min-height: 140px; }
#info-panel h3 { font-size: 13px; color: #aaa; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.05em; }
#info-content { font-size: 13px; color: #ccc; line-height: 1.6; }
#info-content .field { margin-bottom: 5px; }
#info-content .field b { color: #e0e0e0; }
#info-content .empty { color: #555; font-style: italic; }
.neighbor-link { display: block; padding: 2px 6px; margin: 2px 0; border-radius: 3px; cursor: pointer; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid #333; }
.neighbor-link:hover { background: #2a2a4e; }
#neighbors-list { max-height: 160px; overflow-y: auto; margin-top: 4px; }
#legend-wrap { flex: 1; overflow-y: auto; padding: 12px; }
#legend-wrap h3 { font-size: 13px; color: #aaa; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.05em; }
.legend-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; cursor: pointer; border-radius: 4px; font-size: 12px; }
.legend-item:hover { background: #2a2a4e; padding-left: 4px; }
.legend-item.dimmed { opacity: 0.35; }
.legend-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
.legend-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.legend-count { color: #666; font-size: 11px; }
#stats { padding: 10px 14px; border-top: 1px solid #2a2a4e; font-size: 11px; color: #555; }
</style>
</head>
<body>
<div id="graph"></div>
<div id="sidebar">
<div id="search-wrap">
<input id="search" type="text" placeholder="Search nodes..." autocomplete="off">
<div id="search-results"></div>
</div>
<div id="info-panel">
<h3>Node Info</h3>
<div id="info-content"><span class="empty">Click a node to inspect it</span></div>
</div>
<div id="legend-wrap">
<h3>Communities</h3>
<div id="legend"></div>
</div>
<div id="stats">602 nodes &middot; 894 edges &middot; 40 communities</div>
</div>
<script>
const RAW_NODES = [{"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_init_py", "label": "__init__.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 26, "community_name": "Community 26", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_manifest_py", "label": "__manifest__.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__manifest__.py", "community": 33, "community_name": "Community 33", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/__manifest__.py", "file_type": "code", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_migrations_19_0_1_0_0_post_migration_py", "label": "post-migration.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "post-migration.py", "community": 21, "community_name": "Community 21", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/migrations/19.0.1.0.0/post-migration.py", "file_type": "code", "degree": 2}, {"id": "post_migration_migrate", "label": "migrate()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "migrate()", "community": 21, "community_name": "Community 21", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/migrations/19.0.1.0.0/post-migration.py", "file_type": "code", "degree": 1}, {"id": "post_migration_rationale_1", "label": "Reassign ir_model_data ownership from fusion_accounting to fusion_accounting_ai.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Reassign ir_model_data ownership from fusion_accounting to fusion_accounting_ai.", "community": 21, "community_name": "Community 21", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/migrations/19.0.1.0.0/post-migration.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_data_adapters_py", "label": "test_data_adapters.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "test_data_adapters.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 5}, {"id": "test_data_adapters_testdataadapterbase", "label": "TestDataAdapterBase", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "TestDataAdapterBase", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 7}, {"id": "transactioncase", "label": "TransactionCase", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "TransactionCase", "community": 4, "community_name": "Community 4", "source_file": "", "file_type": "code", "degree": 7}, {"id": "test_data_adapters_testdataadapterbase_test_adapter_mode_pure_community", "label": ".test_adapter_mode_pure_community()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_adapter_mode_pure_community()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 4}, {"id": "test_data_adapters_testdataadapterbase_test_adapter_falls_back_when_fusion_model_missing", "label": ".test_adapter_falls_back_when_fusion_model_missing()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_adapter_falls_back_when_fusion_model_missing()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 4}, {"id": "test_data_adapters_testbankrecadapter", "label": "TestBankRecAdapter", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "TestBankRecAdapter", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 7}, {"id": "test_data_adapters_testbankrecadapter_setup", "label": ".setUp()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".setUp()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 1}, {"id": "test_data_adapters_testbankrecadapter_test_list_unreconciled_returns_our_test_line", "label": ".test_list_unreconciled_returns_our_test_line()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_list_unreconciled_returns_our_test_line()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 4}, {"id": "test_data_adapters_testreportsadapter", "label": "TestReportsAdapter", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.1, "font": {"size": 12, "color": "#ffffff"}, "title": "TestReportsAdapter", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 9}, {"id": "test_data_adapters_testreportsadapter_test_trial_balance_returns_rows_in_pure_community", "label": ".test_trial_balance_returns_rows_in_pure_community()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_trial_balance_returns_rows_in_pure_community()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 3}, {"id": "test_data_adapters_testreportsadapter_test_run_report_returns_lines_or_error_dict", "label": ".test_run_report_returns_lines_or_error_dict()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_run_report_returns_lines_or_error_dict()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 4}, {"id": "test_data_adapters_testreportsadapter_test_run_report_with_unknown_ref_returns_error", "label": ".test_run_report_with_unknown_ref_returns_error()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_run_report_with_unknown_ref_returns_error()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 3}, {"id": "test_data_adapters_testreportsadapter_test_export_report_returns_dict", "label": ".test_export_report_returns_dict()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_export_report_returns_dict()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 3}, {"id": "test_data_adapters_testfollowupadapter", "label": "TestFollowupAdapter", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.3, "font": {"size": 12, "color": "#ffffff"}, "title": "TestFollowupAdapter", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 8}, {"id": "test_data_adapters_testfollowupadapter_test_overdue_invoices_returns_list", "label": ".test_overdue_invoices_returns_list()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_overdue_invoices_returns_list()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 3}, {"id": "test_data_adapters_testfollowupadapter_test_overdue_invoices_row_has_contact_fields", "label": ".test_overdue_invoices_row_has_contact_fields()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_overdue_invoices_row_has_contact_fields()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 4}, {"id": "test_data_adapters_testfollowupadapter_test_aged_receivables_returns_bucket_shape", "label": ".test_aged_receivables_returns_bucket_shape()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_aged_receivables_returns_bucket_shape()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 3}, {"id": "test_data_adapters_testfollowupadapter_test_aged_payables_returns_bucket_shape", "label": ".test_aged_payables_returns_bucket_shape()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_aged_payables_returns_bucket_shape()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 3}, {"id": "test_data_adapters_testassetsadapter", "label": "TestAssetsAdapter", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "TestAssetsAdapter", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 5}, {"id": "test_data_adapters_testassetsadapter_test_list_assets_returns_dict_with_assets", "label": ".test_list_assets_returns_dict_with_assets()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_list_assets_returns_dict_with_assets()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "code", "degree": 3}, {"id": "test_data_adapters_rationale_10", "label": "Verify the data adapter base class chooses the correct backend.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "Verify the data adapter base class chooses the correct backend.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "rationale", "degree": 3}, {"id": "test_data_adapters_rationale_13", "label": "With no fusion native and no Enterprise, adapter selects COMMUNITY.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "With no fusion native and no Enterprise, adapter selects COMMUNITY.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "rationale", "degree": 3}, {"id": "test_data_adapters_rationale_22", "label": "Adapter must not error when the fusion native model isn't loaded.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "Adapter must not error when the fusion native model isn&#x27;t loaded.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "rationale", "degree": 3}, {"id": "test_data_adapters_rationale_33", "label": "Verify the bank-rec adapter returns rows in any install profile.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "Verify the bank-rec adapter returns rows in any install profile.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "rationale", "degree": 3}, {"id": "test_data_adapters_rationale_55", "label": "The adapter should find the unreconciled line we just created.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "The adapter should find the unreconciled line we just created.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "rationale", "degree": 3}, {"id": "test_data_adapters_rationale_65", "label": "Verify the reports adapter computes a trial-balance-shaped result.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "Verify the reports adapter computes a trial-balance-shaped result.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "rationale", "degree": 3}, {"id": "test_data_adapters_rationale_76", "label": "run_report() must always return either an Enterprise-shaped {'report_nam", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "run_report() must always return either an Enterprise-shaped {&#x27;report_nam", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "rationale", "degree": 3}, {"id": "test_data_adapters_rationale_109", "label": "The enriched shape must include email, phone, and amount_total so the ac", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "The enriched shape must include email, phone, and amount_total so the ac", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_data_adapters.py", "file_type": "rationale", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_api_live_py", "label": "test_api_live.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "test_api_live.py", "community": 34, "community_name": "Community 34", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_api_live.py", "file_type": "code", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_post_migration_py", "label": "test_post_migration.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "test_post_migration.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_post_migration.py", "file_type": "code", "degree": 1}, {"id": "test_post_migration_testpostmigration", "label": "TestPostMigration", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "TestPostMigration", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_post_migration.py", "file_type": "code", "degree": 5}, {"id": "test_post_migration_testpostmigration_test_no_orphan_ir_model_data_in_old_module", "label": ".test_no_orphan_ir_model_data_in_old_module()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_no_orphan_ir_model_data_in_old_module()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_post_migration.py", "file_type": "code", "degree": 2}, {"id": "test_post_migration_testpostmigration_test_known_xml_ids_resolve_via_new_module", "label": ".test_known_xml_ids_resolve_via_new_module()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_known_xml_ids_resolve_via_new_module()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_post_migration.py", "file_type": "code", "degree": 2}, {"id": "test_post_migration_rationale_6", "label": "Verify ir_model_data ownership transferred from fusion_accounting to fusion_acco", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Verify ir_model_data ownership transferred from fusion_accounting to fusion_acco", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_post_migration.py", "file_type": "rationale", "degree": 1}, {"id": "test_post_migration_rationale_9", "label": "No fusion-related model/view/data record should still claim module='fusion_accou", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "No fusion-related model/view/data record should still claim module=&#x27;fusion_accou", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_post_migration.py", "file_type": "rationale", "degree": 1}, {"id": "test_post_migration_rationale_29", "label": "Spot-check that key xml-ids are reachable under the new module name.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Spot-check that key xml-ids are reachable under the new module name.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_post_migration.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_init_py", "label": "__init__.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 27, "community_name": "Community 27", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_claude_api_py", "label": "test_claude_api.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "test_claude_api.py", "community": 23, "community_name": "Community 23", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_claude_api.py", "file_type": "code", "degree": 1}, {"id": "test_claude_api_get_db_param", "label": "get_db_param()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_db_param()", "community": 23, "community_name": "Community 23", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_claude_api.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_llm_provider_contract_py", "label": "test_llm_provider_contract.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "test_llm_provider_contract.py", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_llm_provider_contract.py", "file_type": "code", "degree": 1}, {"id": "test_llm_provider_contract_testllmprovidercontract", "label": "TestLLMProviderContract", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": "TestLLMProviderContract", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_llm_provider_contract.py", "file_type": "code", "degree": 11}, {"id": "test_llm_provider_contract_testllmprovidercontract_test_base_class_defines_capability_attrs", "label": ".test_base_class_defines_capability_attrs()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_base_class_defines_capability_attrs()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_llm_provider_contract.py", "file_type": "code", "degree": 1}, {"id": "test_llm_provider_contract_testllmprovidercontract_test_openai_adapter_implements_contract", "label": ".test_openai_adapter_implements_contract()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_openai_adapter_implements_contract()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_llm_provider_contract.py", "file_type": "code", "degree": 2}, {"id": "test_llm_provider_contract_testllmprovidercontract_test_claude_adapter_implements_contract", "label": ".test_claude_adapter_implements_contract()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_claude_adapter_implements_contract()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_llm_provider_contract.py", "file_type": "code", "degree": 2}, {"id": "test_llm_provider_contract_testllmprovidercontract_test_openai_adapter_uses_configurable_base_url", "label": ".test_openai_adapter_uses_configurable_base_url()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_openai_adapter_uses_configurable_base_url()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_llm_provider_contract.py", "file_type": "code", "degree": 2}, {"id": "test_llm_provider_contract_testllmprovidercontract_test_openai_adapter_default_base_url_when_unset", "label": ".test_openai_adapter_default_base_url_when_unset()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".test_openai_adapter_default_base_url_when_unset()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_llm_provider_contract.py", "file_type": "code", "degree": 2}, {"id": "test_llm_provider_contract_rationale_7", "label": "Every LLM adapter must satisfy the LLMProvider contract.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "Every LLM adapter must satisfy the LLMProvider contract.", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/tests/test_llm_provider_contract.py", "file_type": "rationale", "degree": 4}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_rule_py", "label": "accounting_rule.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "accounting_rule.py", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_rule.py", "file_type": "code", "degree": 1}, {"id": "accounting_rule_fusionaccountingrule", "label": "FusionAccountingRule", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionAccountingRule", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_rule.py", "file_type": "code", "degree": 5}, {"id": "accounting_rule_fusionaccountingrule_record_decision", "label": "._record_decision()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.7, "font": {"size": 12, "color": "#ffffff"}, "title": "._record_decision()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_rule.py", "file_type": "code", "degree": 6}, {"id": "accounting_rule_fusionaccountingrule_check_promotion", "label": "._check_promotion()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._check_promotion()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_rule.py", "file_type": "code", "degree": 2}, {"id": "accounting_rule_fusionaccountingrule_action_demote", "label": ".action_demote()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_demote()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_rule.py", "file_type": "code", "degree": 1}, {"id": "accounting_rule_fusionaccountingrule_action_rollback", "label": ".action_rollback()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_rollback()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_rule.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_match_history_py", "label": "accounting_match_history.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "accounting_match_history.py", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_match_history.py", "file_type": "code", "degree": 4}, {"id": "accounting_match_history_fusionaccountingmatchhistory", "label": "FusionAccountingMatchHistory", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionAccountingMatchHistory", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_match_history.py", "file_type": "code", "degree": 3}, {"id": "accounting_match_history_compute_tool_display_name", "label": "_compute_tool_display_name()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_tool_display_name()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_match_history.py", "file_type": "code", "degree": 2}, {"id": "accounting_match_history_compute_pretty_json", "label": "_compute_pretty_json()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_pretty_json()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_match_history.py", "file_type": "code", "degree": 1}, {"id": "accounting_match_history_compute_display_label", "label": "_compute_display_label()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_display_label()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_match_history.py", "file_type": "code", "degree": 2}, {"id": "accounting_match_history_fusionaccountingmatchhistory_action_approve", "label": ".action_approve()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_approve()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_match_history.py", "file_type": "code", "degree": 2}, {"id": "accounting_match_history_fusionaccountingmatchhistory_action_reject", "label": ".action_reject()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_reject()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_match_history.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_init_py", "label": "__init__.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 28, "community_name": "Community 28", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_account_move_hook_py", "label": "account_move_hook.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "account_move_hook.py", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/account_move_hook.py", "file_type": "code", "degree": 1}, {"id": "account_move_hook_accountmoveaudithook", "label": "AccountMoveAuditHook", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "AccountMoveAuditHook", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/account_move_hook.py", "file_type": "code", "degree": 3}, {"id": "account_move_hook_accountmoveaudithook_action_post", "label": ".action_post()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_post()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/account_move_hook.py", "file_type": "code", "degree": 5}, {"id": "account_move_hook_accountmoveaudithook_fusion_audit_posted_entry", "label": "._fusion_audit_posted_entry()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._fusion_audit_posted_entry()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/account_move_hook.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_tool_py", "label": "accounting_tool.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "accounting_tool.py", "community": 24, "community_name": "Community 24", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_tool.py", "file_type": "code", "degree": 1}, {"id": "accounting_tool_fusionaccountingtool", "label": "FusionAccountingTool", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionAccountingTool", "community": 24, "community_name": "Community 24", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_tool.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_dashboard_py", "label": "accounting_dashboard.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 16.3, "font": {"size": 12, "color": "#ffffff"}, "title": "accounting_dashboard.py", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_dashboard.py", "file_type": "code", "degree": 8}, {"id": "accounting_dashboard_fusionaccountingdashboard", "label": "FusionAccountingDashboard", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionAccountingDashboard", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_dashboard.py", "file_type": "code", "degree": 2}, {"id": "accounting_dashboard_compute_bank_recon", "label": "_compute_bank_recon()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_bank_recon()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_dashboard.py", "file_type": "code", "degree": 1}, {"id": "accounting_dashboard_compute_ar", "label": "_compute_ar()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_ar()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_dashboard.py", "file_type": "code", "degree": 1}, {"id": "accounting_dashboard_compute_ap", "label": "_compute_ap()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_ap()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_dashboard.py", "file_type": "code", "degree": 1}, {"id": "accounting_dashboard_compute_hst", "label": "_compute_hst()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_hst()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_dashboard.py", "file_type": "code", "degree": 1}, {"id": "accounting_dashboard_compute_audit", "label": "_compute_audit()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_audit()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_dashboard.py", "file_type": "code", "degree": 1}, {"id": "accounting_dashboard_compute_month_end", "label": "_compute_month_end()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_month_end()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_dashboard.py", "file_type": "code", "degree": 1}, {"id": "accounting_dashboard_compute_action_centre", "label": "_compute_action_centre()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_compute_action_centre()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_dashboard.py", "file_type": "code", "degree": 1}, {"id": "accounting_dashboard_fusionaccountingdashboard_action_refresh", "label": ".action_refresh()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_refresh()", "community": 13, "community_name": "Community 13", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_dashboard.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_config_py", "label": "accounting_config.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "accounting_config.py", "community": 25, "community_name": "Community 25", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_config.py", "file_type": "code", "degree": 1}, {"id": "accounting_config_resconfigsettings", "label": "ResConfigSettings", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "ResConfigSettings", "community": 25, "community_name": "Community 25", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_config.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_vendor_tax_profile_py", "label": "vendor_tax_profile.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "vendor_tax_profile.py", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/vendor_tax_profile.py", "file_type": "code", "degree": 1}, {"id": "vendor_tax_profile_fusionvendortaxprofile", "label": "FusionVendorTaxProfile", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionVendorTaxProfile", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/vendor_tax_profile.py", "file_type": "code", "degree": 2}, {"id": "vendor_tax_profile_fusionvendortaxprofile_rebuild_all_profiles", "label": "._rebuild_all_profiles()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._rebuild_all_profiles()", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/vendor_tax_profile.py", "file_type": "code", "degree": 2}, {"id": "vendor_tax_profile_rationale_71", "label": "Rebuild all vendor tax profiles from posted bill history. Called by cron", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Rebuild all vendor tax profiles from posted bill history. Called by cron", "community": 17, "community_name": "Community 17", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/vendor_tax_profile.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_recurring_pattern_py", "label": "recurring_pattern.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "recurring_pattern.py", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/recurring_pattern.py", "file_type": "code", "degree": 1}, {"id": "recurring_pattern_fusionrecurringpattern", "label": "FusionRecurringPattern", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionRecurringPattern", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/recurring_pattern.py", "file_type": "code", "degree": 2}, {"id": "recurring_pattern_fusionrecurringpattern_rebuild_all_patterns", "label": "._rebuild_all_patterns()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._rebuild_all_patterns()", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/recurring_pattern.py", "file_type": "code", "degree": 2}, {"id": "recurring_pattern_rationale_64", "label": "Scan reconciled bank lines for recurring patterns and cache how they were coded.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Scan reconciled bank lines for recurring patterns and cache how they were coded.", "community": 18, "community_name": "Community 18", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/recurring_pattern.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_session_py", "label": "accounting_session.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "accounting_session.py", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_session.py", "file_type": "code", "degree": 1}, {"id": "accounting_session_fusionaccountingsession", "label": "FusionAccountingSession", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionAccountingSession", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_session.py", "file_type": "code", "degree": 2}, {"id": "accounting_session_fusionaccountingsession_action_close_session", "label": ".action_close_session()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_close_session()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/models/accounting_session.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_chat_approval_card_js", "label": "approval_card.js", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "approval_card.js", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/approval_card.js", "file_type": "code", "degree": 1}, {"id": "approval_card_fusionapprovalcard", "label": "FusionApprovalCard", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionApprovalCard", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/approval_card.js", "file_type": "code", "degree": 5}, {"id": "approval_card_fusionapprovalcard_toollabel", "label": ".toolLabel()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".toolLabel()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/approval_card.js", "file_type": "code", "degree": 1}, {"id": "approval_card_fusionapprovalcard_formatamount", "label": ".formatAmount()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".formatAmount()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/approval_card.js", "file_type": "code", "degree": 1}, {"id": "approval_card_fusionapprovalcard_approve", "label": ".approve()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".approve()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/approval_card.js", "file_type": "code", "degree": 2}, {"id": "approval_card_fusionapprovalcard_reject", "label": ".reject()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".reject()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/approval_card.js", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_chat_interactive_table_js", "label": "interactive_table.js", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "interactive_table.js", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable", "label": "FusionInteractiveTable", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 26.6, "font": {"size": 12, "color": "#ffffff"}, "title": "FusionInteractiveTable", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 21}, {"id": "interactive_table_fusioninteractivetable_setup", "label": ".setup()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_isinteractive", "label": ".isInteractive()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".isInteractive()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_columns", "label": ".columns()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".columns()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_title", "label": ".title()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".title()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 5}, {"id": "interactive_table_fusioninteractivetable_actions", "label": ".actions()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".actions()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_selectedcount", "label": ".selectedCount()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".selectedCount()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_hasaction", "label": ".hasAction()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".hasAction()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_actionavailable", "label": ".actionAvailable()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".actionAvailable()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_recommendationclass", "label": ".recommendationClass()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".recommendationClass()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_recommendationlabel", "label": ".recommendationLabel()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".recommendationLabel()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_ontoggleselectall", "label": ".onToggleSelectAll()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".onToggleSelectAll()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_ontogglerow", "label": ".onToggleRow()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".onToggleRow()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_onnoteinput", "label": ".onNoteInput()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".onNoteInput()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 1}, {"id": "interactive_table_fusioninteractivetable_collectselected", "label": "._collectSelected()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._collectSelected()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 5}, {"id": "interactive_table_fusioninteractivetable_collectallnotes", "label": "._collectAllNotes()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._collectAllNotes()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 2}, {"id": "interactive_table_fusioninteractivetable_onapplyrecommendations", "label": ".onApplyRecommendations()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".onApplyRecommendations()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 3}, {"id": "interactive_table_fusioninteractivetable_onflagselected", "label": ".onFlagSelected()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".onFlagSelected()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 3}, {"id": "interactive_table_fusioninteractivetable_oncreaterules", "label": ".onCreateRules()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".onCreateRules()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 3}, {"id": "interactive_table_fusioninteractivetable_ondismissselected", "label": ".onDismissSelected()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".onDismissSelected()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 3}, {"id": "interactive_table_fusioninteractivetable_onsubmitnotes", "label": ".onSubmitNotes()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".onSubmitNotes()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/interactive_table.js", "file_type": "code", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_chat_chat_panel_js", "label": "chat_panel.js", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "chat_panel.js", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 4}, {"id": "chat_panel_parsefusiontableblock", "label": "parseFusionTableBlock()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "parseFusionTableBlock()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_mdtohtml", "label": "mdToHtml()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "mdToHtml()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 3}, {"id": "chat_panel_inlineformat", "label": "inlineFormat()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "inlineFormat()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel", "label": "FusionChatPanel", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "FusionChatPanel", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 38}, {"id": "chat_panel_fusionchatpanel_setup", "label": ".setup()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_renderrichmessages", "label": "._renderRichMessages()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._renderRichMessages()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 4}, {"id": "chat_panel_fusionchatpanel_mountinteractivetables", "label": "._mountInteractiveTables()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.7, "font": {"size": 12, "color": "#ffffff"}, "title": "._mountInteractiveTables()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 6}, {"id": "chat_panel_fusionchatpanel_badgeclass", "label": "._badgeClass()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._badgeClass()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_badgelabel", "label": "._badgeLabel()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._badgeLabel()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_esc", "label": "._esc()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._esc()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 5}, {"id": "chat_panel_fusionchatpanel_buildinteractivetablehtml", "label": "._buildInteractiveTableHtml()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._buildInteractiveTableHtml()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 5}, {"id": "chat_panel_fusionchatpanel_wiretableevents", "label": "._wireTableEvents()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._wireTableEvents()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_updatetableactionbar", "label": "._updateTableActionBar()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._updateTableActionBar()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_collecttablerows", "label": "._collectTableRows()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._collectTableRows()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_triggerfileupload", "label": ".triggerFileUpload()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".triggerFileUpload()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_onfileselected", "label": ".onFileSelected()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".onFileSelected()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_clearimage", "label": ".clearImage()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".clearImage()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_startstatuspolling", "label": "._startStatusPolling()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._startStatusPolling()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 4}, {"id": "chat_panel_fusionchatpanel_stopstatuspolling", "label": "._stopStatusPolling()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._stopStatusPolling()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 4}, {"id": "chat_panel_fusionchatpanel_buildreconciliationtablehtml", "label": "._buildReconciliationTableHtml()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._buildReconciliationTableHtml()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 3}, {"id": "chat_panel_fusionchatpanel_wirereconciliationevents", "label": "._wireReconciliationEvents()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._wireReconciliationEvents()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_rendersearchresults", "label": "._renderSearchResults()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._renderSearchResults()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_addrowtoreconciliationtable", "label": "._addRowToReconciliationTable()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._addRowToReconciliationTable()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_collectreconciliationrows", "label": "._collectReconciliationRows()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "._collectReconciliationRows()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_sessionid", "label": ".sessionId()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".sessionId()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_loadlatestsession", "label": ".loadLatestSession()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".loadLatestSession()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_togglesessionpicker", "label": ".toggleSessionPicker()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".toggleSessionPicker()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_loadsession", "label": ".loadSession()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".loadSession()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_formatsessiondate", "label": ".formatSessionDate()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".formatSessionDate()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_onnewchat", "label": ".onNewChat()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".onNewChat()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_sendmessage", "label": ".sendMessage()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": ".sendMessage()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 7}, {"id": "chat_panel_fusionchatpanel_ontableaction", "label": ".onTableAction()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 17.9, "font": {"size": 12, "color": "#ffffff"}, "title": ".onTableAction()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 10}, {"id": "chat_panel_fusionchatpanel_sendstarter", "label": ".sendStarter()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".sendStarter()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_onkeydown", "label": ".onKeyDown()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".onKeyDown()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_onpaste", "label": ".onPaste()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".onPaste()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_scrolltobottom", "label": ".scrollToBottom()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".scrollToBottom()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 5}, {"id": "chat_panel_fusionchatpanel_scrolltonewreply", "label": ".scrollToNewReply()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".scrollToNewReply()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 3}, {"id": "chat_panel_fusionchatpanel_onapprove", "label": ".onApprove()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".onApprove()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_onreject", "label": ".onReject()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".onReject()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 2}, {"id": "chat_panel_fusionchatpanel_onapproveall", "label": ".onApproveAll()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".onApproveAll()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "chat_panel_fusionchatpanel_onrejectall", "label": ".onRejectAll()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".onRejectAll()", "community": 0, "community_name": "Community 0", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/chat/chat_panel.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_dashboard_health_card_js", "label": "health_card.js", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "health_card.js", "community": 19, "community_name": "Community 19", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/dashboard/health_card.js", "file_type": "code", "degree": 1}, {"id": "health_card_fusionhealthcard", "label": "FusionHealthCard", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionHealthCard", "community": 19, "community_name": "Community 19", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/dashboard/health_card.js", "file_type": "code", "degree": 3}, {"id": "health_card_fusionhealthcard_icon", "label": ".icon()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".icon()", "community": 19, "community_name": "Community 19", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/dashboard/health_card.js", "file_type": "code", "degree": 1}, {"id": "health_card_fusionhealthcard_onclick", "label": ".onClick()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".onClick()", "community": 19, "community_name": "Community 19", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/dashboard/health_card.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_dashboard_fusion_dashboard_js", "label": "fusion_dashboard.js", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_dashboard.js", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/dashboard/fusion_dashboard.js", "file_type": "code", "degree": 1}, {"id": "fusion_dashboard_fusiondashboard", "label": "FusionDashboard", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionDashboard", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/dashboard/fusion_dashboard.js", "file_type": "code", "degree": 5}, {"id": "fusion_dashboard_fusiondashboard_setup", "label": ".setup()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".setup()", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/dashboard/fusion_dashboard.js", "file_type": "code", "degree": 1}, {"id": "fusion_dashboard_fusiondashboard_loaddashboard", "label": ".loadDashboard()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".loadDashboard()", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/dashboard/fusion_dashboard.js", "file_type": "code", "degree": 1}, {"id": "fusion_dashboard_fusiondashboard_onattentionclick", "label": ".onAttentionClick()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".onAttentionClick()", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/dashboard/fusion_dashboard.js", "file_type": "code", "degree": 1}, {"id": "fusion_dashboard_fusiondashboard_cards", "label": ".cards()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".cards()", "community": 15, "community_name": "Community 15", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/static/src/components/dashboard/fusion_dashboard.js", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_wizards_init_py", "label": "__init__.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 29, "community_name": "Community 29", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/wizards/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_wizards_rule_wizard_py", "label": "rule_wizard.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "rule_wizard.py", "community": 22, "community_name": "Community 22", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/wizards/rule_wizard.py", "file_type": "code", "degree": 1}, {"id": "rule_wizard_fusionrulewizard", "label": "FusionRuleWizard", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionRuleWizard", "community": 22, "community_name": "Community 22", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/wizards/rule_wizard.py", "file_type": "code", "degree": 2}, {"id": "rule_wizard_fusionrulewizard_action_create_rule", "label": ".action_create_rule()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".action_create_rule()", "community": 22, "community_name": "Community 22", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/wizards/rule_wizard.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "label": "chat_controller.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 21.1, "font": {"size": 12, "color": "#ffffff"}, "title": "chat_controller.py", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 14}, {"id": "chat_controller_fusionaccountingchatcontroller", "label": "FusionAccountingChatController", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionAccountingChatController", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 2}, {"id": "chat_controller_fusionaccountingchatcontroller_check_session_ownership", "label": "._check_session_ownership()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._check_session_ownership()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 5}, {"id": "chat_controller_create_session", "label": "create_session()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "create_session()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 1}, {"id": "chat_controller_close_session", "label": "close_session()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "close_session()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 3}, {"id": "chat_controller_chat", "label": "chat()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "chat()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 2}, {"id": "chat_controller_approve_action", "label": "approve_action()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "approve_action()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 2}, {"id": "chat_controller_reject_action", "label": "reject_action()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "reject_action()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 2}, {"id": "chat_controller_dashboard_data", "label": "dashboard_data()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "dashboard_data()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 1}, {"id": "chat_controller_approve_all", "label": "approve_all()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "approve_all()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 2}, {"id": "chat_controller_reject_all", "label": "reject_all()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "reject_all()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 2}, {"id": "chat_controller_chat_status", "label": "chat_status()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "chat_status()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 2}, {"id": "chat_controller_search_matches", "label": "search_matches()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "search_matches()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 2}, {"id": "chat_controller_session_list", "label": "session_list()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "session_list()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 1}, {"id": "chat_controller_session_latest", "label": "session_latest()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "session_latest()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 2}, {"id": "chat_controller_session_history", "label": "session_history()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "session_history()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "code", "degree": 2}, {"id": "chat_controller_rationale_13", "label": "S1-S3: Verify the current user owns the session.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "S1-S3: Verify the current user owns the session.", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "rationale", "degree": 1}, {"id": "chat_controller_rationale_139", "label": "Poll the live execution state of a running chat \u2014 returns thinking text,", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Poll the live execution state of a running chat \u2014 returns thinking text,", "community": 35, "community_name": "Community 35", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "rationale", "degree": 0}, {"id": "chat_controller_rationale_148", "label": "Live search for matching journal items \u2014 called directly by the reconcil", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Live search for matching journal items \u2014 called directly by the reconcil", "community": 36, "community_name": "Community 36", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "rationale", "degree": 0}, {"id": "chat_controller_rationale_163", "label": "List recent sessions for the session picker dropdown.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "List recent sessions for the session picker dropdown.", "community": 37, "community_name": "Community 37", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/chat_controller.py", "file_type": "rationale", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_init_py", "label": "__init__.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 30, "community_name": "Community 30", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/controllers/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_scoring_py", "label": "scoring.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "scoring.py", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/scoring.py", "file_type": "code", "degree": 1}, {"id": "scoring_fusionaccountingscoring", "label": "FusionAccountingScoring", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "FusionAccountingScoring", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/scoring.py", "file_type": "code", "degree": 4}, {"id": "scoring_fusionaccountingscoring_calculate_confidence", "label": ".calculate_confidence()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".calculate_confidence()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/scoring.py", "file_type": "code", "degree": 1}, {"id": "scoring_fusionaccountingscoring_check_promotions", "label": ".check_promotions()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".check_promotions()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/scoring.py", "file_type": "code", "degree": 2}, {"id": "scoring_fusionaccountingscoring_get_tool_stats", "label": ".get_tool_stats()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_tool_stats()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/scoring.py", "file_type": "code", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_init_py", "label": "__init__.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 31, "community_name": "Community 31", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_agent_py", "label": "agent.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "agent.py", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 4}, {"id": "agent_get_execution_state", "label": "get_execution_state()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "get_execution_state()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 3}, {"id": "agent_fusionaccountingagent", "label": "FusionAccountingAgent", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 27.4, "font": {"size": 12, "color": "#ffffff"}, "title": "FusionAccountingAgent", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 22}, {"id": "agent_fusionaccountingagent_get_config", "label": "._get_config()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_config()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 5}, {"id": "agent_fusionaccountingagent_get_adapter", "label": "._get_adapter()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_adapter()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 3}, {"id": "agent_fusionaccountingagent_route_model", "label": "._route_model()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._route_model()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 4}, {"id": "agent_fusionaccountingagent_should_escalate", "label": "._should_escalate()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._should_escalate()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 3}, {"id": "agent_fusionaccountingagent_get_tool_registry", "label": "._get_tool_registry()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_tool_registry()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 2}, {"id": "agent_fusionaccountingagent_get_tools_for_user", "label": "._get_tools_for_user()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_tools_for_user()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 3}, {"id": "agent_fusionaccountingagent_build_tool_definitions", "label": "._build_tool_definitions()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._build_tool_definitions()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 2}, {"id": "agent_fusionaccountingagent_load_rules", "label": "._load_rules()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._load_rules()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 2}, {"id": "agent_fusionaccountingagent_load_match_history", "label": "._load_match_history()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._load_match_history()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 3}, {"id": "agent_fusionaccountingagent_build_system_prompt", "label": "._build_system_prompt()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._build_system_prompt()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 4}, {"id": "agent_fusionaccountingagent_execute_tool", "label": "._execute_tool()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._execute_tool()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 3}, {"id": "agent_fusionaccountingagent_log_match_history", "label": "._log_match_history()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._log_match_history()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 2}, {"id": "agent_fusionaccountingagent_chat", "label": ".chat()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 24.2, "font": {"size": 12, "color": "#ffffff"}, "title": ".chat()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 18}, {"id": "agent_fusionaccountingagent_build_tool_call_summary", "label": "._build_tool_call_summary()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._build_tool_call_summary()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 3}, {"id": "agent_fusionaccountingagent_format_pending_approval", "label": "._format_pending_approval()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._format_pending_approval()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 5}, {"id": "agent_fusionaccountingagent_resolve_account_label", "label": "._resolve_account_label()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._resolve_account_label()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 3}, {"id": "agent_fusionaccountingagent_build_approval_summary", "label": "._build_approval_summary()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._build_approval_summary()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 5}, {"id": "agent_fusionaccountingagent_approve_action", "label": ".approve_action()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".approve_action()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 5}, {"id": "agent_fusionaccountingagent_check_rule_proposal", "label": "._check_rule_proposal()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._check_rule_proposal()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 3}, {"id": "agent_fusionaccountingagent_reject_action", "label": ".reject_action()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".reject_action()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 3}, {"id": "agent_fusionaccountingagent_update_session_after_decision", "label": "._update_session_after_decision()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._update_session_after_decision()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 4}, {"id": "agent_cron_reconcile_transfers", "label": "_cron_reconcile_transfers()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_cron_reconcile_transfers()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 1}, {"id": "agent_reconcile_payroll_cheques", "label": "_reconcile_payroll_cheques()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "_reconcile_payroll_cheques()", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "code", "degree": 1}, {"id": "agent_rationale_18", "label": "Get the current execution state for a session (called by polling endpoint).", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Get the current execution state for a session (called by polling endpoint).", "community": 8, "community_name": "Community 8", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 1}, {"id": "agent_rationale_55", "label": "Smart model routing: Haiku for routine tool calling, Sonnet for complex analysis", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Smart model routing: Haiku for routine tool calling, Sonnet for complex analysis", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 1}, {"id": "agent_rationale_79", "label": "Check if Haiku's response suggests it needs Sonnet's help.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Check if Haiku&#x27;s response suggests it needs Sonnet&#x27;s help.", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 1}, {"id": "agent_rationale_476", "label": "Build a one-line summary of what a tool call did, for the collapsed tool log.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Build a one-line summary of what a tool call did, for the collapsed tool log.", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 1}, {"id": "agent_rationale_522", "label": "Build a rich approval payload so the UI can show exactly what's being approved.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Build a rich approval payload so the UI can show exactly what&#x27;s being approved.", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 1}, {"id": "agent_rationale_554", "label": "Resolve an account ID to 'code - name' for display.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Resolve an account ID to &#x27;code - name&#x27; for display.", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 1}, {"id": "agent_rationale_566", "label": "Generate a short human-readable description of what a Tier 3 action will do.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Generate a short human-readable description of what a Tier 3 action will do.", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 1}, {"id": "agent_rationale_660", "label": "Detect repeated patterns and propose new rules when 3+ identical matches.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Detect repeated patterns and propose new rules when 3+ identical matches.", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 1}, {"id": "agent_rationale_727", "label": "Update session messages_json to replace pending_approval placeholder wit", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Update session messages_json to replace pending_approval placeholder wit", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 1}, {"id": "agent_rationale_761", "label": "Automatically reconcile inter-account credit card payments. When a paym", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Automatically reconcile inter-account credit card payments. When a paym", "community": 38, "community_name": "Community 38", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 0}, {"id": "agent_rationale_856", "label": "Reconcile payroll cheque bank lines using writeoff to Payroll Liabilities (2201)", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "Reconcile payroll cheque bank lines using writeoff to Payroll Liabilities (2201)", "community": 39, "community_name": "Community 39", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/agent.py", "file_type": "rationale", "degree": 0}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "label": "audit.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 20.3, "font": {"size": 12, "color": "#ffffff"}, "title": "audit.py", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 13}, {"id": "audit_audit_posted_entry", "label": "audit_posted_entry()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "audit_posted_entry()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 1}, {"id": "audit_audit_account_balances", "label": "audit_account_balances()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "audit_account_balances()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 3}, {"id": "audit_audit_tax_compliance", "label": "audit_tax_compliance()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "audit_tax_compliance()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 4}, {"id": "audit_audit_reconciliation_integrity", "label": "audit_reconciliation_integrity()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "audit_reconciliation_integrity()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 3}, {"id": "audit_check_hash_chain", "label": "check_hash_chain()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "check_hash_chain()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 3}, {"id": "audit_check_sequence_gaps", "label": "check_sequence_gaps()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "check_sequence_gaps()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 3}, {"id": "audit_flag_entry", "label": "flag_entry()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "flag_entry()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 1}, {"id": "audit_get_audit_status", "label": "get_audit_status()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_audit_status()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 1}, {"id": "audit_set_audit_status", "label": "set_audit_status()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "set_audit_status()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 1}, {"id": "audit_get_audit_trail", "label": "get_audit_trail()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_audit_trail()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 1}, {"id": "audit_run_full_audit", "label": "run_full_audit()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "run_full_audit()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 7}, {"id": "audit_get_audit_report", "label": "get_audit_report()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "get_audit_report()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/audit.py", "file_type": "code", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_asset_management_py", "label": "asset_management.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "asset_management.py", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/asset_management.py", "file_type": "code", "degree": 7}, {"id": "asset_management_fusion_list_assets", "label": "fusion_list_assets()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_list_assets()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/asset_management.py", "file_type": "code", "degree": 3}, {"id": "asset_management_fusion_get_asset_detail", "label": "fusion_get_asset_detail()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_get_asset_detail()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/asset_management.py", "file_type": "code", "degree": 1}, {"id": "asset_management_fusion_compute_asset_schedule", "label": "fusion_compute_asset_schedule()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_compute_asset_schedule()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/asset_management.py", "file_type": "code", "degree": 1}, {"id": "asset_management_fusion_dispose_asset", "label": "fusion_dispose_asset()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_dispose_asset()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/asset_management.py", "file_type": "code", "degree": 3}, {"id": "asset_management_fusion_suggest_asset_useful_life", "label": "fusion_suggest_asset_useful_life()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_suggest_asset_useful_life()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/asset_management.py", "file_type": "code", "degree": 3}, {"id": "asset_management_rationale_1", "label": "Fusion-engine-routed AI tools for asset management.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Fusion-engine-routed AI tools for asset management.", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/asset_management.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_hst_management_py", "label": "hst_management.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 17.1, "font": {"size": 12, "color": "#ffffff"}, "title": "hst_management.py", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "code", "degree": 9}, {"id": "hst_management_calculate_hst_balance", "label": "calculate_hst_balance()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "calculate_hst_balance()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "code", "degree": 2}, {"id": "hst_management_get_tax_report", "label": "get_tax_report()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "get_tax_report()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "code", "degree": 4}, {"id": "hst_management_find_missing_tax_invoices", "label": "find_missing_tax_invoices()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "find_missing_tax_invoices()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "code", "degree": 2}, {"id": "hst_management_find_missing_itc_bills", "label": "find_missing_itc_bills()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "find_missing_itc_bills()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "code", "degree": 2}, {"id": "hst_management_get_tax_return_status", "label": "get_tax_return_status()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_tax_return_status()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "code", "degree": 1}, {"id": "hst_management_generate_tax_return", "label": "generate_tax_return()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "generate_tax_return()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "code", "degree": 1}, {"id": "hst_management_validate_tax_return", "label": "validate_tax_return()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "validate_tax_return()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "code", "degree": 1}, {"id": "hst_management_create_expense_entry", "label": "create_expense_entry()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "create_expense_entry()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "code", "degree": 3}, {"id": "hst_management_rationale_55", "label": "Route through ReportsAdapter for tri-mode consistency. The Community fallbac", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Route through ReportsAdapter for tri-mode consistency. The Community fallbac", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "rationale", "degree": 1}, {"id": "hst_management_rationale_177", "label": "[Tier 3] Create a direct GL expense entry in the Misc journal with optional HST", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "[Tier 3] Create a direct GL expense entry in the Misc journal with optional HST", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/hst_management.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "label": "__init__.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 21.1, "font": {"size": 12, "color": "#ffffff"}, "title": "__init__.py", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/__init__.py", "file_type": "code", "degree": 14}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_financial_reports_py", "label": "financial_reports.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 16.3, "font": {"size": 12, "color": "#ffffff"}, "title": "financial_reports.py", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "code", "degree": 8}, {"id": "financial_reports_company_id", "label": "_company_id()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "_company_id()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "code", "degree": 5}, {"id": "financial_reports_fusion_run_report", "label": "fusion_run_report()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.7, "font": {"size": 12, "color": "#ffffff"}, "title": "fusion_run_report()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "code", "degree": 6}, {"id": "financial_reports_fusion_get_anomalies", "label": "fusion_get_anomalies()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_get_anomalies()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "code", "degree": 5}, {"id": "financial_reports_fusion_generate_commentary", "label": "fusion_generate_commentary()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_generate_commentary()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "code", "degree": 5}, {"id": "financial_reports_fusion_drill_down_report_line", "label": "fusion_drill_down_report_line()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_drill_down_report_line()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "code", "degree": 3}, {"id": "financial_reports_fusion_compare_periods", "label": "fusion_compare_periods()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_compare_periods()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "code", "degree": 3}, {"id": "financial_reports_rationale_1", "label": "Fusion-engine-routed AI tools for financial reports. These 5 tools route throug", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Fusion-engine-routed AI tools for financial reports. These 5 tools route throug", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "rationale", "degree": 1}, {"id": "financial_reports_rationale_19", "label": "Run a fusion financial report. Params: report_type (pnl|balance_sheet|trial", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Run a fusion financial report. Params: report_type (pnl|balance_sheet|trial", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "rationale", "degree": 1}, {"id": "financial_reports_rationale_47", "label": "Detect variance anomalies in a report.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Detect variance anomalies in a report.", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "rationale", "degree": 1}, {"id": "financial_reports_rationale_64", "label": "Generate AI commentary for a report.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Generate AI commentary for a report.", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "rationale", "degree": 1}, {"id": "financial_reports_rationale_85", "label": "Drill from a report line into the underlying journal items.", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Drill from a report line into the underlying journal items.", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "rationale", "degree": 1}, {"id": "financial_reports_rationale_110", "label": "Run a report with period comparison side-by-side. Defaults comparison to 'p", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Run a report with period comparison side-by-side. Defaults comparison to &#x27;p", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/financial_reports.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "label": "payroll.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 23.4, "font": {"size": 12, "color": "#ffffff"}, "title": "payroll.py", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 17}, {"id": "payroll_get_payroll_entries", "label": "get_payroll_entries()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_payroll_entries()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 2}, {"id": "payroll_compare_payroll_to_bank", "label": "compare_payroll_to_bank()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "compare_payroll_to_bank()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 1}, {"id": "payroll_verify_source_deductions", "label": "verify_source_deductions()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "verify_source_deductions()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 2}, {"id": "payroll_get_cra_remittance_status", "label": "get_cra_remittance_status()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_cra_remittance_status()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 2}, {"id": "payroll_find_unmatched_payroll_cheques", "label": "find_unmatched_payroll_cheques()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "find_unmatched_payroll_cheques()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 1}, {"id": "payroll_parse_payroll_summary", "label": "parse_payroll_summary()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "parse_payroll_summary()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 1}, {"id": "payroll_resolve_account_id", "label": "_resolve_account_id()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_resolve_account_id()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 3}, {"id": "payroll_create_payroll_journal_entry", "label": "create_payroll_journal_entry()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "create_payroll_journal_entry()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 3}, {"id": "payroll_get_payroll_schedule", "label": "get_payroll_schedule()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_payroll_schedule()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 1}, {"id": "payroll_match_payroll_cheques", "label": "match_payroll_cheques()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "match_payroll_cheques()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 1}, {"id": "payroll_verify_payroll_deductions", "label": "verify_payroll_deductions()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "verify_payroll_deductions()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 2}, {"id": "payroll_get_cra_remittance_due", "label": "get_cra_remittance_due()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_cra_remittance_due()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 2}, {"id": "payroll_prepare_cra_payment", "label": "prepare_cra_payment()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "prepare_cra_payment()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 2}, {"id": "payroll_generate_t4", "label": "generate_t4()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "generate_t4()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 1}, {"id": "payroll_generate_roe", "label": "generate_roe()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "generate_roe()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 1}, {"id": "payroll_get_payroll_cost_report", "label": "get_payroll_cost_report()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_payroll_cost_report()", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "code", "degree": 2}, {"id": "payroll_rationale_134", "label": "Resolve an account code or ID to a valid account ID. Accepts: integer ID, st", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Resolve an account code or ID to a valid account ID. Accepts: integer ID, st", "community": 12, "community_name": "Community 12", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/payroll.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "label": "accounts_payable.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": "accounts_payable.py", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 11}, {"id": "accounts_payable_get_ap_aging", "label": "get_ap_aging()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "get_ap_aging()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 4}, {"id": "accounts_payable_find_duplicate_bills", "label": "find_duplicate_bills()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "find_duplicate_bills()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 1}, {"id": "accounts_payable_match_bill_to_po", "label": "match_bill_to_po()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "match_bill_to_po()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 1}, {"id": "accounts_payable_get_unpaid_bills", "label": "get_unpaid_bills()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_unpaid_bills()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 1}, {"id": "accounts_payable_verify_bill_taxes", "label": "verify_bill_taxes()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "verify_bill_taxes()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 1}, {"id": "accounts_payable_get_payment_schedule", "label": "get_payment_schedule()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_payment_schedule()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 1}, {"id": "accounts_payable_search_partners", "label": "search_partners()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "search_partners()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 2}, {"id": "accounts_payable_find_similar_bank_lines", "label": "find_similar_bank_lines()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "find_similar_bank_lines()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 2}, {"id": "accounts_payable_create_vendor_bill", "label": "create_vendor_bill()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "create_vendor_bill()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 3}, {"id": "accounts_payable_register_bill_payment", "label": "register_bill_payment()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "register_bill_payment()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "code", "degree": 2}, {"id": "accounts_payable_rationale_9", "label": "Return AP aging buckets. Routed through FollowupAdapter for tri-mode consistency", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Return AP aging buckets. Routed through FollowupAdapter for tri-mode consistency", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "rationale", "degree": 1}, {"id": "accounts_payable_rationale_122", "label": "Search for partners/vendors by name keyword.", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Search for partners/vendors by name keyword.", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "rationale", "degree": 1}, {"id": "accounts_payable_rationale_145", "label": "Find past reconciled bank lines with similar description to suggest coding patte", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Find past reconciled bank lines with similar description to suggest coding patte", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "rationale", "degree": 1}, {"id": "accounts_payable_rationale_250", "label": "[Tier 3] Create a vendor bill (account.move with move_type='in_invoice'). Re", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "[Tier 3] Create a vendor bill (account.move with move_type=&#x27;in_invoice&#x27;). Re", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "rationale", "degree": 1}, {"id": "accounts_payable_rationale_302", "label": "[Tier 3] Register payment on a posted vendor bill and optionally reconcile to ba", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "[Tier 3] Register payment on a posted vendor bill and optionally reconcile to ba", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_payable.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_receivable_py", "label": "accounts_receivable.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 16.3, "font": {"size": 12, "color": "#ffffff"}, "title": "accounts_receivable.py", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "code", "degree": 8}, {"id": "accounts_receivable_get_ar_aging", "label": "get_ar_aging()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "get_ar_aging()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "code", "degree": 4}, {"id": "accounts_receivable_get_overdue_invoices", "label": "get_overdue_invoices()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "get_overdue_invoices()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "code", "degree": 4}, {"id": "accounts_receivable_get_partner_balance", "label": "get_partner_balance()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_partner_balance()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "code", "degree": 2}, {"id": "accounts_receivable_send_followup", "label": "send_followup()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "send_followup()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "code", "degree": 3}, {"id": "accounts_receivable_get_followup_report", "label": "get_followup_report()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "get_followup_report()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "code", "degree": 4}, {"id": "accounts_receivable_reconcile_payment_to_invoice", "label": "reconcile_payment_to_invoice()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "reconcile_payment_to_invoice()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "code", "degree": 1}, {"id": "accounts_receivable_get_unmatched_payments", "label": "get_unmatched_payments()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_unmatched_payments()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "code", "degree": 1}, {"id": "accounts_receivable_rationale_7", "label": "Return AR aging buckets. Routed through FollowupAdapter for tri-mode consistency", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Return AR aging buckets. Routed through FollowupAdapter for tri-mode consistency", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "rationale", "degree": 1}, {"id": "accounts_receivable_rationale_14", "label": "Return overdue customer invoices. Routed through FollowupAdapter.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Return overdue customer invoices. Routed through FollowupAdapter.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "rationale", "degree": 1}, {"id": "accounts_receivable_rationale_38", "label": "Get AR and AP balance for a partner. Accepts partner_id or partner_name.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Get AR and AP balance for a partner. Accepts partner_id or partner_name.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "rationale", "degree": 1}, {"id": "accounts_receivable_rationale_92", "label": "Send a follow-up to a partner. Routed through FollowupAdapter so the Enterpr", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Send a follow-up to a partner. Routed through FollowupAdapter so the Enterpr", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "rationale", "degree": 1}, {"id": "accounts_receivable_rationale_111", "label": "Return the follow-up report HTML for a partner. Routed through FollowupAdapter.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Return the follow-up report HTML for a partner. Routed through FollowupAdapter.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/accounts_receivable.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_adp_py", "label": "adp.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "adp.py", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/adp.py", "file_type": "code", "degree": 7}, {"id": "adp_get_adp_receivable_aging", "label": "get_adp_receivable_aging()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_adp_receivable_aging()", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/adp.py", "file_type": "code", "degree": 1}, {"id": "adp_match_adp_payment_to_invoice", "label": "match_adp_payment_to_invoice()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "match_adp_payment_to_invoice()", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/adp.py", "file_type": "code", "degree": 1}, {"id": "adp_verify_adp_split", "label": "verify_adp_split()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "verify_adp_split()", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/adp.py", "file_type": "code", "degree": 1}, {"id": "adp_find_adp_without_payment", "label": "find_adp_without_payment()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "find_adp_without_payment()", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/adp.py", "file_type": "code", "degree": 1}, {"id": "adp_get_adp_summary", "label": "get_adp_summary()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_adp_summary()", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/adp.py", "file_type": "code", "degree": 1}, {"id": "adp_register_adp_batch_payment", "label": "register_adp_batch_payment()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "register_adp_batch_payment()", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/adp.py", "file_type": "code", "degree": 2}, {"id": "adp_rationale_106", "label": "Register payments for a batch of ADP invoices from a remittance advice. Tak", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Register payments for a batch of ADP invoices from a remittance advice. Tak", "community": 14, "community_name": "Community 14", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/adp.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_customer_followup_py", "label": "customer_followup.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "customer_followup.py", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "code", "degree": 7}, {"id": "customer_followup_fusion_list_overdue", "label": "fusion_list_overdue()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_list_overdue()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "code", "degree": 4}, {"id": "customer_followup_fusion_get_partner_followup_detail", "label": "fusion_get_partner_followup_detail()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_get_partner_followup_detail()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "code", "degree": 2}, {"id": "customer_followup_fusion_generate_followup_text", "label": "fusion_generate_followup_text()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_generate_followup_text()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "code", "degree": 2}, {"id": "customer_followup_fusion_send_followup", "label": "fusion_send_followup()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_send_followup()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "code", "degree": 4}, {"id": "customer_followup_fusion_get_partner_risk_score", "label": "fusion_get_partner_risk_score()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_get_partner_risk_score()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "code", "degree": 2}, {"id": "customer_followup_rationale_1", "label": "Fusion-engine-routed AI tools for customer follow-ups. These tools are exposed", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Fusion-engine-routed AI tools for customer follow-ups. These tools are exposed", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "rationale", "degree": 1}, {"id": "customer_followup_rationale_14", "label": "List partners with overdue invoices, sorted by risk.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "List partners with overdue invoices, sorted by risk.", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "rationale", "degree": 1}, {"id": "customer_followup_rationale_28", "label": "Detailed follow-up state for a single partner: aging, risk, history.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Detailed follow-up state for a single partner: aging, risk, history.", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "rationale", "degree": 1}, {"id": "customer_followup_rationale_47", "label": "Generate (or fall back to template) follow-up subject + body.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Generate (or fall back to template) follow-up subject + body.", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "rationale", "degree": 1}, {"id": "customer_followup_rationale_65", "label": "Send a follow-up email via the engine (creates a fusion.followup.run).", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Send a follow-up email via the engine (creates a fusion.followup.run).", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "rationale", "degree": 1}, {"id": "customer_followup_rationale_78", "label": "Compute and return the payment-risk score + drivers for a partner.", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Compute and return the payment-risk score + drivers for a partner.", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/customer_followup.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_month_end_py", "label": "month_end.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 15.5, "font": {"size": 12, "color": "#ffffff"}, "title": "month_end.py", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/month_end.py", "file_type": "code", "degree": 7}, {"id": "month_end_get_close_checklist", "label": "get_close_checklist()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "get_close_checklist()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/month_end.py", "file_type": "code", "degree": 5}, {"id": "month_end_get_unreconciled_counts", "label": "get_unreconciled_counts()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_unreconciled_counts()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/month_end.py", "file_type": "code", "degree": 1}, {"id": "month_end_find_entries_in_locked_period", "label": "find_entries_in_locked_period()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "find_entries_in_locked_period()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/month_end.py", "file_type": "code", "degree": 1}, {"id": "month_end_get_accrual_status", "label": "get_accrual_status()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_accrual_status()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/month_end.py", "file_type": "code", "degree": 1}, {"id": "month_end_run_hash_integrity_check", "label": "run_hash_integrity_check()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "run_hash_integrity_check()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/month_end.py", "file_type": "code", "degree": 2}, {"id": "month_end_get_period_summary", "label": "get_period_summary()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "get_period_summary()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/month_end.py", "file_type": "code", "degree": 5}, {"id": "month_end_rationale_104", "label": "Period summary via trial-balance. Routed through ReportsAdapter so the Enter", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Period summary via trial-balance. Routed through ReportsAdapter so the Enter", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/month_end.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "label": "bank_reconciliation.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 28.9, "font": {"size": 12, "color": "#ffffff"}, "title": "bank_reconciliation.py", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 24}, {"id": "bank_reconciliation_get_unreconciled_bank_lines", "label": "get_unreconciled_bank_lines()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "get_unreconciled_bank_lines()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 5}, {"id": "bank_reconciliation_get_unreconciled_receipts", "label": "get_unreconciled_receipts()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_unreconciled_receipts()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 1}, {"id": "bank_reconciliation_match_bank_line_to_payments", "label": "match_bank_line_to_payments()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "match_bank_line_to_payments()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 1}, {"id": "bank_reconciliation_auto_reconcile_bank_lines", "label": "auto_reconcile_bank_lines()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "auto_reconcile_bank_lines()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 1}, {"id": "bank_reconciliation_apply_reconcile_model", "label": "apply_reconcile_model()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "apply_reconcile_model()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 1}, {"id": "bank_reconciliation_unmatch_bank_line", "label": "unmatch_bank_line()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "unmatch_bank_line()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 1}, {"id": "bank_reconciliation_get_reconcile_suggestions", "label": "get_reconcile_suggestions()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_reconcile_suggestions()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 1}, {"id": "bank_reconciliation_sum_payments_by_date", "label": "sum_payments_by_date()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "sum_payments_by_date()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 2}, {"id": "bank_reconciliation_get_bank_line_details", "label": "get_bank_line_details()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_bank_line_details()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 2}, {"id": "bank_reconciliation_check_recurring_pattern", "label": "check_recurring_pattern()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "check_recurring_pattern()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 2}, {"id": "bank_reconciliation_match_internal_transfers", "label": "match_internal_transfers()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "match_internal_transfers()", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 3}, {"id": "bank_reconciliation_find_unreconciled_cheques", "label": "find_unreconciled_cheques()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "find_unreconciled_cheques()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 2}, {"id": "bank_reconciliation_reconcile_payroll_cheques", "label": "reconcile_payroll_cheques()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "reconcile_payroll_cheques()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 2}, {"id": "bank_reconciliation_extract_partner_from_ref", "label": "_extract_partner_from_ref()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_extract_partner_from_ref()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 3}, {"id": "bank_reconciliation_find_best_subset", "label": "_find_best_subset()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_find_best_subset()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 3}, {"id": "bank_reconciliation_suggest_bank_line_matches", "label": "suggest_bank_line_matches()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "suggest_bank_line_matches()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 4}, {"id": "bank_reconciliation_search_matching_entries", "label": "search_matching_entries()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "search_matching_entries()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 4}, {"id": "bank_reconciliation_format_aml_candidates", "label": "_format_aml_candidates()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "_format_aml_candidates()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 3}, {"id": "bank_reconciliation_fusion_suggest_matches", "label": "fusion_suggest_matches()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_suggest_matches()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 4}, {"id": "bank_reconciliation_fusion_accept_suggestion", "label": "fusion_accept_suggestion()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_accept_suggestion()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 4}, {"id": "bank_reconciliation_fusion_reconcile_bank_line", "label": "fusion_reconcile_bank_line()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_reconcile_bank_line()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 2}, {"id": "bank_reconciliation_fusion_unreconcile", "label": "fusion_unreconcile()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_unreconcile()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 4}, {"id": "bank_reconciliation_fusion_get_pending_suggestions", "label": "fusion_get_pending_suggestions()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "fusion_get_pending_suggestions()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "code", "degree": 2}, {"id": "bank_reconciliation_rationale_9", "label": "Return unreconciled bank lines for a journal/company. Routed through the ba", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Return unreconciled bank lines for a journal/company. Routed through the ba", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_161", "label": "Sum payment/journal activity for a date range. IMPORTANT: Always pass journa", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Sum payment/journal activity for a date range. IMPORTANT: Always pass journa", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_225", "label": "Get full details of a single bank statement line plus matching suggestions.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Get full details of a single bank statement line plus matching suggestions.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_292", "label": "Check if a bank line matches a known recurring payment pattern. Returns the", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Check if a bank line matches a known recurring payment pattern. Returns the", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_354", "label": "[Tier 3] Find and match inter-account transfers between two bank journals. M", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "[Tier 3] Find and match inter-account transfers between two bank journals. M", "community": 9, "community_name": "Community 9", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_506", "label": "Find unreconciled cheque bank lines and classify as payroll vs non-payroll b", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Find unreconciled cheque bank lines and classify as payroll vs non-payroll b", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_560", "label": "Reconcile payroll cheque bank lines by applying the Payroll Cheque Clearing", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Reconcile payroll cheque bank lines by applying the Payroll Cheque Clearing", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_640", "label": "Extract a partner from a bank line payment_ref using keyword matching.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Extract a partner from a bank line payment_ref using keyword matching.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_677", "label": "Find the subset of candidates whose amounts sum closest to target. Returns (", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Find the subset of candidates whose amounts sum closest to target. Returns (", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_705", "label": "Find candidate journal items (invoices/bills) that could match a bank statement", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Find candidate journal items (invoices/bills) that could match a bank statement", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_891", "label": "Search open journal items by query (invoice/bill number, amount, or partner name", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Search open journal items by query (invoice/bill number, amount, or partner name", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_945", "label": "Format AMLs as candidate dicts for the reconciliation table.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Format AMLs as candidate dicts for the reconciliation table.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_974", "label": "Compute and persist AI suggestions for one or more bank statement lines. Wr", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Compute and persist AI suggestions for one or more bank statement lines. Wr", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_1010", "label": "Accept a fusion.reconcile.suggestion: reconciles the bank line against the s", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Accept a fusion.reconcile.suggestion: reconciles the bank line against the s", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_1035", "label": "Manually reconcile a bank statement line against a set of journal items. Ro", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Manually reconcile a bank statement line against a set of journal items. Ro", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_1067", "label": "Reverse a reconciliation by partial_reconcile_ids. Wraps ``BankRecAdapter.u", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Reverse a reconciliation by partial_reconcile_ids. Wraps ``BankRecAdapter.u", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "bank_reconciliation_rationale_1090", "label": "List pending fusion.reconcile.suggestion rows. Optional filters: ``statemen", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "List pending fusion.reconcile.suggestion rows. Optional filters: ``statemen", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/bank_reconciliation.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_journal_review_py", "label": "journal_review.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 16.3, "font": {"size": 12, "color": "#ffffff"}, "title": "journal_review.py", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/journal_review.py", "file_type": "code", "degree": 8}, {"id": "journal_review_find_wrong_direction_balances", "label": "find_wrong_direction_balances()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "find_wrong_direction_balances()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/journal_review.py", "file_type": "code", "degree": 2}, {"id": "journal_review_find_duplicate_entries", "label": "find_duplicate_entries()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "find_duplicate_entries()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/journal_review.py", "file_type": "code", "degree": 1}, {"id": "journal_review_find_wrong_account_entries", "label": "find_wrong_account_entries()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "find_wrong_account_entries()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/journal_review.py", "file_type": "code", "degree": 1}, {"id": "journal_review_find_sequence_gaps", "label": "find_sequence_gaps()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "find_sequence_gaps()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/journal_review.py", "file_type": "code", "degree": 3}, {"id": "journal_review_find_draft_entries", "label": "find_draft_entries()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "find_draft_entries()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/journal_review.py", "file_type": "code", "degree": 2}, {"id": "journal_review_find_unreconciled_suspense", "label": "find_unreconciled_suspense()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "find_unreconciled_suspense()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/journal_review.py", "file_type": "code", "degree": 1}, {"id": "journal_review_verify_reconciliation_integrity", "label": "verify_reconciliation_integrity()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "verify_reconciliation_integrity()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/journal_review.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "label": "reporting.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": "reporting.py", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 11}, {"id": "reporting_get_profit_loss", "label": "get_profit_loss()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "get_profit_loss()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 5}, {"id": "reporting_get_balance_sheet", "label": "get_balance_sheet()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "get_balance_sheet()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 4}, {"id": "reporting_get_trial_balance", "label": "get_trial_balance()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "get_trial_balance()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 5}, {"id": "reporting_get_cash_flow", "label": "get_cash_flow()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "get_cash_flow()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 4}, {"id": "reporting_compare_periods", "label": "compare_periods()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "compare_periods()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 4}, {"id": "reporting_answer_financial_question", "label": "answer_financial_question()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "answer_financial_question()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 1}, {"id": "reporting_export_report", "label": "export_report()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "export_report()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 3}, {"id": "reporting_get_invoicing_summary", "label": "get_invoicing_summary()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_invoicing_summary()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 2}, {"id": "reporting_get_billing_summary", "label": "get_billing_summary()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_billing_summary()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 2}, {"id": "reporting_get_collections_summary", "label": "get_collections_summary()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_collections_summary()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "code", "degree": 2}, {"id": "reporting_rationale_11", "label": "Route through ReportsAdapter for tri-mode consistency.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Route through ReportsAdapter for tri-mode consistency.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "rationale", "degree": 1}, {"id": "reporting_rationale_22", "label": "Route through ReportsAdapter for tri-mode consistency.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Route through ReportsAdapter for tri-mode consistency.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "rationale", "degree": 1}, {"id": "reporting_rationale_33", "label": "Route through ReportsAdapter for tri-mode consistency. In Enterprise mode r", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Route through ReportsAdapter for tri-mode consistency. In Enterprise mode r", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "rationale", "degree": 1}, {"id": "reporting_rationale_63", "label": "Route through ReportsAdapter for tri-mode consistency.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Route through ReportsAdapter for tri-mode consistency.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "rationale", "degree": 1}, {"id": "reporting_rationale_74", "label": "Run the same report over two periods and return both results. Routes both ru", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Run the same report over two periods and return both results. Routes both ru", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "rationale", "degree": 1}, {"id": "reporting_rationale_101", "label": "Route through ReportsAdapter for tri-mode consistency.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Route through ReportsAdapter for tri-mode consistency.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "rationale", "degree": 1}, {"id": "reporting_rationale_119", "label": "Get invoicing summary \u2014 total invoiced by month, by partner, or for a date range", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Get invoicing summary \u2014 total invoiced by month, by partner, or for a date range", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "rationale", "degree": 1}, {"id": "reporting_rationale_183", "label": "Get billing (vendor bills) summary \u2014 total billed by month or date range.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Get billing (vendor bills) summary \u2014 total billed by month or date range.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "rationale", "degree": 1}, {"id": "reporting_rationale_246", "label": "Get payment collections summary \u2014 how much was collected (received) in a period.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Get payment collections summary \u2014 how much was collected (received) in a period.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/reporting.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_inventory_py", "label": "inventory.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 14.7, "font": {"size": 12, "color": "#ffffff"}, "title": "inventory.py", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/inventory.py", "file_type": "code", "degree": 6}, {"id": "inventory_get_stock_valuation", "label": "get_stock_valuation()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_stock_valuation()", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/inventory.py", "file_type": "code", "degree": 2}, {"id": "inventory_get_price_differences", "label": "get_price_differences()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_price_differences()", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/inventory.py", "file_type": "code", "degree": 1}, {"id": "inventory_get_cogs_ratio_by_category", "label": "get_cogs_ratio_by_category()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "get_cogs_ratio_by_category()", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/inventory.py", "file_type": "code", "degree": 1}, {"id": "inventory_find_unusual_adjustments", "label": "find_unusual_adjustments()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "find_unusual_adjustments()", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/inventory.py", "file_type": "code", "degree": 1}, {"id": "inventory_get_inventory_turnover", "label": "get_inventory_turnover()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "get_inventory_turnover()", "community": 16, "community_name": "Community 16", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/tools/inventory.py", "file_type": "code", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_bank_rec_py", "label": "bank_rec.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "bank_rec.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 4}, {"id": "bank_rec_bankrecadapter", "label": "BankRecAdapter", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 25.8, "font": {"size": 12, "color": "#ffffff"}, "title": "BankRecAdapter", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 20}, {"id": "dataadapter", "label": "DataAdapter", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "DataAdapter", "community": 11, "community_name": "Community 11", "source_file": "", "file_type": "code", "degree": 4}, {"id": "bank_rec_bankrecadapter_list_unreconciled", "label": ".list_unreconciled()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_unreconciled()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 5}, {"id": "bank_rec_bankrecadapter_list_unreconciled_via_fusion", "label": ".list_unreconciled_via_fusion()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_unreconciled_via_fusion()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 3}, {"id": "bank_rec_bankrecadapter_list_unreconciled_via_enterprise", "label": ".list_unreconciled_via_enterprise()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_unreconciled_via_enterprise()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 2}, {"id": "bank_rec_bankrecadapter_list_unreconciled_via_community", "label": ".list_unreconciled_via_community()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_unreconciled_via_community()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 3}, {"id": "bank_rec_bankrecadapter_suggest_matches", "label": ".suggest_matches()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".suggest_matches()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 5}, {"id": "bank_rec_bankrecadapter_suggest_matches_via_fusion", "label": ".suggest_matches_via_fusion()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".suggest_matches_via_fusion()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 2}, {"id": "bank_rec_bankrecadapter_suggest_matches_via_enterprise", "label": ".suggest_matches_via_enterprise()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".suggest_matches_via_enterprise()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 1}, {"id": "bank_rec_bankrecadapter_suggest_matches_via_community", "label": ".suggest_matches_via_community()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".suggest_matches_via_community()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 1}, {"id": "bank_rec_bankrecadapter_accept_suggestion", "label": ".accept_suggestion()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".accept_suggestion()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 5}, {"id": "bank_rec_bankrecadapter_accept_suggestion_via_fusion", "label": ".accept_suggestion_via_fusion()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".accept_suggestion_via_fusion()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 2}, {"id": "bank_rec_bankrecadapter_accept_suggestion_via_enterprise", "label": ".accept_suggestion_via_enterprise()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".accept_suggestion_via_enterprise()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 1}, {"id": "bank_rec_bankrecadapter_accept_suggestion_via_community", "label": ".accept_suggestion_via_community()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".accept_suggestion_via_community()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 1}, {"id": "bank_rec_bankrecadapter_unreconcile", "label": ".unreconcile()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".unreconcile()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 5}, {"id": "bank_rec_bankrecadapter_unreconcile_via_fusion", "label": ".unreconcile_via_fusion()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".unreconcile_via_fusion()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 2}, {"id": "bank_rec_bankrecadapter_unreconcile_via_enterprise", "label": ".unreconcile_via_enterprise()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".unreconcile_via_enterprise()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 2}, {"id": "bank_rec_bankrecadapter_unreconcile_via_community", "label": ".unreconcile_via_community()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".unreconcile_via_community()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 2}, {"id": "bank_rec_bankrecadapter_unreconcile_standalone", "label": "._unreconcile_standalone()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "._unreconcile_standalone()", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "code", "degree": 4}, {"id": "bank_rec_rationale_1", "label": "Bank reconciliation data adapter. Routes bank-rec data lookups across: - FUSION", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Bank reconciliation data adapter. Routes bank-rec data lookups across: - FUSION", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "rationale", "degree": 2}, {"id": "bank_rec_rationale_29", "label": "Return unreconciled bank statement lines. All filter params are optiona", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Return unreconciled bank statement lines. All filter params are optiona", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "rationale", "degree": 2}, {"id": "bank_rec_rationale_44", "label": "Community shape + fusion AI fields (top suggestion, band, attachments).", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Community shape + fusion AI fields (top suggestion, band, attachments).", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "rationale", "degree": 2}, {"id": "bank_rec_rationale_118", "label": "Return AI suggestions per bank line. Shape: ``{line_id: [{'id', 'rank',", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Return AI suggestions per bank line. Shape: ``{line_id: [{&#x27;id&#x27;, &#x27;rank&#x27;,", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "rationale", "degree": 2}, {"id": "bank_rec_rationale_155", "label": "Accept a fusion AI suggestion and reconcile against its proposal. Retur", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Accept a fusion AI suggestion and reconcile against its proposal. Retur", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "rationale", "degree": 2}, {"id": "bank_rec_rationale_178", "label": "Reverse a reconciliation by partial IDs. Returns ``{'unreconciled_line_", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Reverse a reconciliation by partial IDs. Returns ``{&#x27;unreconciled_line_", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "rationale", "degree": 2}, {"id": "bank_rec_rationale_203", "label": "Engine-free unreconcile for installs without fusion_accounting_bank_rec.", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Engine-free unreconcile for installs without fusion_accounting_bank_rec.", "community": 2, "community_name": "Community 2", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/bank_rec.py", "file_type": "rationale", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_init_py", "label": "__init__.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/__init__.py", "file_type": "code", "degree": 4}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_registry_py", "label": "_registry.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.1, "font": {"size": 12, "color": "#ffffff"}, "title": "_registry.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/_registry.py", "file_type": "code", "degree": 9}, {"id": "registry_get_adapter", "label": "get_adapter()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 39.2, "font": {"size": 12, "color": "#ffffff"}, "title": "get_adapter()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/_registry.py", "file_type": "code", "degree": 37}, {"id": "registry_register_adapter", "label": "register_adapter()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "register_adapter()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/_registry.py", "file_type": "code", "degree": 2}, {"id": "registry_rationale_1", "label": "Registry: lazy-loads data adapter instances per env.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Registry: lazy-loads data adapter instances per env.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/_registry.py", "file_type": "rationale", "degree": 2}, {"id": "registry_rationale_7", "label": "Return a data adapter by short name. Cached per request via env.context.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Return a data adapter by short name. Cached per request via env.context.", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/_registry.py", "file_type": "rationale", "degree": 2}, {"id": "registry_rationale_24", "label": "Register an adapter class. Call from each adapter module at import time.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Register an adapter class. Call from each adapter module at import time.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/_registry.py", "file_type": "rationale", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_followup_py", "label": "followup.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "followup.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 5}, {"id": "followup_bucket_for_days", "label": "_bucket_for_days()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "_bucket_for_days()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 2}, {"id": "followup_followupadapter", "label": "FollowupAdapter", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 32.1, "font": {"size": 12, "color": "#ffffff"}, "title": "FollowupAdapter", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 28}, {"id": "followup_followupadapter_overdue_invoices", "label": ".overdue_invoices()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".overdue_invoices()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 5}, {"id": "followup_followupadapter_overdue_invoices_via_fusion", "label": ".overdue_invoices_via_fusion()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".overdue_invoices_via_fusion()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 2}, {"id": "followup_followupadapter_overdue_invoices_via_enterprise", "label": ".overdue_invoices_via_enterprise()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".overdue_invoices_via_enterprise()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 2}, {"id": "followup_followupadapter_overdue_invoices_via_community", "label": ".overdue_invoices_via_community()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".overdue_invoices_via_community()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 3}, {"id": "followup_followupadapter_aged_receivables", "label": ".aged_receivables()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".aged_receivables()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 4}, {"id": "followup_followupadapter_aged_receivables_via_fusion", "label": ".aged_receivables_via_fusion()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".aged_receivables_via_fusion()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 2}, {"id": "followup_followupadapter_aged_receivables_via_enterprise", "label": ".aged_receivables_via_enterprise()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".aged_receivables_via_enterprise()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 2}, {"id": "followup_followupadapter_aged_receivables_via_community", "label": ".aged_receivables_via_community()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".aged_receivables_via_community()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 4}, {"id": "followup_followupadapter_aged_payables", "label": ".aged_payables()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".aged_payables()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 4}, {"id": "followup_followupadapter_aged_payables_via_fusion", "label": ".aged_payables_via_fusion()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".aged_payables_via_fusion()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 2}, {"id": "followup_followupadapter_aged_payables_via_enterprise", "label": ".aged_payables_via_enterprise()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".aged_payables_via_enterprise()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 2}, {"id": "followup_followupadapter_aged_payables_via_community", "label": ".aged_payables_via_community()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".aged_payables_via_community()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 4}, {"id": "followup_followupadapter_aged_buckets", "label": "._aged_buckets()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._aged_buckets()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 5}, {"id": "followup_followupadapter_followup_report_html", "label": ".followup_report_html()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".followup_report_html()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 3}, {"id": "followup_followupadapter_followup_report_html_via_fusion", "label": ".followup_report_html_via_fusion()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".followup_report_html_via_fusion()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 2}, {"id": "followup_followupadapter_followup_report_html_via_enterprise", "label": ".followup_report_html_via_enterprise()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".followup_report_html_via_enterprise()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 1}, {"id": "followup_followupadapter_followup_report_html_via_community", "label": ".followup_report_html_via_community()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".followup_report_html_via_community()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 2}, {"id": "followup_followupadapter_send_followup", "label": ".send_followup()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".send_followup()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 3}, {"id": "followup_followupadapter_send_followup_via_fusion", "label": ".send_followup_via_fusion()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".send_followup_via_fusion()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 1}, {"id": "followup_followupadapter_send_followup_via_enterprise", "label": ".send_followup_via_enterprise()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".send_followup_via_enterprise()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 1}, {"id": "followup_followupadapter_send_followup_via_community", "label": ".send_followup_via_community()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".send_followup_via_community()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 1}, {"id": "followup_followupadapter_list_overdue", "label": ".list_overdue()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_overdue()", "community": 5, "community_name": "Community 5", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 3}, {"id": "followup_followupadapter_list_overdue_via_fusion", "label": ".list_overdue_via_fusion()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_overdue_via_fusion()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 1}, {"id": "followup_followupadapter_list_overdue_via_enterprise", "label": ".list_overdue_via_enterprise()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_overdue_via_enterprise()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 1}, {"id": "followup_followupadapter_list_overdue_via_community", "label": ".list_overdue_via_community()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_overdue_via_community()", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "code", "degree": 1}, {"id": "followup_rationale_1", "label": "Follow-up data adapter. Routes follow-up / aged-balance / collections data look", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Follow-up data adapter. Routes follow-up / aged-balance / collections data look", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "rationale", "degree": 2}, {"id": "followup_rationale_123", "label": "Shared aging-bucket implementation for receivable/payable accounts. Ret", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Shared aging-bucket implementation for receivable/payable accounts. Ret", "community": 10, "community_name": "Community 10", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/followup.py", "file_type": "rationale", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_assets_py", "label": "assets.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "assets.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 4}, {"id": "assets_assetsadapter", "label": "AssetsAdapter", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 21.8, "font": {"size": 12, "color": "#ffffff"}, "title": "AssetsAdapter", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 15}, {"id": "assets_assetsadapter_list_assets", "label": ".list_assets()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_assets()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 4}, {"id": "assets_assetsadapter_list_assets_via_fusion", "label": ".list_assets_via_fusion()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_assets_via_fusion()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 1}, {"id": "assets_assetsadapter_list_assets_via_enterprise", "label": ".list_assets_via_enterprise()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_assets_via_enterprise()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 1}, {"id": "assets_assetsadapter_list_assets_via_community", "label": ".list_assets_via_community()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".list_assets_via_community()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 1}, {"id": "assets_assetsadapter_suggest_useful_life", "label": ".suggest_useful_life()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".suggest_useful_life()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 3}, {"id": "assets_assetsadapter_suggest_useful_life_via_fusion", "label": ".suggest_useful_life_via_fusion()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".suggest_useful_life_via_fusion()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 1}, {"id": "assets_assetsadapter_suggest_useful_life_via_enterprise", "label": ".suggest_useful_life_via_enterprise()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".suggest_useful_life_via_enterprise()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 1}, {"id": "assets_assetsadapter_suggest_useful_life_via_community", "label": ".suggest_useful_life_via_community()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".suggest_useful_life_via_community()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 1}, {"id": "assets_assetsadapter_dispose_asset", "label": ".dispose_asset()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": ".dispose_asset()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 4}, {"id": "assets_assetsadapter_dispose_asset_via_fusion", "label": ".dispose_asset_via_fusion()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".dispose_asset_via_fusion()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 2}, {"id": "assets_assetsadapter_dispose_asset_via_enterprise", "label": ".dispose_asset_via_enterprise()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".dispose_asset_via_enterprise()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 1}, {"id": "assets_assetsadapter_dispose_asset_via_community", "label": ".dispose_asset_via_community()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".dispose_asset_via_community()", "community": 11, "community_name": "Community 11", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "code", "degree": 1}, {"id": "assets_rationale_1", "label": "Assets data adapter \u2014 routes asset queries through fusion engine if installed.", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Assets data adapter \u2014 routes asset queries through fusion engine if installed.", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/assets.py", "file_type": "rationale", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_reports_py", "label": "reports.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "reports.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 4}, {"id": "reports_reportsadapter", "label": "ReportsAdapter", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 31.3, "font": {"size": 12, "color": "#ffffff"}, "title": "ReportsAdapter", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 27}, {"id": "reports_reportsadapter_trial_balance", "label": ".trial_balance()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".trial_balance()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 5}, {"id": "reports_reportsadapter_trial_balance_via_fusion", "label": ".trial_balance_via_fusion()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".trial_balance_via_fusion()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 2}, {"id": "reports_reportsadapter_trial_balance_via_enterprise", "label": ".trial_balance_via_enterprise()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".trial_balance_via_enterprise()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 2}, {"id": "reports_reportsadapter_trial_balance_via_community", "label": ".trial_balance_via_community()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".trial_balance_via_community()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 3}, {"id": "reports_reportsadapter_run_report", "label": ".run_report()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": ".run_report()", "community": 3, "community_name": "Community 3", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 11}, {"id": "reports_reportsadapter_run_report_via_fusion", "label": ".run_report_via_fusion()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".run_report_via_fusion()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 2}, {"id": "reports_reportsadapter_run_report_via_enterprise", "label": ".run_report_via_enterprise()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".run_report_via_enterprise()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 1}, {"id": "reports_reportsadapter_run_report_via_community", "label": ".run_report_via_community()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".run_report_via_community()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 2}, {"id": "reports_reportsadapter_export_report", "label": ".export_report()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".export_report()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 3}, {"id": "reports_reportsadapter_export_report_via_fusion", "label": ".export_report_via_fusion()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".export_report_via_fusion()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 2}, {"id": "reports_reportsadapter_export_report_via_enterprise", "label": ".export_report_via_enterprise()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".export_report_via_enterprise()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 1}, {"id": "reports_reportsadapter_export_report_via_community", "label": ".export_report_via_community()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".export_report_via_community()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 2}, {"id": "reports_reportsadapter_run_fusion_report", "label": ".run_fusion_report()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".run_fusion_report()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 3}, {"id": "reports_reportsadapter_run_fusion_report_via_fusion", "label": ".run_fusion_report_via_fusion()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".run_fusion_report_via_fusion()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 3}, {"id": "reports_reportsadapter_run_fusion_report_via_enterprise", "label": ".run_fusion_report_via_enterprise()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".run_fusion_report_via_enterprise()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 1}, {"id": "reports_reportsadapter_run_fusion_report_via_community", "label": ".run_fusion_report_via_community()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".run_fusion_report_via_community()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 1}, {"id": "reports_reportsadapter_get_anomalies", "label": ".get_anomalies()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_anomalies()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 3}, {"id": "reports_reportsadapter_get_anomalies_via_fusion", "label": ".get_anomalies_via_fusion()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_anomalies_via_fusion()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 2}, {"id": "reports_reportsadapter_get_anomalies_via_enterprise", "label": ".get_anomalies_via_enterprise()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_anomalies_via_enterprise()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 1}, {"id": "reports_reportsadapter_get_anomalies_via_community", "label": ".get_anomalies_via_community()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_anomalies_via_community()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 1}, {"id": "reports_reportsadapter_get_commentary", "label": ".get_commentary()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_commentary()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 3}, {"id": "reports_reportsadapter_get_commentary_via_fusion", "label": ".get_commentary_via_fusion()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_commentary_via_fusion()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 2}, {"id": "reports_reportsadapter_get_commentary_via_enterprise", "label": ".get_commentary_via_enterprise()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_commentary_via_enterprise()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 1}, {"id": "reports_reportsadapter_get_commentary_via_community", "label": ".get_commentary_via_community()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".get_commentary_via_community()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "code", "degree": 1}, {"id": "reports_rationale_1", "label": "Reports data adapter. Routes report-data lookups across: - FUSION: fusion.a", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Reports data adapter. Routes report-data lookups across: - FUSION: fusion.a", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/reports.py", "file_type": "rationale", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_base_py", "label": "base.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 17.1, "font": {"size": 12, "color": "#ffffff"}, "title": "base.py", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.py", "file_type": "code", "degree": 9}, {"id": "base_adaptermode", "label": "AdapterMode", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 21.1, "font": {"size": 12, "color": "#ffffff"}, "title": "AdapterMode", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.py", "file_type": "code", "degree": 14}, {"id": "base_dataadapter", "label": "DataAdapter", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "DataAdapter", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.py", "file_type": "code", "degree": 38}, {"id": "base_dataadapter_init", "label": ".__init__()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.py", "file_type": "code", "degree": 1}, {"id": "base_dataadapter_select_mode", "label": "._select_mode()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "._select_mode()", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.py", "file_type": "code", "degree": 5}, {"id": "base_dataadapter_dispatch", "label": "._dispatch()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 27.4, "font": {"size": 12, "color": "#ffffff"}, "title": "._dispatch()", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.py", "file_type": "code", "degree": 22}, {"id": "base_rationale_1", "label": "LLMProvider contract - every adapter must conform. Phase 1 generalisation: make", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "LLMProvider contract - every adapter must conform. Phase 1 generalisation: make", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "rationale", "degree": 2}, {"id": "base_rationale_30", "label": "Base class. Subclasses set FUSION_MODEL and ENTERPRISE_MODULE class attrs an", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Base class. Subclasses set FUSION_MODEL and ENTERPRISE_MODULE class attrs an", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "base_rationale_45", "label": "Pick FUSION if the model is loaded, else ENTERPRISE if the module is ins", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Pick FUSION if the model is loaded, else ENTERPRISE if the module is ins", "community": 4, "community_name": "Community 4", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "base_rationale_64", "label": "Look up <method_name>_via_<mode> on self and call it. E.g. method_name=", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Look up &lt;method_name&gt;_via_&lt;mode&gt; on self and call it. E.g. method_name=", "community": 6, "community_name": "Community 6", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/data_adapters/base.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_base_py", "label": "_base.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "_base.py", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "code", "degree": 5}, {"id": "base_llmprovider", "label": "LLMProvider", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 21.1, "font": {"size": 12, "color": "#ffffff"}, "title": "LLMProvider", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "code", "degree": 14}, {"id": "base_llmprovider_init", "label": ".__init__()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "code", "degree": 1}, {"id": "base_llmprovider_complete", "label": ".complete()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".complete()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "code", "degree": 2}, {"id": "base_llmprovider_complete_with_tools", "label": ".complete_with_tools()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".complete_with_tools()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "code", "degree": 2}, {"id": "base_llmprovider_embed", "label": ".embed()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".embed()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "code", "degree": 2}, {"id": "base_rationale_10", "label": "Contract every LLM backend must satisfy. Adapters declare capabilities as cl", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Contract every LLM backend must satisfy. Adapters declare capabilities as cl", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "rationale", "degree": 1}, {"id": "base_rationale_22", "label": "Plain text completion. Required for ALL providers. Returns: {'content':", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Plain text completion. Required for ALL providers. Returns: {&#x27;content&#x27;:", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "rationale", "degree": 1}, {"id": "base_rationale_29", "label": "Tool-calling completion. Optional - caller checks supports_tool_calling first.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Tool-calling completion. Optional - caller checks supports_tool_calling first.", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "rationale", "degree": 1}, {"id": "base_rationale_38", "label": "Embeddings. Optional - caller checks supports_embeddings first. Returns", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Embeddings. Optional - caller checks supports_embeddings first. Returns", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/_base.py", "file_type": "rationale", "degree": 1}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_claude_py", "label": "claude.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "claude.py", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 3}, {"id": "claude_claudeadapter", "label": "ClaudeAdapter", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 17.1, "font": {"size": 12, "color": "#ffffff"}, "title": "ClaudeAdapter", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 9}, {"id": "llmprovider", "label": "LLMProvider", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "LLMProvider", "community": 7, "community_name": "Community 7", "source_file": "", "file_type": "code", "degree": 2}, {"id": "claude_claudeadapter_init", "label": ".__init__()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 1}, {"id": "claude_claudeadapter_complete", "label": ".complete()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".complete()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 1}, {"id": "claude_fusionaccountingadapterclaude", "label": "FusionAccountingAdapterClaude", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 16.3, "font": {"size": 12, "color": "#ffffff"}, "title": "FusionAccountingAdapterClaude", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 8}, {"id": "claude_fusionaccountingadapterclaude_get_client", "label": "._get_client()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_client()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 2}, {"id": "claude_fusionaccountingadapterclaude_get_model_name", "label": "._get_model_name()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_model_name()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 2}, {"id": "claude_fusionaccountingadapterclaude_format_tools", "label": "._format_tools()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._format_tools()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 2}, {"id": "claude_fusionaccountingadapterclaude_supports_extended_thinking", "label": "._supports_extended_thinking()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._supports_extended_thinking()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 2}, {"id": "claude_fusionaccountingadapterclaude_call_with_tools", "label": ".call_with_tools()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": ".call_with_tools()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 5}, {"id": "claude_fusionaccountingadapterclaude_append_tool_results", "label": ".append_tool_results()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".append_tool_results()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "code", "degree": 1}, {"id": "claude_rationale_18", "label": "Plain-Python LLMProvider implementation for Anthropic Claude. Preserves all", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Plain-Python LLMProvider implementation for Anthropic Claude. Preserves all", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/claude.py", "file_type": "rationale", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_init_py", "label": "__init__.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/__init__.py", "file_type": "code", "degree": 3}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_openai_adapter_py", "label": "openai_adapter.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "openai_adapter.py", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 3}, {"id": "openai_adapter_openaiadapter", "label": "OpenAIAdapter", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 18.7, "font": {"size": 12, "color": "#ffffff"}, "title": "OpenAIAdapter", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 11}, {"id": "openai_adapter_openaiadapter_init", "label": ".__init__()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 1}, {"id": "openai_adapter_openaiadapter_complete", "label": ".complete()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": ".complete()", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 1}, {"id": "openai_adapter_fusionaccountingadapteropenai", "label": "FusionAccountingAdapterOpenAI", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.3, "font": {"size": 12, "color": "#ffffff"}, "title": "FusionAccountingAdapterOpenAI", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 8}, {"id": "openai_adapter_fusionaccountingadapteropenai_get_client", "label": "._get_client()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_client()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 2}, {"id": "openai_adapter_fusionaccountingadapteropenai_get_model_name", "label": "._get_model_name()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.4, "font": {"size": 0, "color": "#ffffff"}, "title": "._get_model_name()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 3}, {"id": "openai_adapter_fusionaccountingadapteropenai_format_tools", "label": "._format_tools()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._format_tools()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 2}, {"id": "openai_adapter_fusionaccountingadapteropenai_is_reasoning_model", "label": "._is_reasoning_model()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "._is_reasoning_model()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 2}, {"id": "openai_adapter_fusionaccountingadapteropenai_call_with_tools", "label": ".call_with_tools()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.7, "font": {"size": 12, "color": "#ffffff"}, "title": ".call_with_tools()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 6}, {"id": "openai_adapter_fusionaccountingadapteropenai_append_tool_results", "label": ".append_tool_results()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": ".append_tool_results()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "code", "degree": 2}, {"id": "openai_adapter_rationale_21", "label": "Plain-Python LLMProvider implementation backed by an OpenAI-compatible HTTP", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "Plain-Python LLMProvider implementation backed by an OpenAI-compatible HTTP", "community": 7, "community_name": "Community 7", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/adapters/openai_adapter.py", "file_type": "rationale", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_domain_prompts_py", "label": "domain_prompts.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "domain_prompts.py", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/domain_prompts.py", "file_type": "code", "degree": 1}, {"id": "domain_prompts_get_domain_prompt", "label": "get_domain_prompt()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "get_domain_prompt()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/domain_prompts.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_system_prompt_py", "label": "system_prompt.py", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.2, "font": {"size": 0, "color": "#ffffff"}, "title": "system_prompt.py", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/system_prompt.py", "file_type": "code", "degree": 4}, {"id": "system_prompt_build_system_prompt", "label": "build_system_prompt()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 13.9, "font": {"size": 0, "color": "#ffffff"}, "title": "build_system_prompt()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/system_prompt.py", "file_type": "code", "degree": 5}, {"id": "system_prompt_build_rules_section", "label": "_build_rules_section()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "_build_rules_section()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/system_prompt.py", "file_type": "code", "degree": 2}, {"id": "system_prompt_build_history_section", "label": "_build_history_section()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "_build_history_section()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/system_prompt.py", "file_type": "code", "degree": 2}, {"id": "system_prompt_build_context_section", "label": "_build_context_section()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "_build_context_section()", "community": 1, "community_name": "Community 1", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/system_prompt.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_init_py", "label": "__init__.py", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 32, "community_name": "Community 32", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/__init__.py", "file_type": "code", "degree": 2}, {"id": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_bank_rec_prompt_py", "label": "bank_rec_prompt.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "bank_rec_prompt.py", "community": 20, "community_name": "Community 20", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/bank_rec_prompt.py", "file_type": "code", "degree": 2}, {"id": "bank_rec_prompt_build_prompt", "label": "build_prompt()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 11.6, "font": {"size": 0, "color": "#ffffff"}, "title": "build_prompt()", "community": 20, "community_name": "Community 20", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/bank_rec_prompt.py", "file_type": "code", "degree": 2}, {"id": "bank_rec_prompt_rationale_1", "label": "Bank reconciliation AI re-rank prompt. Used by fusion_accounting_bank_rec/servi", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Bank reconciliation AI re-rank prompt. Used by fusion_accounting_bank_rec/servi", "community": 20, "community_name": "Community 20", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/bank_rec_prompt.py", "file_type": "rationale", "degree": 1}, {"id": "bank_rec_prompt_rationale_46", "label": "Build (system_prompt, user_prompt) for AI re-rank. Args: statement_", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "Build (system_prompt, user_prompt) for AI re-rank. Args: statement_", "community": 20, "community_name": "Community 20", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_ai/services/prompts/bank_rec_prompt.py", "file_type": "rationale", "degree": 1}];
const RAW_EDGES = [{"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_migrations_19_0_1_0_0_post_migration_py", "to": "post_migration_migrate", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_migrations_19_0_1_0_0_post_migration_py", "to": "post_migration_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_data_adapters_py", "to": "test_data_adapters_testdataadapterbase", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_data_adapters_py", "to": "test_data_adapters_testbankrecadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_data_adapters_py", "to": "test_data_adapters_testreportsadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_data_adapters_py", "to": "test_data_adapters_testfollowupadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_data_adapters_py", "to": "test_data_adapters_testassetsadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testdataadapterbase", "to": "transactioncase", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testdataadapterbase", "to": "test_data_adapters_testdataadapterbase_test_adapter_mode_pure_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testdataadapterbase", "to": "test_data_adapters_testdataadapterbase_test_adapter_falls_back_when_fusion_model_missing", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testdataadapterbase", "to": "test_data_adapters_rationale_10", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testdataadapterbase", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testdataadapterbase", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "transactioncase", "to": "test_data_adapters_testbankrecadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "transactioncase", "to": "test_data_adapters_testreportsadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "transactioncase", "to": "test_data_adapters_testfollowupadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "transactioncase", "to": "test_data_adapters_testassetsadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "transactioncase", "to": "test_post_migration_testpostmigration", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "transactioncase", "to": "test_llm_provider_contract_testllmprovidercontract", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testdataadapterbase_test_adapter_mode_pure_community", "to": "test_data_adapters_rationale_13", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testdataadapterbase_test_adapter_mode_pure_community", "to": "base_dataadapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testdataadapterbase_test_adapter_mode_pure_community", "to": "base_dataadapter_select_mode", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testdataadapterbase_test_adapter_falls_back_when_fusion_model_missing", "to": "test_data_adapters_rationale_22", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testdataadapterbase_test_adapter_falls_back_when_fusion_model_missing", "to": "base_dataadapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testdataadapterbase_test_adapter_falls_back_when_fusion_model_missing", "to": "base_dataadapter_select_mode", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testbankrecadapter", "to": "test_data_adapters_testbankrecadapter_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testbankrecadapter", "to": "test_data_adapters_testbankrecadapter_test_list_unreconciled_returns_our_test_line", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testbankrecadapter", "to": "test_data_adapters_rationale_33", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testbankrecadapter", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testbankrecadapter", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testbankrecadapter_test_list_unreconciled_returns_our_test_line", "to": "test_data_adapters_rationale_55", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testbankrecadapter_test_list_unreconciled_returns_our_test_line", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testbankrecadapter_test_list_unreconciled_returns_our_test_line", "to": "bank_rec_bankrecadapter_list_unreconciled", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testreportsadapter", "to": "test_data_adapters_testreportsadapter_test_trial_balance_returns_rows_in_pure_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testreportsadapter", "to": "test_data_adapters_testreportsadapter_test_run_report_returns_lines_or_error_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testreportsadapter", "to": "test_data_adapters_testreportsadapter_test_run_report_with_unknown_ref_returns_error", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testreportsadapter", "to": "test_data_adapters_testreportsadapter_test_export_report_returns_dict", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testreportsadapter", "to": "test_data_adapters_rationale_65", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testreportsadapter", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testreportsadapter", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testreportsadapter_test_trial_balance_returns_rows_in_pure_community", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testreportsadapter_test_trial_balance_returns_rows_in_pure_community", "to": "reports_reportsadapter_trial_balance", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testreportsadapter_test_run_report_returns_lines_or_error_dict", "to": "test_data_adapters_rationale_76", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testreportsadapter_test_run_report_returns_lines_or_error_dict", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testreportsadapter_test_run_report_returns_lines_or_error_dict", "to": "reports_reportsadapter_run_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testreportsadapter_test_run_report_with_unknown_ref_returns_error", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testreportsadapter_test_run_report_with_unknown_ref_returns_error", "to": "reports_reportsadapter_run_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testreportsadapter_test_export_report_returns_dict", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testreportsadapter_test_export_report_returns_dict", "to": "reports_reportsadapter_export_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testfollowupadapter", "to": "test_data_adapters_testfollowupadapter_test_overdue_invoices_returns_list", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testfollowupadapter", "to": "test_data_adapters_testfollowupadapter_test_overdue_invoices_row_has_contact_fields", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testfollowupadapter", "to": "test_data_adapters_testfollowupadapter_test_aged_receivables_returns_bucket_shape", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testfollowupadapter", "to": "test_data_adapters_testfollowupadapter_test_aged_payables_returns_bucket_shape", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testfollowupadapter", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testfollowupadapter", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testfollowupadapter_test_overdue_invoices_returns_list", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testfollowupadapter_test_overdue_invoices_returns_list", "to": "followup_followupadapter_overdue_invoices", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testfollowupadapter_test_overdue_invoices_row_has_contact_fields", "to": "test_data_adapters_rationale_109", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testfollowupadapter_test_overdue_invoices_row_has_contact_fields", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testfollowupadapter_test_overdue_invoices_row_has_contact_fields", "to": "followup_followupadapter_overdue_invoices", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testfollowupadapter_test_aged_receivables_returns_bucket_shape", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testfollowupadapter_test_aged_receivables_returns_bucket_shape", "to": "followup_followupadapter_aged_receivables", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testfollowupadapter_test_aged_payables_returns_bucket_shape", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testfollowupadapter_test_aged_payables_returns_bucket_shape", "to": "followup_followupadapter_aged_payables", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testassetsadapter", "to": "test_data_adapters_testassetsadapter_test_list_assets_returns_dict_with_assets", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_data_adapters_testassetsadapter", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testassetsadapter", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testassetsadapter_test_list_assets_returns_dict_with_assets", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_testassetsadapter_test_list_assets_returns_dict_with_assets", "to": "assets_assetsadapter_list_assets", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_10", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_10", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_13", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_13", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_22", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_22", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_33", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_33", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_55", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_55", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_65", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_65", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_76", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_76", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_109", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_data_adapters_rationale_109", "to": "base_adaptermode", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_post_migration_py", "to": "test_post_migration_testpostmigration", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_post_migration_testpostmigration", "to": "test_post_migration_testpostmigration_test_no_orphan_ir_model_data_in_old_module", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_post_migration_testpostmigration", "to": "test_post_migration_testpostmigration_test_known_xml_ids_resolve_via_new_module", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_post_migration_testpostmigration", "to": "test_post_migration_rationale_6", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_post_migration_testpostmigration_test_no_orphan_ir_model_data_in_old_module", "to": "test_post_migration_rationale_9", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_post_migration_testpostmigration_test_known_xml_ids_resolve_via_new_module", "to": "test_post_migration_rationale_29", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_claude_api_py", "to": "test_claude_api_get_db_param", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_tests_test_llm_provider_contract_py", "to": "test_llm_provider_contract_testllmprovidercontract", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_llm_provider_contract_testllmprovidercontract", "to": "test_llm_provider_contract_testllmprovidercontract_test_base_class_defines_capability_attrs", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_llm_provider_contract_testllmprovidercontract", "to": "test_llm_provider_contract_testllmprovidercontract_test_openai_adapter_implements_contract", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_llm_provider_contract_testllmprovidercontract", "to": "test_llm_provider_contract_testllmprovidercontract_test_claude_adapter_implements_contract", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_llm_provider_contract_testllmprovidercontract", "to": "test_llm_provider_contract_testllmprovidercontract_test_openai_adapter_uses_configurable_base_url", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_llm_provider_contract_testllmprovidercontract", "to": "test_llm_provider_contract_testllmprovidercontract_test_openai_adapter_default_base_url_when_unset", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_llm_provider_contract_testllmprovidercontract", "to": "test_llm_provider_contract_rationale_7", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_llm_provider_contract_testllmprovidercontract", "to": "base_llmprovider", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_llm_provider_contract_testllmprovidercontract", "to": "openai_adapter_openaiadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_llm_provider_contract_testllmprovidercontract", "to": "claude_claudeadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_llm_provider_contract_testllmprovidercontract_test_openai_adapter_implements_contract", "to": "openai_adapter_openaiadapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_llm_provider_contract_testllmprovidercontract_test_claude_adapter_implements_contract", "to": "claude_claudeadapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_llm_provider_contract_testllmprovidercontract_test_openai_adapter_uses_configurable_base_url", "to": "openai_adapter_openaiadapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_llm_provider_contract_testllmprovidercontract_test_openai_adapter_default_base_url_when_unset", "to": "openai_adapter_openaiadapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_llm_provider_contract_rationale_7", "to": "base_llmprovider", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_llm_provider_contract_rationale_7", "to": "openai_adapter_openaiadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_llm_provider_contract_rationale_7", "to": "claude_claudeadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_rule_py", "to": "accounting_rule_fusionaccountingrule", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_rule_fusionaccountingrule", "to": "accounting_rule_fusionaccountingrule_record_decision", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_rule_fusionaccountingrule", "to": "accounting_rule_fusionaccountingrule_check_promotion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_rule_fusionaccountingrule", "to": "accounting_rule_fusionaccountingrule_action_demote", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_rule_fusionaccountingrule", "to": "accounting_rule_fusionaccountingrule_action_rollback", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_rule_fusionaccountingrule_record_decision", "to": "accounting_rule_fusionaccountingrule_check_promotion", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_rule_fusionaccountingrule_record_decision", "to": "accounting_match_history_fusionaccountingmatchhistory_action_approve", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounting_rule_fusionaccountingrule_record_decision", "to": "accounting_match_history_fusionaccountingmatchhistory_action_reject", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounting_rule_fusionaccountingrule_record_decision", "to": "agent_fusionaccountingagent_approve_action", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounting_rule_fusionaccountingrule_record_decision", "to": "agent_fusionaccountingagent_reject_action", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_match_history_py", "to": "accounting_match_history_fusionaccountingmatchhistory", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_match_history_py", "to": "accounting_match_history_compute_tool_display_name", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_match_history_py", "to": "accounting_match_history_compute_pretty_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_match_history_py", "to": "accounting_match_history_compute_display_label", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_match_history_fusionaccountingmatchhistory", "to": "accounting_match_history_fusionaccountingmatchhistory_action_approve", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_match_history_fusionaccountingmatchhistory", "to": "accounting_match_history_fusionaccountingmatchhistory_action_reject", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_match_history_compute_tool_display_name", "to": "interactive_table_fusioninteractivetable_title", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounting_match_history_compute_display_label", "to": "interactive_table_fusioninteractivetable_title", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_account_move_hook_py", "to": "account_move_hook_accountmoveaudithook", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "account_move_hook_accountmoveaudithook", "to": "account_move_hook_accountmoveaudithook_action_post", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "account_move_hook_accountmoveaudithook", "to": "account_move_hook_accountmoveaudithook_fusion_audit_posted_entry", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "account_move_hook_accountmoveaudithook_action_post", "to": "account_move_hook_accountmoveaudithook_fusion_audit_posted_entry", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "account_move_hook_accountmoveaudithook_action_post", "to": "hst_management_create_expense_entry", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "account_move_hook_accountmoveaudithook_action_post", "to": "accounts_payable_create_vendor_bill", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "account_move_hook_accountmoveaudithook_action_post", "to": "bank_reconciliation_match_internal_transfers", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_tool_py", "to": "accounting_tool_fusionaccountingtool", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_dashboard_py", "to": "accounting_dashboard_fusionaccountingdashboard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_dashboard_py", "to": "accounting_dashboard_compute_bank_recon", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_dashboard_py", "to": "accounting_dashboard_compute_ar", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_dashboard_py", "to": "accounting_dashboard_compute_ap", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_dashboard_py", "to": "accounting_dashboard_compute_hst", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_dashboard_py", "to": "accounting_dashboard_compute_audit", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_dashboard_py", "to": "accounting_dashboard_compute_month_end", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_dashboard_py", "to": "accounting_dashboard_compute_action_centre", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_dashboard_fusionaccountingdashboard", "to": "accounting_dashboard_fusionaccountingdashboard_action_refresh", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_config_py", "to": "accounting_config_resconfigsettings", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_vendor_tax_profile_py", "to": "vendor_tax_profile_fusionvendortaxprofile", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "vendor_tax_profile_fusionvendortaxprofile", "to": "vendor_tax_profile_fusionvendortaxprofile_rebuild_all_profiles", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "vendor_tax_profile_fusionvendortaxprofile_rebuild_all_profiles", "to": "vendor_tax_profile_rationale_71", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_recurring_pattern_py", "to": "recurring_pattern_fusionrecurringpattern", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "recurring_pattern_fusionrecurringpattern", "to": "recurring_pattern_fusionrecurringpattern_rebuild_all_patterns", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "recurring_pattern_fusionrecurringpattern_rebuild_all_patterns", "to": "recurring_pattern_rationale_64", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_models_accounting_session_py", "to": "accounting_session_fusionaccountingsession", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_session_fusionaccountingsession", "to": "accounting_session_fusionaccountingsession_action_close_session", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounting_session_fusionaccountingsession_action_close_session", "to": "chat_controller_close_session", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_chat_approval_card_js", "to": "approval_card_fusionapprovalcard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "approval_card_fusionapprovalcard", "to": "approval_card_fusionapprovalcard_toollabel", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "approval_card_fusionapprovalcard", "to": "approval_card_fusionapprovalcard_formatamount", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "approval_card_fusionapprovalcard", "to": "approval_card_fusionapprovalcard_approve", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "approval_card_fusionapprovalcard", "to": "approval_card_fusionapprovalcard_reject", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "approval_card_fusionapprovalcard_approve", "to": "chat_panel_fusionchatpanel_onapprove", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "approval_card_fusionapprovalcard_reject", "to": "chat_panel_fusionchatpanel_onreject", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_chat_interactive_table_js", "to": "interactive_table_fusioninteractivetable", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_isinteractive", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_columns", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_title", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_actions", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_selectedcount", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_hasaction", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_actionavailable", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_recommendationclass", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_recommendationlabel", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_ontoggleselectall", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_ontogglerow", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_onnoteinput", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_collectselected", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_collectallnotes", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_onapplyrecommendations", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_onflagselected", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_oncreaterules", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_ondismissselected", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable", "to": "interactive_table_fusioninteractivetable_onsubmitnotes", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable_title", "to": "agent_fusionaccountingagent_build_approval_summary", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "interactive_table_fusioninteractivetable_title", "to": "audit_get_audit_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "interactive_table_fusioninteractivetable_collectselected", "to": "interactive_table_fusioninteractivetable_onapplyrecommendations", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable_collectselected", "to": "interactive_table_fusioninteractivetable_onflagselected", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable_collectselected", "to": "interactive_table_fusioninteractivetable_oncreaterules", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable_collectselected", "to": "interactive_table_fusioninteractivetable_ondismissselected", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable_collectallnotes", "to": "interactive_table_fusioninteractivetable_onsubmitnotes", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "interactive_table_fusioninteractivetable_onapplyrecommendations", "to": "chat_panel_fusionchatpanel_ontableaction", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "interactive_table_fusioninteractivetable_onflagselected", "to": "chat_panel_fusionchatpanel_ontableaction", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "interactive_table_fusioninteractivetable_oncreaterules", "to": "chat_panel_fusionchatpanel_ontableaction", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "interactive_table_fusioninteractivetable_ondismissselected", "to": "chat_panel_fusionchatpanel_ontableaction", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "interactive_table_fusioninteractivetable_onsubmitnotes", "to": "chat_panel_fusionchatpanel_ontableaction", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_chat_chat_panel_js", "to": "chat_panel_parsefusiontableblock", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_chat_chat_panel_js", "to": "chat_panel_mdtohtml", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_chat_chat_panel_js", "to": "chat_panel_inlineformat", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_chat_chat_panel_js", "to": "chat_panel_fusionchatpanel", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_parsefusiontableblock", "to": "chat_panel_fusionchatpanel_renderrichmessages", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_mdtohtml", "to": "chat_panel_inlineformat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_mdtohtml", "to": "chat_panel_fusionchatpanel_renderrichmessages", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_renderrichmessages", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_mountinteractivetables", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_badgeclass", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_badgelabel", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_esc", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_buildinteractivetablehtml", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_wiretableevents", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_updatetableactionbar", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_collecttablerows", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_triggerfileupload", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_onfileselected", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_clearimage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_startstatuspolling", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_stopstatuspolling", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_buildreconciliationtablehtml", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_wirereconciliationevents", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_rendersearchresults", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_addrowtoreconciliationtable", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_collectreconciliationrows", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_sessionid", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_loadlatestsession", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_togglesessionpicker", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_loadsession", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_formatsessiondate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_onnewchat", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_sendmessage", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_ontableaction", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_sendstarter", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_onkeydown", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_onpaste", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_scrolltobottom", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_scrolltonewreply", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_onapprove", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_onreject", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_onapproveall", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel", "to": "chat_panel_fusionchatpanel_onrejectall", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_renderrichmessages", "to": "chat_panel_fusionchatpanel_mountinteractivetables", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_mountinteractivetables", "to": "chat_panel_fusionchatpanel_buildreconciliationtablehtml", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_mountinteractivetables", "to": "chat_panel_fusionchatpanel_wirereconciliationevents", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_mountinteractivetables", "to": "chat_panel_fusionchatpanel_buildinteractivetablehtml", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_mountinteractivetables", "to": "chat_panel_fusionchatpanel_wiretableevents", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_badgeclass", "to": "chat_panel_fusionchatpanel_buildinteractivetablehtml", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_badgelabel", "to": "chat_panel_fusionchatpanel_buildinteractivetablehtml", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_esc", "to": "chat_panel_fusionchatpanel_buildinteractivetablehtml", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_esc", "to": "chat_panel_fusionchatpanel_buildreconciliationtablehtml", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_esc", "to": "chat_panel_fusionchatpanel_rendersearchresults", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_esc", "to": "chat_panel_fusionchatpanel_addrowtoreconciliationtable", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_startstatuspolling", "to": "chat_panel_fusionchatpanel_stopstatuspolling", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_startstatuspolling", "to": "chat_panel_fusionchatpanel_sendmessage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_startstatuspolling", "to": "chat_panel_fusionchatpanel_ontableaction", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_stopstatuspolling", "to": "chat_panel_fusionchatpanel_sendmessage", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_stopstatuspolling", "to": "chat_panel_fusionchatpanel_ontableaction", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_loadlatestsession", "to": "chat_panel_fusionchatpanel_scrolltobottom", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_loadsession", "to": "chat_panel_fusionchatpanel_scrolltobottom", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_sendmessage", "to": "chat_panel_fusionchatpanel_scrolltobottom", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_sendmessage", "to": "chat_panel_fusionchatpanel_scrolltonewreply", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_sendmessage", "to": "chat_panel_fusionchatpanel_sendstarter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_sendmessage", "to": "chat_panel_fusionchatpanel_onkeydown", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_ontableaction", "to": "chat_panel_fusionchatpanel_scrolltobottom", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_panel_fusionchatpanel_ontableaction", "to": "chat_panel_fusionchatpanel_scrolltonewreply", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_dashboard_health_card_js", "to": "health_card_fusionhealthcard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "health_card_fusionhealthcard", "to": "health_card_fusionhealthcard_icon", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "health_card_fusionhealthcard", "to": "health_card_fusionhealthcard_onclick", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_static_src_components_dashboard_fusion_dashboard_js", "to": "fusion_dashboard_fusiondashboard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_dashboard_fusiondashboard", "to": "fusion_dashboard_fusiondashboard_setup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_dashboard_fusiondashboard", "to": "fusion_dashboard_fusiondashboard_loaddashboard", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_dashboard_fusiondashboard", "to": "fusion_dashboard_fusiondashboard_onattentionclick", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "fusion_dashboard_fusiondashboard", "to": "fusion_dashboard_fusiondashboard_cards", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_wizards_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_wizards_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_wizards_rule_wizard_py", "to": "rule_wizard_fusionrulewizard", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "rule_wizard_fusionrulewizard", "to": "rule_wizard_fusionrulewizard_action_create_rule", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_fusionaccountingchatcontroller", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_create_session", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_close_session", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_chat", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_approve_action", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_reject_action", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_dashboard_data", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_approve_all", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_reject_all", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_chat_status", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_search_matches", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_session_list", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_session_latest", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_chat_controller_py", "to": "chat_controller_session_history", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_controller_fusionaccountingchatcontroller", "to": "chat_controller_fusionaccountingchatcontroller_check_session_ownership", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_controller_fusionaccountingchatcontroller_check_session_ownership", "to": "chat_controller_close_session", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_controller_fusionaccountingchatcontroller_check_session_ownership", "to": "chat_controller_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_controller_fusionaccountingchatcontroller_check_session_ownership", "to": "chat_controller_session_history", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_controller_fusionaccountingchatcontroller_check_session_ownership", "to": "chat_controller_rationale_13", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_controller_approve_action", "to": "chat_controller_approve_all", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_controller_reject_action", "to": "chat_controller_reject_all", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "chat_controller_chat_status", "to": "agent_get_execution_state", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "chat_controller_search_matches", "to": "bank_reconciliation_search_matching_entries", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "chat_controller_session_latest", "to": "agent_fusionaccountingagent_format_pending_approval", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_controllers_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_scoring_py", "to": "scoring_fusionaccountingscoring", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scoring_fusionaccountingscoring", "to": "scoring_fusionaccountingscoring_calculate_confidence", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scoring_fusionaccountingscoring", "to": "scoring_fusionaccountingscoring_check_promotions", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scoring_fusionaccountingscoring", "to": "scoring_fusionaccountingscoring_get_tool_stats", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "scoring_fusionaccountingscoring_check_promotions", "to": "agent_fusionaccountingagent_approve_action", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_agent_py", "to": "agent_get_execution_state", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_agent_py", "to": "agent_fusionaccountingagent", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_agent_py", "to": "agent_cron_reconcile_transfers", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_agent_py", "to": "agent_reconcile_payroll_cheques", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_get_execution_state", "to": "agent_rationale_18", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_get_config", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_get_adapter", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_route_model", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_should_escalate", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_get_tool_registry", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_get_tools_for_user", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_build_tool_definitions", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_load_rules", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_load_match_history", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_build_system_prompt", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_execute_tool", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_log_match_history", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_chat", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_build_tool_call_summary", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_format_pending_approval", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_resolve_account_label", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_build_approval_summary", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_approve_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_check_rule_proposal", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_reject_action", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent", "to": "agent_fusionaccountingagent_update_session_after_decision", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_get_config", "to": "agent_fusionaccountingagent_get_adapter", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_get_config", "to": "agent_fusionaccountingagent_route_model", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_get_config", "to": "agent_fusionaccountingagent_load_match_history", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_get_config", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_get_adapter", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_route_model", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_route_model", "to": "agent_rationale_55", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_should_escalate", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_should_escalate", "to": "agent_rationale_79", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_get_tool_registry", "to": "agent_fusionaccountingagent_get_tools_for_user", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_get_tools_for_user", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_build_tool_definitions", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_load_rules", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_load_match_history", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_build_system_prompt", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_build_system_prompt", "to": "system_prompt_build_system_prompt", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "agent_fusionaccountingagent_build_system_prompt", "to": "domain_prompts_get_domain_prompt", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "agent_fusionaccountingagent_execute_tool", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_execute_tool", "to": "agent_fusionaccountingagent_approve_action", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_log_match_history", "to": "agent_fusionaccountingagent_chat", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_chat", "to": "agent_fusionaccountingagent_build_tool_call_summary", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_chat", "to": "agent_fusionaccountingagent_check_rule_proposal", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_chat", "to": "agent_fusionaccountingagent_format_pending_approval", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_chat", "to": "openai_adapter_fusionaccountingadapteropenai_call_with_tools", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "agent_fusionaccountingagent_chat", "to": "openai_adapter_fusionaccountingadapteropenai_append_tool_results", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "agent_fusionaccountingagent_chat", "to": "openai_adapter_fusionaccountingadapteropenai_get_model_name", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "agent_fusionaccountingagent_build_tool_call_summary", "to": "agent_rationale_476", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_format_pending_approval", "to": "agent_fusionaccountingagent_build_approval_summary", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_format_pending_approval", "to": "agent_rationale_522", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_resolve_account_label", "to": "agent_fusionaccountingagent_build_approval_summary", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_resolve_account_label", "to": "agent_rationale_554", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_build_approval_summary", "to": "agent_rationale_566", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_approve_action", "to": "agent_fusionaccountingagent_update_session_after_decision", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_check_rule_proposal", "to": "agent_rationale_660", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_reject_action", "to": "agent_fusionaccountingagent_update_session_after_decision", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "agent_fusionaccountingagent_update_session_after_decision", "to": "agent_rationale_727", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_audit_posted_entry", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_audit_account_balances", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_audit_tax_compliance", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_audit_reconciliation_integrity", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_check_hash_chain", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_check_sequence_gaps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_flag_entry", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_get_audit_status", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_set_audit_status", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_get_audit_trail", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_run_full_audit", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "audit_get_audit_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_audit_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "audit_audit_account_balances", "to": "audit_run_full_audit", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "audit_audit_account_balances", "to": "journal_review_find_wrong_direction_balances", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "audit_audit_tax_compliance", "to": "audit_run_full_audit", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "audit_audit_tax_compliance", "to": "hst_management_find_missing_tax_invoices", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "audit_audit_tax_compliance", "to": "hst_management_find_missing_itc_bills", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "audit_audit_reconciliation_integrity", "to": "audit_run_full_audit", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "audit_audit_reconciliation_integrity", "to": "journal_review_verify_reconciliation_integrity", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "audit_check_hash_chain", "to": "audit_run_full_audit", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "audit_check_hash_chain", "to": "month_end_run_hash_integrity_check", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "audit_check_sequence_gaps", "to": "audit_run_full_audit", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "audit_check_sequence_gaps", "to": "journal_review_find_sequence_gaps", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "audit_run_full_audit", "to": "audit_get_audit_report", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_asset_management_py", "to": "asset_management_fusion_list_assets", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_asset_management_py", "to": "asset_management_fusion_get_asset_detail", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_asset_management_py", "to": "asset_management_fusion_compute_asset_schedule", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_asset_management_py", "to": "asset_management_fusion_dispose_asset", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_asset_management_py", "to": "asset_management_fusion_suggest_asset_useful_life", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_asset_management_py", "to": "asset_management_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_asset_management_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "asset_management_fusion_list_assets", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "asset_management_fusion_list_assets", "to": "assets_assetsadapter_list_assets", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "asset_management_fusion_dispose_asset", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "asset_management_fusion_dispose_asset", "to": "assets_assetsadapter_dispose_asset", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "asset_management_fusion_suggest_asset_useful_life", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "asset_management_fusion_suggest_asset_useful_life", "to": "assets_assetsadapter_suggest_useful_life", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_hst_management_py", "to": "hst_management_calculate_hst_balance", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_hst_management_py", "to": "hst_management_get_tax_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_hst_management_py", "to": "hst_management_find_missing_tax_invoices", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_hst_management_py", "to": "hst_management_find_missing_itc_bills", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_hst_management_py", "to": "hst_management_get_tax_return_status", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_hst_management_py", "to": "hst_management_generate_tax_return", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_hst_management_py", "to": "hst_management_validate_tax_return", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_hst_management_py", "to": "hst_management_create_expense_entry", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_hst_management_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "hst_management_calculate_hst_balance", "to": "month_end_get_close_checklist", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "hst_management_get_tax_report", "to": "hst_management_rationale_55", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "hst_management_get_tax_report", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "hst_management_get_tax_report", "to": "reports_reportsadapter_run_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "hst_management_create_expense_entry", "to": "hst_management_rationale_177", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_receivable_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_journal_review_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_month_end_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_inventory_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_adp_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_financial_reports_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_customer_followup_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_financial_reports_py", "to": "financial_reports_company_id", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_financial_reports_py", "to": "financial_reports_fusion_run_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_financial_reports_py", "to": "financial_reports_fusion_get_anomalies", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_financial_reports_py", "to": "financial_reports_fusion_generate_commentary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_financial_reports_py", "to": "financial_reports_fusion_drill_down_report_line", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_financial_reports_py", "to": "financial_reports_fusion_compare_periods", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_financial_reports_py", "to": "financial_reports_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "financial_reports_company_id", "to": "financial_reports_fusion_run_report", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "financial_reports_company_id", "to": "financial_reports_fusion_get_anomalies", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "financial_reports_company_id", "to": "financial_reports_fusion_generate_commentary", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "financial_reports_company_id", "to": "financial_reports_fusion_drill_down_report_line", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "financial_reports_fusion_run_report", "to": "financial_reports_fusion_compare_periods", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "financial_reports_fusion_run_report", "to": "financial_reports_rationale_19", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "financial_reports_fusion_run_report", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "financial_reports_fusion_run_report", "to": "reports_reportsadapter_run_fusion_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "financial_reports_fusion_get_anomalies", "to": "financial_reports_rationale_47", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "financial_reports_fusion_get_anomalies", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "financial_reports_fusion_get_anomalies", "to": "reports_reportsadapter_get_anomalies", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "financial_reports_fusion_generate_commentary", "to": "financial_reports_rationale_64", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "financial_reports_fusion_generate_commentary", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "financial_reports_fusion_generate_commentary", "to": "reports_reportsadapter_get_commentary", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "financial_reports_fusion_drill_down_report_line", "to": "financial_reports_rationale_85", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "financial_reports_fusion_compare_periods", "to": "financial_reports_rationale_110", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_get_payroll_entries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_compare_payroll_to_bank", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_verify_source_deductions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_get_cra_remittance_status", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_find_unmatched_payroll_cheques", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_parse_payroll_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_resolve_account_id", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_create_payroll_journal_entry", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_get_payroll_schedule", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_match_payroll_cheques", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_verify_payroll_deductions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_get_cra_remittance_due", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_prepare_cra_payment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_generate_t4", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_generate_roe", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_payroll_py", "to": "payroll_get_payroll_cost_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "payroll_get_payroll_entries", "to": "payroll_get_payroll_cost_report", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "payroll_verify_source_deductions", "to": "payroll_verify_payroll_deductions", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "payroll_get_cra_remittance_status", "to": "payroll_get_cra_remittance_due", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "payroll_resolve_account_id", "to": "payroll_create_payroll_journal_entry", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "payroll_resolve_account_id", "to": "payroll_rationale_134", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "payroll_create_payroll_journal_entry", "to": "payroll_prepare_cra_payment", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "to": "accounts_payable_get_ap_aging", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "to": "accounts_payable_find_duplicate_bills", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "to": "accounts_payable_match_bill_to_po", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "to": "accounts_payable_get_unpaid_bills", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "to": "accounts_payable_verify_bill_taxes", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "to": "accounts_payable_get_payment_schedule", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "to": "accounts_payable_search_partners", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "to": "accounts_payable_find_similar_bank_lines", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "to": "accounts_payable_create_vendor_bill", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_payable_py", "to": "accounts_payable_register_bill_payment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_payable_get_ap_aging", "to": "accounts_payable_rationale_9", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_payable_get_ap_aging", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounts_payable_get_ap_aging", "to": "followup_followupadapter_aged_payables", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounts_payable_search_partners", "to": "accounts_payable_rationale_122", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_payable_find_similar_bank_lines", "to": "accounts_payable_rationale_145", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_payable_create_vendor_bill", "to": "accounts_payable_rationale_250", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_payable_register_bill_payment", "to": "accounts_payable_rationale_302", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_receivable_py", "to": "accounts_receivable_get_ar_aging", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_receivable_py", "to": "accounts_receivable_get_overdue_invoices", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_receivable_py", "to": "accounts_receivable_get_partner_balance", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_receivable_py", "to": "accounts_receivable_send_followup", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_receivable_py", "to": "accounts_receivable_get_followup_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_receivable_py", "to": "accounts_receivable_reconcile_payment_to_invoice", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_accounts_receivable_py", "to": "accounts_receivable_get_unmatched_payments", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_receivable_get_ar_aging", "to": "accounts_receivable_rationale_7", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_receivable_get_ar_aging", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounts_receivable_get_ar_aging", "to": "followup_followupadapter_aged_receivables", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounts_receivable_get_overdue_invoices", "to": "accounts_receivable_rationale_14", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_receivable_get_overdue_invoices", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounts_receivable_get_overdue_invoices", "to": "followup_followupadapter_overdue_invoices", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounts_receivable_get_partner_balance", "to": "accounts_receivable_rationale_38", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_receivable_send_followup", "to": "accounts_receivable_rationale_92", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_receivable_send_followup", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounts_receivable_get_followup_report", "to": "accounts_receivable_rationale_111", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "accounts_receivable_get_followup_report", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "accounts_receivable_get_followup_report", "to": "followup_followupadapter_followup_report_html", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_adp_py", "to": "adp_get_adp_receivable_aging", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_adp_py", "to": "adp_match_adp_payment_to_invoice", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_adp_py", "to": "adp_verify_adp_split", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_adp_py", "to": "adp_find_adp_without_payment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_adp_py", "to": "adp_get_adp_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_adp_py", "to": "adp_register_adp_batch_payment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "adp_register_adp_batch_payment", "to": "adp_rationale_106", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_customer_followup_py", "to": "customer_followup_fusion_list_overdue", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_customer_followup_py", "to": "customer_followup_fusion_get_partner_followup_detail", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_customer_followup_py", "to": "customer_followup_fusion_generate_followup_text", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_customer_followup_py", "to": "customer_followup_fusion_send_followup", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_customer_followup_py", "to": "customer_followup_fusion_get_partner_risk_score", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_customer_followup_py", "to": "customer_followup_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "customer_followup_fusion_list_overdue", "to": "customer_followup_rationale_14", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "customer_followup_fusion_list_overdue", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "customer_followup_fusion_list_overdue", "to": "followup_followupadapter_list_overdue", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "customer_followup_fusion_get_partner_followup_detail", "to": "customer_followup_rationale_28", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "customer_followup_fusion_generate_followup_text", "to": "customer_followup_rationale_47", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "customer_followup_fusion_send_followup", "to": "customer_followup_rationale_65", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "customer_followup_fusion_send_followup", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "customer_followup_fusion_send_followup", "to": "followup_followupadapter_send_followup", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "customer_followup_fusion_get_partner_risk_score", "to": "customer_followup_rationale_78", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_month_end_py", "to": "month_end_get_close_checklist", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_month_end_py", "to": "month_end_get_unreconciled_counts", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_month_end_py", "to": "month_end_find_entries_in_locked_period", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_month_end_py", "to": "month_end_get_accrual_status", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_month_end_py", "to": "month_end_run_hash_integrity_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_month_end_py", "to": "month_end_get_period_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "month_end_get_close_checklist", "to": "bank_reconciliation_get_unreconciled_bank_lines", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "month_end_get_close_checklist", "to": "journal_review_find_draft_entries", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "month_end_get_close_checklist", "to": "journal_review_find_sequence_gaps", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "month_end_get_period_summary", "to": "month_end_rationale_104", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "month_end_get_period_summary", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "month_end_get_period_summary", "to": "reports_reportsadapter_run_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "month_end_get_period_summary", "to": "reports_reportsadapter_trial_balance", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_get_unreconciled_bank_lines", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_get_unreconciled_receipts", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_match_bank_line_to_payments", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_auto_reconcile_bank_lines", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_apply_reconcile_model", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_unmatch_bank_line", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_get_reconcile_suggestions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_sum_payments_by_date", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_get_bank_line_details", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_check_recurring_pattern", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_match_internal_transfers", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_find_unreconciled_cheques", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_reconcile_payroll_cheques", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_extract_partner_from_ref", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_find_best_subset", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_suggest_bank_line_matches", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_search_matching_entries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_format_aml_candidates", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_fusion_suggest_matches", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_fusion_accept_suggestion", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_fusion_reconcile_bank_line", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_fusion_unreconcile", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_bank_reconciliation_py", "to": "bank_reconciliation_fusion_get_pending_suggestions", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_get_unreconciled_bank_lines", "to": "bank_reconciliation_rationale_9", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_get_unreconciled_bank_lines", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_reconciliation_get_unreconciled_bank_lines", "to": "bank_rec_bankrecadapter_list_unreconciled", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_reconciliation_sum_payments_by_date", "to": "bank_reconciliation_rationale_161", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_get_bank_line_details", "to": "bank_reconciliation_rationale_225", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_check_recurring_pattern", "to": "bank_reconciliation_rationale_292", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_match_internal_transfers", "to": "bank_reconciliation_rationale_354", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_find_unreconciled_cheques", "to": "bank_reconciliation_rationale_506", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_reconcile_payroll_cheques", "to": "bank_reconciliation_rationale_560", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_extract_partner_from_ref", "to": "bank_reconciliation_suggest_bank_line_matches", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_extract_partner_from_ref", "to": "bank_reconciliation_rationale_640", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_find_best_subset", "to": "bank_reconciliation_suggest_bank_line_matches", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_find_best_subset", "to": "bank_reconciliation_rationale_677", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_suggest_bank_line_matches", "to": "bank_reconciliation_rationale_705", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_search_matching_entries", "to": "bank_reconciliation_format_aml_candidates", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_search_matching_entries", "to": "bank_reconciliation_rationale_891", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_format_aml_candidates", "to": "bank_reconciliation_rationale_945", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_fusion_suggest_matches", "to": "bank_reconciliation_rationale_974", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_fusion_suggest_matches", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_reconciliation_fusion_suggest_matches", "to": "bank_rec_bankrecadapter_suggest_matches", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_reconciliation_fusion_accept_suggestion", "to": "bank_reconciliation_rationale_1010", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_fusion_accept_suggestion", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_reconciliation_fusion_accept_suggestion", "to": "bank_rec_bankrecadapter_accept_suggestion", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_reconciliation_fusion_reconcile_bank_line", "to": "bank_reconciliation_rationale_1035", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_fusion_unreconcile", "to": "bank_reconciliation_rationale_1067", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_reconciliation_fusion_unreconcile", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_reconciliation_fusion_unreconcile", "to": "bank_rec_bankrecadapter_unreconcile", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_reconciliation_fusion_get_pending_suggestions", "to": "bank_reconciliation_rationale_1090", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_journal_review_py", "to": "journal_review_find_wrong_direction_balances", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_journal_review_py", "to": "journal_review_find_duplicate_entries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_journal_review_py", "to": "journal_review_find_wrong_account_entries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_journal_review_py", "to": "journal_review_find_sequence_gaps", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_journal_review_py", "to": "journal_review_find_draft_entries", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_journal_review_py", "to": "journal_review_find_unreconciled_suspense", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_journal_review_py", "to": "journal_review_verify_reconciliation_integrity", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "to": "reporting_get_profit_loss", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "to": "reporting_get_balance_sheet", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "to": "reporting_get_trial_balance", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "to": "reporting_get_cash_flow", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "to": "reporting_compare_periods", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "to": "reporting_answer_financial_question", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "to": "reporting_export_report", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "to": "reporting_get_invoicing_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "to": "reporting_get_billing_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_reporting_py", "to": "reporting_get_collections_summary", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reporting_get_profit_loss", "to": "reporting_rationale_11", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reporting_get_profit_loss", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_get_profit_loss", "to": "reports_reportsadapter_run_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_get_profit_loss", "to": "inventory_get_inventory_turnover", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_get_balance_sheet", "to": "reporting_rationale_22", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reporting_get_balance_sheet", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_get_balance_sheet", "to": "reports_reportsadapter_run_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_get_trial_balance", "to": "reporting_rationale_33", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reporting_get_trial_balance", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_get_trial_balance", "to": "reports_reportsadapter_run_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_get_trial_balance", "to": "reports_reportsadapter_trial_balance", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_get_cash_flow", "to": "reporting_rationale_63", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reporting_get_cash_flow", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_get_cash_flow", "to": "reports_reportsadapter_run_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_compare_periods", "to": "reporting_rationale_74", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reporting_compare_periods", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_compare_periods", "to": "reports_reportsadapter_run_report", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_export_report", "to": "reporting_rationale_101", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reporting_export_report", "to": "registry_get_adapter", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reporting_get_invoicing_summary", "to": "reporting_rationale_119", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reporting_get_billing_summary", "to": "reporting_rationale_183", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reporting_get_collections_summary", "to": "reporting_rationale_246", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_inventory_py", "to": "inventory_get_stock_valuation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_inventory_py", "to": "inventory_get_price_differences", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_inventory_py", "to": "inventory_get_cogs_ratio_by_category", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_inventory_py", "to": "inventory_find_unusual_adjustments", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_tools_inventory_py", "to": "inventory_get_inventory_turnover", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "inventory_get_stock_valuation", "to": "inventory_get_inventory_turnover", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_bank_rec_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_base_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_bank_rec_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_registry_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_bank_rec_py", "to": "bank_rec_bankrecadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_bank_rec_py", "to": "bank_rec_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "dataadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_list_unreconciled", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_list_unreconciled_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_list_unreconciled_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_list_unreconciled_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_suggest_matches", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_suggest_matches_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_suggest_matches_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_suggest_matches_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_accept_suggestion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_accept_suggestion_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_accept_suggestion_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_accept_suggestion_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_unreconcile", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_unreconcile_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_unreconcile_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_unreconcile_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "bank_rec_bankrecadapter_unreconcile_standalone", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "dataadapter", "to": "followup_followupadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "dataadapter", "to": "assets_assetsadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "dataadapter", "to": "reports_reportsadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_list_unreconciled", "to": "bank_rec_rationale_29", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_list_unreconciled", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_rec_bankrecadapter_list_unreconciled_via_fusion", "to": "bank_rec_bankrecadapter_list_unreconciled_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_list_unreconciled_via_fusion", "to": "bank_rec_rationale_44", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_list_unreconciled_via_enterprise", "to": "bank_rec_bankrecadapter_list_unreconciled_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_suggest_matches", "to": "bank_rec_bankrecadapter_suggest_matches_via_fusion", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_suggest_matches", "to": "bank_rec_rationale_118", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_suggest_matches", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_rec_bankrecadapter_accept_suggestion", "to": "bank_rec_bankrecadapter_accept_suggestion_via_fusion", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_accept_suggestion", "to": "bank_rec_rationale_155", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_accept_suggestion", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_rec_bankrecadapter_unreconcile", "to": "bank_rec_bankrecadapter_unreconcile_via_fusion", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_unreconcile", "to": "bank_rec_rationale_178", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_unreconcile", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_rec_bankrecadapter_unreconcile_via_enterprise", "to": "bank_rec_bankrecadapter_unreconcile_standalone", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_unreconcile_via_community", "to": "bank_rec_bankrecadapter_unreconcile_standalone", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_bankrecadapter_unreconcile_standalone", "to": "bank_rec_rationale_203", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_rationale_1", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_rec_rationale_29", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_rec_rationale_44", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_rec_rationale_118", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_rec_rationale_155", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_rec_rationale_178", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "bank_rec_rationale_203", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_base_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_registry_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_registry_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_base_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_registry_py", "to": "registry_get_adapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_registry_py", "to": "registry_register_adapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_registry_py", "to": "registry_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_registry_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_followup_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_registry_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_assets_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_registry_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_reports_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "registry_get_adapter", "to": "registry_rationale_7", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "registry_register_adapter", "to": "registry_rationale_24", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "registry_rationale_1", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "registry_rationale_7", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "registry_rationale_24", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_followup_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_base_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_followup_py", "to": "followup_bucket_for_days", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_followup_py", "to": "followup_followupadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_followup_py", "to": "followup_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_bucket_for_days", "to": "followup_followupadapter_aged_buckets", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_overdue_invoices", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_overdue_invoices_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_overdue_invoices_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_overdue_invoices_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_aged_receivables", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_aged_receivables_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_aged_receivables_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_aged_receivables_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_aged_payables", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_aged_payables_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_aged_payables_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_aged_payables_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_aged_buckets", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_followup_report_html", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_followup_report_html_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_followup_report_html_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_followup_report_html_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_send_followup", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_send_followup_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_send_followup_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_send_followup_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_list_overdue", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_list_overdue_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_list_overdue_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "followup_followupadapter_list_overdue_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "followup_followupadapter_overdue_invoices", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "followup_followupadapter_overdue_invoices_via_fusion", "to": "followup_followupadapter_overdue_invoices_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter_overdue_invoices_via_enterprise", "to": "followup_followupadapter_overdue_invoices_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter_aged_receivables", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "followup_followupadapter_aged_receivables_via_fusion", "to": "followup_followupadapter_aged_receivables_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter_aged_receivables_via_enterprise", "to": "followup_followupadapter_aged_receivables_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter_aged_receivables_via_community", "to": "followup_followupadapter_aged_buckets", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter_aged_payables", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "followup_followupadapter_aged_payables_via_fusion", "to": "followup_followupadapter_aged_payables_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter_aged_payables_via_enterprise", "to": "followup_followupadapter_aged_payables_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter_aged_payables_via_community", "to": "followup_followupadapter_aged_buckets", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter_aged_buckets", "to": "followup_rationale_123", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter_followup_report_html", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "followup_followupadapter_followup_report_html_via_fusion", "to": "followup_followupadapter_followup_report_html_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "followup_followupadapter_send_followup", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "followup_followupadapter_list_overdue", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "followup_rationale_1", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "followup_rationale_123", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_assets_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_base_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_assets_py", "to": "assets_assetsadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_assets_py", "to": "assets_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_list_assets", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_list_assets_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_list_assets_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_list_assets_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_suggest_useful_life", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_suggest_useful_life_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_suggest_useful_life_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_suggest_useful_life_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_dispose_asset", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_dispose_asset_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_dispose_asset_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "assets_assetsadapter_dispose_asset_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "assets_assetsadapter_list_assets", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "assets_assetsadapter_suggest_useful_life", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "assets_assetsadapter_dispose_asset", "to": "assets_assetsadapter_dispose_asset_via_fusion", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "assets_assetsadapter_dispose_asset", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "assets_rationale_1", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_reports_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_base_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_reports_py", "to": "reports_reportsadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_reports_py", "to": "reports_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_trial_balance", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_trial_balance_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_trial_balance_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_trial_balance_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_run_report", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_run_report_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_run_report_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_run_report_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_export_report", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_export_report_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_export_report_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_export_report_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_run_fusion_report", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_run_fusion_report_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_run_fusion_report_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_run_fusion_report_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_get_anomalies", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_get_anomalies_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_get_anomalies_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_get_anomalies_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_get_commentary", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_get_commentary_via_fusion", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_get_commentary_via_enterprise", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "reports_reportsadapter_get_commentary_via_community", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reports_reportsadapter_trial_balance", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reports_reportsadapter_trial_balance_via_fusion", "to": "reports_reportsadapter_trial_balance_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter_trial_balance_via_enterprise", "to": "reports_reportsadapter_trial_balance_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter_run_report", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reports_reportsadapter_run_report_via_fusion", "to": "reports_reportsadapter_run_report_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter_export_report", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reports_reportsadapter_export_report_via_fusion", "to": "reports_reportsadapter_export_report_via_community", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter_run_fusion_report", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reports_reportsadapter_run_fusion_report_via_fusion", "to": "reports_reportsadapter_get_anomalies_via_fusion", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter_run_fusion_report_via_fusion", "to": "reports_reportsadapter_get_commentary_via_fusion", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "reports_reportsadapter_get_anomalies", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reports_reportsadapter_get_commentary", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "reports_rationale_1", "to": "base_dataadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_base_py", "to": "base_adaptermode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_base_py", "to": "base_dataadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_data_adapters_base_py", "to": "base_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_dataadapter", "to": "base_dataadapter_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_dataadapter", "to": "base_dataadapter_select_mode", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_dataadapter", "to": "base_dataadapter_dispatch", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_dataadapter", "to": "base_rationale_30", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_dataadapter_select_mode", "to": "base_dataadapter_dispatch", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_dataadapter_select_mode", "to": "base_rationale_45", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_dataadapter_dispatch", "to": "base_rationale_64", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_rationale_1", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_base_py", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_base_py", "to": "base_llmprovider", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_base_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_claude_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_base_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_base_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_openai_adapter_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_llmprovider", "to": "base_llmprovider_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_llmprovider", "to": "base_llmprovider_complete", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_llmprovider", "to": "base_llmprovider_complete_with_tools", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_llmprovider", "to": "base_llmprovider_embed", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_llmprovider", "to": "base_rationale_10", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_llmprovider", "to": "claude_claudeadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "base_llmprovider", "to": "claude_fusionaccountingadapterclaude", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "base_llmprovider", "to": "claude_rationale_18", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "base_llmprovider", "to": "openai_adapter_openaiadapter", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "base_llmprovider", "to": "openai_adapter_fusionaccountingadapteropenai", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "base_llmprovider", "to": "openai_adapter_rationale_21", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "base_llmprovider_complete", "to": "base_rationale_22", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_llmprovider_complete_with_tools", "to": "base_rationale_29", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "base_llmprovider_embed", "to": "base_rationale_38", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_claude_py", "to": "claude_claudeadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_claude_py", "to": "claude_fusionaccountingadapterclaude", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_claudeadapter", "to": "llmprovider", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_claudeadapter", "to": "claude_claudeadapter_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_claudeadapter", "to": "claude_claudeadapter_complete", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_claudeadapter", "to": "claude_rationale_18", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "llmprovider", "to": "openai_adapter_openaiadapter", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_fusionaccountingadapterclaude", "to": "claude_fusionaccountingadapterclaude_get_client", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_fusionaccountingadapterclaude", "to": "claude_fusionaccountingadapterclaude_get_model_name", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_fusionaccountingadapterclaude", "to": "claude_fusionaccountingadapterclaude_format_tools", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_fusionaccountingadapterclaude", "to": "claude_fusionaccountingadapterclaude_supports_extended_thinking", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_fusionaccountingadapterclaude", "to": "claude_fusionaccountingadapterclaude_call_with_tools", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_fusionaccountingadapterclaude", "to": "claude_fusionaccountingadapterclaude_append_tool_results", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_fusionaccountingadapterclaude_get_client", "to": "claude_fusionaccountingadapterclaude_call_with_tools", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_fusionaccountingadapterclaude_get_model_name", "to": "claude_fusionaccountingadapterclaude_call_with_tools", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_fusionaccountingadapterclaude_format_tools", "to": "claude_fusionaccountingadapterclaude_call_with_tools", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "claude_fusionaccountingadapterclaude_supports_extended_thinking", "to": "claude_fusionaccountingadapterclaude_call_with_tools", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_openai_adapter_py", "to": "openai_adapter_openaiadapter", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_adapters_openai_adapter_py", "to": "openai_adapter_fusionaccountingadapteropenai", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_openaiadapter", "to": "openai_adapter_openaiadapter_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_openaiadapter", "to": "openai_adapter_openaiadapter_complete", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_openaiadapter", "to": "openai_adapter_rationale_21", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_fusionaccountingadapteropenai", "to": "openai_adapter_fusionaccountingadapteropenai_get_client", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_fusionaccountingadapteropenai", "to": "openai_adapter_fusionaccountingadapteropenai_get_model_name", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_fusionaccountingadapteropenai", "to": "openai_adapter_fusionaccountingadapteropenai_format_tools", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_fusionaccountingadapteropenai", "to": "openai_adapter_fusionaccountingadapteropenai_is_reasoning_model", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_fusionaccountingadapteropenai", "to": "openai_adapter_fusionaccountingadapteropenai_call_with_tools", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_fusionaccountingadapteropenai", "to": "openai_adapter_fusionaccountingadapteropenai_append_tool_results", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_fusionaccountingadapteropenai_get_client", "to": "openai_adapter_fusionaccountingadapteropenai_call_with_tools", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_fusionaccountingadapteropenai_get_model_name", "to": "openai_adapter_fusionaccountingadapteropenai_call_with_tools", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_fusionaccountingadapteropenai_format_tools", "to": "openai_adapter_fusionaccountingadapteropenai_call_with_tools", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "openai_adapter_fusionaccountingadapteropenai_is_reasoning_model", "to": "openai_adapter_fusionaccountingadapteropenai_call_with_tools", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_domain_prompts_py", "to": "domain_prompts_get_domain_prompt", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_system_prompt_py", "to": "system_prompt_build_system_prompt", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_system_prompt_py", "to": "system_prompt_build_rules_section", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_system_prompt_py", "to": "system_prompt_build_history_section", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_system_prompt_py", "to": "system_prompt_build_context_section", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "system_prompt_build_system_prompt", "to": "system_prompt_build_rules_section", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "system_prompt_build_system_prompt", "to": "system_prompt_build_history_section", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "system_prompt_build_system_prompt", "to": "system_prompt_build_context_section", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_init_py", "to": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_bank_rec_prompt_py", "to": "bank_rec_prompt_build_prompt", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "users_gurpreet_github_odoo_modules_fusion_accounting_ai_services_prompts_bank_rec_prompt_py", "to": "bank_rec_prompt_rationale_1", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bank_rec_prompt_build_prompt", "to": "bank_rec_prompt_rationale_46", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}];
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 69}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 64}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 62}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 53}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 52}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 49}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 39}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 38}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 23}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 22}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 22}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 19}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 18}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 10}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 8}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 6}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 6}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 4}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 4}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 4}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 4}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 3}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 3}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 2}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 2}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 2}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 1}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 1}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 1}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 1}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 1}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 1}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 1}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 1}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 1}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 1}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 1}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 1}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 1}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 1}];
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
function esc(s) {
return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
}
// Build vis datasets
const nodesDS = new vis.DataSet(RAW_NODES.map(n => ({
id: n.id, label: n.label, color: n.color, size: n.size,
font: n.font, title: n.title,
_community: n.community, _community_name: n.community_name,
_source_file: n.source_file, _file_type: n.file_type, _degree: n.degree,
})));
const edgesDS = new vis.DataSet(RAW_EDGES.map((e, i) => ({
id: i, from: e.from, to: e.to,
label: '',
title: e.title,
dashes: e.dashes,
width: e.width,
color: e.color,
arrows: { to: { enabled: true, scaleFactor: 0.5 } },
})));
const container = document.getElementById('graph');
const network = new vis.Network(container, { nodes: nodesDS, edges: edgesDS }, {
physics: {
enabled: true,
solver: 'forceAtlas2Based',
forceAtlas2Based: {
gravitationalConstant: -60,
centralGravity: 0.005,
springLength: 120,
springConstant: 0.08,
damping: 0.4,
avoidOverlap: 0.8,
},
stabilization: { iterations: 200, fit: true },
},
interaction: {
hover: true,
tooltipDelay: 100,
hideEdgesOnDrag: true,
navigationButtons: false,
keyboard: false,
},
nodes: { shape: 'dot', borderWidth: 1.5 },
edges: { smooth: { type: 'continuous', roundness: 0.2 }, selectionWidth: 3 },
});
network.once('stabilizationIterationsDone', () => {
network.setOptions({ physics: { enabled: false } });
});
function showInfo(nodeId) {
const n = nodesDS.get(nodeId);
if (!n) return;
const neighborIds = network.getConnectedNodes(nodeId);
const neighborItems = neighborIds.map(nid => {
const nb = nodesDS.get(nid);
const color = nb ? nb.color.background : '#555';
return `<span class="neighbor-link" style="border-left-color:${esc(color)}" onclick="focusNode(${JSON.stringify(nid)})">${esc(nb ? nb.label : nid)}</span>`;
}).join('');
document.getElementById('info-content').innerHTML = `
<div class="field"><b>${esc(n.label)}</b></div>
<div class="field">Type: ${esc(n._file_type || 'unknown')}</div>
<div class="field">Community: ${esc(n._community_name)}</div>
<div class="field">Source: ${esc(n._source_file || '-')}</div>
<div class="field">Degree: ${n._degree}</div>
${neighborIds.length ? `<div class="field" style="margin-top:8px;color:#aaa;font-size:11px">Neighbors (${neighborIds.length})</div><div id="neighbors-list">${neighborItems}</div>` : ''}
`;
}
function focusNode(nodeId) {
network.focus(nodeId, { scale: 1.4, animation: true });
network.selectNodes([nodeId]);
showInfo(nodeId);
}
// Track hovered node — hover detection is more reliable than click params
let hoveredNodeId = null;
network.on('hoverNode', params => {
hoveredNodeId = params.node;
container.style.cursor = 'pointer';
});
network.on('blurNode', () => {
hoveredNodeId = null;
container.style.cursor = 'default';
});
container.addEventListener('click', () => {
if (hoveredNodeId !== null) {
showInfo(hoveredNodeId);
network.selectNodes([hoveredNodeId]);
}
});
network.on('click', params => {
if (params.nodes.length > 0) {
showInfo(params.nodes[0]);
} else if (hoveredNodeId === null) {
document.getElementById('info-content').innerHTML = '<span class="empty">Click a node to inspect it</span>';
}
});
const searchInput = document.getElementById('search');
const searchResults = document.getElementById('search-results');
searchInput.addEventListener('input', () => {
const q = searchInput.value.toLowerCase().trim();
searchResults.innerHTML = '';
if (!q) { searchResults.style.display = 'none'; return; }
const matches = RAW_NODES.filter(n => n.label.toLowerCase().includes(q)).slice(0, 20);
if (!matches.length) { searchResults.style.display = 'none'; return; }
searchResults.style.display = 'block';
matches.forEach(n => {
const el = document.createElement('div');
el.className = 'search-item';
el.textContent = n.label;
el.style.borderLeft = `3px solid ${n.color.background}`;
el.style.paddingLeft = '8px';
el.onclick = () => {
network.focus(n.id, { scale: 1.5, animation: true });
network.selectNodes([n.id]);
showInfo(n.id);
searchResults.style.display = 'none';
searchInput.value = '';
};
searchResults.appendChild(el);
});
});
document.addEventListener('click', e => {
if (!searchResults.contains(e.target) && e.target !== searchInput)
searchResults.style.display = 'none';
});
const hiddenCommunities = new Set();
const legendEl = document.getElementById('legend');
LEGEND.forEach(c => {
const item = document.createElement('div');
item.className = 'legend-item';
item.innerHTML = `<div class="legend-dot" style="background:${c.color}"></div>
<span class="legend-label">${c.label}</span>
<span class="legend-count">${c.count}</span>`;
item.onclick = () => {
if (hiddenCommunities.has(c.cid)) {
hiddenCommunities.delete(c.cid);
item.classList.remove('dimmed');
} else {
hiddenCommunities.add(c.cid);
item.classList.add('dimmed');
}
const updates = RAW_NODES
.filter(n => n.community === c.cid)
.map(n => ({ id: n.id, hidden: hiddenCommunities.has(c.cid) }));
nodesDS.update(updates);
};
legendEl.appendChild(item);
});
</script>
<script>
// Render hyperedges as shaded regions
const hyperedges = [];
// afterDrawing passes ctx already transformed to network coordinate space.
// Draw node positions raw — no manual pan/zoom/DPR math needed.
network.on('afterDrawing', function(ctx) {
hyperedges.forEach(h => {
const positions = h.nodes
.map(nid => network.getPositions([nid])[nid])
.filter(p => p !== undefined);
if (positions.length < 2) return;
ctx.save();
ctx.globalAlpha = 0.12;
ctx.fillStyle = '#6366f1';
ctx.strokeStyle = '#6366f1';
ctx.lineWidth = 2;
ctx.beginPath();
// Centroid and expanded hull in network coordinates
const cx = positions.reduce((s, p) => s + p.x, 0) / positions.length;
const cy = positions.reduce((s, p) => s + p.y, 0) / positions.length;
const expanded = positions.map(p => ({
x: cx + (p.x - cx) * 1.15,
y: cy + (p.y - cy) * 1.15
}));
ctx.moveTo(expanded[0].x, expanded[0].y);
expanded.slice(1).forEach(p => ctx.lineTo(p.x, p.y));
ctx.closePath();
ctx.fill();
ctx.globalAlpha = 0.4;
ctx.stroke();
// Label
ctx.globalAlpha = 0.8;
ctx.fillStyle = '#4f46e5';
ctx.font = 'bold 11px sans-serif';
ctx.textAlign = 'center';
ctx.fillText(h.label, cx, cy - 5);
ctx.restore();
});
});
</script>
</body>
</html>