Files
gsinghpal 41d0908ade changes
2026-04-24 21:04:38 -04:00

9.7 KiB

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)

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.