§
    ×"Ãj€  ã                  ó¶   — d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ  e	¦   «           ej        d¦  «        Zedd„¦   «         Zdd„Z e¦   «         ZdS )z"Application entrypoint for DSCons.é    )ÚannotationsN)Úasynccontextmanager)ÚFastAPI)Úconfigure_logging)Úget_settingsz
dscons.appÚappr   c               óî  K  — t          ¦   «         }t                               d|j        |j        |j        |j        |j        ¦  «         || j        _	        ddl
}g }ddlm} |                     |                      |¦   «         ¦  «        ¦  «         ddlm} |                     |                      |¦   «         ¦  «        ¦  «         ddlm}m} |                     |                      |¦   «         ¦  «        ¦  «         ddlm} |                     |                      |¦   «         ¦  «        ¦  «         ddlm}	 	 |                     |                      |	¦   «         ¦  «        ¦  «         n# t0          $ r Y nw xY wdd	lm}
 |                     |                      |
¦   «         ¦  «        ¦  «         dd
lm} |                     |                      |¦   «         ¦  «        ¦  «         ddlm} |                     |                      |¦   «         ¦  «        ¦  «         ddlm }  |¦   «         }	 ddl!m"}  ||¦  «         ddl#m$}  ||¦  «         ddl%m&}  ||¦  «         ddl'm(}  ||¦  «         ddl)m*}  ||¦  «         ddl+m,}  ||¦  «         t                               d¦  «         n4# tZ          $ r'}t           .                    d|› �¦  «         Y d}~nd}~ww xY wdW V — |D ]}| /                    ¦   «          Œ|D ]}	 |ƒ d{V —† Œ# |j0        $ r Y Œw xY w	  |¦   «          1                    ¦   «         ƒ d{V —† n# t0          $ r Y nw xY wt                               d|j        ¦  «         dS )zCWarm up lightweight application dependencies and emit startup logs.z#Starting %s v%s in %s mode on %s:%sr   N)Ústart_antigravity_daemon_loop)Ústart_autonomous_scheduler_loop)Úget_cloudflared_managerÚstart_cloudflared_monitor_loop)Ústart_crm_ai_cron_loop)Ú&start_invoice_auto_sync_scheduler_loop)Ústart_lmstudio_monitor_loop)Ústart_openrouter_cron_loop)Ústart_outbox_worker_loop)ÚBasePostgresClient)Úsetup_project_subscribers)Úsetup_invoices_subscribers)Úsetup_inventory_subscribers)Úsetup_takeoff_subscribers)Úsetup_banking_subscribers)Úsetup_partners_subscribersu[   Ä�Ã£ Ä‘Äƒng kÃ½ thÃ nh cÃ´ng táº¥t cáº£ Event Subscribers cho kiáº¿n trÃºc Modular MonolithuG   ChÆ°a thá»ƒ Ä‘Äƒng kÃ½ Subscribers (CÃ³ thá»ƒ do Ä‘ang migrate dáº§n): zShutting down %s)2r   ÚloggerÚinfoÚapp_nameÚapp_versionÚapp_envÚdscons_hostÚdscons_portÚstateÚsettingsÚasyncioÚ7app.modules.core.application.antigravity_daemon_servicer
   ÚappendÚcreate_taskÚ8app.modules.agents.application.autonomous_engine_servicer   Ú8app.modules.integrations.application.cloudflared_managerr   r   Ú(app.modules.core.application.crm_ai_cronr   ÚGapp.modules.invoices.application.invoice_processing.auto_sync_schedulerr   Ú	ExceptionÚ-app.modules.core.application.lmstudio_managerr   Ú,app.modules.core.application.openrouter_cronr   Ú'app.core.module_framework.outbox_workerr   Ú&app.core.postgres.base_pkg.base_clientr   ÚAapp.modules.financial.application.subscribers.project_subscribersr   Ú@app.modules.invoices.application.subscribers.banking_subscribersr   ÚAapp.modules.inventory.application.subscribers.takeoff_subscribersr   ÚAapp.modules.takeoff.application.subscribers.inventory_subscribersr   Ú@app.modules.banking.application.subscribers.invoices_subscribersr   ÚAapp.modules.partners.application.subscribers.invoices_subscribersr   ÚImportErrorÚwarningÚcancelÚCancelledErrorÚstop)r   r"   r#   Útasksr
   r   r   r   r   r   r   r   r   r   Ú	db_clientr   r   r   r   r   r   ÚeÚts                          úC:\Projects\DSCons\app\main.pyÚlifespanr@      sÎ  è è € õ ‰~Œ~€HÝ
‡K‚KØ-ØÔØÔØÔØÔØÔñô ð ð "€C„IÔà€N€N€Nà€EàeÐeÐeÐeÐeÐeØ	‡L‚L�×$Ò$Ð%BÐ%BÑ%DÔ%DÑEÔEÑFÔFÐFàhÐhÐhÐhÐhÐhØ	‡L‚L�×$Ò$Ð%DÐ%DÑ%FÔ%FÑGÔGÑHÔHÐHðð ð ð ð ð ð ð ð 
‡L‚L�×$Ò$Ð%CÐ%CÑ%EÔ%EÑFÔFÑGÔGÐGàOÐOÐOÐOÐOÐOØ	‡L‚L�×$Ò$Ð%;Ð%;Ñ%=Ô%=Ñ>Ô>Ñ?Ô?Ð?à~Ð~Ð~Ð~Ð~Ð~ðØ�Š�W×(Ò(Ð)OÐ)OÑ)QÔ)QÑRÔRÑSÔSÐSÐSøÝð ð ð Øˆðøøøð ZÐYÐYÐYÐYÐYØ	‡L‚L�×$Ò$Ð%@Ð%@Ñ%BÔ%BÑCÔCÑDÔDÐDàWÐWÐWÐWÐWÐWØ	‡L‚L�×$Ò$Ð%?Ð%?Ñ%AÔ%AÑBÔBÑCÔCÐCàPÐPÐPÐPÐPÐPØ	‡L‚L�×$Ò$Ð%=Ð%=Ñ%?Ô%?Ñ@Ô@ÑAÔAÐAð JÐIÐIÐIÐIÐIØ"Ð"Ñ$Ô$€IðfØoÐoÐoÐoÐoÐoØ!Ð! )Ñ,Ô,Ð,àoÐoÐoÐoÐoÐoØ"Ð" 9Ñ-Ô-Ð-àqÐqÐqÐqÐqÐqØ#Ð# IÑ.Ô.Ð.àoÐoÐoÐoÐoÐoØ!Ð! )Ñ,Ô,Ð,ànÐnÐnÐnÐnÐnØ!Ð! )Ñ,Ô,Ð,àpÐpÐpÐpÐpÐpØ"Ð" 9Ñ-Ô-Ð-å�ŠÐqÑrÔrÐrÐrøÝð fð fð fÝ�ŠÐdÐabÐdÐdÑeÔeÐeÐeÐeÐeÐeÐeøøøøðføøøð 
€E€E€E€Eàð ð ˆØ	�Š‰
Œ
ˆ
ˆ
àð ð ˆð	ØˆGˆGˆGˆGˆGˆGˆGˆGøØÔ%ð 	ð 	ð 	ØˆDð	øøøðØ%Ð%Ñ'Ô'×,Ò,Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.øÝð ð ð Øˆðøøøõ ‡K‚KÐ" HÔ$5Ñ6Ô6Ð6Ð6Ð6sO   Ä<0E- Å-
E:Å9E:È0B J1 Ê1
K"Ê;KËK"ÌLÌ
LÌLÌ""M Í
MÍMÚreturnc                 óª  ‡‡‡‡— t          ¦   «         Št          ‰j        ‰j        dddt          ¬¦  «        Šddlm}  |                      ‰¦  «         ddlm	} ddl
m} ddlm}m}m} ‰                     |¦  «         ‰                     |dd¬	¦  «         ‰                     |¦  «         dd
lm} ddlmŠmŠ 	 ddlm} n# t0          $ r d„ }Y nw xY w‰                     dd¬¦  «         ||¦  «        fdˆˆfd„¦   «         }‰                     dd¬¦  «         ||¦  «        fdˆˆfd„¦   «         }	‰                     dd¬¦  «         ||¦  «        fdˆfd„¦   «         }
 |t4          ¦  «                             ¦   «         j        dz  }‰                     d |t=          |¦  «        ¬¦  «        d¬¦  «         ddlm } ‰ !                    |¦  «         ‰S )z-Create and configure the FastAPI application.N)ÚtitleÚversionÚdocs_urlÚ	redoc_urlÚopenapi_urlr@   r   )Úregistry)ÚPath)ÚStaticFiles)ÚEnterpriseSecurityMiddlewareÚSimpleGlobalRateLimitMiddlewareÚLegacyRedirectMiddlewareé<   )Úmax_requestsÚwindow_seconds)ÚDepends)Úget_redoc_htmlÚget_swagger_ui_html)Úget_current_userc                 ó   — d S ©N© rW   ó    r?   rT   z$create_app.<locals>.get_current_user”   s   €  t trX   z/docsF)Úinclude_in_schemaÚcurrent_userÚdictc              “  ó4   •K  —  ‰d‰j         › d�d¬¦  «        S )Nú/openapi.jsonz - OpenAPI Documentationú/static/favicon.svg)rG   rC   Úswagger_favicon_url©r   )rZ   rS   r"   s    €€r?   Úget_swagger_documentationz-create_app.<locals>.get_swagger_documentation–   s6   øè è € à"Ð"Ø'ØÔ&Ð@Ð@Ð@Ø 5ð
ñ 
ô 
ð 	
rX   z/redocc              “  ó4   •K  —  ‰d‰j         › d�d¬¦  «        S )Nr]   z - ReDoc Documentationr^   )rG   rC   Úredoc_favicon_urlr`   )rZ   rR   r"   s    €€r?   Úget_redoc_documentationz+create_app.<locals>.get_redoc_documentationž   s5   øè è € àˆ~Ø'ØÔ&Ð>Ð>Ð>Ø3ð
ñ 
ô 
ð 	
rX   r]   c              “  ó0   •K  — ‰                      ¦   «         S rV   )Úopenapi)rZ   r   s    €r?   Úget_openapi_schemaz&create_app.<locals>.get_openapi_schema¦   s   øè è € à�{Š{‰}Œ}ÐrX   Ústaticz/static)Ú	directory)Úname)Úrouter)rZ   r[   )"r   r   r   r   r@   Ú"app.core.module_framework.registryrH   Údiscover_and_registerÚpathlibrI   Úfastapi.staticfilesrJ   Ú&app.api.middleware.security_middlewarerK   rL   rM   Úadd_middlewareÚfastapirQ   Úfastapi.openapi.docsrR   rS   Ú"app.modules.auth.presentation.authrT   r6   ÚgetÚ__file__ÚresolveÚparentÚmountÚstrÚapp.api.storage_routesrk   Úinclude_router)rH   rI   rJ   rK   rL   rM   rQ   rT   ra   rd   rg   Ú
static_dirÚstorage_routerr   rR   rS   r"   s                @@@@r?   Ú
create_appr   r   sì  øøøø€ õ ‰~Œ~€HÝ
ØÔØÔ$ØØØÝðñ ô €Cð <Ð;Ð;Ð;Ð;Ð;Ø×"Ò" 3Ñ'Ô'Ð'àÐÐÐÐÐØ/Ð/Ð/Ð/Ð/Ð/ð Oð  Oð  Oð  Oð  Oð  Oð  Oð  Oð  Oð  Oð ×ÒÐ3Ñ4Ô4Ð4Ø×ÒÐ6ÀRÐXZÐÑ[Ô[Ð[Ø×ÒÐ/Ñ0Ô0Ð0àÐÐÐÐÐØHÐHÐHÐHÐHÐHÐHÐHð,ØGÐGÐGÐGÐGÐGÐGøÝð ,ð ,ð ,Ø+Ð+Ð+Ð+Ð+ð,øøøð 	‡W‚WˆW¨€WÑ.Ô.Ø=D¸WÐEUÑ=VÔ=Vð 
ð 
ð 
ð 
ð 
ð 
ð 
ñ /Ô.ð
ð 	‡W‚WˆX¨€WÑ/Ô/Ø;B¸7ÐCSÑ;TÔ;Tð 
ð 
ð 
ð 
ð 
ð 
ð 
ñ 0Ô/ð
ð 	‡W‚Wˆ_°€WÑ6Ô6Ø6=°gÐ>NÑ6OÔ6Oð ð ð ð ð ð ñ 7Ô6ðð �•h‘”×'Ò'Ñ)Ô)Ô0°8Ñ;€JØ‡I‚Iˆi˜˜­s°:©¬Ð?Ñ?Ô?Àh€IÑOÔOÐOð @Ð?Ð?Ð?Ð?Ð?Ø×Ò�~Ñ&Ô&Ð&à€Js   Â9C  Ã CÃC)r   r   )rA   r   )Ú__doc__Ú
__future__r   ÚloggingÚ
contextlibr   rr   r   Úapp.core.logging_configr   Úapp.core.settingsr   Ú	getLoggerr   r@   r   r   rW   rX   r?   ú<module>r‡      sÝ   ðØ (Ð (à "Ð "Ð "Ð "Ð "Ð "à €€€Ø *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø *Ð *Ð *Ð *Ð *Ð *ð Ð Ñ Ô Ð à	ˆÔ	˜<Ñ	(Ô	(€ð ðZ7ð Z7ð Z7ñ ÔðZ7ðz?ð ?ð ?ð ?ðB €j�l„l€€€rX   