§
    éƒtjº  ã                  ó@  — d Z ddlmZ ddlZddlmZ  ed¬¦  «         G d„ d¦  «        ¦   «         Z ej        d	ej        ¦  «        Z	 ej        d
ej        ¦  «        Z
 ej        dej        ¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        dej        ¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Zd#d„Zd$d„Zd$d„Zd%d„Zd&d"„ZdS )'u?   Exact identifier extractors â€” never use embeddings for these.é    )ÚannotationsN)Ú	dataclassT)Úfrozenc                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   dS )ÚFoundIdentifierÚstrÚid_typeÚ	value_rawÚ
value_normÚfloatÚ
confidenceN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    ú//var/www/html/CA-Chatbot/app/fdi/identifiers.pyr   r   	   s9   € € € € € € à€L€L�LØ€N€N�NØ€O€O�OØÐÐÑÐÐr   r   z4\b([0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][A-Z0-9]Z[A-Z0-9])\bz\b([A-Z]{5}[0-9]{4}[A-Z])\bz\b([A-Z]{4}0[A-Z0-9]{6})\bzU(?i)\b(?:utr|rrn|ref(?:erence)?\s*(?:no|num|number|#)?)\s*[:\-]?\s*([A-Z0-9]{8,30})\bzj(?i)\b(?:invoice\s*(?:no|num|number|#)|inv\s*(?:no|num|number|#))\s*[:\-]?\s*([A-Z0-9][A-Z0-9\-/]{3,30})\bzH(?i)\b(?:a/?c|account)\s*(?:no|num|number|#)?\s*[:\-]?\s*([0-9]{6,18})\bzP(?i)\b(?:policy)\s*(?:no|num|number|#)?\s*[:\-]?\s*([A-Z0-9][A-Z0-9\-/]{4,30})\bzV(?i)\b(?:loan)\s*(?:no|num|number|#|account)?\s*[:\-]?\s*([A-Z0-9][A-Z0-9\-/]{4,30})\bz2\b([UL][0-9]{5}[A-Z]{2}[0-9]{4}[A-Z]{3}[0-9]{6})\bzT(?i)\b(?:upi\s*(?:ref|reference|txn)|transaction\s*id)\s*[:\-]?\s*([A-Z0-9]{8,30})\bz1\b([A-Z]{4}[A-Z]{2}[A-Z0-9]{2}(?:[A-Z0-9]{3})?)\bz*\b((?:\d{4}[\s\-]?){3}\d{4}|\*{4,}\d{4})\br	   r   ÚvalueÚreturnc                ó‚   — |pd                      ¦   «                              ¦   «         }t          j        dd|¦  «        }|S )NÚ z[\s\-]+)ÚstripÚupperÚreÚsub)r	   r   Úvs      r   Únormalize_idr   0   s;   € Ø	ˆ�"×ÒÑÔ×#Ò#Ñ%Ô%€AÝ
Œˆz˜2˜qÑ!Ô!€AØ€Hr   Úboolc                óT   — t          d| ¦  «        }t          j        d|¦  «        sdS dS )NÚGSTINz.[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][A-Z0-9]Z[A-Z0-9]FT)r   r   Ú	fullmatch©r   r   s     r   Úvalidate_gstinr$   6   s0   € Ý�W˜eÑ$Ô$€AÝŒ<ÐIÈ1ÑMÔMð ØˆuØˆ4r   c                óf   — t          d| ¦  «        }t          t          j        d|¦  «        ¦  «        S )NÚPANz[A-Z]{5}[0-9]{4}[A-Z])r   r   r   r"   r#   s     r   Úvalidate_panr'   =   s,   € Ý�U˜EÑ"Ô"€AÝ•”Ð5°qÑ9Ô9Ñ:Ô:Ð:r   Útextúlist[FoundIdentifier]c           
     ó6  ‡‡— | pd} g Št          ¦   «         Šd ˆˆfd	„}t                               | ¦  «        D ]F} |d
|                     d¦  «        t	          |                     d¦  «        ¦  «        rdnd¦  «         ŒGt
                               | ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#t                               | ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#t                               | ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#t                               | ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#t                               | ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#t                               | ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#t                               | ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#t                               | ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#t                               | ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#t                               | ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#t          j        d| ¦  «        D ]"} |d|                     d¦  «        d¦  «         Œ#‰S )!z*Pull exact identifiers from document text.r   r	   r   ÚrawÚconfr   r   ÚNonec                óz  •— t          | |¦  «        }|rt          |¦  «        dk     rd S | |f}|‰v rd S | dk    rt          |¦  «        st          |d¦  «        }| dk    rt	          |¦  «        sd S ‰                     |¦  «         ‰                     t          | |                     ¦   «         ||¦  «        ¦  «         d S )Né   r!   gš™™™™™Ù?r&   )	r   Úlenr$   Úminr'   ÚaddÚappendr   r   )r	   r+   r,   ÚnormÚkeyÚfoundÚseens        €€r   r2   z extract_identifiers.<locals>.addH   sÃ   ø€ Ý˜G SÑ)Ô)ˆØð 	•s˜4‘y”y 1’}�}ØˆFØ˜ˆoˆØ�$ˆ;ˆ;ØˆFØ�gÒÐ¥n°TÑ&:Ô&:ÐÝ�t˜S‘>”>ˆDØ�eÒÐ¥L°Ñ$6Ô$6ÐØˆFØ�Š�‰ŒˆØ�Š•_ W¨c¯iªi©k¬k¸4ÀÑFÔFÑGÔGÐGÐGÐGr   r!   é   gffffffî?g      à?r&   gÍÌÌÌÌÌì?ÚIFSCgq=
×£pí?ÚCINÚUTRg333333ë?ÚUPI_REFÚ
INVOICE_NOgš™™™™™é?ÚACCOUNTÚPOLICYÚLOANg      è?ÚCARDgffffffæ?zZ(?i)\b(?:swift|bic)\s*(?:code)?\s*[:\-]?\s*([A-Z]{4}[A-Z]{2}[A-Z0-9]{2}(?:[A-Z0-9]{3})?)\bÚSWIFT)r	   r   r+   r   r,   r   r   r-   )ÚsetÚ	_GSTIN_REÚfinditerÚgroupr$   Ú_PAN_REÚ_IFSC_REÚ_CIN_REÚ_UTR_REÚ_UPI_REF_REÚ_INVOICE_REÚ_ACCOUNT_REÚ
_POLICY_REÚ_LOAN_REÚ_CARD_MASK_REr   )r(   r2   Úmr6   r7   s      @@r   Úextract_identifiersrR   B   sW  øø€ àˆ:�2€DØ#%€EÝ!$¡¤€DðHð Hð Hð Hð Hð Hð Hõ ×Ò Ñ%Ô%ð Nð NˆØˆˆG�Q—W’W˜Q‘Z”Z­¸¿ºÀ¹
¼
Ñ)CÔ)CÐ!L  ÈÑMÔMÐMÐMÝ×Ò˜dÑ#Ô#ð $ð $ˆàˆˆE�1—7’7˜1‘:”:˜sÑ#Ô#Ð#Ð#Ý×Ò˜tÑ$Ô$ð &ð &ˆØˆˆF�A—G’G˜A‘J”J Ñ%Ô%Ð%Ð%Ý×Ò˜dÑ#Ô#ð $ð $ˆØˆˆE�1—7’7˜1‘:”:˜sÑ#Ô#Ð#Ð#Ý×Ò˜dÑ#Ô#ð %ð %ˆØˆˆE�1—7’7˜1‘:”:˜tÑ$Ô$Ð$Ð$Ý×!Ò! $Ñ'Ô'ð )ð )ˆØˆˆI�q—w’w˜q‘z”z 4Ñ(Ô(Ð(Ð(Ý×!Ò! $Ñ'Ô'ð +ð +ˆØˆˆL˜!Ÿ'š' !™*œ* cÑ*Ô*Ð*Ð*Ý×!Ò! $Ñ'Ô'ð (ð (ˆØˆˆI�q—w’w˜q‘z”z 3Ñ'Ô'Ð'Ð'Ý× Ò  Ñ&Ô&ð 'ð 'ˆØˆˆH�a—g’g˜a‘j”j #Ñ&Ô&Ð&Ð&Ý×Ò˜tÑ$Ô$ð &ð &ˆØˆˆF�A—G’G˜A‘J”J Ñ%Ô%Ð%Ð%Ý×#Ò# DÑ)Ô)ð %ð %ˆØˆˆF�A—G’G˜A‘J”J Ñ$Ô$Ð$Ð$åŒ[ØeØñô ð 'ð 'ˆð 	ˆˆG�Q—W’W˜Q‘Z”Z Ñ&Ô&Ð&Ð&à€Lr   Úquestionútuple[str, str] | Nonec                óž  — | pd}dt           fdt          fdt          fdt          ffD ]C\  }}|                     |¦  «        }|r'|t          ||                     d¦  «        ¦  «        fc S ŒDt                               |¦  «        }|r%dt          d|                     d¦  «        ¦  «        fS t                               |¦  «        }|r%dt          d|                     d¦  «        ¦  «        fS t                               |¦  «        }|r%d	t          d	|                     d¦  «        ¦  «        fS t                               |¦  «        }|r%d
t          d
|                     d¦  «        ¦  «        fS t                               |¦  «        }|r%dt          d|                     d¦  «        ¦  «        fS t                               |¦  «        }|r%dt          d|                     d¦  «        ¦  «        fS t          j        d|¦  «        }|rÅt          j        dd|                     d¦  «                             ¦   «         ¦  «        }dddddddœ}||v r
||         dfS |                     d¦  «        rdS |                     d¦  «        rdS |                     d¦  «        rdS |                     d¦  «        rdS |                     d¦  «        rdS dS )zJIf the user asks for / quotes an identifier, return (id_type, value_norm).r   r!   r&   r9   r:   r8   r;   r=   r>   r?   r@   r<   zÄ(?i)\b(?:what|find|show|get|lookup|look\s*up)\b.{0,40}\b(gstin|pan|ifsc|utr|invoice\s*(?:no|number|#)?|account\s*(?:no|number)?|policy\s*(?:no|number)?|loan\s*(?:no|number)?|swift|cin|upi\s*ref)\bz\s+Ú rB   )ÚgstinÚpanÚifscÚutrÚswiftÚcinÚinvoice)r=   r   Úaccount)r>   r   Úpolicy)r?   r   Úloan)r@   r   Úupi)r<   r   N)rD   rG   rH   rI   Úsearchr   rF   rJ   rL   rM   rN   rO   rK   r   r   ÚlowerÚ
startswith)rS   Úqr	   ÚpatternrQ   ÚaskÚlabelÚmappings           r   Údetect_id_queryrj   w   sú  € àˆ�B€Að 
•)ÐØ	•ÐØ	•ÐØ	•Ðð	ð >ð >Ñˆ�ð �NŠN˜1ÑÔˆØð 	>Ø�L¨°!·'²'¸!±*´*Ñ=Ô=Ð=Ð=Ð=Ð=ð	>õ 	�Š�qÑÔ€AØð 6Ø•l 5¨!¯'ª'°!©*¬*Ñ5Ô5Ð5Ð5Ý×Ò˜1ÑÔ€AØð DØ�\¨,¸¿ºÀ¹
¼
ÑCÔCÐCÐCÝ×Ò˜1ÑÔ€AØð >Ø�, y°!·'²'¸!±*´*Ñ=Ô=Ð=Ð=Ý×Ò˜!ÑÔ€AØð <Ø� h°·²¸±
´
Ñ;Ô;Ð;Ð;Ý�Š˜ÑÔ€AØð 8Ø•| F¨A¯GªG°A©J¬JÑ7Ô7Ð7Ð7Ý×Ò˜1ÑÔ€AØð >Ø�, y°!·'²'¸!±*´*Ñ=Ô=Ð=Ð=õ Œ)ð	ð 	
ñô €Cð ð !Ý”�v˜s C§I¢I¨a¡L¤L×$6Ò$6Ñ$8Ô$8Ñ9Ô9ˆàØØØØØð
ð 
ˆð �GÐÐØ˜5”> 2Ð%Ð%Ø×Ò˜IÑ&Ô&ð 	$Ø#Ð#Ø×Ò˜IÑ&Ô&ð 	!Ø �=Ø×Ò˜HÑ%Ô%ð 	 Ø�<Ø×Ò˜FÑ#Ô#ð 	Ø�:Ø×Ò˜EÑ"Ô"ð 	!Ø �=Øˆ4r   )r	   r   r   r   r   r   )r   r   r   r   )r(   r   r   r)   )rS   r   r   rT   )Ú__doc__Ú
__future__r   r   Údataclassesr   r   ÚcompileÚ
IGNORECASErD   rG   rH   rJ   rL   rM   rN   rO   rI   rK   Ú	_SWIFT_RErP   r   r$   r'   rR   rj   r   r   r   ú<module>rq      s   ðØ EÐ Eà "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø !Ð !Ð !Ð !Ð !Ð !ð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð ˆBŒJØ;Ø„Mñô €	ð ˆ"Œ*Ð3°R´]Ñ
CÔ
C€Øˆ2Œ:Ð3°R´]ÑCÔC€Ø
ˆ"Œ*Ø\ñô €ð ˆbŒjð%ñô €ð ˆbŒjØOñô €ð ˆRŒZØWñô €
ð ˆ2Œ:Ø]ñô €ð ˆ"Œ*ÐJÈBÌMÑ
ZÔ
Z€ØˆbŒjØ[ñô €ð ˆBŒJÐKÑLÔL€	Ø�”
ÐHÑIÔI€ðð ð ð ðð ð ð ð;ð ;ð ;ð ;ð
2ð 2ð 2ð 2ðj?ð ?ð ?ð ?ð ?ð ?r   