personal_shopper_api
Backend Node.js/Express de personal shopper produit.
L'application expose :
POST /api/chatpour le parcours conversationnelPOST /api/search-productspour la recherche ranked directePOST /api/search-products-rankedcomme alias rankedPOST /api/search-products-legacypour l'ancien contrat
Documentation
Documentation détaillée équipe :
Documents complémentaires :
- FRONTEND_API_INTEGRATION.md
- postman/personal_shopper_api.postman_collection.json
- postman/personal_shopper_api.local.postman_environment.json
- sql/search_products_ranked.sql
Installation rapide
Prérequis :
- Node.js
>= 18 - npm
- accès Snowflake
OPENAI_API_KEYsi le chat doit être actif
Sous Unix-like :
cp .env.example .env
npm install
Sous PowerShell :
Copy-Item .env.example .env npm install
Renseigner ensuite .env à partir de .env.example.
Lancement
Développement :
npm run dev
Production simple :
npm start
Production via PM2 :
npm run prod
Endpoints principaux
GET /healthPOST /api/chatPOST /api/search-productsPOST /api/search-products-rankedPOST /api/search-products-legacy
Contrat ranked direct
/api/search-products et /api/search-products-ranked attendent le contrat 12 champs suivant :
{ "famille": null, "carac_technique": null, "comp_1": null, "comp_2": null, "coloris_secondaire": "BLEU", "coloris_tertiaire": null, "genre": "HOUSSE DE COUETTE", "matiere_web": null, "type_produit_web": "HOUSSE DE COUETTE", "desc_inspi_1": "montagne", "desc_inspi_2": null, "desc_inspi_3": null
}
Contrat chat
{ "message": "je cherche une housse de couette rose en satin esprit plage", "conversationId": "chat-001"
}
Notes d'exploitation
- la mémoire conversationnelle est stockée en RAM par
conversationId - la configuration PM2 reste en
instances: 1 - la validation metadata stricte est appliquée dans le flux chat, pas sur la route ranked directe