Skip to main content

Cas d’usage

Le monitoring stock permet de :
  • Détecter les ruptures de stock
  • Alerter sur les problèmes de distribution
  • Optimiser la supply chain

Implémentation

1. Vérifier la disponibilité d’un produit

import requests

API_KEY = "oc_YOUR_API_KEY"
EAN = "3401560504507"

response = requests.get(
    f"https://api.officiscan.com/v1/prices/compare?ean={EAN}",
    headers={"Authorization": f"Bearer {API_KEY}"}
)

data = response.json()

available = [s for s in data["sources"] if s["availability"]]
unavailable = [s for s in data["sources"] if not s["availability"]]

print(f"Disponible sur {len(available)} sources")
print(f"Indisponible sur {len(unavailable)} sources")

2. Alertes de rupture

def check_stock_alerts(ean_list, threshold=0.5):
    """Alerte si le produit est indisponible sur plus de X% des sources"""
    alerts = []

    for ean in ean_list:
        response = requests.get(
            f"https://api.officiscan.com/v1/prices/compare?ean={ean}",
            headers={"Authorization": f"Bearer {API_KEY}"}
        )
        data = response.json()

        total = len(data["sources"])
        available = sum(1 for s in data["sources"] if s["availability"])
        rate = available / total if total > 0 else 0

        if rate < threshold:
            alerts.append({
                "ean": ean,
                "product": data["product_name"],
                "availability_rate": f"{rate*100:.1f}%",
                "available_sources": available,
                "total_sources": total
            })

    return alerts

# Vérifier les alertes
alerts = check_stock_alerts(["3401560504507", "3400930001035"])
for alert in alerts:
    print(f"⚠️ {alert['product']}: {alert['availability_rate']} dispo")

3. Rapport de disponibilité par source

def availability_by_source(product_ids):
    """Analyse la disponibilité par source"""
    from collections import defaultdict

    source_stats = defaultdict(lambda: {"available": 0, "total": 0})

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

        source = data.get("source")
        if source:
            source_stats[source]["total"] += 1
            if data.get("latest_availability"):
                source_stats[source]["available"] += 1

    return dict(source_stats)

Endpoints utilisés

GET /v1/prices/compare

Disponibilité multi-sources

GET /v1/products/{id}

Détail produit avec disponibilité