🔑 Cle API Anthropic

Configuree sk-ant-a...OQAA

🎯 Seuil de Detection

Score minimum pour qu'un email soit classifie comme reservation.

0.40
0.00 (tout accepter) 1.00 (tres strict)

⚖ Poids de Scoring

Importance relative de chaque critere dans le calcul du score de detection.

Somme des poids : --

🚫 Blacklist Sujets

Patterns de sujet a exclure de la detection (un par ligne, expressions regulieres).

28 patterns actifs

🌐 Domaines Expediteurs

Domaines email connus des OTAs et plateformes de reservation (un par ligne).

36 domaines actifs

📌 Patterns de Statut (4 categories)

Expressions regulieres pour detecter le statut de la reservation dans le sujet/corps de l'email. Ces patterns sont en lecture seule (modifiables dans agent/constants.py).

cancelled
(?:réservation|reservation)\s+(?:annulée|cancelled|canceled)
Cancellation\s*[—–\-]
Cancel\s+(?:Accommodation\s+)?Booking
modified
(?:réservation|reservation)\s+(?:modifiée|modified|amended)
Booking\s+modification
cancel_request
annulation\s+sans\s+frais
(?:client|guest)\s+(?:voudrait|wants?)\s+(?:une\s+)?(?:annulation|cancel)
demande\s+d'annulation
guest_message
nous a envoyé ce message
(?:We\s+)?received this message from
(?:client|guest)\s+(?:a besoin|needs something)
demande de .+ a été confirmée
📝 Patterns du Corps (21 champs)

Expressions regulieres pour extraire les champs de reservation du corps de l'email. Ces patterns sont en lecture seule (modifiables dans agent/constants.py).

check_in
Arrival\s+date\s*:\s*\n\s*(.+?)(?:\n|$)
Arrival\s+Date\s*\n\s*(.+?)(?:\n|$)
Departure\s+dates\s*:\s*\n?\s*(\d{4}-\d{2}-\d{2})\s*-
Check-In\nCheck-Out\n.*?\n(?:Hotel Conf\n)?([A-Z][a-z]{2}\s+\d{1,2},\s+\d{4})
Arriving\s+on\s+(\d{1,2}\s+[A-Z][a-z]{2}\s+\d{4})
Arrivée\s*:\s*\n\s*(.+?)(?:\n|$)
Date de départ\s*\n\s*(?:Paris\s+)?(.+?)(?:\n|$)
check[\s\-]?in\s*(?:date)?[\s:]+(.+?)(?:\n|<br|$)
(?:Arrivée|arriv[ée]e)\s*(?:date)?[\s:]+(.+?)(?:\n|<br|$)
date\s+d['\u2019]?arriv[ée]e[\s:]+(.+?)(?:\n|<br|$)
check[\s\-]?in\s*:\s*(.+?)(?:\n|<|$)
check_out
Departure\s+date\s*:\s*\n\s*(.+?)(?:\n|$)
Departure\s+Date\s*\n\s*(.+?)(?:\n|$)
Departure\s+dates\s*:\s*\n?\s*\d{4}-\d{2}-\d{2}\s*-\s*(\d{4}-\d{2}-\d{2})
Check-In\nCheck-Out\n.*?\n(?:Hotel Conf\n)?[A-Z][a-z]{2}\s+\d{1,2},\s+\d{4}\n([A-Z][a-z]{2}\s+\d{1,2},\s+\d{4})
Départ\s*:\s*\n\s*(.+?)(?:\n|$)
Date de retour\s*\n\s*(?:Paris\s+)?(.+?)(?:\n|$)
check[\s\-]?out\s*(?:date)?[\s:]+(.+?)(?:\n|<br|$)
(?:Départ|depart(?:ure)?)\s*(?:date)?[\s:]+(.+?)(?:\n|<br|$)
date\s+de\s+d[ée]part[\s:]+(.+?)(?:\n|<br|$)
check[\s\-]?out\s*:\s*(.+?)(?:\n|<|$)
confirmation_number
Booking\s+confirmation\s*[—–\-]\s*(\d{6,15})
Cancellation\s*[—–\-]\s*(\d{6,15})
Booking\s+modification\s*[—–\-]\s*(\d{6,15})
Numéro\s+de\s+réservation[\s:]+(\d{6,15})
PerfectStay\s+Reference\s+(\d{4,20})
Booking\s+Reference[\s:]+([A-Za-z0-9\-]{4,20})
(SE[A-Z]{1,4}-\d{6,12})
n°\s+de\s+commande\s*\n\s*(\d{6,15})
N°\s+([A-Z0-9]{4,8}-[A-Z0-9]{4,8})
(?:Numéro|numéro)\s+de\s+confirmation[\s:]+(\d{6,15})
confirmation\s*(?:number|#|no\.?|code)[\s:]+([A-Za-z0-9\-]{4,20})
booking\s*(?:id|ref|number)[\s:]+([A-Za-z0-9\-]{4,20})
reservation\s*(?:id|number|#|no\.?)[\s:]+([A-Za-z0-9\-]{4,20})
(?:PIN|PNR)\s*(?:code)?[\s:]+([A-Za-z0-9\-]{4,20})
\((\d{10,13}),
(?:New|Cancel)\s+Bookings?\s+(\d{8,15})
hotel_name
^Hotel\s+((?:[A-Z][a-zA-Zà-ÿ&]+\s*){2,}(?:\s*&\s*[A-Za-zà-ÿ]+)*)$
Nom\s+de\s+l['']établissement\s*:\s*\n?\s*(.+?)(?:\n|$)
Nom\s+de\s+l['']établissement\s*:\s*(.+?)(?:\n|$)
^For:\s*\n(.+?)(?:\n|$)
^Property\s*\n(.+?)(?:\n|$)
(?:Produit|Hébergement)\s*\n\s*(Hôtel\s+.+?)(?:\s+\d\*|\n|$)
Accommodation\s*:\s*\n?\s*([A-Z][A-Za-zÀ-ÿ&\s\-\']+?)(?:,\s*(?:Standard|Deluxe|Premium|Superior|Suite|Classic|Executive)|\n|$)
(?:hotel|property)\s*(?:name)?[\s:]+([A-Z][a-zA-Zà-ÿ&\s\-\'\(\)]+?)(?:\n|<|$)
accommodation[\s:]+(.+?)(?:\n|<|$)
(?:you(?:'re| are) staying at|your stay at)\s+(.+?)(?:\n|<|$)
[ée]tablissement[\s:]+(.+?)(?:\n|<|$)
room_type
room\s*type[\s:]+(.+?)(?:\n|<|$)
Catégorie\s*:\s*(.+?)(?:\n|$)
chambre[\s:]+(.+?)(?:\n|<|$)
Offer\s*:\s*\n\s*(.+?)(?:\n|$)
Package\s*:\s*\n?\s*(.+?)(?:\n|$)
(?:standard|deluxe|suite|superior|premium|executive|classic|comfort)\s+(?:room|king|queen|double|twin|single|studio)
price
Total\s+Cost\s*\n\s*([\d,]+\.?\d*)\s*([€$£]|EUR|USD|GBP|TND)
Net\s+cost\s+payable\s+to\s+you\s*\n\s*([\d,]+\.?\d*)\s*(EUR|USD|GBP|TND)
Total\s+\(Toutes\s+taxes\s+incluses\)\s*\n\s*([\d\s]+[,.]?\d*)\s*([€$£])
Total\s+Booking\s+Amount\s*:\s*\n?\s*([\d,]+\.?\d*)\s*(EUR|USD|GBP|TND)
Amount\s+to\s+Charge\s+Expedia\s+Group\s*:\s*\n?\s*([\d,]+\.?\d*)\s*(EUR|USD|GBP|TND)
Total\s+Amount\s+Payable\s*:\s*(EUR|USD|GBP|TND)\s+([\d,]+\.?\d*)
Amount\s*:\s*([\d,]+\.?\d*)\s*\nCurrency\s*:\s*(EUR|USD|GBP|TND)
([€$£])\s*([\d,]+\.?\d*)
Séjour\s+de\s+\d+\s+nuit.+?([€$£])\s*([\d,.]+)
(?:Montant\s+total|Total\s+(?:Price|Amount))\s*\n?\s*([\d\s,.]+)\s*([€$£]|EUR|USD|GBP|TND)
(?:total|montant)\s*(?:à payer|dû|due)?[\s:]+([€$£]?\s?[\d,.]+)\s*(EUR|USD|GBP|TND)
net_price
Net\s+cost\s+payable\s+to\s+you\s*\n\s*([\d,]+\.?\d*)\s*(EUR|USD|GBP|TND)
commission
(?:commission|frais)\s*[\s:]+([€$£]?\s?[\d,.]+)\s*(EUR|USD|GBP)?
guests
Adults[\s:]+(\d+)
Nombre\s+total\s+de\s+personnes\s*:\s*(\d+)
(\d+)\s*adultes?
(\d+)\s*(?:guest|adult|person|voyageur|personne)
guests?[\s:]+(\d+)
number\s+of\s+(?:guests?|customers?)[\s:]+(\d+)
num_rooms
Nombre\s+total\s+d['']hébergements?\s*:\s*(\d+)
(\d+)\s*(?:room|chambre|hébergement)
num_nights
Séjour\s+de\s+(\d+)\s+nuit
Nights\s*:\s*\n\s*(\d+)
(\d+)\s*nuits?
(\d+)\s*nights?
meal_plan
Pension\s*\n\s*(.+?)(?:\n|$)
(?:meal\s*plan|board|pension)[\s:]+(.+?)(?:\n|<|$)
(All\s+inclusive|Half\s+board|Full\s+board|Bed\s+and\s+breakfast|Room\s+only)
guest_name
Nom\s+du\s+client\s*:\s*\n?\s*([A-Za-zà-ÿ]+(?:\s[A-Za-zà-ÿ]+)+)
([A-Z][a-zà-ÿ]+(?:\s[A-Za-zà-ÿ]+)+)\s+aimerait\s+annuler
pour\s+([A-Z]{2,}(?:\s+[A-Z]{2,})*)
([A-Za-zà-ÿ]+(?:\s[A-Za-zà-ÿ]+)+)\s+(?:a\s+écrit|wrote)
(?:Mme?\.|Mrs?\.|Ms\.?)\s+([A-Za-zà-ÿ]+\s+[A-Z]{2,}[A-Za-zà-ÿ]*)
Lead\s+(?:Customer|Guest)\s*\n\s*([A-Z][a-zà-ÿ]+(?:\s[A-Z][a-zà-ÿ]+)+)
Lead\s+Guest\s*\n\s*(?:MR[S]?\s+)?([\w]+)\s*\n\s*([\w]+)
(?:^|\n)Guest\s*:\s*\n\s*([A-Za-zÀ-ÿ]+(?:\s{1,3}[A-Za-zÀ-ÿ]+)+)\s*(?:\n|$)
Primary\s+traveler\s*:\s*([A-Za-zÀ-ÿ]+),\s*([A-Za-zÀ-ÿ]+(?:\s+[A-Za-zÀ-ÿ]+)*)
Lead\s+guest\s+name\s*:\s*\n\s*([A-Za-zÀ-ÿ]+(?:\s+[A-Za-zÀ-ÿ]+)+)
Lead\s+booker\s*:?\s*\n\s*([A-Za-zÀ-ÿ]+(?: [A-Za-zÀ-ÿ]+)+)\s*(?:\n|$)
Personne\s+effectuant\s+la\s+réservation\s*\n\s*(?:Mme?\.|Mr?\.|Mrs?\.?)\s*(.+?)(?:\n|$)
(?:guest\s*name|name|nom|booked\s*(?:by|for))[\s:]+([A-Z][a-zà-ÿ]+(?:\s[A-Z][a-zà-ÿ]+)+)
(?:dear|cher|chère)\s+([A-Z][a-zà-ÿ]+(?:\s[A-Z][a-zà-ÿ]+)*)
guest_phone
Téléphone\s*\n\s*(\+?[\d\s\-\(\)]{7,20})
(?:phone|tel|téléphone|mobile|contact)[\s:]+(\+?[\d\s\-\(\)]{7,20})
guest_email
Email\s*\n\s*([a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,})
(?:email|e-mail|courriel)[\s:]+([a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,})
guest_message_content
a\s+écrit\s*:\s*\n([\s\S]{1,500}?)(?:Téléchargez|Répondre|-->|$)
wrote\s*:\s*\n([\s\S]{1,500}?)(?:Download|Reply|-->|$)
cancel_reason
Commentaires?\s*:\s*\n\s*\n?\s*(.{3,300}?)(?:\n\n|\nQue\s|$)
(?:Reason|Raison|Comments?)[\s:]+(.{3,300}?)(?:\n\n|$)
transport_outbound
Transport\s+Aller\s*\n\s*(.+?)\s*\n\s*(Vol\s+.+?)(?:\n|$)
transport_return
Transport\s+Retour\s*\n\s*(.+?)\s*\n\s*(Vol\s+.+?)(?:\n|$)
transfer
(?:Transfert|Transfer)\s+.+?(?:A/R|aéroport|airport)
booking_id
res_id=(\d{6,15})
Reference:\s*(?:.+,\s*)?(\d{5,10})
🔬 Test d'Extraction Tester la classification et l'extraction sur un email