Ë
    ÿ˜ãiýf  ã                  óì  — 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 ddlmZmZmZmZmZmZmZ dd	lmZ dd
lmZmZmZ  ej6                  d«      Z ej6                  d«      Z ej6                  d«      Z ej6                  d«      Z ej6                  d«      Z  ej6                  d«      Z! ej6                  d«      Z" ej6                  d«      Z# ej6                  d«      Z$ ej6                  d«      Z% ej6                  d«      Z& ej6                  d«      Z' ej6                  d«      Z(ejR                  Z* ej6                  d«      Z+ G d„ dejX                  «      Z-dOd„Z.dPd„Z/e0dk(  røddl1m2Z2  e2dd d!d"d#d$d%d&d'd(d) e2d*d+d,¬-«       e2d.d/d0¬-«       e2d1d2d,¬-«       e2d3d4d0¬-«       e2d5d6d,¬-«       e2d7d2d,¬-«      g e2d8d9¬:«       e2d8d;¬:«       e2d<d=¬:«       e2d<d>¬:«       e2d?d@¬:«       e2d?dA¬:«      g e2dBdC¬D«       e2dEdF¬D«       e2dBdG¬D«       e2dEdH¬D«       e2dBdI¬D«       e2dEdJ¬D«      g¬K«      Z3 e/e3«      Z4 e5dLdM«      5 Z6e6jo                  e4«       ddd«        e8dN«       yy# 1 sw Y   ŒxY w)QuH   services/report_pdf.py â€” Premium PDF report generator using ReportLab.é    )ÚannotationsN)Úcolors)ÚA4)ÚParagraphStyle)Úmm)Ú
HRFlowableÚ	ParagraphÚSimpleDocTemplateÚSpacerÚTableÚ
TableStyleÚKeepTogether)Úcanvas)Ú	TA_CENTERÚTA_LEFTÚTA_RIGHTú#C8102Ez#9E0B22z#6B0000ú#FEE8ECz#FDD0D8ú#FCF0F2ú#5C0915z#6B2233z#9E6370ú#0E7C3Aú#E8F7EEú#F5A623ú#FEF3DCz#EDD8DCc                  ó>   ‡ — e Zd Zddœˆ fd„
Zˆ fd„Zˆ fd„Zd„ Zˆ xZS )ÚBrandedCanvasúSession Report)Úreport_titlec               ó@   •— t        ‰| �  |i |¤Ž || _        d| _        y )Nr   )ÚsuperÚ__init__Ú_report_titleÚ	_page_num)Úselfr   ÚargsÚkwargsÚ	__class__s       €ún/Users/priyanka/Documents/AI_Agent_Assessment/pepole_hub_candidate/people_hub_candidate/services/report_pdf.pyr!   zBrandedCanvas.__init__"   s$   ø€ Ü‰Ñ˜$Ð) &Ò)Ø)ˆÔØˆ�ó    c                ól   •— | xj                   dz  c_         | j                  «        t        ‰| �  «        y ©Né   )r#   Ú_draw_page_chromer    ÚshowPage©r$   r'   s    €r(   r.   zBrandedCanvas.showPage'   s(   ø€ Ø�Š˜!Ñ�Ø×ÑÔ Ü‰ÑÕr)   c                ól   •— | xj                   dz  c_         | j                  «        t        ‰| �  «        y r+   )r#   r-   r    Úsaver/   s    €r(   r1   zBrandedCanvas.save,   s&   ø€ Ø�Š˜!Ñ�Ø×ÑÔ Ü‰‰�r)   c                ó\  — t         \  }}| j                  «        | j                  dd«       | j                  d«       | j	                  |dz  |dz  «       | j                  d«       | j                  ddd«       | j                  «        | j                  «        | j                  t        «       | j                  d|dt        z  z
  |dt        z  d	d¬
«       | j                  t        «       | j                  |dz  |dt        z  z
  |dz  dt        z  d	d¬
«       | j                  dd«       | j                  t        «       | j                  dt        z  |dt        z  z
  d«       | j                  dd«       | j                  t        j                   d«      «       | j                  dt        z  |dt        z  z
  d«       | j                  t        j                   d«      «       | j#                  d«       | j%                  dt        z  |dt        z  z
  dt        z  d	d¬
«       | j#                  d	«       | j                  dd«       | j                  t        «       | j                  dt        z  |dt        z  z
  d«       dt        z  }|dt        z  z
  }||z
  }| j                  dd«       | j                  t        «       | j&                  }| j)                  |dd«      |kD  r8t+        |«      dkD  r*|d d }| j)                  |dd«      |kD  rt+        |«      dkD  rŒ*|| j&                  k7  r|j-                  «       d z   }||dz  z   }| j                  ||d!t        z  z
  |«       | j                  dd«       | j                  t        j                   d«      «       | j/                  |dt        z  z
  |d!t        z  z
  d"| j0                  › �«       | j/                  |dt        z  z
  |dt        z  z
  d#«       | j                  «        | j                  «        | j                  t2        «       | j                  dd|dt        z  d	d¬
«       | j5                  t6        «       | j9                  d$«       | j;                  dt        z  dt        z  |dt        z  z
  dt        z  «       | j                  dd«       | j                  t<        «       | j                  dt        z  d%t        z  d&«       | j                  dd«       | j                  t        «       | j/                  |dt        z  z
  d%t        z  d'«       | j                  «        | j                  «        | j5                  t>        «       | j9                  d	«       | j;                  d|dt        z  z
  ||dt        z  z
  «       | j                  «        y )(NúHelvetica-Boldé0   ç=
×£p=ê?é   é#   r   zGOLS EdTeché   r,   )ÚfillÚstrokeçffffffÖ?çÍÌÌÌÌÌä?é   g      %@Ú	RolePilotÚ	Helveticaç      @z#FFCCD5g      /@z$AI Roleplay Training  |  GOLS EdTechz#FFFFFFg333333Ã?é	   ç      @gffffff$@ÚRPé>   é   ç      !@é   éÿÿÿÿu   â€¦é   zPage ÚConfidentialç      à?é   uD   Generated by RolePilot AI Agent  Â·  GOLS EdTech  Â·  golsedtech.comzPowered by OpenAI GPT-4o) r   Ú	saveStateÚsetFontÚsetFillGrayÚ	translateÚrotateÚdrawCentredStringÚrestoreStateÚsetFillColorÚRED_DEEPÚrectr   ÚREDÚWHITEÚ
drawStringr   ÚHexColorÚsetFillAlphaÚcircler"   ÚstringWidthÚlenÚrstripÚdrawRightStringr#   ÚRED_PALEÚsetStrokeColorÚBDÚsetLineWidthÚlineÚ
LIGHT_GREYÚRED_MID)r$   ÚWÚHÚ	BRAND_ENDÚPGNUM_STARTÚcentre_zone_wÚ
title_fullÚtitle_xs           r(   r-   zBrandedCanvas._draw_page_chrome1   s»  € Ü‰ˆˆ1ð 	�‰ÔØ�‰Ð% rÔ*Ø×Ñ˜ÔØ�‰�q˜1‘u˜a !™eÔ$Ø�‰�BŒØ×Ñ˜q ! ]Ô3Ø×ÑÔð 	�‰ÔØ×Ñœ(Ô#Ø�	‰	�!�Q˜œB™‘Y  2¤b¡5¨q¸ˆ	Ô;Ø×Ñœ#ÔØ�	‰	�!�d‘(˜A ¤2¡™I q¨4¡x°´B±¸QÀqˆ	ÔIð 	�‰Ð% rÔ*Ø×Ñœ%Ô Ø�‰˜œ2™˜q 4¬¡7™{¨KÔ8Ø�‰�[ #Ô&Ø×Ñœ&Ÿ/™/¨)Ó4Ô5Ø�‰˜œ2™˜q 4¬¡7™{Ð,RÔSð 	×Ñœ&Ÿ/™/¨)Ó4Ô5Ø×Ñ˜$ÔØ�‰�B”r‘E˜1˜q¤™t™8 S¬¡V°!¸AˆÔ>Ø×Ñ˜!ÔØ�‰Ð% qÔ)Ø×Ñœ%Ô Ø×Ñ˜r¤"™u a¨$¬r©'¡k°4Ô8ð œ‘Uˆ	Ø˜œB™‘YˆØ# iÑ/ˆØ�‰Ð% sÔ+Ø×Ñœ%Ô Ø×'Ñ'ˆ
à×Ñ˜zÐ+;¸SÓAÀMÒQÔVYÐZdÓVeÐhiÒViØ# C R˜ˆJð ×Ñ˜zÐ+;¸SÓAÀMÒQÔVYÐZdÓVeÐhiÓVià˜×+Ñ+Ò+Ø#×*Ñ*Ó,¨uÑ4ˆJØ˜m¨aÑ/Ñ/ˆØ×Ñ˜w¨¨B¬r©E©	°:Ô>ð 	�‰�[ !Ô$Ø×Ñœ&Ÿ/™/¨)Ó4Ô5Ø×Ñ˜Q ¤B¡™Y¨¨B¬r©E©	°U¸4¿>¹>Ð:JÐ3KÔLØ×Ñ˜Q ¤B¡™Y¨¨D´©G©°^ÔDØ×ÑÔð 	�‰ÔØ×Ñœ(Ô#Ø�	‰	�!�Q˜˜2œb™5 q°ˆ	Ô3à×ÑœBÔØ×Ñ˜#ÔØ�	‰	�"”R‘%˜œB™  B¤r¡E¡	¨2¬b©5Ô1à�‰�[ #Ô&Ø×Ñœ*Ô%Ø�‰˜œ2™˜q¤™tÐ%kÔlØ�‰Ð% sÔ+Ø×Ñœ#ÔØ×Ñ˜Q ¤B¡™Y¨¬"©Ð.HÔIØ×ÑÔð 	�‰ÔØ×ÑœGÔ$Ø×Ñ˜!ÔØ�	‰	�!�Q˜œB™‘Y  1 r¬"¡u¡9Ô-Ø×ÑÕr)   )Ú__name__Ú
__module__Ú__qualname__r!   r.   r1   r-   Ú__classcell__)r'   s   @r(   r   r   !   s   ø„ Ø+;ö ô
ô
ö
Qr)   r   c                ó  — t        d| › d�t        dddt        j                  |«      t        ¬«      «      }t        |ggdt        z  g¬«      }|j                  t        d	d
dt        j                  |«      fdddddd
dg d¢fg«      «       |S )z#Small pill badge as a 1-cell table.ú<b>ú</b>Úpillr3   r@   ©ÚfontNameÚfontSizeÚ	textColorÚ	alignmentrE   ©Ú	colWidthsÚ
BACKGROUND©r   r   ©rH   rH   )Ú
TOPPADDINGr   r€   é   )ÚBOTTOMPADDINGr   r€   r‚   ©ÚLEFTPADDINGr   r€   é   ©ÚRIGHTPADDINGr   r€   r†   ÚROUNDEDCORNERS)é   rŠ   rŠ   rŠ   )	r	   r   r   rZ   r   r   r   ÚsetStyler   )ÚtextÚbgÚfgÚpÚts        r(   Ú_pillr‘   …   s˜   € ä�C˜�v˜TÐ"¤NØÐ)°CÜ—/‘/ "Ó%´ô%ó 	€Aô 	�ˆsˆe ¤2¡˜wÔ'€AØ‡J�JŒzØ	˜˜w¬¯©¸Ó(;Ð<Ø*Ø*Ø*Ø*Ø	˜5 ª)Ð4ðó ô ð €Hr)   c                ó|  ‡ ‡/— t        j                  «       }t        |t        dt        z  dt        z  dt        z  dt        z  ¬«      }t        d   dt        z  z
  Š/d„ }d„ }d	t
        fd
„}d§ˆ/fd„}g }|j                  t        ddt        z  «      «       |j                   |d«      «       |j                  t        ‰ j                  t        dddt        d¬«      «      «       |j                  t        ‰/dt        d¬«      «       d„ } |d‰ j                  «       |d‰ j                  «      z    |d‰ j                  «       |d‰ j                   «      z    |d‰ j"                  j%                  «       «       |d‰ j&                  dz  › d‰ j&                  dz  › d �«      z    |d!t)        ‰ j*                  «      «       |d"‰ j,                  d d# «      z   g}	‰/d$z  }
t/        |	|
d%z  |
d&z  |
d%z  |
d&z  g¬'«      }|j1                  t3        d(d)d*d+d,d-d.d/d0t4        t6        gfd1d/d0d2t8        fd3d/d0d4t8        fg	«      «       |j                  |«       |j                  t        ddt        z  «      «       ‰ j:                  d5k\  rt<        n‰ j:                  dk\  rt>        nt        }‰ j:                  d5k\  rd6n‰ j:                  dk\  rd7nd8}‰ j@                  d9k(  rd:nd;}‰ j@                  d9k(  rd<nd=}‰ j@                  d9k(  rd6nd8}‰ j@                  d9k(  rd>nd?}t        d@|› dA‰ j:                  dB›dC�t        dDddtB        ¬E«      «      }t/        t        dF|› dA|› dG�t        dHdId#tE        jF                  |«      tB        ¬J«      «      ggdKt        z  g¬'«      }|j1                  t3        dLd/d0tE        jF                  |«      fdMdNd1d/d0dOtE        jF                  |«      fg«      «       t        dPt        dQdId5tH        tB        dR¬S«      «      }t/        ||gg‰/dTz  ‰/dUz  g¬'«      }|j1                  t3        d)dVdLd/dWt4        fd1d/d0d2t8        fd3d/d0d4t8        fdMdNg«      «       |j                  tK         |dX«      t        dd«      |g«      «       |j                  t        ddt        z  «      «       t        dYt        dZdId[t6        ¬\«      «      t        d]t        d^dId[t6        tB        ¬J«      «      t        d_t        d`dId[t6        tB        ¬J«      «      t        dat        dbdId[t6        ¬\«      «      gg}‰ jL                  D �]$  }|jN                  dck(  rdd\  }}}n|jN                  dek(  rdf\  }}}ndg\  }}}tQ        |jR                  dR«      }t/        dhgg|diz  t        z  dt        z  k  r|diz  t        z  ndt        z  g¬'«      }|j1                  t3        dLd/d0tE        jF                  |«      fd*d+g«      «       t/        dhggtQ        dt        z  |diz  t        z  z
  d2t        z  «      g¬'«      }|j1                  t3        dLd/d0t8        fd*d+g«      «       |j                  t        |jT                  t        djdd[t
        ¬\«      «      t        dk|jR                  › dl�t        dmdId[tE        jF                  |«      tB        ¬J«      «      t        dk|jN                  j%                  «       › dn�t        dodIdptE        jF                  |«      tB        ¬J«      «      t/        ||ggtW        |diz  t        z  dt        z  «      tQ        dt        z  |diz  t        z  z
  d2t        z  «      g¬'«      g«       �Œ' ‰/dqz  ‰/drz  ‰/dsz  ‰/dtz  g}t/        ||¬'«      }|j1                  t3        dLd/dutX        fdvd/dut6        fdwdxd.dyd0t4        t6        gfd)dzd1d/d0d2t8        fd3d/d0d4t8        fd{d|d,d-g«      «       |j                  tK         |d}«      t        dd«      |g«      «       |j                  t        ddt        z  «      «       t        d~t        ddId[t6        ¬\«      «      t        d€t        d�dId[t6        ¬\«      «      gg} ‰ jZ                  D ]   }!|!j\                  d‚k(  rdƒ\  }"}#}$n|!j\                  d„k(  rd…\  }"}#}$nd†\  }"}#}$| j                  t        dk|$› dn�t        d‡dIdptE        jF                  |#«      tB        ¬J«      «      t        |!j^                  t        dˆdd[t
        d‰¬Š«      «      g«       Œ¢ t/        | ‰/d‹z  ‰/dŒz  g¬'«      }%|%j1                  t3        dLd/dutX        fdvd/dut6        fd.dyd0t4        t6        gfd)d�d1d/d0d2t8        fd3d/d0d4t8        fdŽd�d,d-g«      «       |j                  tK         |d�«      t        dd«      |%g«      «       |j                  t        ddt        z  «      «       t        d‘t        d’dId[t6        ¬\«      «      t        d“t        d”dId[t6        ¬\«      «      gg}&‰ j`                  D ]Ì  }'|'jb                  d•v rŒ|'jd                  d–k(  }(|(rd—nd˜})|(rd=n%tg        t4        d™«      rt4        ji                  «       ndš}*|(rd8nd›}+|(rdœnt6        },|&j                  t        dk|)› dn�t        d�dIdptE        jF                  |+«      tB        ¬J«      «      t        |'jb                  t        dždd[t
        dŸ¬Š«      «      g«       ŒÎ t/        |&‰/d z  ‰/d¡z  g¬'«      }-|-j1                  t3        dLd/dutX        fdvd/dut6        fd.dyd0t4        t6        gfd¢d£d1d/d0d2t8        fd3d/d0d4t8        fdŽd�d,d-g«      «       |j                   |d¤«      «       |j                  t        dd«      «       |j                  |-«       |j                  t        ddpt        z  «      «       ˆ fd¥„}.|jk                  ||.¬¦«       |jm                  «       S )¨Né   é   r8   )ÚpagesizeÚ	topMarginÚbottomMarginÚ
leftMarginÚrightMarginr   é$   c                ó@   — t        | t        dddt        dd¬«      «      S )NÚH1r3   r”   r6   r   ©rx   ry   rz   Ú
spaceAfterÚspaceBefore)r	   r   ÚNAVY©Útxts    r(   rœ   zgenerate_pdf.<locals>.H1¥   s'   € Ü˜œnØÐ+°bÜ q°aô
ó ð 	r)   c                ó@   — t        | t        dddt        dd¬«      «      S )NÚH2r3   é
   r   rG   r�   )r	   r   rX   r¡   s    r(   r¤   zgenerate_pdf.<locals>.H2«   s'   € Ü˜œnØÐ+°bÜ¨°qô
ó ð 	r)   Fc           
     ó>   — t        | t        d|rdndd|d¬«      «      S )NÚbodyr3   r?   rF   r=   ©rx   ry   rz   Úleading)r	   r   )r¢   ÚboldÚcolors      r(   r§   zgenerate_pdf.<locals>.body±   s)   € Ü˜œnØ±Ñ-¸;Ø E°2ô
ó ð 	r)   c                óº   •— t        d| › d�t        dddt        dd¬«      «      }t        |gg‰g¬«      }|j	                  t        d	d
dt        fdddg«      «       |S )z'Red banner row used as a section title.rt   ru   Úshr3   g      #@r   )rx   ry   rz   rŸ   rž   r|   r~   r   r€   ©r�   r   r€   rL   ©rƒ   r   r€   rL   )r…   r   r€   rG   )r	   r   rX   r   r‹   r   ÚRED_DARK)Útitler�   r�   rh   s      €r(   Úsection_headerz$generate_pdf.<locals>.section_header·   sv   ø€ ä˜˜E˜7 $Ð'¬ØÐ+°cÜ¨°qô*
ó ˆô �A�3�% A 3Ô'ˆØ	�
‰
”:Ø˜e G¬XÐ6Ø/Ø/Ø/ð	
ó ô 	ð ˆr)   r,   r‚   r   Úsubr?   rI   rL   )rx   ry   rz   rž   g      ø?r†   )ÚwidthÚ	thicknessr«   rž   c           
     óˆ   — t        | t        dddt        ¬«      «      t        t        |«      t        dddt        ¬«      «      gS )NÚkr3   rG   ©rx   ry   rz   Úvr?   )r	   r   r    ÚstrÚGREY)r·   r¹   s     r(   Úkvzgenerate_pdf.<locals>.kv×   sG   € ä�aœ¨Ð6FÐQRÜ26ô8ó 9ä”c˜!“fœn¨S¸;ÐQRÜ7;ô=ó >ð
ð 	
r)   zLearner RolezAI CharacterÚ
DifficultyÚLanguageÚModeÚDurationé<   zm ÚsÚTurnsÚ	Generatedr¥   rŠ   gš™™™™™á?gffffffî?r|   )ÚFONTSIZEr   r€   rG   )ÚVALIGNr   r€   ÚMIDDLE)r�   r   r€   rŠ   )rƒ   r   r€   rŠ   r„   r‡   ÚROWBACKGROUNDSr   r€   ÚBOXrK   Ú	INNERGRIDg333333Ó?é   r   r   r   ÚpassÚPASSzNEEDS IMPROVEMENTr   r   ÚPassedz
Needs Workz<font size="36" color="z"><b>z.1fz6</b></font><font size="14" color="#9E6370"> /10</font>Úsc)rx   ry   r{   z<font color="z</b></font>Úvtr3   rw   é7   r~   )r�   r   r€   r¥   )rƒ   r   r€   r¥   gš™™™™™é?zOVERALL SCOREÚslr6   )rx   ry   rz   r{   rŸ   r;   r<   )ÚALIGNr   r€   ÚCENTER©r   rH   zOverall Scorez<b>Dimension</b>ÚdhrF   r¸   z<b>Score</b>Údh2z<b>Level</b>Údh3z<b>Progress</b>Údh4Úhigh)r   r   r   Úmid)r   ú#B45309r   )r   r   r   Ú g333333ã?Údnrt   z%</b>Údsru   ÚdlrG   gR¸…ëQØ?g¸…ëQ¸¾?g¤p=
×£À?g®Gáz®×?©rH   r   Ú	TEXTCOLOR)ÚFONTNAMEr   rá   r3   )rÅ   r   r€   rF   ©r   r,   )rÓ   )r,   r   )r6   rH   rÔ   r®   r¯   zPerformance Dimensionsz<b>Type</b>Úfbhz<b>Feedback</b>Úfbh2Ústrength)r   r   ÚStrengthÚweakness)r   r   ÚWeakness)r   rÜ   Ú
SuggestionÚftÚfbé   r¨   g
×£p=
Ç?r5   )rÓ   rä   rÕ   rÔ   )r�   r   r€   r†   )rƒ   r   r€   r†   zCoaching Feedbackz<b>Speaker</b>Útrhz<b>Message</b>Útrh2)ú[session_start]z[session_end]ÚuserÚLearnerÚAIÚhexvalr   r   z#FFFAFAÚtrlÚtrcr=   gìQ¸…ëÁ?g…ëQ¸…ë?)rÆ   r   r€   ÚTOP)rÓ   r   rÕ   rÔ   zConversation Transcriptc                 ó2   •— t        | d‰j                  i|¤ŽS )Nr   )r   Úscenario_title)r%   r&   Úreports     €r(   Úmake_canvasz!generate_pdf.<locals>.make_canvasÛ  s   ø€ Ü˜dÐQ°×1FÑ1FÐQÈ&ÑQÐQr)   )Úcanvasmaker)r±   rº   Úreturnr   )7ÚioÚBytesIOr
   r   r   r»   Úappendr   r	   rú   r   rW   r   Úlearner_roleÚai_characterÚ
difficultyÚlanguageÚmoder±   Úduration_secondsrº   Úturns_completedÚgenerated_atr   r‹   r   ra   rX   rc   Úoverall_scoreÚGREENÚGOLDÚverdictr   r   rZ   rf   r   Ú
dimensionsÚlevelÚmaxÚscoreÚnameÚminr°   ÚfeedbackÚtyperŒ   Ú
transcriptÚcontentÚroleÚhasattrrõ   ÚbuildÚgetvalue)0rû   ÚbufÚdocrœ   r¤   r§   r²   Ústoryr¼   Ú	meta_dataÚcolÚmtÚscore_colorÚ	score_hexÚverdict_txtÚ
verdict_bgÚ
verdict_fgÚverdict_iconÚ
score_cellÚverdict_cellÚscore_labelÚscore_blockÚdim_rowsÚdÚlvl_bgÚlvl_fgÚ	bar_colorÚpctÚ
bar_filledÚ	bar_emptyÚdim_colÚdtÚfb_rowsÚitemÚtype_bgÚtype_fgÚiconÚfbtÚtr_rowsÚmsgÚ
is_learnerÚ
role_labelÚrole_bgÚrole_fgÚrow_bgÚtrtrü   rh   s0   `                                              @r(   Úgenerate_pdfrD  —   s  ù€ Ü
�*‰*‹,€Cä
Ø”bØ”R‘%Øœ‘UØ”b‘5Ø”r‘Eô€Cô 	ˆ1‰�”2‘‰€Aòòð ¤Dó õð €Eð
 
‡L�L”˜˜1œR™4“Ô!Ø	‡L�L‘�nÓ&Ô'Ø	‡L�L”Ø×ÑÜ�u {¸RÜ!$°ô	4óô ð
 
‡L�L” !¨s¼#È!ÔLÔMò

ñ 	ˆ>˜F×/Ñ/Ó0Ù
ˆ>˜F×/Ñ/Ó0ñ	1ñ 	ˆ<˜F×-Ñ-Ó.Ù
ˆ:˜FŸO™OÓ,ñ	-ñ 	ˆ6˜FŸK™K×-Ñ-Ó/Ó0Ù
ˆ:˜v×6Ñ6¸"Ñ<Ð=¸RÀ×@WÑ@WÐZ\Ñ@\Ð?]Ð]^Ð_Ó`ñ	añ 	ˆ7œC × 6Ñ 6Ó7Ó8Ù
ˆ;˜F×/Ñ/°°Ð4Ó5ñ	6ð€Ið ˆa‰%€CÜ	ˆy S¨¡X¨s°4©x¸¸T¹À3ÀtÁ8Ð$LÔ	M€BØ‡K�K”
Ø,Ø3Ø,Ø,Ø,Ø,Ø	˜5 ¬8´UÐ*;Ð<Ø	˜5 ¨#¬rÐ2Ø	˜5 ¨#¬rÐ2ð
ó 
ô 
ð 
‡L�L�ÔØ	‡L�L”˜˜1œR™4“Ô!ð
 $×1Ñ1°QÒ6•EÀF×DXÑDXÐ\]ÒD]½DÔcf€KØ!'×!5Ñ!5¸Ò!:‘IÈV×MaÑMaÐefÒMfÁ	Ðlu€IØ$Ÿn™n°Ò6‘FÐ<O€KØ!'§¡°6Ò!9‘I¸y€JØ!'§¡°6Ò!9‘I¸y€JØ &§¡°&Ò 8‘H¸l€LäØ
! ) ¨E°&×2FÑ2FÀsÐ1Kð L6ð 	7ä�t k¸BÌ)ÔTó€Jô
 ÜØ˜J˜< u¨[¨M¸ÐEÜ˜4Ð*:ÀRÜ%+§_¡_°ZÓ%@ÌIôWó	
ðð ð ”b‘5�'ô€Lð ×Ñœ*Ø	˜% ¬¯©¸Ó)DÐEØ,Ø,Ø	˜% ¨¬f¯o©o¸jÓ.IÐJð	&ó ô ô ˜O¬^ØÐ'°!¼zÜ¨ô.ó €Kô
 Ø
�lÐ	#Ð$Ø�t‘8˜Q ™XÐ&ô€Kð ×ÑœØ2Ø2Ø	˜% ¬Ð2Ø	˜% ¨¬bÐ1Ø	˜% ¨¬bÐ1Ø,Ø,ð%ó ô ð 
‡L�L”™~¨oÓ>ÄÀqÈÃÈ[ÐYÓZÔ[Ø	‡L�L”˜˜1œR™4“Ô!ô 	Ð$¤n°TÐDTØ?BÌeô'Uó 	Vä�.¤n°UÐEUØ?BÌeÜ@Iô'Kó 	Lô 	�.¤n°UÐEUØ?BÌeÜ@Iô'Kó 	Lô 	Ð#¤n°UÐEUØ?BÌeô'Uó 	Vðð €Hð ×ÕˆØ�7‰7�fÒØ(GÑ%ˆF�F™IØ�W‰W˜ÒØ(GÑ%ˆF�F™Ià(GÑ%ˆF�F˜Iô �!—'‘'˜1‹oˆÜ˜R˜D˜6ÀÀcÁ	ÌBÁÐQSÔTVÑQVÒ@V¨c°C©i¼"ªnÐ\^Ô_aÑ\aÐ-bÔcˆ
Ø×ÑœJØ˜e G¬V¯_©_¸YÓ-GÐHØ/Ø/ð(
ó ô 	ô
 ˜B˜4˜&¬S°´B±¸¸s¹ÄR¹Ñ1GÈÌRÉÓ-PÐ,QÔRˆ	Ø×Ñœ:Ø˜E '¬2Ð.Ø-Ø.ð'
ó ô 	ð 	�‰Ü�a—f‘fœn¨T¸KÐRUÔaeÔfÓgÜ˜˜AŸG™G˜9 EÐ*¬N¸4ÐJZØFIÔU[×UdÑUdÐekÓUlÜGPô-Ró Sô ˜˜AŸG™GŸM™M›OÐ,¨DÐ1´>À$ÐQaØMNÔZ`×ZiÑZiÐjpÓZqÜNWô4Yó Zô �J 	Ð*Ð+Ü�C˜#‘I¤‘N B¤r¡EÓ*Ü�B”r‘E˜C #™I¬™NÑ*¨C´©FÓ3ð8ô ð
ö 	ð/ ðJ �‰v�q˜‘v˜q ™v q¨¡vÐ.€GÜ	ˆx 7Ô	+€BØ‡K�K”
Ø	˜% ¬Ð2Ø	˜% ¬Ð/Ø:Ø-Ø	˜% ¬(´EÐ):Ð;Ø2Ø2Ø	˜% ¨¬bÐ1Ø	˜% ¨¬bÐ1Ø+Ø+Ø+Ø+ðó ô ð  
‡L�L”™~Ð.FÓGÌÐPQÐRSËÐVXÐYÓZÔ[Ø	‡L�L”˜˜1œR™4“Ô!ô 	�-¤°Ð@PØ:=Ìô"Pó 	QäÐ#¤^°FÐEUØ>AÌUô&Tó 	Uðð €Gð —”ˆØ�9‰9˜
Ò"Ø%EÑ"ˆG�W™dØ�Y‰Y˜*Ò$Ø%EÑ"ˆG�W™dà%GÑ"ˆG�W˜dà�‰Ü˜˜D˜6 Ð&¬°tÐFVØABÌfÏoÉoÐ^eÓNfÜBKô)Mó Nô �d—i‘i¤°¸{ÐUXÜ:>Èô"Ló Mð	
õ 	ð  ô  � A d¡F¨A¨d©FÐ#3Ô
4€CØ‡L�L”Ø	˜% ¬Ð2Ø	˜% ¬Ð/Ø	˜% ¬(´EÐ):Ð;Ø2Ø2Ø	˜% ¨¬bÐ1Ø	˜% ¨¬bÐ1Ø+Ø+Ø+Ø+ðó ô ð 
‡L�L”™~Ð.AÓBÄFÈ1ÈQÃKÐQTÐUÓVÔWØ	‡L�L”˜˜1œR™4“Ô!ô 	Ð"¤N°5ÐCSØ=@ÌEô%Só 	TäÐ"¤N°6ÐDTØ=@ÌEô%Só 	Tðð €Gð × Ô ˆØ�;‰;Ð>Ñ>ØØ—X‘X Ñ'ˆ
Ù",‘Y°$ˆ
Ù",‘YÄwÌxÐX`ÔGa´(·/±/Ô2CÐgpˆÙ",‘Y°)ˆÙ",‘Y´%ˆà�‰Ü˜˜J˜< tÐ,¬nØÐ 0¸1Ü Ÿ/™/¨'Ó2¼iô/ó ô �c—k‘k¤>Ø °cÜ¨ô$ó ð	
õ 		ð !ô( � A d¡F¨A¨d©FÐ#3Ô
4€CØ‡L�L”Ø	˜% ¬Ð2Ø	˜% ¬Ð/Ø	˜% ¬(´EÐ):Ð;Ø/Ø2Ø	˜% ¨¬bÐ1Ø	˜% ¨¬bÐ1Ø+Ø+Ø+Ø+ðó ô ð 
‡L�L‘Ð 9Ó:Ô;Ø	‡L�L”˜˜1“ÔØ	‡L�L�ÔØ	‡L�L”˜˜1œR™4“Ô!ô
Rð ‡I�Iˆe €IÔ-Ø�<‰<‹>Ðr)   Ú__main__)ÚSimpleNamespacez0Soothing an Angry Customer Over Delayed DeliveryzCustomer Service RepresentativezEmma Johnson, Upset ClientÚIntermediateÚEnglishÚvoicei  rŠ   z2026-04-18T14:30:00ZrB   Úneeds_improvementzDe-escalationé(   Úlow)r  r  r  zEmpathy & Active Listeningé2   rÛ   zCommunication Clarityé   zCompliance & ProfessionalismrÁ   ÚAssertivenessé   zProblem Resolutionrç   zBThe learner attempted to apologize, showing some level of empathy.)r  rŒ   zFThe learner maintained a professional tone throughout the interaction.ré   zQThe learner failed to provide specific information or a timeline to the customer.z[The learner's responses were vague and did not address the customer's concerns effectively.Ú
suggestionzXProvide clear and specific information about the steps being taken to resolve the issue.zSImprove active listening skills to better understand and address customer concerns.rò   rñ   )r  r  Ú	assistantzäI've been waiting to hear back about the delay in my shipment, and honestly, it's frustrating not to have any follow-up. This is an important delivery for my business, and I need to know what went wrong and when I can expect it.z±Yeah I've been waiting for here to back about the delay in my shipment and honestly you are frustrated I apologize for that so just allow me some time I'll get back to you soon.zæI appreciate the apology, but I've already been waiting without any updates. I need more than just another promise to get back to me. What specific steps are you taking to resolve this, and when can I expect my shipment to arrive?zeYeah hi but your shipping will be immediately it will come to your place no need to worry about this.zÌI understand you're trying to help, but I need more than reassurance. I need a specific timeline and details on how you're ensuring this won't happen again. Can you provide me with a clear update, please?)rú   r  r  r  r  r  r  r  r	  r
  r  r  r  r  z(/mnt/user-data/outputs/report_sample.pdfÚwbu"   Done â€” report_sample.pdf written)rŒ   rº   r�   rº   rŽ   rº   rþ   r   )rþ   Úbytes)9Ú__doc__Ú
__future__r   rÿ   Úreportlab.libr   Úreportlab.lib.pagesizesr   Úreportlab.lib.stylesr   Úreportlab.lib.unitsr   Úreportlab.platypusr   r	   r
   r   r   r   r   Úreportlab.pdfgenr   Ú	rl_canvasÚreportlab.lib.enumsr   r   r   rZ   rW   r°   rU   Ú	RED_LIGHTrg   ra   r    r»   rf   r  ÚGREEN_LTr  ÚGOLD_LTÚwhiterX   rc   ÚCanvasr   r‘   rD  ro   ÚtypesrF  rû   Ú	pdf_bytesÚopenÚfÚwriteÚprint© r)   r(   Ú<module>rk     sÜ  ðÙ NÝ "Û 	Ý  Ý &Ý /Ý "÷÷ ñ õ 1ß <Ñ <ð ˆF�O‰O˜IÓ&€ØˆF�O‰O˜IÓ&€ØˆF�O‰O˜IÓ&€ØˆF�O‰O˜IÓ&€	ØˆF�O‰O˜IÓ&€ØˆF�O‰O˜IÓ&€ØˆF�O‰O˜IÓ&€ØˆF�O‰O˜IÓ&€ØˆF�O‰O˜IÓ&€
ØˆF�O‰O˜IÓ&€ØˆF�O‰O˜IÓ&€ØˆF�O‰O˜IÓ&€ØˆF�O‰O˜IÓ&€Ø�L‰L€ØˆF�O‰O˜IÓ&€ôa�I×$Ñ$ô aóHó$HðX
 ˆzÒÝ%áØIØ6Ø1Ø!ØØØØØ+ØØ#á ÀRÈuÔUÙÐ!=ÀbÐPUÔVÙÐ!8ÀbÐPUÔVÙÐ!?ÀbÐPUÔVÙ ÀbÐPUÔVÙÐ!5ÀbÐPUÔVð
ñ  Ð4xÔyÙ Ð4|Ô}Ù ð  5Hô  IÙ ð  5Rô  SÙ ð  5Oô  PÙ ð  5Jô  Kð
ñ  Ð6GÔHÙ ð  7]ô  ^Ù ð  7jô  kÙ ð  7_ô  `Ù ð  7^ô  _Ù ð  7Eô  Fð
ô9$€FñL ˜VÓ$€IÙ	Ð8¸$Ô	?À1Ø	�‰�	Ô÷ 
@á	Ð
.Õ/ðY ÷T 
@Ð	?ús   ÉI*É*I3