
    bj\                        d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ g d
Zg dZddddZd!dZd"dZd#dZd#dZd$dZd%dZd&dZedk    r e             d S d S )'    )annotations)Path)
Connection)ensure_runtime_dirsfind_repo_rootload_settings)load_synthetic_demo_dataPAGES)data)connect)apply_migrations)zCommand Center	PortfolioCryptoWalletsu   Position hinzufügenReports)LedgerAuditAlertsData QualityzImport WizardSettingszCrypto ManagezEquity/ETF ManagezManual Review Queue	Watchlistu   Portfolio Übersichtr   r   r   )zSettings / Data QualityzData Quality CenterzEquities/ETFsdb_pathr   returnConnection | Nonec                n    |                                  sd S t          |           }t          |           |S N)existsr   r   r   conns     $src/jarvis_finance/dashboard/main.pysafe_connect_existing_dbr"      s9    >> t7DTK    Nonec                    | j                             dd           t          |           }	 t          |           |                                 d S # |                                 w xY w)NT)parentsexist_ok)parentmkdirr   r	   closer   s     r!   create_demo_dbr+      s`    N5557D &&&



s   A A(	list[str]c                 *    t          t                    S r   )listUSER_PAGE_TITLES r#   r!   get_user_navigation_titlesr1   #   s     !!!r#   c                 *    t          t                    S r   )r.   ADMIN_PAGE_TITLESr0   r#   r!   get_admin_navigation_titlesr4   '   s    !"""r#   strc                L    t                               | j        | j                  S r   )TITLE_ALIASESget
PAGE_TITLE)pages    r!   _display_titler;   +   s    T_do>>>r#   dict[str, object]c                 $    d t           D             S )Nc                .    i | ]}t          |          |S r0   )r;   ).0r:   s     r!   
<dictcomp>z*_page_by_display_title.<locals>.<dictcomp>0   s"    9994N4  $999r#   r
   r0   r#   r!   _page_by_display_titlerA   /   s    9959999r#   c                    dd l } |                     dd           | j                            d           | j                            d           	 t                      }t          |          }nE# t          $ r8}|                     d|            | 	                    d           Y d }~d S d }~ww xY wt          |           |j        }t          |          }||                     d	           |                     d
|            | 	                    d           |                     d           |                     dd          r$t          |           |                     d           d S 	 t!                      | j                            dddgd          }| j                            d           |dk    rfdt&          D             }t)          | d          r| j                            dd           nd }||v r|                    |          nd}	||v rt)          | d          r
|| j        d<   | j                            d||	d          }
| j                            d           n_fdt&          D             }fdt0          D             }| j                            d|p|d          }
| j                            d            || j        d!<   |dk    | j        d"<   t5          | j                            d#t5          | j                            d$d%                    &                    }|| j        d$<   |r| j                            d'           n| j        	                    d(           | j                            d)| d*           t=          j        |          }| j        	                    d+|d,          d-|d.                     | j                            d/|d0                     | j                            d1           |
         }|                     | |           |!                                 d S # |!                                 w xY w)2Nr   zJARVIS Financewide)
page_titlelayoutu,   Investment Dashboard · lokal · auditierbar)	repo_rootu/   Settings-/Runtime-Ladeprüfung fehlgeschlagen: uL   Prüfe JARVIS_FINANCE_RUNTIME_DIR. Runtime muss ausserhalb des Repos liegen.zJARVIS Finance Dashboardz!Keine lokale SQLite-DB gefunden: uI   Das Dashboard erstellt oder verändert keine echte Datenbank automatisch.uc   Für lokale Entwicklung kann explizit eine synthetische Dummy-DB aus tests/fixtures geladen werden.z%Synthetische Dummy-DB jetzt erstellenprimary)typez6Synthetische Dummy-DB erstellt. Bitte Seite neu laden.Modusz	User ModezAdmin / Review / Debug)indexz---c                    g | ]}|v |	S r0   r0   r?   namepage_maps     r!   
<listcomp>zrun_app.<locals>.<listcomp>U   s#    KKKd$(:J:JT:J:J:Jr#   session_statejarvis_requested_pagejarvis_user_navigationHauptnavigation)rJ   keyz;Technische IDs und Rohdaten sind im User Mode ausgeblendet.c                    g | ]}|v |	S r0   r0   rL   s     r!   rO   zrun_app.<locals>.<listcomp>]   s#    RRRTAQAQDAQAQAQr#   c                    g | ]}|v |	S r0   r0   rL   s     r!   rO   zrun_app.<locals>.<listcomp>^   s#    RRRDAQAQ4AQAQAQr#   zAdmin / DatenzAAdmin Mode: technische IDs, Rohdaten und Review-Details sichtbar.jarvis_dashboard_modejarvis_admin_modezBearbeiten aktivierenjarvis_edit_modeF)valueu\   Edit Mode aktiv: Änderungen schreiben in die Runtime-DB und benötigen Review/Bestätigung.z1Read-only Mode: Schreibaktionen sind deaktiviert.zDB: ``z
DB-Modus: db_modez | Write Mode: 
write_modezBackup: last_backup_atun   Keine Live-API-Abfragen beim Seitenreload. Preise nur aus lokaler DB/Cache. Echte Daten liegen außerhalb Git.)"	streamlitset_page_configsidebartitlecaptionr   r   	Exceptionerrorinfor   r   r"   buttonr+   successrA   radiomarkdownr/   hasattrrP   poprJ   r3   warningbooltoggler8   writedashboard_dataget_safe_mode_statusrenderr*   )strF   settingsexcr   r    modenames	requesteddefault_indexselecteduser_defaultadmin_namesedit_enabledsafer:   rN   s                   @r!   run_appr   3   s   "26BBBJ%&&&JEFFF"$$	 9555   
H3HHIII
^___
 !!!G#G,,D|
+,,,
>W>>???
[\\\


xyyy99<99MM 	Q7###JJOPPP")++z+7O)PXYZZ

E""";KKKK&6KKKEOVWY[jOkOku(,,-DdKKKquI6?56H6HEKK	222aME!!gb/&B&B!=F !9:z''(95[s'ttHJ\]]]]RRRR-=RRRLRRRR,=RRRKz''9T\]'^^HJbccc4801040C,-BJ--.ETRTRbRfRfgy  |A  SB  SB  NC  NC-  D  D  E  E/;+, 	QJ}~~~~JOOOPPP

++++,,,2488

YT)_YYT,EWYYZZZ

>d+;&<>>???

  L  	M  	M  	M!B



s%   A1 1
B3;-B..B32J?Q Q__main__N)r   r   r   r   )r   r   r   r$   )r   r,   )r   r5   )r   r<   )r   r$   ) 
__future__r   pathlibr   sqlite3r   jarvis_finance.config.settingsr   r   r   "jarvis_finance.dashboard.demo_datar	   jarvis_finance.dashboard.pagesr   jarvis_finance.dashboardr   rq   jarvis_finance.storage.databaser   !jarvis_finance.storage.migrationsr   r/   r3   r7   r"   r+   r1   r4   r;   rA   r   __name__r0   r#   r!   <module>r      s   " " " " " "             ] ] ] ] ] ] ] ] ] ] G G G G G G 0 0 0 0 0 0 ; ; ; ; ; ; 3 3 3 3 3 3 > > > > > >jjj  A  A  A ,6~p{||      " " " "# # # #? ? ? ?: : : :? ? ? ?D zGIIIII r#   