changes
This commit is contained in:
117
fusion_accounts/graphify-out/GRAPH_REPORT.md
Normal file
117
fusion_accounts/graphify-out/GRAPH_REPORT.md
Normal file
@@ -0,0 +1,117 @@
|
||||
# Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_accounts (2026-04-22)
|
||||
|
||||
## Corpus Check
|
||||
- 8 files · ~5,771 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 54 nodes · 65 edges · 12 communities detected
|
||||
- Extraction: 97% EXTRACTED · 3% INFERRED · 0% AMBIGUOUS · INFERRED: 2 edges (avg confidence: 0.8)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Community Hubs (Navigation)
|
||||
- [[_COMMUNITY_Community 0|Community 0]]
|
||||
- [[_COMMUNITY_Community 1|Community 1]]
|
||||
- [[_COMMUNITY_Community 2|Community 2]]
|
||||
- [[_COMMUNITY_Community 3|Community 3]]
|
||||
- [[_COMMUNITY_Community 4|Community 4]]
|
||||
- [[_COMMUNITY_Community 5|Community 5]]
|
||||
- [[_COMMUNITY_Community 6|Community 6]]
|
||||
- [[_COMMUNITY_Community 7|Community 7]]
|
||||
- [[_COMMUNITY_Community 8|Community 8]]
|
||||
- [[_COMMUNITY_Community 9|Community 9]]
|
||||
- [[_COMMUNITY_Community 10|Community 10]]
|
||||
- [[_COMMUNITY_Community 11|Community 11]]
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `AIBillExtractor` - 14 edges
|
||||
2. `message_new()` - 4 edges
|
||||
3. `FusionAccountsLog` - 3 edges
|
||||
4. `ResPartner` - 3 edges
|
||||
5. `_fa_match_vendor_from_email()` - 2 edges
|
||||
6. `ResConfigSettings` - 2 edges
|
||||
7. `AccountMove` - 1 edges
|
||||
8. `Block the vendor from this log entry from email bill creation.` - 1 edges
|
||||
9. `Enable the vendor from this log entry for email bill creation.` - 1 edges
|
||||
10. `Get the OpenAI API key from settings.` - 1 edges
|
||||
|
||||
## Surprising Connections (you probably didn't know these)
|
||||
- None detected - all connections are within the same source files.
|
||||
|
||||
## Communities
|
||||
|
||||
### Community 0 - "Community 0"
|
||||
Cohesion: 0.21
|
||||
Nodes (6): Extract bill data from email body and attachments using OpenAI. Args:, Get the OpenAI API key from settings., Strip HTML tags from text., Get the configured AI model., Check if AI extraction is enabled., Extract bill data using raw attachments from msg_dict. Raw attachments
|
||||
|
||||
### Community 1 - "Community 1"
|
||||
Cohesion: 0.23
|
||||
Nodes (6): AIBillExtractor, Convert raw PDF bytes to base64 PNG images., Extract text from raw PDF bytes., Convert PDF attachment pages to base64 PNG images using PyMuPDF., Extract text content from PDF as fallback when image conversion fails., Get the max PDF pages to process.
|
||||
|
||||
### Community 2 - "Community 2"
|
||||
Cohesion: 0.29
|
||||
Nodes (5): AccountMove, _fa_match_vendor_from_email(), message_new(), Apply AI-extracted data to a draft vendor bill. The PDF/invoice is the, Match AI-extracted vendor name to an Odoo partner. Tries multiple strat
|
||||
|
||||
### Community 3 - "Community 3"
|
||||
Cohesion: 0.29
|
||||
Nodes (3): FusionAccountsLog, Block the vendor from this log entry from email bill creation., Enable the vendor from this log entry for email bill creation.
|
||||
|
||||
### Community 4 - "Community 4"
|
||||
Cohesion: 0.33
|
||||
Nodes (3): Block selected vendors from email bill creation., Enable selected vendors for email bill creation., ResPartner
|
||||
|
||||
### Community 5 - "Community 5"
|
||||
Cohesion: 0.67
|
||||
Nodes (1): ResConfigSettings
|
||||
|
||||
### Community 6 - "Community 6"
|
||||
Cohesion: 1.0
|
||||
Nodes (0):
|
||||
|
||||
### Community 7 - "Community 7"
|
||||
Cohesion: 1.0
|
||||
Nodes (0):
|
||||
|
||||
### Community 8 - "Community 8"
|
||||
Cohesion: 1.0
|
||||
Nodes (0):
|
||||
|
||||
### Community 9 - "Community 9"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): Multi-level vendor matching from sender email. Tries three levels:
|
||||
|
||||
### Community 10 - "Community 10"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): Override to add vendor matching and blocking for incoming bills. When a
|
||||
|
||||
### Community 11 - "Community 11"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): Return statistics for the dashboard.
|
||||
|
||||
## Knowledge Gaps
|
||||
- **21 isolated node(s):** `AccountMove`, `Multi-level vendor matching from sender email. Tries three levels:`, `Override to add vendor matching and blocking for incoming bills. When a`, `Block the vendor from this log entry from email bill creation.`, `Enable the vendor from this log entry for email bill creation.` (+16 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **Thin community `Community 6`** (1 nodes): `__init__.py`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 7`** (1 nodes): `__init__.py`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 8`** (1 nodes): `__manifest__.py`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 9`** (1 nodes): `Multi-level vendor matching from sender email. Tries three levels:`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 10`** (1 nodes): `Override to add vendor matching and blocking for incoming bills. When a`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 11`** (1 nodes): `Return statistics for the dashboard.`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `AIBillExtractor` connect `Community 1` to `Community 0`, `Community 2`?**
|
||||
_High betweenness centrality (0.163) - this node is a cross-community bridge._
|
||||
- **Why does `message_new()` connect `Community 2` to `Community 0`?**
|
||||
_High betweenness centrality (0.062) - this node is a cross-community bridge._
|
||||
- **Are the 2 inferred relationships involving `message_new()` (e.g. with `.extract_bill_data_from_raw()` and `.apply_extracted_data()`) actually correct?**
|
||||
_`message_new()` has 2 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **What connects `AccountMove`, `Multi-level vendor matching from sender email. Tries three levels:`, `Override to add vendor matching and blocking for incoming bills. When a` to the rest of the system?**
|
||||
_21 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/__init__.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/__init__.py", "source_location": "L7", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/__init__.py", "source_location": "L8", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_accounts_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/__init__.py", "source_location": "L9", "weight": 1.0}], "raw_calls": []}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_accounts_models_res_config_settings_py", "label": "res_config_settings.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L1"}, {"id": "res_config_settings_resconfigsettings", "label": "ResConfigSettings", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L12"}, {"id": "res_config_settings_resconfigsettings_set_values", "label": ".set_values()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L71"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_accounts_models_res_config_settings_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_accounts_models_res_config_settings_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L7", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_accounts_models_res_config_settings_py", "target": "res_config_settings_resconfigsettings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L12", "weight": 1.0}, {"source": "res_config_settings_resconfigsettings", "target": "res_config_settings_resconfigsettings_set_values", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L71", "weight": 1.0}], "raw_calls": [{"caller_nid": "res_config_settings_resconfigsettings_set_values", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L72"}, {"caller_nid": "res_config_settings_resconfigsettings_set_values", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L75"}, {"caller_nid": "res_config_settings_resconfigsettings_set_values", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L76"}, {"caller_nid": "res_config_settings_resconfigsettings_set_values", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L77"}, {"caller_nid": "res_config_settings_resconfigsettings_set_values", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L79"}, {"caller_nid": "res_config_settings_resconfigsettings_set_values", "callee": "items", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L80"}, {"caller_nid": "res_config_settings_resconfigsettings_set_values", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L81"}, {"caller_nid": "res_config_settings_resconfigsettings_set_values", "callee": "set_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L83"}, {"caller_nid": "res_config_settings_resconfigsettings_set_values", "callee": "warning", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_config_settings.py", "source_location": "L84"}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_accounts_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_accounts_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_accounts_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_accounts_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/__init__.py", "source_location": "L5", "weight": 1.0}], "raw_calls": []}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_accounts_models_res_partner_py", "label": "res_partner.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L1"}, {"id": "res_partner_respartner", "label": "ResPartner", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L8"}, {"id": "res_partner_respartner_action_fa_block_vendors", "label": ".action_fa_block_vendors()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L19"}, {"id": "res_partner_respartner_action_fa_enable_vendors", "label": ".action_fa_enable_vendors()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L34"}, {"id": "res_partner_rationale_20", "label": "Block selected vendors from email bill creation.", "file_type": "rationale", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L20"}, {"id": "res_partner_rationale_35", "label": "Enable selected vendors for email bill creation.", "file_type": "rationale", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L35"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_accounts_models_res_partner_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_accounts_models_res_partner_py", "target": "res_partner_respartner", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L8", "weight": 1.0}, {"source": "res_partner_respartner", "target": "res_partner_respartner_action_fa_block_vendors", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L19", "weight": 1.0}, {"source": "res_partner_respartner", "target": "res_partner_respartner_action_fa_enable_vendors", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L34", "weight": 1.0}, {"source": "res_partner_rationale_20", "target": "res_partner_respartner_action_fa_block_vendors", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L20", "weight": 1.0}, {"source": "res_partner_rationale_35", "target": "res_partner_respartner_action_fa_enable_vendors", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L35", "weight": 1.0}], "raw_calls": [{"caller_nid": "res_partner_respartner_action_fa_block_vendors", "callee": "write", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L21"}, {"caller_nid": "res_partner_respartner_action_fa_block_vendors", "callee": "_", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L26"}, {"caller_nid": "res_partner_respartner_action_fa_block_vendors", "callee": "_", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L27"}, {"caller_nid": "res_partner_respartner_action_fa_block_vendors", "callee": "len", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L27"}, {"caller_nid": "res_partner_respartner_action_fa_enable_vendors", "callee": "write", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L36"}, {"caller_nid": "res_partner_respartner_action_fa_enable_vendors", "callee": "_", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L41"}, {"caller_nid": "res_partner_respartner_action_fa_enable_vendors", "callee": "_", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L42"}, {"caller_nid": "res_partner_respartner_action_fa_enable_vendors", "callee": "len", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_accounts/models/res_partner.py", "source_location": "L42"}]}
|
||||
257
fusion_accounts/graphify-out/graph.html
Normal file
257
fusion_accounts/graphify-out/graph.html
Normal file
File diff suppressed because one or more lines are too long
1276
fusion_accounts/graphify-out/graph.json
Normal file
1276
fusion_accounts/graphify-out/graph.json
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user