Aller au contenu principal

Monétisation — Schéma et tables

orders

Objectif: représenter l’intention d’achat côté métier.

Champs clés:

  • id
  • user_id
  • item_type (actuel: listing_boost)
  • item_id (id annonce)
  • amount, currency
  • status (pending, completed, failed, refunded)
  • metadata

payments

Objectif: tracer la transaction provider.

Champs clés:

  • id
  • user_id
  • order_id
  • provider (stripe, futur: orange_money, mtn_momo)
  • provider_transaction_id
  • payment_method_type
  • client_secret (PaymentIntent)
  • amount, currency
  • status (pending, succeeded, failed, refunded)
  • metadata

webhooks_log

Objectif: idempotence + audit webhook.

Champs clés:

  • event_id (unique)
  • provider
  • event_type
  • payload
  • status (processing, processed, ignored, failed)
  • processed_at

car_listings.featuredUntil

Objectif: stocker la fin de validité d’une mise en avant.

Règle d’activation actuelle:

  • Le webhook met à jour:
    • isFeatured = true
    • featuredUntil = now + durationDays

Relations clés

  • orders.user_id -> users.id
  • payments.user_id -> users.id
  • payments.order_id -> orders.id

Remarques d’évolution

  • Ajouter éventuellement un enum DB pour orders.status et payments.status.
  • Ajouter index si volumétrie augmente (orders.user_id, payments.order_id, webhooks_log.event_id).