278 lines
16 KiB
Markdown
278 lines
16 KiB
Markdown
# Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports (2026-04-22)
|
|
|
|
## Corpus Check
|
|
- 66 files · ~18,059 words
|
|
- Verdict: corpus is large enough that graph structure adds value.
|
|
|
|
## Summary
|
|
- 457 nodes · 729 edges · 38 communities detected
|
|
- Extraction: 69% EXTRACTED · 31% INFERRED · 0% AMBIGUOUS · INFERRED: 229 edges (avg confidence: 0.71)
|
|
- 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]]
|
|
- [[_COMMUNITY_Community 32|Community 32]]
|
|
- [[_COMMUNITY_Community 33|Community 33]]
|
|
- [[_COMMUNITY_Community 34|Community 34]]
|
|
- [[_COMMUNITY_Community 35|Community 35]]
|
|
- [[_COMMUNITY_Community 36|Community 36]]
|
|
- [[_COMMUNITY_Community 37|Community 37]]
|
|
|
|
## God Nodes (most connected - your core abstractions)
|
|
1. `Period` - 78 edges
|
|
2. `TotalLine` - 31 edges
|
|
3. `compute_pnl()` - 17 edges
|
|
4. `TestFusionReportEngine` - 14 edges
|
|
5. `compute_balance_sheet()` - 13 edges
|
|
6. `TestReportsController` - 12 edges
|
|
7. `TestDatePeriods` - 12 edges
|
|
8. `TestSeededReports` - 11 edges
|
|
9. `compute_trial_balance()` - 11 edges
|
|
10. `run()` - 11 edges
|
|
|
|
## Surprising Connections (you probably didn't know these)
|
|
- `Local LLM compat smoke for the commentary generator. Auto-detects an LM Studio` --uses--> `Period` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports/tests/test_local_llm_compat.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports/services/date_periods.py
|
|
- `Return (base_url, default_model) for the first reachable server, or (None, N` --uses--> `Period` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports/tests/test_local_llm_compat.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports/services/date_periods.py
|
|
- `Performance benchmarks with P95 targets, tagged 'benchmark'. These tests are no` --uses--> `Period` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports/tests/test_performance_benchmarks.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports/services/date_periods.py
|
|
- `Verify the seeded fusion.report definitions load and compute sensibly.` --uses--> `Period` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports/tests/test_seeded_reports.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports/services/date_periods.py
|
|
- `Unit tests for date_periods, account_hierarchy, totaling services.` --uses--> `Period` [INFERRED]
|
|
/Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports/tests/test_services_unit.py → /Users/gurpreet/Github/Odoo-Modules/fusion_accounting_reports/services/date_periods.py
|
|
|
|
## Communities
|
|
|
|
### Community 0 - "Community 0"
|
|
Cohesion: 0.05
|
|
Nodes (46): Period, compute_balance_sheet(), compute_gl(), compute_pnl(), compute_trial_balance(), drill_down(), FusionReportEngine, The reports engine - orchestrator for all report computation. 5-method public A (+38 more)
|
|
|
|
### Community 1 - "Community 1"
|
|
Cohesion: 0.05
|
|
Nodes (14): Coexistence tests for fusion_accounting_reports. Mirrors Phase 1's coexistence, The engine is registered regardless of Enterprise install state., TestReportsCoexistence, Tests for fusion.report.commentary cache model., TestFusionReportCommentary, Tests for fusion.report definition model., TestFusionReport, Tests for the 5 fusion AI tools registered in TOOL_DISPATCH. (+6 more)
|
|
|
|
### Community 2 - "Community 2"
|
|
Cohesion: 0.08
|
|
Nodes (19): comparison_period(), fiscal_year_bounds(), month_bounds(), quarter_bounds(), Date period math for financial reports. Pure-Python helpers that compute: - Fis, Return the fiscal year period containing `reference_date`. Default: calenda, Return the calendar month containing `reference_date`., Return the calendar quarter containing `reference_date`. (+11 more)
|
|
|
|
### Community 3 - "Community 3"
|
|
Cohesion: 0.07
|
|
Nodes (4): PeriodFilter, ReportTable, ReportViewer, ReportsService
|
|
|
|
### Community 4 - "Community 4"
|
|
Cohesion: 0.1
|
|
Nodes (12): Anomaly, detect(), Anomaly detection for financial reports. Compares each row's current-period amo, Detect anomalies in a report_result dict (engine output). Returns list of a, _cron_anomaly_scan(), _cron_mv_refresh(), FusionReportsCron, Cron handlers for fusion_accounting_reports. Two scheduled jobs: - _cron_anomal (+4 more)
|
|
|
|
### Community 5 - "Community 5"
|
|
Cohesion: 0.11
|
|
Nodes (14): generate_commentary(), _get_provider(), AI-generated narrative commentary for financial reports. Takes a report_result, Generate narrative commentary via LLM. Returns dict per the contract. If no, No-LLM fallback that produces a basic narrative from the report data., Look up provider for 'reports_commentary' feature; return None if not configured, _templated_fallback(), Tests for commentary_generator service. (+6 more)
|
|
|
|
### Community 6 - "Community 6"
|
|
Cohesion: 0.14
|
|
Nodes (7): HttpCase, _percentile(), Performance benchmarks with P95 targets, tagged 'benchmark'. These tests are no, TestControllerBenchmarks, TestEngineBenchmarks, Python wrappers that run the OWL tours via HttpCase.start_tour. Tours require a, TestReportsTours
|
|
|
|
### Community 7 - "Community 7"
|
|
Cohesion: 0.18
|
|
Nodes (10): AccountNode, build_tree(), filter_by_account_type(), Account hierarchy walker. Given a flat list of accounts with parent_id pointers, Build a forest from a flat list of account dicts. Each dict must have keys:, Depth-first walk yielding (node, depth, ancestors)., Return all nodes whose account_type starts with type_prefix (e.g. 'asset_' r, walk() (+2 more)
|
|
|
|
### Community 8 - "Community 8"
|
|
Cohesion: 0.17
|
|
Nodes (10): test_aggregate_sum_equals_input_sum(), test_balanced_iff_debits_equal_credits(), TestTotaling, aggregate(), aggregate_per_account(), is_balanced(), Move-line aggregation primitives for report totaling. Pure-Python helpers - cal, Aggregate a list of move-line dicts into a TotalLine. Each dict must have: (+2 more)
|
|
|
|
### Community 9 - "Community 9"
|
|
Cohesion: 0.22
|
|
Nodes (11): compute_partner_grouped(), _build_period(), compare_periods(), drill_down(), export_xlsx(), FusionReportsController, get_anomalies(), get_commentary() (+3 more)
|
|
|
|
### Community 10 - "Community 10"
|
|
Cohesion: 0.17
|
|
Nodes (8): ConversionRate, convert_amount(), fetch_rates(), Multi-currency conversion for financial reports. Converts move-line amounts to, Convert `amount` from source to target at the given date. `rates` is a dict, Fetch all relevant rates from res.currency.rate as of a given date. Returns, Unit tests for currency_conversion service., TestCurrencyConversion
|
|
|
|
### Community 11 - "Community 11"
|
|
Cohesion: 0.19
|
|
Nodes (4): FusionReportAnomaly, Persisted anomaly flags from the engine's variance detection. Each row captures, Tests for fusion.report.anomaly model., TestFusionReportAnomaly
|
|
|
|
### Community 12 - "Community 12"
|
|
Cohesion: 0.26
|
|
Nodes (2): Controller tests using HttpCase for the 8 JSON-RPC endpoints., TestReportsController
|
|
|
|
### Community 13 - "Community 13"
|
|
Cohesion: 0.23
|
|
Nodes (6): DrillDownRow, fetch_drill_down(), Drill-down: from a report line to its underlying journal items. Given an accoun, Fetch journal items for an account within a date range. Returns flat list o, Tests for drill_down_resolver., TestDrillDownResolver
|
|
|
|
### Community 14 - "Community 14"
|
|
Cohesion: 0.22
|
|
Nodes (5): build_prompt(), LLM prompt for AI report commentary. Provider-agnostic system + user prompt bui, Build (system_prompt, user_prompt) tuple., Tests for commentary_prompt module., TestCommentaryPrompt
|
|
|
|
### Community 15 - "Community 15"
|
|
Cohesion: 0.2
|
|
Nodes (6): FusionMigrationWizard, Reports-specific migration step. Ensures the 4 CORE report definitions are pres, Verify all 4 CORE report definitions exist., Override to add reports-bootstrap step at the end of the chain., Tests for the reports-bootstrap migration step., TestMigrationRoundTrip
|
|
|
|
### Community 16 - "Community 16"
|
|
Cohesion: 0.22
|
|
Nodes (5): FusionAccountBalanceMV, Materialized view of per-account-per-month balances. Created lazily by init() (, _refresh(), Tests for fusion_account_balance MV., TestAccountBalanceMV
|
|
|
|
### Community 17 - "Community 17"
|
|
Cohesion: 0.22
|
|
Nodes (2): Verify the seeded fusion.report definitions load and compute sensibly., TestSeededReports
|
|
|
|
### Community 18 - "Community 18"
|
|
Cohesion: 0.25
|
|
Nodes (4): Tests for XLSX export wizard., TestXlsxExport, FusionXlsxExportWizard, XLSX export wizard for fusion financial reports.
|
|
|
|
### Community 19 - "Community 19"
|
|
Cohesion: 0.5
|
|
Nodes (1): DrillDownDialog
|
|
|
|
### Community 20 - "Community 20"
|
|
Cohesion: 0.5
|
|
Nodes (1): AnomalyStrip
|
|
|
|
### Community 21 - "Community 21"
|
|
Cohesion: 0.67
|
|
Nodes (1): Pre-migration: convert legacy act_window report actions to client actions. In 1
|
|
|
|
### Community 22 - "Community 22"
|
|
Cohesion: 0.67
|
|
Nodes (2): FusionReport, Persistent definition of a Fusion financial report. Each report (P&L, balance s
|
|
|
|
### Community 23 - "Community 23"
|
|
Cohesion: 0.67
|
|
Nodes (2): FusionReportCommentary, Cached AI-generated commentary for a report run. One row per (report, period_fr
|
|
|
|
### Community 24 - "Community 24"
|
|
Cohesion: 1.0
|
|
Nodes (1): AiCommentaryPanel
|
|
|
|
### Community 25 - "Community 25"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### 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 (1): Run last-month P&L vs prior-year-same-month and persist anomalies.
|
|
|
|
### Community 34 - "Community 34"
|
|
Cohesion: 1.0
|
|
Nodes (1): REFRESH CONCURRENTLY via dedicated autocommit cursor. REFRESH MATERIALI
|
|
|
|
### Community 35 - "Community 35"
|
|
Cohesion: 1.0
|
|
Nodes (1): Refresh the MV. Falls back to non-concurrent if CONCURRENTLY fails. REF
|
|
|
|
### Community 36 - "Community 36"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
### Community 37 - "Community 37"
|
|
Cohesion: 1.0
|
|
Nodes (0):
|
|
|
|
## Knowledge Gaps
|
|
- **66 isolated node(s):** `Pre-migration: convert legacy act_window report actions to client actions. In 1`, `Unit tests for anomaly_detection service.`, `Tests for commentary_prompt module.`, `Tests for the PDF export.`, `Tests for fusion.report.commentary cache model.` (+61 more)
|
|
These have ≤1 connection - possible missing edges or undocumented components.
|
|
- **Thin community `Community 24`** (2 nodes): `AiCommentaryPanel`, `ai_commentary_panel.js`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 25`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 26`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 27`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 28`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 29`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 30`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 31`** (1 nodes): `__init__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 32`** (1 nodes): `__manifest__.py`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 33`** (1 nodes): `Run last-month P&L vs prior-year-same-month and persist anomalies.`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 34`** (1 nodes): `REFRESH CONCURRENTLY via dedicated autocommit cursor. REFRESH MATERIALI`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 35`** (1 nodes): `Refresh the MV. Falls back to non-concurrent if CONCURRENTLY fails. REF`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 36`** (1 nodes): `reports_tours.js`
|
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
- **Thin community `Community 37`** (1 nodes): `report_viewer_view.js`
|
|
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 `Period` connect `Community 0` to `Community 2`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 17`, `Community 18`?**
|
|
_High betweenness centrality (0.301) - this node is a cross-community bridge._
|
|
- **Why does `TestControllerBenchmarks` connect `Community 6` to `Community 0`?**
|
|
_High betweenness centrality (0.085) - this node is a cross-community bridge._
|
|
- **Why does `TestCurrencyConversion` connect `Community 10` to `Community 1`?**
|
|
_High betweenness centrality (0.055) - this node is a cross-community bridge._
|
|
- **Are the 72 inferred relationships involving `Period` (e.g. with `TestServiceInvariants` and `TestLineResolverInvariants`) actually correct?**
|
|
_`Period` has 72 INFERRED edges - model-reasoned connections that need verification._
|
|
- **Are the 29 inferred relationships involving `TotalLine` (e.g. with `TestServiceInvariants` and `TestLineResolverInvariants`) actually correct?**
|
|
_`TotalLine` has 29 INFERRED edges - model-reasoned connections that need verification._
|
|
- **Are the 14 inferred relationships involving `compute_pnl()` (e.g. with `.test_commentary_with_local_llm()` and `.test_compute_pnl_p95()`) actually correct?**
|
|
_`compute_pnl()` has 14 INFERRED edges - model-reasoned connections that need verification._
|
|
- **What connects `Pre-migration: convert legacy act_window report actions to client actions. In 1`, `Unit tests for anomaly_detection service.`, `Tests for commentary_prompt module.` to the rest of the system?**
|
|
_66 weakly-connected nodes found - possible documentation gaps or missing edges._ |