Skip to main content

Cas d’usage

La veille e-réputation permet de :
  • Suivre les notes et avis clients
  • Analyser le sentiment par source
  • Détecter les problèmes qualité

Implémentation

1. Récupérer les avis d’un produit

Utilisez l’endpoint /v1/products/{id}/reviews :
import requests

API_KEY = "oc_YOUR_API_KEY"
PRODUCT_ID = 12345

response = requests.get(
    f"https://api.officiscan.com/v1/products/{PRODUCT_ID}/reviews",
    headers={"Authorization": f"Bearer {API_KEY}"}
)

data = response.json()

print(f"Note moyenne: {data.get('rating', 'N/A')}")
print(f"Total avis: {data['total']}")

for review in data["data"][:5]:
    print(f"⭐ {review['rating']}/5 - {review['title']}")
    print(f"   {review['content'][:100]}...")

2. Analyse de sentiment

def analyze_reviews(product_id):
    """Analyse les avis d'un produit"""
    response = requests.get(
        f"https://api.officiscan.com/v1/products/{product_id}/reviews",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )
    data = response.json()

    analysis = {
        "total": data["total"],
        "avg_rating": data.get("rating"),
        "distribution": {1: 0, 2: 0, 3: 0, 4: 0, 5: 0},
        "positive": 0,  # 4-5 stars
        "neutral": 0,   # 3 stars
        "negative": 0   # 1-2 stars
    }

    for review in data["data"]:
        rating = review["rating"]
        analysis["distribution"][rating] = analysis["distribution"].get(rating, 0) + 1

        if rating >= 4:
            analysis["positive"] += 1
        elif rating == 3:
            analysis["neutral"] += 1
        else:
            analysis["negative"] += 1

    return analysis

# Exemple
analysis = analyze_reviews(12345)
print(f"Positifs: {analysis['positive']}")
print(f"Neutres: {analysis['neutral']}")
print(f"Négatifs: {analysis['negative']}")

3. Alertes avis négatifs

def negative_review_alerts(product_ids, min_rating=2):
    """Alerte sur les avis négatifs récents"""
    from datetime import datetime, timedelta

    alerts = []
    week_ago = (datetime.now() - timedelta(days=7)).isoformat()

    for product_id in product_ids:
        response = requests.get(
            f"https://api.officiscan.com/v1/products/{product_id}/reviews",
            headers={"Authorization": f"Bearer {API_KEY}"}
        )
        data = response.json()

        for review in data["data"]:
            if review["rating"] <= min_rating:
                if review["published_at"] >= week_ago:
                    alerts.append({
                        "product_id": product_id,
                        "rating": review["rating"],
                        "title": review["title"],
                        "content": review["content"][:200],
                        "date": review["published_at"]
                    })

    return alerts

# Vérifier les alertes
alerts = negative_review_alerts([12345, 12346])
for a in alerts:
    print(f"⚠️ {a['rating']}/5 - {a['title']}")

4. Comparaison e-réputation

def compare_reputation(product_ids):
    """Compare la réputation de plusieurs produits"""
    import pandas as pd

    results = []
    for product_id in product_ids:
        response = requests.get(
            f"https://api.officiscan.com/v1/products/{product_id}/reviews",
            headers={"Authorization": f"Bearer {API_KEY}"}
        )
        data = response.json()

        positive = sum(1 for r in data["data"] if r["rating"] >= 4)

        results.append({
            "product_id": product_id,
            "avg_rating": data.get("rating"),
            "total_reviews": data["total"],
            "positive_rate": f"{(positive / data['total'] * 100):.0f}%" if data["total"] > 0 else "N/A"
        })

    return pd.DataFrame(results)

# Comparer vos produits
comparison = compare_reputation([12345, 12346])
print(comparison)

Endpoints utilisés

GET /v1/products/{id}/reviews

Avis d’un produit

GET /v1/products/{id}

Détail produit avec rating