178 lines
9.7 KiB
Markdown
178 lines
9.7 KiB
Markdown
# Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post (2026-04-22)
|
|
|
|
## Corpus Check
|
|
- 16 files · ~85,017 words
|
|
- Verdict: corpus is large enough that graph structure adds value.
|
|
|
|
## Summary
|
|
- 147 nodes · 244 edges · 20 communities detected
|
|
- Extraction: 77% EXTRACTED · 23% INFERRED · 0% AMBIGUOUS · INFERRED: 57 edges (avg confidence: 0.68)
|
|
- 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]]
|
|
|
|
## God Nodes (most connected - your core abstractions)
|
|
1. `Response` - 37 edges
|
|
2. `FusionCpShipment` - 22 edges
|
|
3. `DeliveryCarrier` - 20 edges
|
|
4. `ResponseDataObject` - 9 edges
|
|
5. `create()` - 8 edges
|
|
6. `dict2xml()` - 5 edges
|
|
7. `ChooseDeliveryCarrier` - 5 edges
|
|
8. `attribute_check()` - 3 edges
|
|
9. `smart_encode()` - 3 edges
|
|
10. `SaleOrder` - 3 edges
|
|
|
|
## Surprising Connections (you probably didn't know these)
|
|
- `Open an attachment PDF in the browser viewer (new tab).` --uses--> `Response` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/models/fusion_cp_shipment.py → /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/fusion_cp_api/fusion_cp_response.py
|
|
- `Parse CP tracking detail response and store events.` --uses--> `Response` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/models/fusion_cp_shipment.py → /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/fusion_cp_api/fusion_cp_response.py
|
|
- `Auto-update shipment status based on tracking data.` --uses--> `Response` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/models/fusion_cp_shipment.py → /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/fusion_cp_api/fusion_cp_response.py
|
|
- `Check if any tracking events indicate a return/RTS.` --uses--> `Response` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/models/fusion_cp_shipment.py → /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/fusion_cp_api/fusion_cp_response.py
|
|
- `Void this shipment via Canada Post API (DELETE endpoint).` --uses--> `Response` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/models/fusion_cp_shipment.py → /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/fusion_cp_api/fusion_cp_response.py
|
|
|
|
## Communities
|
|
|
|
### Community 0 - "Community 0"
|
|
Cohesion: 0.08
|
|
Nodes (11): Cancel all CP shipments linked to this picking via void API., _cron_refresh_tracking(), FusionCpShipment, Open an attachment PDF in the browser viewer (new tab)., Check if any tracking events indicate a return/RTS., Void this shipment via Canada Post API (DELETE endpoint)., Parse a Canada Post error XML response and raise a clean ValidationError, Void current shipment and create a new one. (+3 more)
|
|
|
|
### Community 1 - "Community 1"
|
|
Cohesion: 0.12
|
|
Nodes (12): DeliveryCarrier, get_fusion_cp_url(), Create a ``fusion.cp.shipment`` record from shipment result dict. Calle, Validate package dimensions and weight against Canada Post limits. ``pa, Get package dimensions in cm for Canada Post API. Uses the carrier's ``, Convert a dimension value to centimeters using the carrier's configured, Create one CP shipment for a single package. Returns dict with tracking, Post a single chatter message with combined shipping documents. Merges (+4 more)
|
|
|
|
### Community 2 - "Community 2"
|
|
Cohesion: 0.19
|
|
Nodes (5): _pullval(), Response, Fetch latest tracking events from Canada Post VIS API., Auto-refresh tracking for all active (non-terminal) shipments., Parse return label response, download label PDF, store on shipment.
|
|
|
|
### Community 3 - "Community 3"
|
|
Cohesion: 0.2
|
|
Nodes (13): attribute_check(), dict2xml(), get_dom_tree(), getNodeText(), getValue(), parse_yaml(), perftest_dict2xml(), python_2_unicode_compatible() (+5 more)
|
|
|
|
### Community 4 - "Community 4"
|
|
Cohesion: 0.21
|
|
Nodes (6): ChooseDeliveryCarrier, Override: for Canada Post, fetch all rates for all packages., Build package_info dict for a single package, converted to cm., Fetch CP service rates for every package and aggregate., Override: store per-package info on the sale order and enhance the deliv, Return ALL available Canada Post service rates for the order.
|
|
|
|
### Community 5 - "Community 5"
|
|
Cohesion: 0.2
|
|
Nodes (4): ChooseDeliveryCPPackage, ChooseDeliveryCPRate, Select this rate and deselect others. Update per-package costs., One package row in the Add Shipping wizard for Canada Post.
|
|
|
|
### Community 6 - "Community 6"
|
|
Cohesion: 0.38
|
|
Nodes (1): ResponseDataObject
|
|
|
|
### Community 7 - "Community 7"
|
|
Cohesion: 0.5
|
|
Nodes (1): SaleOrder
|
|
|
|
### Community 8 - "Community 8"
|
|
Cohesion: 0.5
|
|
Nodes (1): StockPicking
|
|
|
|
### Community 9 - "Community 9"
|
|
Cohesion: 0.67
|
|
Nodes (2): FusionCPOrderPackage, Stores per-package dimensions and service info on a sale order. Created whe
|
|
|
|
### Community 10 - "Community 10"
|
|
Cohesion: 0.67
|
|
Nodes (1): ResCompany
|
|
|
|
### Community 11 - "Community 11"
|
|
Cohesion: 1.0
|
|
Nodes (1): FusionCpTrackingEvent
|
|
|
|
### Community 12 - "Community 12"
|
|
Cohesion: 1.0
|
|
Nodes (1): PackageType
|
|
|
|
### Community 13 - "Community 13"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 14 - "Community 14"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 15 - "Community 15"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 16 - "Community 16"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 17 - "Community 17"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 18 - "Community 18"
|
|
Cohesion: 1.0
|
|
Nodes (1): Pre-fill dimensions from selected box type.
|
|
|
|
### Community 19 - "Community 19"
|
|
Cohesion: 1.0
|
|
Nodes (1): When a CP carrier is selected, create one default package.
|
|
|
|
## Knowledge Gaps
|
|
- **15 isolated node(s):** `This is simple approach to parsing a yaml config that is only intended for t`, `A decorator that defines __unicode__ and __str__ methods under Python 2. Und`, `Returns the node's text string.`, `One package row in the Add Shipping wizard for Canada Post.`, `Pre-fill dimensions from selected box type.` (+10 more)
|
|
These have ≤1 connection - possible missing edges or undocumented components.
|
|
- **Thin community `Community 11`** (2 nodes): `FusionCpTrackingEvent`, `fusion_cp_tracking_event.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 12`** (2 nodes): `PackageType`, `product_packaging.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 13`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 14`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 15`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 16`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 17`** (1 nodes): `__manifest__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 18`** (1 nodes): `Pre-fill dimensions from selected box type.`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 19`** (1 nodes): `When a CP carrier is selected, create one default package.`
|
|
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 `Response` connect `Community 2` to `Community 0`, `Community 1`, `Community 4`?**
|
|
_High betweenness centrality (0.262) - this node is a cross-community bridge._
|
|
- **Why does `FusionCpShipment` connect `Community 0` to `Community 1`, `Community 2`?**
|
|
_High betweenness centrality (0.134) - this node is a cross-community bridge._
|
|
- **Why does `ChooseDeliveryCarrier` connect `Community 4` to `Community 5`?**
|
|
_High betweenness centrality (0.126) - this node is a cross-community bridge._
|
|
- **Are the 27 inferred relationships involving `Response` (e.g. with `FusionCpShipment` and `Open an attachment PDF in the browser viewer (new tab).`) actually correct?**
|
|
_`Response` has 27 INFERRED edges - model-reasoned connections that need verification._
|
|
- **Are the 5 inferred relationships involving `create()` (e.g. with `._update_cp_rates()` and `.get()`) actually correct?**
|
|
_`create()` has 5 INFERRED edges - model-reasoned connections that need verification._
|
|
- **What connects `This is simple approach to parsing a yaml config that is only intended for t`, `A decorator that defines __unicode__ and __str__ methods under Python 2. Und`, `Returns the node's text string.` to the rest of the system?**
|
|
_15 weakly-connected nodes found - possible documentation gaps or missing edges._
|
|
- **Should `Community 0` be split into smaller, more focused modules?**
|
|
_Cohesion score 0.08 - nodes in this community are weakly interconnected._ |