
    Zi                          d Z ddlZddlZddlmZ  ej        d          Zg dZdZdZ	dZ
 ed	
          defd            ZddededefdZdedefdZdedefdZdS )u   
ICAC v2.2 — CSV Subventions 2025
Données extraites du « Tableau des Subventions 2025.pdf »
38 associations, 80 735,50 € total attribué.

Colonnes: association, attribution_2024, demande_2025, attribution_2025, observations
    N)	lru_cachezicac.csv_subventions)()ACVG      |@r   r    )zAMICALE PERSONNEL COMMUNAL     @r   r   r   )zAMICALE DES SAPEURS POMPIERS     r@r   r   r   )z!AMICALE VETERANS SAPEURS POMPIERS     @o@     @@r	   r   )zAPE COLLEGE LE CASTELLASr
   g     @r
   r   )zASSOCIATION SPORTIVE DU COLLEGEr   r   r   r   )zBESSEGES BASKET CLUB     {@r   r   r   )zBESSEGES ET SES ARTS      i@r   r   r   )CAB     0@r   r   r   )zCENTRE SOCIAL     @r   r   r   )zCHASSE GROS GIBIERSr         y@r   r   )zCHORALE MOI JE VEUX CHANTER      @g     @r   r   )z
CLUB PHOTO      @r   r   r   )zCLUB PONGISTE     @r   r   r   )zEVEIL SPORTIF LA CANTONADEg     0p@g     @g     `i@z
7 x 29 enf)zETOILE DE BESSEGES     |@r   r   r   )FNATHr   r   r   r   )zFOYER SOCIO EDUCATIF DU COLLEGEr   r   r   r   )IRRPr   r   r   r   )zLA CHATTERIEr   r   r   r   )zLA SAINT HUBERTr   g     D@r   r   )zLES AMIS DE LA CEZE     u@r   r   r   )zLES CAUSERIES DU BORD DE CEZE        r
        b@r   )zLES CEVENNES BESSEGEOISEr        @@r   r   )zLES MAGNANARELLESr	   r
   r	   r   )zLES MARRONS GIVRES     p@r   r   r   )zLES PETITS FRIPONSg     @r   g     r@z14,50 x 77 enf)zMAISON PERSEPHONEr   r   r   r   )zMIAOU EN CEVENNESr        @r   r   )zOGEC ST JOSEPHg     d@r	   r	   r   )z
PASS'TEMPSr	   r   r   r   )zPUITS DE MEMOIREr   r   r      pas de demande cette année)z RENCONTRES CEVENOLES DE LA PHOTOg     ح@r   g     @@z
7 x 88 enf)zSPORTING CLUB PETIT VILLARDg     @     @@r   r   )	TAEKWONDOr   r         @r   )zTENNIS CLUBr    g     B@r    r   )UCBr   r   r   r   )zVIS TON SPORTr   r   r   r   )zVELO SPRINT     p@r"   r"   r   )zSALAMANDRA FESTIVALr        @r#   r   g    Н@g    @g    @   )maxsizereturnc            	          g } t           D ]#\  }}}}}|                     |||||d           $t                              dt	          |           t
          d           t          |           S )z.Retourne les subventions comme tuple de dicts.)associationattribution_2024demande_2025attribution_2025observationsu8   Subventions 2025 chargées: %d associations, total %s€,.2f)SUBVENTIONS_2025appendloginfolenTOTAL_ATTRIB_2025tuple)rowsnoma24d25a25obss         ./var/www/icac/agents_python/csv_subventions.pyload_subventionsr<   C   s     D#3  S#sC # #
 
 	 	 	 	 HHGYY,335 5 5;;    
   querymax_resultsc                   
 t                      }|sdS |                                 
t          
fddD                       }|rt          |          S h dfdt	          j        d
          D             }g }|D ]T}|d                                         t          fd|D                       }|d	k    r|                    ||f           U|                    d
 d           d |d|         D             }|st          |          S t          |           d|  dg}	|D ]$}|	                    t          |                     %d                    |	          S )uW   
    Recherche dans les subventions 2025.
    Retourne texte structuré pour Groq.
    r   c              3       K   | ]}|v V  	d S )N ).0k	query_lows     r;   	<genexpr>z%search_subventions.<locals>.<genexpr>`   s7        Q)^      r=   )listetoutestotaltableauzsubventions aux associationszsubventions municipalesu   subventions versées>      versée	   bessègesdeslesunerH   quellecombiencommunemontantbesseges
municipale
subventionr(   c                     g | ]}|v|	S rC   rC   )rD   w	stopwordss     r;   
<listcomp>z&search_subventions.<locals>.<listcomp>o   s.       I 	
r=   u'   \b[a-zàâéèêëîïôùûüç]{3,}\br(   c              3   $   K   | ]
}|v d V  dS )r$   NrC   )rD   kw
searchables     r;   rG   z%search_subventions.<locals>.<genexpr>w   s-      =="B*,<,<A,<,<,<,<==r=   r   c                     | d         S )Nr   rC   )xs    r;   <lambda>z$search_subventions.<locals>.<lambda>{   s
    qt r=   Tkeyreversec                     g | ]
}|d          S )r$   rC   )rD   rs     r;   r[   z&search_subventions.<locals>.<listcomp>|   s    
/
/
/A1Q4
/
/
/r=   Nu"    association(s) trouvée(s) pour 'z' dans les subventions 2025 :
z

)r<   lowerany_format_all_subventionsrefindallsumr/   sortr2   _format_onejoin)r?   r@   subventions
is_generalkeywordsresultssscoretoplinesrF   r^   rZ   s             @@@r;   search_subventionsrx   T   s   
 #$$K rI      .     J  4&{333  I
   :H)TT  H
 G ' '}%++--
=========199NNE1:&&&LL^^TL222
/
/+.
/
/
/C 4&{333 s88 	8 	8	8 	8 	8E  % %[^^$$$$;;ur=   rp   c                    t          | d d          }dd dt          ddd	t          ddd
t          dddt	          |            dt          t          z
  ddt          t          z
  t          z  dz  dd dg
}t          |d          D ]k\  }}|d         }|d         }||z
  }|dk    rd|ddnd}|d         rd|d          dnd}	|                    d|dd |d!         d"d#|dd$| |	 	           l|d%d&         }
t          d' |
D                       }|                    d(|d)d*|t          z  dz  d+d,           t          |
d          D ]1\  }}|                    d| d |d!          d-|d         d)d.           2d/ | D             }|rT|                    d0t	          |           d1           |D ]+}|                    d2|d!          d-|d         d)d.           ,d3 | D             }|rT|                    d4t	          |           d1           |D ]+}|                    d2|d!          d-|d         d)d5           ,d6                    |          S )7z9Format complet des subventions avec totaux et classement.c                     | d         S )Nr+   rC   )rt   s    r;   ra   z)_format_all_subventions.<locals>.<lambda>   s    A6H4I r=   Trb   u5   TABLEAU DES SUBVENTIONS 2025 — Commune de Bessègesz<Source: Tableau des Subventions 2025.pdf (document officiel)u   TOTAL attribué 2024 : >10,.2fu    €u   TOTAL demandé 2025 : u   TOTAL attribué 2025: zNombre d'associations: u   Variation 2024→2025: +,.2fu    € (d   z+.1fz%)u'   CLASSEMENT PAR MONTANT ATTRIBUÉ 2025 :r$   r+   r)   r   (   €)z(=)r,   z []r   z  z>2z. r(   z<45s     € N   c              3   &   K   | ]}|d          V  dS )r+   NrC   rD   rt   s     r;   rG   z*_format_all_subventions.<locals>.<genexpr>   s(      99qQ)*999999r=   u   
TOP 5 BÉNÉFICIAIRES (r-   u   € = z.1fz% du total) :z: u   €c                 B    g | ]}|d          dk    |d         dk    |S r)   r   r+   rC   r   s     r;   r[   z+_format_all_subventions.<locals>.<listcomp>   s9    dddq1-?+@A+E+E!L^J_bcJcJcJcJcJcr=   z
NOUVELLES SUBVENTIONS 2025 (z) :u     ■ c                 B    g | ]}|d          dk    |d         dk    |S r   rC   r   s     r;   r[   z+_format_all_subventions.<locals>.<listcomp>   s9    eeeA.@,AA,E,E!L^J_cdJdJd!JdJdJdr=   u   
SUBVENTIONS SUPPRIMÉES (u   € en 2024 → 0€
)	sortedTOTAL_ATTRIB_2024TOTAL_DEMANDE_2025r3   r2   	enumerater/   rl   ro   )rp   sorted_subsrw   irt   r9   r7   	variationvar_strr:   top5
top5_total	nouvelles
supprimeess                 r;   ri   ri      s    *I*ISWXXXK 	AGA"3AAAAA!3AAAA@!2@@@@4#k"2"244	W"36G"GT 	W 	W!226GG#MV	W 	W 	W2E +q)) 	
 	
1"#"##I	/8A~~+i+++++5+,^+<D'1^$''''"QQQQ=)QQQQQQ7QCQQ	
 	
 	
 	

 rr?D99D99999J	LL HZD H H004GH H H I I I$"" T T1R!RRq/RR15G3HRRRRSSSS edKdddI WIc)nnIIIJJJ 	W 	WALLU!M"2UUa8J6KUUUUVVVV fe[eeeJ hG3z??GGGHHH 	h 	hALLf!M"2ffa8J6Kffffgggg99Ur=   rt   c                     | d         }| d         }| d         }||z
  }|dk    rd|ddnd}| d	         rd
| d	          nd}d| d          d|dd|dd|dd| d| S )zFormat une subvention.r)   r*   r+   r   r~   r|   r   z(stable)r,   z
  Note     : r   u   ■ r(   u   
  Attribué 2024 : r{   u    €
  Demandé  2025 : u    €
  Attribué 2025 : r   z?
  Source        : Tableau Subventions 2025 (document officiel)rC   )rt   r7   r8   r9   r   r   r:   s          r;   rn   rn      s    

C
N
C

Cc	I+4>>')'''''zG34^3D
L
/An-
/
/
/"C	q 	 	!1	 	!1	 	 ";	 	 18	 	
 	 	r=   )r>   )__doc__loggingrj   	functoolsr   	getLoggerr0   r.   r   r   r3   r4   r<   strintrx   ri   dictrn   rC   r=   r;   <module>r      s"     				      g.//, , , \     1%     5 5c 5 5S 5 5 5 5p4 43 4 4 4 4n4 C      r=   