Skip to main content

Cas d’usage

La veille distribution permet de :
  • Identifier où vos produits sont vendus
  • Détecter les nouvelles références
  • Suivre la couverture du réseau

Implémentation

1. Cartographier la distribution d’un produit

Utilisez l’endpoint /v1/products/ean/{ean} pour voir toutes les sources :
import requests

API_KEY = "oc_YOUR_API_KEY"
EAN = "3400941533969"

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

data = response.json()

print(f"Produit trouvé sur {data['total']} sources:")
for product in data["data"]:
    print(f"  - {product['source']} ({product['network']})")

2. Analyse de couverture par réseau

def coverage_by_network(ean):
    """Analyse la couverture par réseau"""
    response = requests.get(
        f"https://api.officiscan.com/v1/products/ean/{ean}",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )
    data = response.json()

    networks = {}
    for product in data["data"]:
        network = product["network"]
        if network not in networks:
            networks[network] = []
        networks[network].append(product["source"])

    return networks

# Exemple
coverage = coverage_by_network("3400941533969")
for network, sources in coverage.items():
    print(f"{network}: {len(sources)} source(s)")
    for source in sources:
        print(f"  - {source}")

3. Détecter les lacunes de distribution

def find_distribution_gaps(ean, target_networks):
    """Identifie les réseaux où le produit n'est pas distribué"""
    response = requests.get(
        f"https://api.officiscan.com/v1/products/ean/{ean}",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )
    data = response.json()

    present_networks = set(p["network"] for p in data["data"])
    missing = [n for n in target_networks if n not in present_networks]

    return {
        "present": list(present_networks),
        "missing": missing,
        "coverage_rate": len(present_networks) / len(target_networks) * 100
    }

# Vérifier la couverture
target = ["pharmagdd", "santediscount", "newpharma", "cocooncenter", "pharmavie"]
gaps = find_distribution_gaps("3400941533969", target)
print(f"Couverture: {gaps['coverage_rate']:.0f}%")
print(f"Réseaux manquants: {gaps['missing']}")

4. Rapport de distribution multi-produits

def distribution_report(ean_list):
    """Génère un rapport de distribution pour plusieurs produits"""
    import pandas as pd

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

        if data["data"]:
            first = data["data"][0]
            results.append({
                "ean": ean,
                "name": first["name"],
                "sources_count": data["total"],
                "networks": len(set(p["network"] for p in data["data"])),
                "last_seen": first["last_collected_at"]
            })

    return pd.DataFrame(results)

# Exemple
eans = ["3400941533969", "3400930001035"]
report = distribution_report(eans)
print(report)

Endpoints utilisés

GET /v1/products/ean/{ean}

Produits par EAN

GET /v1/networks

Liste des réseaux