RWA Assistant — Documentation

Guide de référence

Widget d'assistance IA conversationnel, déployable sur n'importe quelle plateforme via un snippet JS. Alimenté par Claude Haiku (Anthropic).

Aperçu

RWA Assistant est un widget universel en Shadow DOM fermé (~25 kB minifié). Il s'installe en une ligne de code sur n'importe quel site et communique avec une API Next.js hébergée sur le VPS RELIANCE. Chaque assistant est configuré avec son propre nom, couleur, prompt système et actions rapides.

Chat IA

Claude Haiku, réponses en < 2 s, multilingue FR/EN/ZH

Lead capture

Formulaire intégré, détection contextuelle par mots-clés

Shadow DOM

Isolation totale, aucun conflit CSS avec le site hôte

Installation

Collez ce snippet juste avant </body> sur votre page :

html
<script
  src="https://assistant.reliance.com/widget/rwa-widget.js"
  data-assistant-id="demo"
  async>
</script>

Le widget se charge de façon asynchrone — il n'impacte pas les performances de votre site. Remplacez data-assistant-id par l'identifiant de l'assistant souhaité.

Assistants disponibles

IDNomUsage
demoReliance AssistantAssistant généraliste — tous projets RWA, expert immobilier premium
east-lake-parkEast Lake ParkAssistant dédié au projet résidentiel East Lake Park

API Reference

Toutes les routes /api/widget/* ont des headers CORS ouverts (Access-Control-Allow-Origin: *).

GET/api/widget/config/:id

Retourne la configuration publique d'un assistant (sans systemPrompt). Cache 60 s.

Réponse

json
{
  "id": "demo",
  "name": "Reliance Assistant",
  "subtitle": "Immobilier & Investissement",
  "accentColor": "#343977",
  "greeting": "Bonjour ! ...",
  "quickActions": [...]
}
POST/api/widget/chat

Envoie un message à Claude Haiku et retourne la réponse.

⚠ Limites : message ≤ 2 000 chars · historique ≤ 40 tours · chaque entrée ≤ 4 000 chars

Corps (JSON)

json
{
  "assistantId": "demo",
  "conversationId": "uuid",
  "message": "Quels sont vos projets ?",
  "history": [{ "role": "user", "content": "..." }]
}

Réponse

json
{
  "message": "Nous développons six projets...",
  "conversationId": "uuid",
  "action": null
}
POST/api/widget/leads

Soumet un lead capturé via le formulaire du widget.

⚠ Limites : name requis · phone requis (6–30 chars) · email optionnel

Corps (JSON)

json
{
  "assistantId": "demo",
  "conversationId": "uuid",
  "name": "Jean Dupont",
  "phone": "+225 07 00 00 00",
  "email": "jean@example.com"
}

Réponse

json
{ "success": true }
GET/api/health

Healthcheck utilisé par Docker Compose.

Réponse

json
{
  "status": "ok",
  "service": "rwa-assistant",
  "version": "0.1.0",
  "timestamp": "2026-07-02T..."
}

Attributs du snippet

AttributTypeRequisDescription
data-assistant-idstringrequisIdentifiant de l'assistant à charger (ex: demo, east-lake-park)
data-api-basestringoptionnelURL de base de l'API si différente de l'origine du fichier JS

Si data-api-base est absent, le widget détecte automatiquement l'API depuis l'origine du script, puis depuis window.location.origin en dernier recours.

Variables d'environnement

VariableObligatoireDescription
ANTHROPIC_API_KEYouiClé secrète Anthropic — injectée au runtime (jamais dans le build)
NEXT_PUBLIC_WIDGET_URLnonURL publique de rwa-widget.js — injectée au build Docker
NEXT_PUBLIC_APP_URLnonURL publique du dashboard — injectée au build Docker

Copier .env.example.env à la racine du projet pour le développement local.
En production, créer apps/dashboard/.env.local avec la vraie clé Anthropic.

Déploiement VPS

L'application s'exécute dans un conteneur Docker (image multi-stage, ~180 MB). Voir DEPLOY.md pour le guide complet.

bash
# 1. Build l'image
docker build \
  --file apps/dashboard/Dockerfile \
  --build-arg NEXT_PUBLIC_WIDGET_URL=https://assistant.reliance.com/widget/rwa-widget.js \
  --build-arg NEXT_PUBLIC_APP_URL=https://assistant.reliance.com \
  --tag rwa-assistant:latest .

# 2. Exporter et transférer sur le VPS
docker save rwa-assistant:latest | gzip > rwa-assistant.tar.gz
scp rwa-assistant.tar.gz user@VPS_IP:/opt/rwa-assistant/

# 3. Sur le VPS
docker load < rwa-assistant.tar.gz
docker compose up -d

# 4. Vérifier
curl http://localhost:3001/api/health

Note importante

ANTHROPIC_API_KEY est injectée au runtime via le fichier .env sur le VPS — elle ne doit jamais être passée en --build-arg pour ne pas être exposée dans les layers Docker.