Код 2026-05-14

Автоматизація e-commerce на Python для розробників 💻

Автоматизація e-commerce на Python для розробників 💻

Ручне управління онлайн-магазином вимагає значних витрат часу на обробку замовлень, постійну перевірку запасів та ручні відповіді клієнтам електронною поштою. Цей процес є неефективним і створює ризики для бізнесу. Рішення полягає в автоматизації бекенду магазину.

Для розв'язання цієї проблеми розроблено спеціалізований E-Commerce Automation Stack, який дозволяє повністю автоматизувати ключові операційні процеси. Цей набір із чотирьох скриптів виконує до 80% повторюваної роботи, характерної для електронної комерції.

Використання Python у цьому контексті забезпечує створення потужного та масштабованого рішення, що охоплює повний цикл від отримання замовлення до генерації звітів про продажі.

1. Пайплайн обробки замовлень

Перший критично важливий елемент — це пайплайн обробки замовлень. Він забезпечує автоматичне підключення до API магазину (наприклад, Shopify або WooCommerce) та витягування необхідних даних для подальшої обробки.

Для отримання нових замовлень використовується функція get_new_orders, яка дозволяє отримати всі відкриті та оплачені замовлення за останні N годин:

import httpx
from datetime import datetime
SHOPIFY_STORE = "your-store.myshopify.com"
SHOPIFY_TOKEN = "your-access-token"

def get_new_orders(since_hours=2):
    """Отримати замовлення за останні N годин."""
    resp = httpx.get(
        f"https://{SHOPIFY_STORE}/admin/api/2024-01/orders.json",
        headers={"X-Shopify-Access-Token": SHOPIFY_TOKEN},
        params={
            "status": "open",
            "financial_status": "paid",
            "limit": 50
        }
    )
    return resp.json().get('orders', [])

def process_order(order):
    """Витягти ключову інформацію та направити на виконання."""
    return {
        'id': order['id'],
        'email': order['email'],
        'name': order['shipping_address']['name'],
        'items': [
            {'sku': item['sku'], 'qty': item['quantity'], 'title': item['title']}
            for item in order['line_items']
        ],
        'total': float(order['total_price']),
        'address': order['shipping_address']
    }

2. Моніторинг рівня запасів

Щоб уникнути ситуацій, коли запаси закінчуються, необхідний моніторинг запасів. Цей скрипт регулярно перевіряє всі SKU на відповідність встановленим порогам повторного замовлення.

Функція check_inventory_levels отримує дані про рівень запасів і виявляє товари, кількість яких нижча за заданий поріг (у цьому прикладі він становить 10):

def check_inventory_levels():
    """Перевірити всі SKU на відповідність порогам повторного замовлення."""
    resp = httpx.get(
        f"https://{SHOPIFY_STORE}/admin/api/2024-01/inventory_levels.json",
        headers={"X-Shopify-Access-Token": SHOPIFY_TOKEN},
        params={"limit": 250}
    )
    inventory = resp.json().get('inventory_levels', [])
    low_stock = []
    REORDER_THRESHOLD = 10
    for item in inventory:
        available = item.get('available', 0)
        if available < REORDER_THRESHOLD and available >= 0:
            low_stock.append({
                'inventory_item_id': item.get('inventory_item_id'),
                'available': available,
                'threshold': REORDER_THRESHOLD
            })
    return low_stock

3. Автоматизація комунікації з клієнтами

Для підвищення лояльності та стимулювання повторних покупок критично важлива автоматична комунікація. Скрипти дозволяють надсилати шаблонні листи про події замовлення, такі як підтвердження, виряджання або запит на відгук.

Використовуючи бібліотеки smtplib та email.mime.text, можна реалізувати послідовність листів:

  • order_confirmed: Підтвердження замовлення з переліком товарів та загальною сумою.
  • shipped: Повідомлення про виряджання із зазначенням трекінгового номера та очікуваної дати доставлення.
  • review_request: Запит на відгук після отримання товару, що допомагає іншим клієнтам у прийнятті рішень.
import smtplib
from email.mime.text import MIMEText

EMAIL_TEMPLATES = {
    'order_confirmed': """Hi {name}, Your order #{order_id} has been confirmed! Items ordered: {items_list} Total: ${total:.2f} We'll send tracking info once your order ships (usually 1-2 business days). Thanks for your business!""",
    'shipped': """Hi {name}, Great news - your order #{order_id} has shipped! Tracking number: {tracking_number} Carrier: {carrier} Expected delivery: {delivery_estimate}""",
    'review_request': """Hi {name}, Hope you love your recent purchase! Could you take 30 seconds to leave a review? It helps other customers make decisions. Leave a review: {review_url} Thanks in advance!"""
}

def send_order_email(template_name, order_data, smtp_config):
    """Надіслати шаблонний лист про подію замовлення."""
    # ... (код функції)

4. Щоденна звітність про продажі

Отримання бізнес-метрик щоранку є основою для прийняття управлінських рішень. Скрипт generate_daily_report автоматично отримує дані за вчорашній день і створює резюме продажів, включаючи загальний дохід та кількість транзакцій.

Для цього функція використовує API магазину, фільтруючи за датою створення (created_at) та фінансовим статусом:

```python
from datetime import datetime, timedelta

def generate_daily_report():
"""Отримати дані вчорашнього дня та створити резюме."""
yesterday = (datetime.utcnow() - timedelta(days=1)).date().isoformat()
resp = httpx.get(
f"https://{SHOPIFY_STORE}/admin/api/2024-01/orders.json",
headers={"X-Shopify-Access-Token": SHOPIFY_TOKEN},
params={
"created_at_min": f"{yesterday}T00:00:00Z",
"created_at_max": f"{yesterday}T23:59:59Z",
"financial_status": "paid",
"limit": 250
}
)
orders = resp.json().get('orders', [])
total_revenue = sum(fl # ... (далі код функції)

Telegram Logo Читайте нас у Telegram: @procodeandevenmore