18 KiB
Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets (2026-04-22)
Corpus Check
- 71 files · ~16,325 words
- Verdict: corpus is large enough that graph structure adds value.
Summary
- 467 nodes · 660 edges · 46 communities detected
- Extraction: 73% EXTRACTED · 27% INFERRED · 0% AMBIGUOUS · INFERRED: 179 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
Community Hubs (Navigation)
- _COMMUNITY_Community 0
- _COMMUNITY_Community 1
- _COMMUNITY_Community 2
- _COMMUNITY_Community 3
- _COMMUNITY_Community 4
- _COMMUNITY_Community 5
- _COMMUNITY_Community 6
- _COMMUNITY_Community 7
- _COMMUNITY_Community 8
- _COMMUNITY_Community 9
- _COMMUNITY_Community 10
- _COMMUNITY_Community 11
- _COMMUNITY_Community 12
- _COMMUNITY_Community 13
- _COMMUNITY_Community 14
- _COMMUNITY_Community 15
- _COMMUNITY_Community 16
- _COMMUNITY_Community 17
- _COMMUNITY_Community 18
- _COMMUNITY_Community 19
- _COMMUNITY_Community 20
- _COMMUNITY_Community 21
- _COMMUNITY_Community 22
- _COMMUNITY_Community 23
- _COMMUNITY_Community 24
- _COMMUNITY_Community 25
- _COMMUNITY_Community 26
- _COMMUNITY_Community 27
- _COMMUNITY_Community 28
- _COMMUNITY_Community 29
- _COMMUNITY_Community 30
- _COMMUNITY_Community 31
- _COMMUNITY_Community 32
- _COMMUNITY_Community 33
- _COMMUNITY_Community 34
- _COMMUNITY_Community 35
- _COMMUNITY_Community 36
- _COMMUNITY_Community 37
- _COMMUNITY_Community 38
- _COMMUNITY_Community 39
- _COMMUNITY_Community 40
- _COMMUNITY_Community 41
- _COMMUNITY_Community 42
- _COMMUNITY_Community 43
- _COMMUNITY_Community 44
- _COMMUNITY_Community 45
God Nodes (most connected - your core abstractions)
compute_depreciation_schedule()- 37 edgesTestFusionAssetEngine- 14 edgespost_depreciation_entry()- 14 edgespredict_useful_life()- 13 edgesTestAssetsController- 12 edgesstraight_line()- 11 edgesTestFusionAsset- 10 edgesTestAssetAnomalyDetection- 10 edgesTestAssetEngineIntegration- 10 edgesAssetsService- 10 edges
Surprising Connections (you probably didn't know these)
compute_schedule()--calls-->compute_depreciation_schedule()[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets/controllers/assets_controller.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets/models/fusion_asset_engine.pysuggest_useful_life()--calls-->predict_useful_life()[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets/controllers/assets_controller.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets/services/useful_life_predictor.pytest_straight_line_total_equals_cost_minus_salvage()--calls-->straight_line()[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets/tests/test_engine_property.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets/services/depreciation_methods.pytest_straight_line_book_value_decreasing()--calls-->straight_line()[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets/tests/test_engine_property.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets/services/depreciation_methods.pytest_declining_balance_never_below_salvage()--calls-->declining_balance()[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets/tests/test_engine_property.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_assets/services/depreciation_methods.py
Communities
Community 0 - "Community 0"
Cohesion: 0.09 Nodes (15): FusionDepreciationRunWizard, Manual depreciation run wizard. Operator picks a period_date and the wizard pos, compute_depreciation_schedule(), dispose_asset(), partial_sale(), pause_asset(), post_depreciation_entry(), The asset engine — orchestrator for all asset depreciation + lifecycle. 7-metho (+7 more)
Community 1 - "Community 1"
Cohesion: 0.07
Nodes (21): declining_balance(), DepreciationStep, Depreciation method primitives. Three methods supported: - straight_line: equal, Equal charge per period: (cost - salvage) / n_periods. Last period absorbs, Apply rate (e.g. 0.20 = 20%) to remaining book each period. Switches to s, Charge per period = (units_used / total_expected) * (cost - salvage)., straight_line(), units_of_production() (+13 more)
Community 2 - "Community 2"
Cohesion: 0.07 Nodes (19): AssetAnomaly, detect_low_utilization(), detect_schedule_variance(), Asset utilization anomaly detection. Flags assets where actual usage / posted d, Compare expected accumulated depreciation vs actual posted., For units-of-production assets: flag low actual usage., FusionAssetBookValuesMV, MV of per-asset book value snapshot. Refresh via cron or model._refresh(). (+11 more)
Community 3 - "Community 3"
Cohesion: 0.06 Nodes (10): AssetsAdapter wiring tests — fusion-mode dispatch., TestAssetsAdapter, TestAuditReport, TestFusionAssetCategory, TestFusionAssetDisposal, Integration tests verifying all 3 depreciation methods through the engine., TestDecliningBalanceIntegration, TestStraightLineIntegration (+2 more)
Community 4 - "Community 4"
Cohesion: 0.07 Nodes (5): AiUsefulLifePanel, AssetDashboard, AssetDetailPanel, AssetsService, DisposalDialog
Community 5 - "Community 5"
Cohesion: 0.08 Nodes (9): HttpCase, Controller tests using HttpCase., TestAssetsController, Python wrappers that run the OWL tours via HttpCase.start_tour. Tours require a, TestAssetsTours, Controller perf benchmarks tagged 'benchmark'. Engine-level benchmarks live in, TestAssetsControllerBenchmarks, Performance benchmarks tagged 'benchmark'. (+1 more)
Community 6 - "Community 6"
Cohesion: 0.09 Nodes (16): _detect_local_llm(), Local LLM compat smoke test for the useful_life_predictor service. Auto-detects, _server_reachable(), TestLocalLLMUsefulLife, TestUsefulLifePredictor, TestUsefulLifePrompt, _get_provider(), predict_useful_life() (+8 more)
Community 7 - "Community 7"
Cohesion: 0.12 Nodes (3): FusionAsset, Fusion Asset model. Lifecycle: draft -> running -> (paused -> running)* -> disp, TestFusionAsset
Community 8 - "Community 8"
Cohesion: 0.14 Nodes (6): FusionCreateAssetWizard, _onchange_category_id(), Create-asset-from-invoice-line wizard. Reads an account.move.line as the source, Create the fusion.asset record + link to source invoice line., Call AI useful-life predictor., TestCreateAssetWizard
Community 9 - "Community 9"
Cohesion: 0.23 Nodes (7): compute_salvage_value(), Salvage value (scrap value) calculation helpers. Most clients use straight % of, Compute end-of-life salvage value., Estimate remaining value if asset is sold/scrapped now., remaining_useful_life_value(), SalvageConfig, TestSalvageValue
Community 10 - "Community 10"
Cohesion: 0.22 Nodes (4): FusionAssetDepreciationLine, Per-period depreciation board lines for an asset., Mark this line as posted (without creating the journal entry yet — engin, TestFusionAssetDepreciationLine
Community 11 - "Community 11"
Cohesion: 0.21 Nodes (3): FusionAssetAnomaly, Persisted asset anomaly flags from the engine's variance detection., TestFusionAssetAnomaly
Community 12 - "Community 12"
Cohesion: 0.24
Nodes (4): prorate_factor(), Prorating helpers for first-period and last-period depreciation. When an asset, Return a 0..1 factor for how much of period's depreciation applies to an a, TestProrate
Community 13 - "Community 13"
Cohesion: 0.2 Nodes (6): FusionMigrationWizard, Assets-specific migration step. Backfills fusion.asset from existing account.as, Backfill fusion.asset from account.asset (Enterprise) if it exists., Override to add assets-bootstrap step., When Enterprise account.asset is NOT installed, step is a no-op., TestAssetsMigrationRoundTrip
Community 14 - "Community 14"
Cohesion: 0.18 Nodes (4): _compute_gain_loss(), FusionDisposalWizard, Asset disposal wizard (sale, scrap, donation, lost)., TestDisposalWizard
Community 15 - "Community 15"
Cohesion: 0.2 Nodes (4): _compute_sold_cost(), FusionPartialSaleWizard, Partial sale wizard (sell a portion of an asset). Splits the asset into a child, TestPartialSaleWizard
Community 16 - "Community 16"
Cohesion: 0.2 Nodes (7): compute_schedule(), dispose(), FusionAssetsController, _parse_date(), post_depreciation(), HTTP controller: 8 JSON-RPC endpoints for the OWL asset dashboard. All endpoint, suggest_useful_life()
Community 17 - "Community 17"
Cohesion: 0.18 Nodes (3): AccountMoveLine, Inherit account.move.line to link to fusion.asset records. Lets us trace assets, TestAccountMoveLineFusionAsset
Community 18 - "Community 18"
Cohesion: 0.25 Nodes (2): Tests for the 5 fusion-asset AI tools., TestFusionAssetTools
Community 19 - "Community 19"
Cohesion: 0.25 Nodes (3): Coexistence tests: fusion_accounting_assets menu only visible when Enterprise ac, Engine is registered regardless of Enterprise install state., TestAssetsCoexistence
Community 20 - "Community 20"
Cohesion: 0.5 Nodes (2): FusionAssetCategory, Asset categories with default settings (used as templates).
Community 21 - "Community 21"
Cohesion: 0.5 Nodes (2): FusionAssetDisposal, Asset disposal records (sale, scrap, donation).
Community 22 - "Community 22"
Cohesion: 0.5 Nodes (2): FusionAssetsMigrationAuditReport, QWeb PDF: migration audit report for fusion_accounting_assets.
Community 23 - "Community 23"
Cohesion: 0.67 Nodes (1): AnomalyStrip
Community 24 - "Community 24"
Cohesion: 0.67 Nodes (1): DepreciationBoard
Community 25 - "Community 25"
Cohesion: 1.0 Nodes (1): AssetCard
Community 26 - "Community 26"
Cohesion: 1.0 Nodes (0):
Community 27 - "Community 27"
Cohesion: 1.0 Nodes (0):
Community 28 - "Community 28"
Cohesion: 1.0 Nodes (0):
Community 29 - "Community 29"
Cohesion: 1.0 Nodes (0):
Community 30 - "Community 30"
Cohesion: 1.0 Nodes (0):
Community 31 - "Community 31"
Cohesion: 1.0 Nodes (0):
Community 32 - "Community 32"
Cohesion: 1.0 Nodes (0):
Community 33 - "Community 33"
Cohesion: 1.0 Nodes (0):
Community 34 - "Community 34"
Cohesion: 1.0 Nodes (1): For each running asset, post any due un-posted depreciation lines.
Community 35 - "Community 35"
Cohesion: 1.0 Nodes (1): Refresh the per-asset book value MV (hourly).
Community 36 - "Community 36"
Cohesion: 1.0 Nodes (1): For each running asset, compare expected accumulated depreciation vs pos
Community 37 - "Community 37"
Cohesion: 1.0 Nodes (1): Compute (or re-compute) the depreciation board for an asset. If recompu
Community 38 - "Community 38"
Cohesion: 1.0 Nodes (1): Post the next-due un-posted depreciation line. If period_date provided,
Community 39 - "Community 39"
Cohesion: 1.0 Nodes (1): Dispose an asset (sale, scrap, donation, lost).
Community 40 - "Community 40"
Cohesion: 1.0 Nodes (1): Partially dispose: split asset into two — sold child + remaining parent.
Community 41 - "Community 41"
Cohesion: 1.0 Nodes (1): Pause depreciation. Wraps asset.action_pause for API symmetry and to log
Community 42 - "Community 42"
Cohesion: 1.0 Nodes (1): Resume a paused asset.
Community 43 - "Community 43"
Cohesion: 1.0 Nodes (1): Reverse a disposal (rare — recovery from accidental sale entry).
Community 44 - "Community 44"
Cohesion: 1.0 Nodes (0):
Community 45 - "Community 45"
Cohesion: 1.0 Nodes (0):
Knowledge Gaps
- 72 isolated node(s):
Integration tests verifying all 3 depreciation methods through the engine.,Property-based invariant tests for the asset engine. Hypothesis generates rando,Local LLM compat smoke test for the useful_life_predictor service. Auto-detects,Python wrappers that run the OWL tours via HttpCase.start_tour. Tours require a,Tests for the per-asset book value MV.(+67 more) These have ≤1 connection - possible missing edges or undocumented components. - Thin community
Community 25(2 nodes):AssetCard,asset_card.jsToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 26(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 27(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 28(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 29(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 30(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 31(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 32(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 33(1 nodes):__manifest__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 34(1 nodes):For each running asset, post any due un-posted depreciation lines.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 35(1 nodes):Refresh the per-asset book value MV (hourly).Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 36(1 nodes):For each running asset, compare expected accumulated depreciation vs posToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 37(1 nodes):Compute (or re-compute) the depreciation board for an asset. If recompuToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 38(1 nodes):Post the next-due un-posted depreciation line. If period_date provided,Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 39(1 nodes):Dispose an asset (sale, scrap, donation, lost).Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 40(1 nodes):Partially dispose: split asset into two — sold child + remaining parent.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 41(1 nodes):Pause depreciation. Wraps asset.action_pause for API symmetry and to logToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 42(1 nodes):Resume a paused asset.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 43(1 nodes):Reverse a disposal (rare — recovery from accidental sale entry).Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 44(1 nodes):assets_tours.jsToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 45(1 nodes):asset_dashboard_view.jsToo 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
compute_depreciation_schedule()connectCommunity 0toCommunity 1,Community 2,Community 3,Community 5,Community 14,Community 15,Community 16? High betweenness centrality (0.101) - this node is a cross-community bridge. - Why does
TestEngineBenchmarksconnectCommunity 0toCommunity 3,Community 5? High betweenness centrality (0.057) - this node is a cross-community bridge. - Why does
TestFusionAssetEngineconnectCommunity 0toCommunity 3? High betweenness centrality (0.052) - this node is a cross-community bridge. - Are the 32 inferred relationships involving
compute_depreciation_schedule()(e.g. with.test_straight_line_5yr_no_salvage()and.test_straight_line_10yr_with_salvage()) actually correct?compute_depreciation_schedule()has 32 INFERRED edges - model-reasoned connections that need verification. - Are the 12 inferred relationships involving
post_depreciation_entry()(e.g. with.test_post_depreciation_entry_marks_line_posted()and.test_post_depreciation_only_after_running()) actually correct?post_depreciation_entry()has 12 INFERRED edges - model-reasoned connections that need verification. - Are the 9 inferred relationships involving
predict_useful_life()(e.g. with.test_useful_life_with_local_llm()and.test_fallback_computer()) actually correct?predict_useful_life()has 9 INFERRED edges - model-reasoned connections that need verification. - What connects
Integration tests verifying all 3 depreciation methods through the engine.,Property-based invariant tests for the asset engine. Hypothesis generates rando,Local LLM compat smoke test for the useful_life_predictor service. Auto-detectsto the rest of the system? 72 weakly-connected nodes found - possible documentation gaps or missing edges.