
    mRi                         d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlZd dlZ ej                  e      Z ej                   dej"                        Zdedej(                  d	efd
Zded	e	e
   fdZ G d d      Zy)    )transactionIntegrityError)CallCatchPhraseCatchPhrase)Call)ListDictNz^(Agent|User|Advisor):\s*(.+)$textpatternreturnc                 R    t        |j                  | j                                     S N)boolsearchlower)r
   r   s     I/var/www/html/dp2/backend_v2.1/server/apps/calls/services/catch_phrase.pyphrase_matchesr      s    tzz|,--    
transcriptc                    g }| j                         D ]k  }t        j                  |j                               }|s)|j	                         \  }}|j                  |j                         |j                         d       m |S )N)speakerr
   )
splitlinesSPEAKER_PATTERNmatchstripgroupsappendr   )r   segmentsliner   r   r
   s         r   parse_transcriptr       so    H%%'%%djjl3}}JJL
 	 ( Or   c                   &    e Zd Zededefd       Zy)CatchPhraseFillServicecallr   c                    t         j                  j                  |       j                         rt        j                  d       y| j                  st        j                  d       yt        j                  j                  | j                  d      }g }|D ]  }|j                  dk(  }|j                  g|j                  z   }|D cg c]a  }t        j                  |r'dt        j                  |j                                dn"t        j                  |j                                     c }}|j!                  ||f        t#        | j                        }g }	|D ]q  }
|
d	   }|
d
   |D ]`  \  }}|j$                  r||j$                  vr!t'        fd|D              s6|	j!                  t        | || j                  |dd             b s |	rH	 t)        j*                         5  t         j                  j-                  |	       d d d        t5        |	      S t5        |	      S c c}w # 1 sw Y   $xY w# t.        $ r0}t        j1                  d| j2                   d| d       Y d }~yd }~ww xY w)N)r#   zSkipping exits calls.r   zSkipping no transcript calls.T)company	is_activewordz\br   r
   c              3   6   K   | ]  }t        |        y wr   )r   ).0pr
   s     r   	<genexpr>z3CatchPhraseFillService.fill_call.<locals>.<genexpr>G   s     A1~dA.s   g      ?string)r#   phraser%   r   
confidencesourcematched_textzIntegrityError on call z: z.. Skipping conflicting phrases and continuing.)r   objectsfilterexistsloggerinfor   r   r%   
match_typer-   synonymsrecompileescaper   r   r    allowed_speakersanyr   atomicbulk_creater   warningidlen)r#   phrasesphrase_patternsr-   use_word_boundary
candidatesccompiled_patternsr   new_objectssegmentr   patternser
   s                 @r   	fill_callz CatchPhraseFillService.fill_call    sI    ""))t)4;;=KK' KK/ %%,,T\\T,RF & 1 1V ; --6??:J
 $	! $A 

7H299QWWY/03biiXYX_X_XaNb $	  ! ""F,=#>?  $DOO4Gi(G6?D$3 **wf>U>U/UAAA&&'!%#)$(LL$+'*#+)-
	 %4	  (  '')#++77D * ;s;U!B *)! -dggYb <C D s7   A&H&H7 ( H+H7 +H40H7 7	I0 &I++I0N)__name__
__module____qualname__staticmethodr   intrL    r   r   r"   r"      s"    >  >  >  > r   r"   )	django.dbr   r   apps.companies.modelsr   r   apps.calls.modelsr   typingr   r	   r8   logging	getLoggerrM   r4   r9   Ir   strPatternr   r   r    r"   rR   r   r   <module>r\      s    1 > "  	 			8	$ "**>E. .rzz .d . d A  A r   