
    io                         d Z ddlZddlZddlZddlmZ ddlmZ  ej        d          Z	 ee
          j        j        dz  dz  dz  Z ed	
          defd            ZddededefdZdS )u`  
Recherche dans le CSV local des entreprises de Bessèges.
Chargé une seule fois en mémoire au démarrage via @lru_cache.

CSV: data/documents/besseges_entreprises.csv
Colonnes: nom_entreprise, adresse_complete, codePostalEtablissement,
          libelleCommuneEtablissement, siret, enseigne1Etablissement,
          denominationUsuelleEtablissement
    N)Path)	lru_cachezicac.csv_entreprisesdata	documentszbesseges_entreprises.csv   )maxsizereturnc                  <   t           } |                                 st          t          t                    j        j        dz  dz                      d                    }|st                              d           dS |d         } t          	                    d|            g }	 t          | dd	
          5 }t          j        |          }|D ]$}|                    t          |                     %	 ddd           n# 1 swxY w Y   t          	                    dt          |          |r't          |d                                                   ng            n2# t"          $ r%}t                              d|           Y d}~nd}~ww xY wt'          |          S )um   
    Charge le CSV en mémoire une seule fois.
    Retourne un tuple de dicts (hashable pour lru_cache).
    r   r   z*.csvu   Aucun CSV entreprises trouvé r   zCSV entreprises: %sz	utf-8-sig )encodingnewlineNu)   CSV chargé: %d entreprises, colonnes: %szLecture CSV: %s)CSV_PATHexistslistr   __file__parentgloblogwarninginfoopencsv
DictReaderappenddictlenkeys	Exceptionerrortuple)csv_file
candidatesrowsfreaderrowes          ./var/www/icac/agents_python/csv_entreprises.pyload_entreprisesr*      s    H?? 	2(^^")F2[@FFwOO
 

  	KK78882a=&111D((["=== 	'^A&&F ' 'DII&&&&'	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	7II$(0Da   b	
 	
 	
 	

  ( ( (		#Q''''''''(;;s=   $E 6<C?3E ?DE DAE 
F'FF   querymax_resultsc           
      |   t                      }|sdS |                                 }h dfdt          j        d|          D             }g }|D ]k}d                    d |                                D                       t          fd|D                       }|dk    r|                    ||f           l|                    d	 d
           t                      }g }	|D ]_\  }
}|
                    dd          }||v r |                    |           |	                    |           t          |	          |k    r n`|	st                      }g }|D ][}|
                    dd          }||vr*|                    |           |                    |           t          |          dk    r n\|}	d|  dt          |           d}n%t          |	           dt          |           d|  d}|g}|	D ],}|
                    dd          p+|
                    dd          p|
                    dd          }|
                    dd          }|
                    dd          }|
                    dd          }|
                    dd          }|
                    dd          }|
                    dd          }| d| d|                     d          }|                    d|pd d| d| d |r||k    rd!| d ndz   |r||k    rd"| d ndz   d#z              .d$                    |          S )%uU   
    Recherche dans le CSV entreprises.
    Retourne texte structuré pour Groq.
    r   >      gérant	   bessèges	   sociétédesestlesquisurunedanspourquelsonttouslistequelsmairiepatronquelletoutesactivescommunequellesbessegescommerce	dirigeant
entreprisec                     g | ]}|v|	S r   r   ).0w	stopwordss     r)   
<listcomp>z&search_entreprises.<locals>.<listcomp>J   s2        I 	
     u'   \b[a-zàâéèêëîïôùûüç]{3,}\b c              3   X   K   | ]%}t          |                                          V  &d S )N)strlower)rK   vs     r)   	<genexpr>z%search_entreprises.<locals>.<genexpr>U   sA       
 
 CFFLLNN
 
 
 
 
 
rO   c              3   $   K   | ]
}|v d V  dS )r   Nr   )rK   kw
searchables     r)   rU   z%search_entreprises.<locals>.<genexpr>Z   s:       
 
Z 
 
rO   r   c                     | d         S )Nr   r   )xs    r)   <lambda>z$search_entreprises.<locals>.<lambda>d   s
    qt rO   T)keyreversesiret   u!   Aucune entreprise trouvée pour 'u   '. Échantillon des u    entreprises de Bessèges :
u!    entreprise(s) trouvée(s) parmi z pour 'z' :
nom_entreprise denominationUsuelleEtablissementenseigne1EtablissementzN/Aadresse_completecodePostalEtablissementlibelleCommuneEtablissementz, u   ■ z(nom inconnu)z
  SIRET    : z
  Adresse  : 
z  Enseigne : u     Dénomination: u      Source   : CSV local Bessègesz

)r*   rS   refindalljoinvaluessumr   sortsetgetaddr   strip)r,   r-   entreprises	query_lowkeywordsresultsr(   score
seen_sirettop_r^   seen2samplesprefixlinesnomadressecpvilleenseignedenom	addr_fullrX   rM   s                           @@r)   search_entreprisesr   7   sp   
 #$$K rI  I   :6	
 
  H G ' 'XX 
 
$%HHJJ
 
 
 
 


  
 
 
 
 
 
 
 
 
 199NNE1:&&& LL^^TL222J
C  1gr""Ju

1s88{""E #  
 	 	Agr""A~~		!a   6{{a  P P P #K 0 0P P P 	 3xx ; ;%%; ;.3; ; ; 	 HE 
 
EE"B'' 3uu7<<3uu-r22 	
 gu%%%%*E22UU,b113R885512668"==.."..u..44T::	*3)/ * *!* *%* * * 08SHOO+x++++QSU 16N%3,,,5,,,,B	P
 22	
 	
 	
 	
 ;;urO   )r+   )__doc__r   rg   loggingpathlibr   	functoolsr   	getLoggerr   r   r   r   r!   r*   rR   intr   r   rO   r)   <module>r      s     


 				             g.//4>> '&0;>A[[ 1%    Bi ic i iC i i i i i irO   