o
    ô"”iî  ã                
   @   sR   d dl mZ d dlmZ eG dd„ dƒƒZddedee ded	ee fd
d„ZdS )é    )Ú	dataclass)Údatetimec                   @   s:   e Zd ZU eed< eed< eed< edB ed< eed< dS )ÚChunkÚchunk_idÚspeakerÚtextNÚ	timestampÚidx)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   Úint© r   r   ú?/home/aiteam/pcaa-dev/ai-call-quality-rag/app/utils/chunking.pyr      s   
 r   é„  Úcall_idÚturnsÚ	max_charsÚreturnc           	         sÊ   g ‰|sˆS |d   dd¡‰g ‰|d   d¡‰d‰‡ ‡‡‡‡‡fdd„}|D ]9}|  dd¡}|  d¡p4d ¡ }|  d¡}|s?q&d	 ˆ|g ¡ ¡ }|ˆksSt|ƒ|krZ|ƒ  |‰|‰ˆ |¡ q&|ƒ  ˆS )
Nr   r   Úunknownr   c               	      sN   d  dd„ ˆD ƒ¡ ¡ } | r#ˆ tˆ › dˆ› ˆ| ˆˆd¡ ˆd7 ‰g ‰d S )Nú c                 S   s    g | ]}|r|  ¡ r|  ¡ ‘qS r   )Ústrip)Ú.0Útr   r   r   Ú
<listcomp>   s     zBsemantic_chunk_by_speaker_turns.<locals>.flush.<locals>.<listcomp>z-chunk-)r   r   r   r   r	   é   )Újoinr   Úappendr   )r   ©r   Ú	chunk_idxÚchunksÚcurrent_speakerÚcurrent_textÚ
current_tsr   r   Úflush   s   ûÿ	z.semantic_chunk_by_speaker_turns.<locals>.flushr   Ú r   )Úgetr   r   Úlenr   )	r   r   r   r&   Úturnr   r   ÚtsÚ	projectedr   r    r   Úsemantic_chunk_by_speaker_turns   s,   
r-   N)r   )	Údataclassesr   r   r   r   ÚlistÚdictr   r-   r   r   r   r   Ú<module>   s
    (