# omdkrm/money-managment architecture

> Architecture diagram of the GitHub repository omdkrm/money-managment, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/omdkrm/money-managment
- Repository: https://github.com/omdkrm/money-managment

## Overview

مدیریت سرمایه is a Persian-language Android wealth and portfolio app. Users record transactions and assets, then review portfolio values, dashboards, reports, and diagnostics; market-price synchronization and safe local/cloud backup support that workflow. The graph separates UI, portfolio logic, market data, and persistence. Edges are limited to relationships shown by excerpts or the source index; provider dispatch details and several screen-to-data interactions were not sampled, so they are omitted or marked unverified.

Main entry points: [`app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt`](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt) (App navigation), [`app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt`](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt) (Wealth repository), [`app/src/main/java/ir/modiriatsarmaye/app/data/market/StrategyDiagnostic.kt`](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/StrategyDiagnostic.kt) (Price diagnostics), [`app/src/main/java/ir/modiriatsarmaye/app/data/market/CompositeMarketDataProvider.kt`](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/CompositeMarketDataProvider.kt) (Market data provider)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["App interface"]
  node_activity["App navigation<br/>[MainActivity.kt]"]
  node_dashboard["Dashboard<br/>[DashboardScreen.kt]"]
  node_portfolio_screen["Portfolio view<br/>[PortfolioScreen.kt]"]
  node_transactions["Transactions"]
  node_add_transaction["Add transaction"]
  node_reports["Reports<br/>[ReportsScreen.kt]"]
  node_more["Settings and backup<br/>[MoreScreen.kt]"]
  node_gold_diag["Gold diagnostics"]
  node_stock_diag["Stock diagnostics"]
  node_date_picker["Persian date picker"]
end

subgraph group_portfolio["Portfolio services"]
  node_viewmodel["Wealth state<br/>[WealthViewModel.kt]"]
  node_repository["Wealth repository"]
  node_calculation["Portfolio calculations"]
  node_persian_utils["Persian formatting<br/>[PersianUtils.kt]"]
  node_jalali["Jalali calendar<br/>[JalaliDate.kt]"]
end

subgraph group_market["Market pricing"]
  node_market_composite["Market data provider"]
  node_gold_provider["Gold prices"]
  node_stock_provider["Stock prices"]
  node_fund_provider["Fund prices"]
  node_instrument_mapping["Instrument mapping"]
  node_stock_mapping["Stock mapping"]
  node_fund_mapping["Fund mapping"]
  node_market_price["Market price model<br/>[MarketPrice.kt]"]
  node_diagnostics["Price diagnostics"]
end

subgraph group_storage["Persistence and backup"]
  node_database[("Room database<br/>[AppDatabase.kt]")]
  node_daos["Data access objects<br/>[Daos.kt]"]
  node_safe_backup["Safe backup restore"]
  node_drive_backup["Google Drive backup"]
  node_cleanup["Data cleanup<br/>[SafeDataCleanup.kt]"]
  node_initial_data["Initial data<br/>[InitialData.kt]"]
end

node_user(("User"))

node_user -->|"opens app"| node_activity
node_activity -->|"creates state"| node_viewmodel
node_activity -->|"routes to"| node_dashboard
node_activity -->|"routes to"| node_portfolio_screen
node_activity -->|"routes to"| node_transactions
node_activity -->|"routes to"| node_add_transaction
node_activity -->|"routes to"| node_reports
node_activity -->|"routes to"| node_more
node_portfolio_screen -->|"renders"| node_gold_diag
node_portfolio_screen -->|"renders"| node_stock_diag
node_date_picker -->|"uses dates"| node_jalali
node_viewmodel -->|"requests data"| node_repository
node_viewmodel -->|"calculates"| node_calculation
node_repository -->|"reads and writes"| node_database
node_repository -->|"fetches prices"| node_market_composite
node_repository -->|"calculates holdings"| node_calculation
node_repository -->|"validates restore"| node_safe_backup
node_repository -->|"uses cloud backup"| node_drive_backup
node_repository -->|"cleans data"| node_cleanup
node_repository -->|"resets defaults"| node_initial_data
node_database -->|"seeds database"| node_initial_data
node_safe_backup -->|"restores transactionally"| node_database
node_more -->|"uses backup"| node_safe_backup
node_market_composite -.->|"dispatches"| node_gold_provider
node_market_composite -.->|"dispatches"| node_stock_provider
node_market_composite -.->|"dispatches"| node_fund_provider
node_gold_provider -->|"maps instruments"| node_instrument_mapping
node_stock_provider -->|"maps instruments"| node_stock_mapping
node_fund_provider -->|"maps instruments"| node_fund_mapping
node_gold_provider -->|"produces prices"| node_market_price
node_stock_provider -->|"produces prices"| node_market_price
node_fund_provider -->|"produces prices"| node_market_price
node_gold_provider -->|"records results"| node_diagnostics
node_stock_provider -->|"records results"| node_diagnostics
node_fund_provider -->|"records results"| node_diagnostics
node_gold_diag -->|"displays"| node_diagnostics
node_stock_diag -->|"displays"| node_diagnostics
node_persian_utils -->|"formats dates"| node_jalali

click node_activity "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt"
click node_dashboard "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/DashboardScreen.kt"
click node_portfolio_screen "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/PortfolioScreen.kt"
click node_transactions "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/TransactionsScreen.kt"
click node_add_transaction "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/AddTransactionSheet.kt"
click node_reports "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/ReportsScreen.kt"
click node_more "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/MoreScreen.kt"
click node_gold_diag "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/components/GoldDiagnosticCard.kt"
click node_stock_diag "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/components/StockDiagnosticCard.kt"
click node_date_picker "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/components/PersianDatePickerDialog.kt"
click node_viewmodel "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/viewmodel/WealthViewModel.kt"
click node_repository "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt"
click node_calculation "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/util/CalculationEngine.kt"
click node_persian_utils "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/util/PersianUtils.kt"
click node_jalali "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/util/JalaliDate.kt"
click node_market_composite "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/CompositeMarketDataProvider.kt"
click node_gold_provider "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/GoldPriceProvider.kt"
click node_stock_provider "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/StockPriceProvider.kt"
click node_fund_provider "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/FundMarketPriceProvider.kt"
click node_instrument_mapping "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/AssetInstrumentMapper.kt"
click node_stock_mapping "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/StockInstrumentMapper.kt"
click node_fund_mapping "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/FundInstrumentMapper.kt"
click node_market_price "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/MarketPrice.kt"
click node_diagnostics "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/StrategyDiagnostic.kt"
click node_database "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/local/AppDatabase.kt"
click node_daos "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/local/Daos.kt"
click node_safe_backup "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/backup/SafeBackupManager.kt"
click node_drive_backup "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/cloud/GoogleDriveBackupManager.kt"
click node_cleanup "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/local/SafeDataCleanup.kt"
click node_initial_data "https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/local/InitialData.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_activity,node_dashboard,node_portfolio_screen,node_transactions,node_add_transaction,node_reports,node_more,node_gold_diag,node_stock_diag,node_date_picker,node_user toneBlue
class node_viewmodel,node_repository,node_calculation,node_persian_utils,node_jalali toneAmber
class node_market_composite,node_gold_provider,node_stock_provider,node_fund_provider,node_instrument_mapping,node_stock_mapping,node_fund_mapping,node_market_price,node_diagnostics toneMint
class node_database,node_daos,node_safe_backup,node_drive_backup,node_cleanup,node_initial_data toneRose
```

## Components

### App interface

- [App navigation](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt): `app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt`
- [Dashboard](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/DashboardScreen.kt): `app/src/main/java/ir/modiriatsarmaye/app/ui/screens/DashboardScreen.kt`
- [Portfolio view](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/PortfolioScreen.kt): `app/src/main/java/ir/modiriatsarmaye/app/ui/screens/PortfolioScreen.kt`
- [Transactions](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/TransactionsScreen.kt): `app/src/main/java/ir/modiriatsarmaye/app/ui/screens/TransactionsScreen.kt`
- [Add transaction](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/AddTransactionSheet.kt): `app/src/main/java/ir/modiriatsarmaye/app/ui/screens/AddTransactionSheet.kt`
- [Reports](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/ReportsScreen.kt): `app/src/main/java/ir/modiriatsarmaye/app/ui/screens/ReportsScreen.kt`
- [Settings and backup](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/screens/MoreScreen.kt): `app/src/main/java/ir/modiriatsarmaye/app/ui/screens/MoreScreen.kt`
- [Gold diagnostics](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/components/GoldDiagnosticCard.kt): `app/src/main/java/ir/modiriatsarmaye/app/ui/components/GoldDiagnosticCard.kt`
- [Stock diagnostics](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/components/StockDiagnosticCard.kt): `app/src/main/java/ir/modiriatsarmaye/app/ui/components/StockDiagnosticCard.kt`
- [Persian date picker](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/components/PersianDatePickerDialog.kt): `app/src/main/java/ir/modiriatsarmaye/app/ui/components/PersianDatePickerDialog.kt`

### Portfolio services

- [Wealth state](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/ui/viewmodel/WealthViewModel.kt): `app/src/main/java/ir/modiriatsarmaye/app/ui/viewmodel/WealthViewModel.kt`
- [Wealth repository](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt`
- [Portfolio calculations](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/util/CalculationEngine.kt): `app/src/main/java/ir/modiriatsarmaye/app/util/CalculationEngine.kt`
- [Persian formatting](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/util/PersianUtils.kt): `app/src/main/java/ir/modiriatsarmaye/app/util/PersianUtils.kt`
- [Jalali calendar](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/util/JalaliDate.kt): `app/src/main/java/ir/modiriatsarmaye/app/util/JalaliDate.kt`

### Market pricing

- [Market data provider](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/CompositeMarketDataProvider.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/market/CompositeMarketDataProvider.kt`
- [Gold prices](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/GoldPriceProvider.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/market/GoldPriceProvider.kt`
- [Stock prices](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/StockPriceProvider.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/market/StockPriceProvider.kt`
- [Fund prices](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/FundMarketPriceProvider.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/market/FundMarketPriceProvider.kt`
- [Instrument mapping](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/AssetInstrumentMapper.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/market/AssetInstrumentMapper.kt`
- [Stock mapping](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/StockInstrumentMapper.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/market/StockInstrumentMapper.kt`
- [Fund mapping](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/FundInstrumentMapper.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/market/FundInstrumentMapper.kt`
- [Market price model](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/MarketPrice.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/market/MarketPrice.kt`
- [Price diagnostics](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/market/StrategyDiagnostic.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/market/StrategyDiagnostic.kt`

### Persistence and backup

- [Room database](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/local/AppDatabase.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/local/AppDatabase.kt`
- [Data access objects](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/local/Daos.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/local/Daos.kt`
- [Safe backup restore](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/backup/SafeBackupManager.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/backup/SafeBackupManager.kt`
- [Google Drive backup](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/cloud/GoogleDriveBackupManager.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/cloud/GoogleDriveBackupManager.kt`
- [Data cleanup](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/local/SafeDataCleanup.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/local/SafeDataCleanup.kt`
- [Initial data](https://github.com/omdkrm/money-managment/blob/main/app/src/main/java/ir/modiriatsarmaye/app/data/local/InitialData.kt): `app/src/main/java/ir/modiriatsarmaye/app/data/local/InitialData.kt`

### Other components

- **User**

## Connections

- User → App navigation: opens app (evidence: `app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt`)
- App navigation → Wealth state: creates state (evidence: `app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt`)
- App navigation → Dashboard: routes to (evidence: `app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt`)
- App navigation → Portfolio view: routes to (evidence: `app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt`)
- App navigation → Transactions: routes to (evidence: `app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt`)
- App navigation → Add transaction: routes to (evidence: `app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt`)
- App navigation → Reports: routes to (evidence: `app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt`)
- App navigation → Settings and backup: routes to (evidence: `app/src/main/java/ir/modiriatsarmaye/app/MainActivity.kt`)
- Portfolio view → Gold diagnostics: renders (evidence: `app/src/main/java/ir/modiriatsarmaye/app/ui/screens/PortfolioScreen.kt`)
- Portfolio view → Stock diagnostics: renders (evidence: `app/src/main/java/ir/modiriatsarmaye/app/ui/screens/PortfolioScreen.kt`)
- Persian date picker → Jalali calendar: uses dates (evidence: `app/src/main/java/ir/modiriatsarmaye/app/ui/components/PersianDatePickerDialog.kt`)
- Wealth state → Wealth repository: requests data (evidence: `app/src/main/java/ir/modiriatsarmaye/app/ui/viewmodel/WealthViewModel.kt`)
- Wealth state → Portfolio calculations: calculates (evidence: `app/src/main/java/ir/modiriatsarmaye/app/ui/viewmodel/WealthViewModel.kt`)
- Wealth repository → Room database: reads and writes (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt`)
- Wealth repository → Market data provider: fetches prices (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt`)
- Wealth repository → Portfolio calculations: calculates holdings (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt`)
- Wealth repository → Safe backup restore: validates restore (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt`)
- Wealth repository → Google Drive backup: uses cloud backup (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt`)
- Wealth repository → Data cleanup: cleans data (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt`)
- Wealth repository → Initial data: resets defaults (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/repository/WealthRepository.kt`)
- Room database → Initial data: seeds database (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/local/AppDatabase.kt`)
- Safe backup restore → Room database: restores transactionally (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/backup/SafeBackupManager.kt`)
- Settings and backup → Safe backup restore: uses backup (evidence: `app/src/main/java/ir/modiriatsarmaye/app/ui/screens/MoreScreen.kt`)
- Market data provider → Gold prices: dispatches (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/CompositeMarketDataProvider.kt`)
- Market data provider → Stock prices: dispatches
- Market data provider → Fund prices: dispatches (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/CompositeMarketDataProvider.kt`)
- Gold prices → Instrument mapping: maps instruments (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/GoldPriceProvider.kt`)
- Stock prices → Stock mapping: maps instruments (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/StockPriceProvider.kt`)
- Fund prices → Fund mapping: maps instruments (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/FundMarketPriceProvider.kt`)
- Gold prices → Market price model: produces prices (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/GoldPriceProvider.kt`)
- Stock prices → Market price model: produces prices (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/StockPriceProvider.kt`)
- Fund prices → Market price model: produces prices (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/FundMarketPriceProvider.kt`)
- Gold prices → Price diagnostics: records results (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/GoldPriceProvider.kt`)
- Stock prices → Price diagnostics: records results (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/StockPriceProvider.kt`)
- Fund prices → Price diagnostics: records results (evidence: `app/src/main/java/ir/modiriatsarmaye/app/data/market/FundMarketPriceProvider.kt`)
- Gold diagnostics → Price diagnostics: displays (evidence: `app/src/main/java/ir/modiriatsarmaye/app/ui/components/GoldDiagnosticCard.kt`)
- Stock diagnostics → Price diagnostics: displays (evidence: `app/src/main/java/ir/modiriatsarmaye/app/ui/components/StockDiagnosticCard.kt`)
- Persian formatting → Jalali calendar: formats dates (evidence: `app/src/main/java/ir/modiriatsarmaye/app/util/PersianUtils.kt`)
