§
    ÔŸ’j¾  ã                  ó  — d dl mZ 	 d dlZd dlZd dlZd dlmZ d dlmZ d dlZ ej	        e
¦  «        Z ej        dd¦  «        Z ej        dd¦  «        Z ej        d	d
¦  «        Z ej        dd¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsN)Údatetime)ÚAnyÚBREVO_API_KEYzYxkeysib-62fd40cd7703d8bab006809b025fb4516719c4726af9a2e2b447889f96f3c800-fu9anSd3gwhkHthMÚBREVO_SENDER_EMAILzadmin@dinhsonconstruction.comÚBREVO_SENDER_NAMEzDSCons EnterpriseÚALERT_RECIPIENT_EMAILc                  óT   — e Zd ZdZe	 	 	 	 ddd„¦   «         Ze	 	 	 ddd„¦   «         ZdS )ÚBrevoEmailServiceuZ   Service gá»­i Email Transactional & Cáº£nh bÃ¡o Log há»‡ thá»‘ng DSCons ERP qua Brevo API.úDSCons UserNÚrecipient_emailÚstrÚsubjectÚhtml_contentÚrecipient_nameÚsender_emailú
str | NoneÚsender_nameÚattachmentsúlist[dict[str, str]] | NoneÚreturnúdict[str, Any]c              ƒ  ó  K  — |pt           |pt          dœ||dœg||dœ}|r||d<   dt          ddœ}		 t          j        d¬¦  «        4 ƒd	{V —†}
|
                     d
||	¬¦  «        ƒ d	{V —†}|j        dk    rm|                     ¦   «         }t           	                    d|| 
                    d¦  «        ¦  «         d| 
                    d¦  «        dœcd	d	d	¦  «        ƒd	{V —† S t                               d|j        |j        ¦  «         d|j        |j        dœcd	d	d	¦  «        ƒd	{V —† S # 1 ƒd	{V —†swxY w Y   d	S # t          $ r7}t                               d|¦  «         dt          |¦  «        dœcY d	}~S d	}~ww xY w)uq   Gá»­i email qua Brevo API v3.

        attachments format: [{"name": "file.pdf", "content": "<base64>"}]
        )ÚnameÚemail)r   r   )ÚsenderÚtor   ÚhtmlContentÚ
attachmentzapplication/json)Úacceptzapi-keyzcontent-typeg       @)ÚtimeoutNz#https://api.brevo.com/v3/smtp/email)ÚjsonÚheaderséÉ   z!Sent email successfully to %s: %sÚ	messageIdT)ÚsuccessÚ
message_idz,Failed to send email via Brevo: HTTP %s - %sF)r&   ÚerrorÚstatus_codez4Exception occurred while sending email via Brevo: %s)r&   r(   )r   r   r   ÚhttpxÚAsyncClientÚpostr)   r"   ÚloggerÚinfoÚgetr(   ÚtextÚ	Exceptionr   )Úclsr   r   r   r   r   r   r   Úpayloadr#   ÚclientÚresponseÚdataÚexcs                 ú0C:\Projects\DSCons\app\services\alert_service.pyÚ
send_emailzBrevoEmailService.send_email   sÅ  è è € ð" $Ð8Õ'8Ø%Ð;Õ);ðð ð -°nÐEÐEÐFØØ'ð#
ð #
ˆð ð 	0Ø$/ˆG�LÑ!ð )Ý$Ø.ð
ð 
ˆð	9ÝÔ(°Ð5Ñ5Ô5ð ð ð ð ð ð ð ¸Ø!'§¢Ø9Ø Ø#ð "-ñ "ô "ð ð ð ð ð ð �ð
 Ô'¨3Ò.Ð.Ø#Ÿ=š=™?œ?�DÝ—K’KØ;Ø'ØŸš Ñ-Ô-ñô ð ð
 (,¸4¿8º8ÀKÑ;PÔ;PÐQÐQðð ð ð ñ ô ð ð ð ð ð ð ð ð õ —’ØBØÔ(Ø”Mñô ð ð  %Ø%œ]Ø#+Ô#7ðð ð)ð ð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð øõ2 ð 	9ð 	9ð 	9Ý�LŠLÐOÐQTÑUÔUÐUØ$­s°3©x¬xÐ8Ð8Ð8Ð8Ð8Ð8Ð8Ð8øøøøð	9øøøsN   ²D? ÁBD,ÃD? Ã$5D,ÄD? Ä,
D6Ä6D? Ä9D6Ä:D? Ä?
F Å	,E;Å5F Å;F úCore ERPÚerror_titleÚ	exceptionúException | NoneÚmodule_nameÚextra_contextúdict[str, Any] | NoneÚboolc              ƒ  ó¢  K  — t          j        ¦   «                              d¦  «        }|rt          j        ¦   «         nd}d}|r7d                     d„ |                     ¦   «         D ¦   «         ¦  «        }d|› d�}d|› d|› d	|› d
|› d|› d�}	d|› d|› d�}
|                      t          |
|	dd¬¦  «        ƒ d{V —†}| 	                    dd¦  «        S )u`   Gá»­i email thÃ´ng bÃ¡o sá»± cá»‘/log lá»—i nghiÃªm trá»�ng cá»§a ERP Ä‘áº¿n Quáº£n trá»‹ viÃªn.z%d/%m/%Y %H:%M:%SzN/AÚ c              3  ó.   K  — | ]\  }}d |› d|› d�V — ŒdS )z]<tr><td style='padding: 6px 12px; border-bottom: 1px solid #334155; color: #94a3b8;'><strong>z`:</strong></td><td style='padding: 6px 12px; border-bottom: 1px solid #334155; color: #f8fafc;'>z
</td></tr>N© )Ú.0ÚkÚvs      r8   ú	<genexpr>z:BrevoEmailService.send_system_log_alert.<locals>.<genexpr>k   sa   è è € ð #ð #ñ �A�qðrÐpqð rð rØdeðrð rð rð#ð #ð #ð #ð #ð #ó    z¡
            <table style='width: 100%; border-collapse: collapse; margin-top: 12px; background: #1e293b; border-radius: 6px; font-size: 13px;'>
                z"
            </table>
            uÖ  
        <div style="background-color: #0f172a; color: #f8fafc; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; border-radius: 8px; max-width: 680px; margin: 0 auto;">
            <div style="display: flex; align-items: center; border-bottom: 1px solid #334155; padding-bottom: 16px; margin-bottom: 16px;">
                <h2 style="color: #ef4444; margin: 0; font-size: 20px;">âš ï¸� [DSCons ERP Alert] ux   </h2>
            </div>
            <p style="margin: 4px 0; color: #cbd5e1;"><strong>Thá»�i gian ghi nháº­n:</strong> u¼   </p>
            <p style="margin: 4px 0; color: #cbd5e1;"><strong>PhÃ¢n há»‡ phÃ¡t sinh:</strong> <span style="background: #334155; padding: 2px 8px; border-radius: 4px; color: #38bdf8;">z%</span></p>
            
            u•  

            <div style="background-color: #1e293b; padding: 16px; border-radius: 6px; border-left: 4px solid #ef4444; margin-top: 16px;">
                <h4 style="margin: 0 0 8px 0; color: #cbd5e1; font-size: 14px;">Chi tiáº¿t Lá»—i (Stack Trace):</h4>
                <pre style="color: #fca5a5; font-size: 12px; overflow-x: auto; white-space: pre-wrap; font-family: Consolas, monospace; margin: 0;">u[  </pre>
            </div>

            <hr style="border: none; border-top: 1px solid #334155; margin: 24px 0 16px 0;" />
            <p style="font-size: 12px; color: #64748b; margin: 0;">
                Há»‡ Thá»‘ng GiÃ¡m SÃ¡t & BÃ¡o CÃ¡o Sá»± Cá»‘ Tá»± Ä�á»™ng - CÃ´ng Ty TNHH XÃ¢y Dá»±ng Ä�á»‹nh SÆ¡n.
            </p>
        </div>
        u   ðŸš¨ [ERP ALERT] z (ú)zDSCons AdminzDSCons System Monitor)r   r   r   r   r   Nr&   F)
r   ÚnowÚstrftimeÚ	tracebackÚ
format_excÚjoinÚitemsr9   r	   r/   )r2   r;   r<   r>   r?   Útime_strÚstack_traceÚcontext_htmlÚcontext_rowsÚ	html_bodyr   Úress               r8   Úsend_system_log_alertz'BrevoEmailService.send_system_log_alert]   sr  è è € õ ”<‘>”>×*Ò*Ð+>Ñ?Ô?ˆØ09ÐD•iÔ*Ñ,Ô,Ð,¸uˆàˆØð 
	ØŸ7š7ð #ð #ð *×/Ò/Ñ1Ô1ð#ñ #ô #ñ ô ˆLð
àðð ð ˆLðð doðð ð
 aiðð ð yDðð ð ðð ð Vaðð ð ˆ	ð, A kÐ@Ð@°XÐ@Ð@Ð@ˆØ—N’NÝ1ØØ"Ø)Ø/ð #ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð �wŠw�y %Ñ(Ô(Ð(rJ   )r   NNN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )Nr:   N)
r;   r   r<   r=   r>   r   r?   r@   r   rA   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr9   rX   rE   rJ   r8   r   r      s|   € € € € € ØdÐdàð ,Ø#'Ø"&Ø37ð=9ð =9ð =9ð =9ñ „[ð=9ð~ ð '+Ø%Ø/3ð6)ð 6)ð 6)ð 6)ñ „[ð6)ð 6)ð 6)rJ   r   )Ú
__future__r   ÚloggingÚosrN   r   Útypingr   r*   Ú	getLoggerrY   r-   Úgetenvr   r   r   r	   r   rE   rJ   r8   ú<module>rd      s  ðØ "Ð "Ð "Ð "Ð "Ð "à ?à €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€à	ˆÔ	˜8Ñ	$Ô	$€à�”	ØØ_ñô €ð �R”YÐ3Ð5TÑUÔUÐ Ø�B”IÐ1Ð3FÑGÔGÐ Ø!˜œ	ØÐ<ñô Ð ð
z)ð z)ð z)ð z)ð z)ñ z)ô z)ð z)ð z)ð z)rJ   