# Structure base de données

## Vue d'ensemble
- `products` : produit suivi (URL canonique, store, catégories, statut).
- `scrape_runs` : trace des runs pour mesurer taux réussite / blocages.
- `product_snapshots` : historique des données extraites (prix, stock, badges, raw JSON).

## Diagramme

```
┌─────────────┐       ┌──────────────┐
│  products   │ 1   N │ product_     │
│ (stores)    │──────>│ snapshots    │
│ id PK       │       │ id PK        │
│ store       │       │ product_id FK│
│ url         │       │ scraped_at   │
│ asin        │       │ price_current│
│ ...         │       │ stock_text   │
└─────────────┘       │ ...          │
                      └──────────────┘

┌──────────────┐
│ scrape_runs  │
│ id PK        │
│ started_at   │
│ ended_at     │
│ status       │
│ items_ok     │
│ items_failed │
│ items_total  │
└──────────────┘
```

> Commentaire : `products` lie les snapshots ; `scrape_runs` peut être lié aux snapshots si on enregistre `scrape_run_id`.
> Commentaire : les indexes `product_id`, `scraped_at` et `asin` servent à accélérer les historiques et recherches.

## Schéma base de données (SQLite)
Proposer un schéma minimal + extensible.

### Tables
1) `products`
- `id` (PK)
- `store` (ex: amazon_fr)
- `url`
- `asin`
- `title`
- `image_url`
- `category`
- `type`
- `is_active` (bool)
- `created_at`, `updated_at`

2) `scrape_runs`
- `id` (PK)
- `started_at`, `ended_at`
- `status` (success/partial/failed)
- `items_total`, `items_ok`, `items_failed`
- `log_path` (option)

3) `product_snapshots`
- `id` (PK)
- `product_id` (FK → products.id)
- `scraped_at`
- `price_current`
- `price_list` (nullable)
- `lowest_30d_price` (nullable)
- `stock_text` (nullable)
- `in_stock` (nullable)
- `rating_value` (nullable)
- `rating_count` (nullable)
- `prime_eligible` (nullable)
- `amazon_choice` (nullable)
- `limited_time_deal` (nullable)
- `amazon_exclusive` (nullable)
- `raw_json_path` (nullable)
- `scrape_status` (ok/blocked/missing_fields/error)
- `error_message` (nullable)

4) (option) `tags`
- `id`, `name`

5) (option) `product_tags`
- `product_id`, `tag_id`