Architecture
graph LR
BUBBLE["🫧 Bubble
Application client"] API["⚙️ API AIGEN
FastAPI · Python"] BEDROCK["☁️ AWS Bedrock
Claude Sonnet 4.6"] DBMAIN[("🗄️ DB Main
PostgreSQL
Offres d'emploi")] DBLOGS[("📊 DB Logs
PostgreSQL
KPIs · Coûts")] BUBBLE -->|"REST / Bearer token"| API API -->|"AWS SigV4
TOON prompt"| BEDROCK BEDROCK -->|"JSON response"| API API -->|"Lecture
offres de référence"| DBMAIN API -->|"Écriture
logs · feedbacks"| DBLOGS API -->|"Réponse JSON"| BUBBLE style API fill:#7c3aed,stroke:#6d28d9,color:#fff style BUBBLE fill:#1e40af,stroke:#1d4ed8,color:#fff style BEDROCK fill:#065f46,stroke:#047857,color:#fff style DBMAIN fill:#1a1f2e,stroke:#4a5568,color:#e2e8f0 style DBLOGS fill:#1a1f2e,stroke:#4a5568,color:#e2e8f0
Application client"] API["⚙️ API AIGEN
FastAPI · Python"] BEDROCK["☁️ AWS Bedrock
Claude Sonnet 4.6"] DBMAIN[("🗄️ DB Main
PostgreSQL
Offres d'emploi")] DBLOGS[("📊 DB Logs
PostgreSQL
KPIs · Coûts")] BUBBLE -->|"REST / Bearer token"| API API -->|"AWS SigV4
TOON prompt"| BEDROCK BEDROCK -->|"JSON response"| API API -->|"Lecture
offres de référence"| DBMAIN API -->|"Écriture
logs · feedbacks"| DBLOGS API -->|"Réponse JSON"| BUBBLE style API fill:#7c3aed,stroke:#6d28d9,color:#fff style BUBBLE fill:#1e40af,stroke:#1d4ed8,color:#fff style BEDROCK fill:#065f46,stroke:#047857,color:#fff style DBMAIN fill:#1a1f2e,stroke:#4a5568,color:#e2e8f0 style DBLOGS fill:#1a1f2e,stroke:#4a5568,color:#e2e8f0
Flux d'un appel /generate
🫧
Bubble envoie
la requête
la requête
→
🔐
Vérification
Bearer token
Bearer token
→
🗄️
Lecture 3 offres
de référence
de référence
→
📝
Construction
prompt TOON
prompt TOON
→
☁️
Appel
Bedrock
Bedrock
→
📊
Log KPIs
+ coûts
+ coûts
→
✅
Réponse JSON
à Bubble
à Bubble
Endpoints
| Méthode | Endpoint | Description | DB Main | Retour |
|---|---|---|---|---|
| POST | /api/v1/generate |
Génère les 4 sections d'une offre complète | ✅ Lecture | description · profil · responsabilites · elements_complementaires |
| POST | /api/v1/generate-section |
Génère un seul encart au choix | ✅ Lecture | section · text |
| POST | /api/v1/modify |
Modifie les 4 sections existantes (style, langue, ton) | — | description · profil · responsabilites · elements_complementaires |
| POST | /api/v1/modify-section |
Modifie une section (corriger / raccourcir / allonger) | — | section · text |
| POST | /api/v1/feedback |
Enregistre une notation 1-5 étoiles | — | feedback_id |
| GET | /health |
Vérification de santé de l'API | — | { "status": "ok" } |
Headers requis
Authorization
Bearer <token> — obligatoire sur tous les endpoints
X-Uid-User
UID de l'utilisateur connecté dans Bubble
X-Uid-Agence-Mere
UID de l'agence mère — utilisé pour les offres de référence
X-Uid-Agence-Fille
UID de l'agence fille — prioritaire sur l'agence mère
Options de ton
style
professionnel
informel
inspirant
convivial
engageant
language_type
vouvoiement
tutoiement
neutre
translation
francais
anglais
inclusive
oui
non
Logique des offres de référence
| Priorité | Source | Métier |
|---|---|---|
| 1 | Agence fille (X-Uid-Agence-Fille) |
Même métier que la requête |
| 2 | Agence fille | N'importe quel métier |
| 3 | Agence mère (X-Uid-Agence-Mere) |
Même métier que la requête |
| 4 | Agence mère | N'importe quel métier |
Maximum 3 offres récupérées · Sections : description · profil · responsabilites