§
    fkšj½  ã                  ó²   — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
mZ  ej        d¦  «        Z G d„ d	¦  «        Zd
„ Zedk    r e¦   «          dS dS )zîHot Watcher Service for Automated UNC & Bank Statement Ingestion.

Monitors and scans the Finance/UNC-2026 directories (ACB-2026, Techcombank-2026, VPBank 2026)
to continuously ingest newly added bank statement files into the ERP system.
é    )ÚannotationsN)ÚAny)ÚBasePostgresClient)ÚHOT_WATCHER_ROOTÚUncClassifierAndRouterzdscons.banking.unc_hot_watcherc                  ó$   — e Zd ZdZd
dd„Zdd	„ZdS )ÚUncHotWatcherServicezOService to scan and ingest all bank statement files in the Hot Watcher folders.NÚpostgres_clientú
Any | NoneÚreturnÚNonec                ób   — |pt          ¦   «         | _        t          | j        ¦  «        | _        d S ©N)r   Ú_clientr   Ú_router)Úselfr
   s     úEC:\Projects\DSCons\app\modules\banking\application\unc_hot_watcher.pyÚ__init__zUncHotWatcherService.__init__   s*   € Ø&Ð>Õ*<Ñ*>Ô*>ˆŒÝ-¨d¬lÑ;Ô;ˆŒˆˆó    údict[str, Any]c                ó   — t           j                             t          ¦  «        s*t          j        t          d¬¦  «         ddt          › �dddœS d}d}d}g }t          j        t          ¦  «        D �]y\  }}}|D �]n}t           j                             |¦  «        d                              ¦   «         }	|	dvrŒ?t           j                             ||¦  «        }
t           j         	                    |¦  «         
                    ¦   «         }d	}d
|v rd
}nd|v rd}n
d|v sd|v rd}	 | j                             |
|¬¦  «        }|dz  }||                     dd¦  «        z  }||                     dd¦  «        z  }|                     |¦  «         �Œ# t          $ rN}t                                d|
|¦  «         |                     d||
t%          |¦  «        dœ¦  «         Y d	}~�Œhd	}~ww xY w�Œ{t                                d|||¦  «         d||||dœS )zFScans all subfolders in Finance/UNC-2026 and ingests new transactions.T)Úexist_okÚemptyzHot folder root created at r   )ÚstatusÚmessageÚfiles_scannedÚtransactions_ingestedé   )z.xlsxz.xlsz.pdfNÚACBÚTECHCOMÚTECHCOMBANKÚVPBANKÚVPB)Ú	file_pathÚ	bank_codeÚtotal_parsedÚnewly_savedz+Failed to process hot watcher file '%s': %sÚerror)r   Ú	file_namer$   r(   zOHot Watcher Scan Completed: %d files processed, %d txs parsed, %d new txs savedÚsuccess)r   r   r&   r'   Údetails)ÚosÚpathÚexistsr   ÚmakedirsÚwalkÚsplitextÚlowerÚjoinÚbasenameÚupperr   Úingest_statement_fileÚgetÚappendÚ	ExceptionÚloggerr(   ÚstrÚinfo)r   Útotal_filesr&   Útotal_savedr+   ÚrootÚ_ÚfilesÚfileÚextÚ	full_pathÚfolder_namer%   ÚresÚes                  r   Úscan_all_foldersz%UncHotWatcherService.scan_all_folders   sŒ  € åŒw�~Š~Õ.Ñ/Ô/ð 	ÝŒKÕ(°4Ð8Ñ8Ô8Ð8à!ØKÕ9IÐKÐKØ!"Ø)*ð	ð ð ð ˆØˆØˆØˆõ !œgÕ&6Ñ7Ô7ð  	ñ  	‰NˆD�!�UØð ñ �Ý”g×&Ò& tÑ,Ô,¨QÔ/×5Ò5Ñ7Ô7�ØÐ7Ð7Ð7ØåœGŸLšL¨¨tÑ4Ô4�	å œg×.Ò.¨tÑ4Ô4×:Ò:Ñ<Ô<�Ø �	Ø˜KÐ'Ð'Ø %�I�IØ +Ð-Ð-Ø -�I�IØ Ð,Ð,°¸Ð0DÐ0DØ (�IðØœ,×<Ò<Ø"+°yð =ñ ô �Cð   1Ñ$�KØ  C§G¢G¨N¸AÑ$>Ô$>Ñ>�LØ 3§7¢7¨=¸!Ñ#<Ô#<Ñ<�KØ—N’N 3Ñ'Ô'Ð'Ñ'øÝ ð ð ð Ý—L’LÐ!NÐPYÐ[\Ñ]Ô]Ð]Ø—N’NØ")Ø%)Ø%.Ý!$ Q¡¤ð	$ð $ñ ô ð ð ð ð ð ñ øøøøðøøøñ1õB 	�ŠØ]ØØØñ		
ô 	
ð 	
ð  Ø(Ø(Ø&Øð
ð 
ð 	
s   Ä$A(FÆ
G&ÆAG!Ç!G&r   )r
   r   r   r   )r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rH   © r   r   r	   r	      sM   € € € € € ØYÐYð<ð <ð <ð <ð <ð@
ð @
ð @
ð @
ð @
ð @
r   r	   c                 ó  — t          d¦  «         t          ¦   «         } |                      ¦   «         }t          d|d         › �¦  «         t          d|d         › �¦  «         t          d|d         › �¦  «         t          d¦  «         d S )	Nz$=== RUNNING UNC HOT WATCHER SCAN ===zFiles scanned: r   zTotal parsed transactions: r&   zNewly saved transactions: r'   z=== SCAN FINISHED ===)Úprintr	   rH   )ÚservicerF   s     r   ÚmainrQ   `   s–   € Ý	Ð
0Ñ1Ô1Ð1Ý"Ñ$Ô$€GØ
×
"Ò
"Ñ
$Ô
$€CÝ	Ð
2˜C Ô0Ð
2Ð
2Ñ3Ô3Ð3Ý	Ð
=¨¨NÔ(;Ð
=Ð
=Ñ>Ô>Ð>Ý	Ð
; s¨=Ô'9Ð
;Ð
;Ñ<Ô<Ð<Ý	Ð
!Ñ"Ô"Ð"Ð"Ð"r   Ú__main__)rL   Ú
__future__r   Úloggingr,   Útypingr   Ú&app.core.postgres.base_pkg.base_clientr   Ú9app.modules.banking.application.unc_classifier_and_routerr   r   Ú	getLoggerr:   r	   rQ   rI   rM   r   r   ú<module>rY      sú   ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð à EÐ EÐ EÐ EÐ EÐ Eðð ð ð ð ð ð ð ð
 
ˆÔ	Ð;Ñ	<Ô	<€ðG
ð G
ð G
ð G
ð G
ñ G
ô G
ð G
ðT#ð #ð #ð ˆzÒÐØ€D�F„F€F€F€Fð Ðr   