252 lines
13 KiB
Markdown
252 lines
13 KiB
Markdown
# Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_inventory (2026-04-22)
|
|
|
|
## Corpus Check
|
|
- 28 files · ~12,979 words
|
|
- Verdict: corpus is large enough that graph structure adds value.
|
|
|
|
## Summary
|
|
- 220 nodes · 279 edges · 32 communities detected
|
|
- Extraction: 81% EXTRACTED · 19% INFERRED · 0% AMBIGUOUS · INFERRED: 54 edges (avg confidence: 0.8)
|
|
- Token cost: 0 input · 0 output
|
|
|
|
## Community Hubs (Navigation)
|
|
- [[_COMMUNITY_Community 0|Community 0]]
|
|
- [[_COMMUNITY_Community 1|Community 1]]
|
|
- [[_COMMUNITY_Community 2|Community 2]]
|
|
- [[_COMMUNITY_Community 3|Community 3]]
|
|
- [[_COMMUNITY_Community 4|Community 4]]
|
|
- [[_COMMUNITY_Community 5|Community 5]]
|
|
- [[_COMMUNITY_Community 6|Community 6]]
|
|
- [[_COMMUNITY_Community 7|Community 7]]
|
|
- [[_COMMUNITY_Community 8|Community 8]]
|
|
- [[_COMMUNITY_Community 9|Community 9]]
|
|
- [[_COMMUNITY_Community 10|Community 10]]
|
|
- [[_COMMUNITY_Community 11|Community 11]]
|
|
- [[_COMMUNITY_Community 12|Community 12]]
|
|
- [[_COMMUNITY_Community 13|Community 13]]
|
|
- [[_COMMUNITY_Community 14|Community 14]]
|
|
- [[_COMMUNITY_Community 15|Community 15]]
|
|
- [[_COMMUNITY_Community 16|Community 16]]
|
|
- [[_COMMUNITY_Community 17|Community 17]]
|
|
- [[_COMMUNITY_Community 18|Community 18]]
|
|
- [[_COMMUNITY_Community 19|Community 19]]
|
|
- [[_COMMUNITY_Community 20|Community 20]]
|
|
- [[_COMMUNITY_Community 21|Community 21]]
|
|
- [[_COMMUNITY_Community 22|Community 22]]
|
|
- [[_COMMUNITY_Community 23|Community 23]]
|
|
- [[_COMMUNITY_Community 24|Community 24]]
|
|
- [[_COMMUNITY_Community 25|Community 25]]
|
|
- [[_COMMUNITY_Community 26|Community 26]]
|
|
- [[_COMMUNITY_Community 27|Community 27]]
|
|
- [[_COMMUNITY_Community 28|Community 28]]
|
|
- [[_COMMUNITY_Community 29|Community 29]]
|
|
- [[_COMMUNITY_Community 30|Community 30]]
|
|
- [[_COMMUNITY_Community 31|Community 31]]
|
|
|
|
## God Nodes (most connected - your core abstractions)
|
|
1. `create()` - 17 edges
|
|
2. `FusionSyncConfig` - 12 edges
|
|
3. `FusionInterCompanyTransfer` - 12 edges
|
|
4. `ProductTemplate` - 11 edges
|
|
5. `ProductBrand` - 7 edges
|
|
6. `StockPicking` - 7 edges
|
|
7. `_post_init_assign_groups()` - 6 edges
|
|
8. `FusionInventoryDiscrepancy` - 6 edges
|
|
9. `_auto_detect_brands()` - 5 edges
|
|
10. `_apply_case_conversion()` - 5 edges
|
|
|
|
## Surprising Connections (you probably didn't know these)
|
|
- `portal_inventory_book()` --calls--> `create()` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_inventory/controllers/portal_inventory.py → /Users/gurpreet/Github/Odoo-Modules/fusion_inventory/models/inventory_booking.py
|
|
- `_recompute_margins()` --calls--> `_compute_margin_pct()` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_inventory/__init__.py → /Users/gurpreet/Github/Odoo-Modules/fusion_inventory/models/product_template.py
|
|
- `_auto_detect_brands()` --calls--> `create()` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_inventory/__init__.py → /Users/gurpreet/Github/Odoo-Modules/fusion_inventory/models/inventory_booking.py
|
|
- `portal_inventory_transfer()` --calls--> `create()` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_inventory/controllers/portal_inventory.py → /Users/gurpreet/Github/Odoo-Modules/fusion_inventory/models/inventory_booking.py
|
|
|
|
## Communities
|
|
|
|
### Community 0 - "Community 0"
|
|
Cohesion: 0.09
|
|
Nodes (13): _apply_case_conversion(), _compute_margin_pct(), create(), _cron_sync_all_costs_from_bills(), _onchange_case_conversion(), ProductTemplate, Apply the template margin to variant price offsets (skip overrides)., Copy the template's shipping cost to all variants. (+5 more)
|
|
|
|
### Community 1 - "Community 1"
|
|
Cohesion: 0.13
|
|
Nodes (12): Execute all transfer steps in one click: 1. Create SO on remote, create(), portal_inventory_transfer(), _cron_sync_inventory(), FusionSyncConfig, Discover and store remote warehouse metadata. Only syncs warehouses belo, Pull remote product catalog and auto-match to local products., Match a remote product to a local one by SKU, barcode, then name. (+4 more)
|
|
|
|
### Community 2 - "Community 2"
|
|
Cohesion: 0.1
|
|
Nodes (6): _compute_cost_extra(), ProductProduct, Set this variant's price offset to achieve the given margin., ProductTemplateAttributeValue, When extra cost changes, adjust variant prices to maintain margin., Button: apply template margin to every non-overridden variant.
|
|
|
|
### Community 3 - "Community 3"
|
|
Cohesion: 0.12
|
|
Nodes (6): ProductBrandPricingRule, Return the expected purchase cost for a given MSRP using this rule's method., ProductBrand, Return expected purchase cost for a given MSRP. If product_tmpl is prov, Walk the pricing cascade and return a matching rule, or None for brand default., _compute_expected_cost()
|
|
|
|
### Community 4 - "Community 4"
|
|
Cohesion: 0.12
|
|
Nodes (5): FusionSerialScanLine, FusionSerialScanWizard, Extract serial numbers from SO/invoice text and match against stock.lot., Gather all text from SO lines, notes, and related invoices., StockPicking
|
|
|
|
### Community 5 - "Community 5"
|
|
Cohesion: 0.22
|
|
Nodes (8): portal_inventory(), portal_inventory_book(), portal_inventory_data(), portal_inventory_warehouses(), PortalInventory, Return products that exist only on remote instances. Excluded when filte, Build inventory data merging local stock with remote sync data. Fetches, Return local (current company only) + remote warehouses for filter.
|
|
|
|
### Community 6 - "Community 6"
|
|
Cohesion: 0.2
|
|
Nodes (4): _cron_scan_discrepancies(), FusionInventoryDiscrepancy, Compare stock.quant quantities against expected levels., Check for serial numbers in SO/invoice notes that don't exist in stock.lot.
|
|
|
|
### Community 7 - "Community 7"
|
|
Cohesion: 0.17
|
|
Nodes (3): FusionInterCompanyTransfer, Create a local vendor bill from the PO (draft, for accounting review)., Reset an errored transfer back to draft for retry.
|
|
|
|
### Community 8 - "Community 8"
|
|
Cohesion: 0.2
|
|
Nodes (2): portal_inventory_release(), FusionWarehouseInventory
|
|
|
|
### Community 9 - "Community 9"
|
|
Cohesion: 0.33
|
|
Nodes (8): _auto_detect_brands(), _post_init_assign_groups(), Give all internal users the Fusion Inventory / User group, and all admins th, Force-recompute x_fi_margin_pct for all products with a sale price and cost., Update every product's cost from its latest posted vendor bill line., Create product.brand records from existing PO vendors and link products to t, _recompute_margins(), _sync_costs_from_bills()
|
|
|
|
### Community 10 - "Community 10"
|
|
Cohesion: 0.33
|
|
Nodes (3): AccountMove, AccountMoveLine, Update product costs from vendor bill lines when bills are posted.
|
|
|
|
### Community 11 - "Community 11"
|
|
Cohesion: 0.33
|
|
Nodes (2): _cron_expire_bookings(), FusionInventoryBooking
|
|
|
|
### Community 12 - "Community 12"
|
|
Cohesion: 0.5
|
|
Nodes (2): After a stock move completes, pull fresh stock data from all connected r, StockMove
|
|
|
|
### Community 13 - "Community 13"
|
|
Cohesion: 0.4
|
|
Nodes (1): ResPartner
|
|
|
|
### Community 14 - "Community 14"
|
|
Cohesion: 0.67
|
|
Nodes (1): FusionProductSyncMapping
|
|
|
|
### Community 15 - "Community 15"
|
|
Cohesion: 1.0
|
|
Nodes (1): FusionSyncLog
|
|
|
|
### Community 16 - "Community 16"
|
|
Cohesion: 1.0
|
|
Nodes (1): FusionSyncStock
|
|
|
|
### Community 17 - "Community 17"
|
|
Cohesion: 1.0
|
|
Nodes (1): FusionSyncWarehouse
|
|
|
|
### Community 18 - "Community 18"
|
|
Cohesion: 1.0
|
|
Nodes (1): MarginPercentField
|
|
|
|
### Community 19 - "Community 19"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 20 - "Community 20"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 21 - "Community 21"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 22 - "Community 22"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 23 - "Community 23"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 24 - "Community 24"
|
|
Cohesion: 1.0
|
|
Nodes (1): Real-time margin recalculation when user changes price or cost.
|
|
|
|
### Community 25 - "Community 25"
|
|
Cohesion: 1.0
|
|
Nodes (1): Real-time sale price recalculation when user changes margin.
|
|
|
|
### Community 26 - "Community 26"
|
|
Cohesion: 1.0
|
|
Nodes (1): Batch job: update every product's cost from latest vendor bill.
|
|
|
|
### Community 27 - "Community 27"
|
|
Cohesion: 1.0
|
|
Nodes (1): When cost or shipping changes, recalculate price to keep margin.
|
|
|
|
### Community 28 - "Community 28"
|
|
Cohesion: 1.0
|
|
Nodes (1): Get available warehouse inventory for a product, optionally excluding an owner.
|
|
|
|
### Community 29 - "Community 29"
|
|
Cohesion: 1.0
|
|
Nodes (1): Return the effective OpenAI API key, falling back to Fusion Digitize.
|
|
|
|
### Community 30 - "Community 30"
|
|
Cohesion: 1.0
|
|
Nodes (1): Scheduled scan: detect inventory discrepancies and missing serials.
|
|
|
|
### Community 31 - "Community 31"
|
|
Cohesion: 1.0
|
|
Nodes (1): Create and execute an inter-company transfer from the portal.
|
|
|
|
## Knowledge Gaps
|
|
- **50 isolated node(s):** `Give all internal users the Fusion Inventory / User group, and all admins th`, `Force-recompute x_fi_margin_pct for all products with a sale price and cost.`, `Update every product's cost from its latest posted vendor bill line.`, `Create product.brand records from existing PO vendors and link products to t`, `FusionSerialScanLine` (+45 more)
|
|
These have ≤1 connection - possible missing edges or undocumented components.
|
|
- **Thin community `Community 15`** (2 nodes): `FusionSyncLog`, `sync_log.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 16`** (2 nodes): `FusionSyncStock`, `sync_stock.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 17`** (2 nodes): `FusionSyncWarehouse`, `sync_warehouse.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 18`** (2 nodes): `MarginPercentField`, `margin_widget.js`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 19`** (2 nodes): `_fi_get_ptav_price_extra()`, `product_configurator.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 20`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 21`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 22`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 23`** (1 nodes): `__manifest__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 24`** (1 nodes): `Real-time margin recalculation when user changes price or cost.`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 25`** (1 nodes): `Real-time sale price recalculation when user changes margin.`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 26`** (1 nodes): `Batch job: update every product's cost from latest vendor bill.`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 27`** (1 nodes): `When cost or shipping changes, recalculate price to keep margin.`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 28`** (1 nodes): `Get available warehouse inventory for a product, optionally excluding an owner.`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 29`** (1 nodes): `Return the effective OpenAI API key, falling back to Fusion Digitize.`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 30`** (1 nodes): `Scheduled scan: detect inventory discrepancies and missing serials.`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 31`** (1 nodes): `Create and execute an inter-company transfer from the portal.`
|
|
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 `create()` connect `Community 1` to `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 9`, `Community 11`, `Community 13`?**
|
|
_High betweenness centrality (0.243) - this node is a cross-community bridge._
|
|
- **Why does `_compute_expected_cost()` connect `Community 3` to `Community 0`?**
|
|
_High betweenness centrality (0.121) - this node is a cross-community bridge._
|
|
- **Are the 16 inferred relationships involving `create()` (e.g. with `_auto_detect_brands()` and `._scan()`) actually correct?**
|
|
_`create()` has 16 INFERRED edges - model-reasoned connections that need verification._
|
|
- **What connects `Give all internal users the Fusion Inventory / User group, and all admins th`, `Force-recompute x_fi_margin_pct for all products with a sale price and cost.`, `Update every product's cost from its latest posted vendor bill line.` to the rest of the system?**
|
|
_50 weakly-connected nodes found - possible documentation gaps or missing edges._
|
|
- **Should `Community 0` be split into smaller, more focused modules?**
|
|
_Cohesion score 0.09 - nodes in this community are weakly interconnected._
|
|
- **Should `Community 1` be split into smaller, more focused modules?**
|
|
_Cohesion score 0.13 - nodes in this community are weakly interconnected._
|
|
- **Should `Community 2` be split into smaller, more focused modules?**
|
|
_Cohesion score 0.1 - nodes in this community are weakly interconnected._ |