
    i                        d dl mZ d dlmZ d dlmZ d dlmZ d dlZd dl	m
Z
mZ h dZ ed      j                  Z ed	
       G d d             Zd dddZedd       ZddZddZddddd	 	 	 	 	 	 	 	 	 	 	 ddZy)    )annotations)	dataclass)	lru_cache)PathN)compose_assistant_promptget_assistant_profile>   eIl backend-hub centralizzera' progressivamente dati sensibili, policy operative e contesto aziendale.qInserisci qui procedure interne, policy operative, dati sensibili e contesto aziendale da esporre all'assistente. menuT)frozenc                  J    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   y	)
VenuePromptDatastr
venue_nameconceptz	list[str]service_momentsresponse_stylemenu_full_textwine_list_full_textN)__name__
__module____qualname____annotations__     -apps/backend-hub/app/services/venue_prompt.pyr   r      s$    OLr   r   flagsc                   t        j                  | ||      }|st        d|        |j                  d      j	                         S )NzPattern non trovato:    )research
ValueErrorgroupstrip)patternsourcer   matchs       r   _extract_requiredr*      sA    IIgvu-E0	:;;;;q>!!r   c                   t        |       }|j                         sy |j                  d      }	 t        d|      }t        d|t        j
                        }t        d|t        j
                        }t	        j                  d|      }t        d|t        j
                        }t        d	|t        j
                        }t        d
|t        j
                        }	t        ||||||	      S # t        $ r Y y w xY w)Nzutf-8)encodingzvenueName:\s*"([^"]+)"zconcept:\s*"([^"]+)"r   z0serviceMoments:\s*\[(.*?)\]\s*,\s*responseStyle:z	"([^"]+)"zresponseStyle:\s*"([^"]+)"z5export const MENU_FULL_TEXT = `([\s\S]*?)`\.trim\(\);z:export const WINE_LIST_FULL_TEXT = `([\s\S]*?)`\.trim\(\);)r   r   r   r   r   r   )	r   exists	read_textr*   r"   Sfindallr$   r   )
pathsource_pathr(   r   r   service_moments_blockr   r   r   r   s
             r   load_menu2_prompt_datar4   $   s    t*K""G"4F&'@&I
#$;V244P 12egmuwuyuy z**\3HI*+H&XZX\X\]*+ceksuswswx/I$$
 '%%/   s   B.C/ /	C;:C;c                .   t        |       }|y d|j                   d|j                   ddj                  |j                         d|j
                   dddd	d
dd|j                  d|j                  g}d|j                   ddj                  |       S )NzNome locale: z	Concept: zMomenti di servizio: z; zStile di risposta: zREGOLE IMPORTANTI:z[- Se il cliente chiede consigli di vino, usa solo etichette realmente presenti nella carta.z^- Se il cliente chiede un abbinamento, proponi solo piatti e vini presenti nei dati ufficiali.za- Se un vino o un piatto sembra molto raro, costoso o di disponibilita' incerta, puoi segnalarlo.zr- Tieni presente che la carta vini e' aggiornata mensilmente e alcune selezioni potrebbero non essere disponibili.zd- Per allergie o intolleranze rimanda sempre al personale di sala e non dare rassicurazioni mediche.zTRASCRIZIONE MENU UFFICIALE:z"TRASCRIZIONE CARTA VINI UFFICIALE:z'Sei l'assistente digitale Menu 2.0 per z. Devi conoscere perfettamente le proposte del locale e guidare il cliente verso la scelta migliore basandoti esclusivamente sui dati seguenti.

)r4   r   r   joinr   r   r   r   )r1   prompt_datasectionss      r   build_menu2_system_promptr:   E   s    (.K ../0
K''()
		+*E*E FGH
k889:ehk|n&"",''H$ 2+2H2H1I J88<		(8K7L	Nr   c                    d|  dS )Nz9Chiedi un consiglio su piatti, cocktail o abbinamenti di z;. L'assistente usa solo i contenuti configurati dal locale.r   )r   s    r    build_menu_assistant_descriptionr<   b   s    
CJ< PD 	Dr   r   )sales_focus	menu_textcocktail_list_textuploaded_assets_contextc                    |j                         }|j                         }g }|r|j                  d|f       |r|j                  d|f       n|j                  d       t        d| t        |            S )NzObiettivo vendita prioritarioz0Materiale del locale elaborato dai file caricati)zDati non ancora configuratizUIl menu del locale non e ancora stato caricato tramite file. Non inventare contenuti.r   )r   extra_sections)r&   appendr   tuple)r   r=   r>   r?   r@   cleaned_sales_focuscleaned_uploaded_assets_contextrB   s           r   build_menu_prompt_previewrG   i   s     &++-&=&C&C&E#,.N>@STU&QSrst  W  	X#^, r   )r'   r   r(   r   r   intreturnr   )r1   r   rI   zVenuePromptData | None)r1   r   rI   z
str | None)r   r   rI   r   )r   r   r=   r   r>   r   r?   r   r@   r   rI   r   )
__future__r   dataclassesr   	functoolsr   pathlibr   r"   shared.assistant_profilesr   r   GENERIC_OPERATIONAL_CONTEXTSbase_promptDEFAULT_MENU_BASE_PROMPTr   r*   r4   r:   r<   rG   r   r   r   <module>rR      s    " !   	 U   18DD  $   BC "  @:  #%  	
  ! 	r   