o
    pj                     @   s   d dl Z d dlZd dlZd dl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mZmZ ddlmZ ddlmZmZmZmZ zd d	lmZ W n eyZ   d
efddZY nw dddZd dlmZmZmZ deeeef  d
efddZdS )    N)AnyDictList)Path)call_app)EnvironmentFileSystemLoaderselect_autoescape   render_results_email_html)ensure_tenant_mail_pathsresolve_tenant_idsafe_storage_stem
write_json)get_mail_themereturnc                   C   s    ddddddddd	d
ddddS )NzDsystem-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serifz#020918z#071429z#122647z#0b3b73z#f5f7fbz#9ba4c4z#1fbf75z#f04444z#081937z#0d2142z#132750z#c3d1ff)
font_stackpage_bgcard_bgborder_colorbrand_color
text_colorsecondary_textsuccess_colorerror_colorstat_bgtable_header_bgtag_bgtag_text r    r    r    &apps/wp_invoices_mail_app/processor.pyr      s   r   c                 C   s  g }t |}t|}| D ]}t|trt|dkr|\}}}nt|dd}t|dd}t|dd}|du rKd}	td	|	 d
|  |d||	d qtd|  z[t	|
d}
td|iddddd||pid|
ddidd}|ddkrt|dpd|dp|dp|}t|d  t| d! |pi  d|d"|pi }|| W q ty } z8t }td#| d$|  t| t|d% t| d& |t||d' |d|t||d( W Y d}~qd}~ww |S ))u  
    Procesa una lista de adjuntos usando la app wp_invoices.

    Devuelve una lista de dicts del tipo:
      - éxito:
        {
          "ok": True,
          "filename": "...",
          "revision_pdf_path": "...",
          "extracted": {...},   # si mail_intake lo incluye
          ...
        }
      - error:
        {
          "ok": False,
          "filename": "...",
          "error": "mensaje",
          "traceback": "stack...",
        }
       filenameunnamedcontentNmimetypezapplication/octet-streamz!Adjunto sin contenido (data=None)u   🔴 z para F)okr#   erroru)   🟢 Procesando adjunto con wp_invoices: zutf-8	tenant_idwp_invoices_mail_appsystem_mail)tenantapp_iduser_idwp_invoicesprocesszapplication/pdf
tax_lookupT)r#   content_typefile_bytes_base64options)contextappactionpayloadstatusr'   messagezwp_invoices process faileddataresult	processedz.json)r'   r#   u   🔴 Error procesando adjunto z: stagingz.error.json)r#   r(   	traceback)r'   r#   r(   r?   )r   r   
isinstancetuplelengetattrprintappendbase64	b64encodedecoder   getRuntimeErrorr   r   	Exceptionr?   
format_excstr)attachmentsr5   resultsr)   tenant_pathsattr#   r;   r&   err_msgr3   gateway_resultpipeline_resultr<   etbr    r    r!   $process_attachments_with_wp_invoices&   s   rW   )r   r   r   rO   c                 C   s   t | S )z
    Wrapper para mantener compatibilidad.
    Ahora delega al motor de plantillas centralizado en renderers.py,
    que devuelve el HTML completo del correo de resultados.
    r   )rO   r    r    r!   build_email_body_for_results   s   rX   )N)osrF   r?   jsontypingr   r   r   pathlibr   bridge_platform.interapp.clientr   jinja2r   r   r	   	renderersr   storage_pathsr   r   r   r   shared.branding.brandingr   rK   dictrW   rM   rX   r    r    r    r!   <module>   s$   
q"