miinventario-v2/docs/_definitions/DATABASE-SCHEMA.md
2026-01-16 04:21:07 -06:00

5.9 KiB

Database Schema - MiInventario

Alias: @PROJ_DEF_DB Version: 1.0.0 Ultima actualizacion: 2026-01-16


1. RESUMEN

Metrica Valor
Total Schemas 1 (public)
Total Tablas 21
Total ENUMs 14
Total Indices 17
Total Foreign Keys 13

2. SCHEMAS

2.1 Schema: public

tablas:
  # Core
  - users
  - stores
  - store_users

  # Videos e Inventario
  - videos
  - inventory_items

  # Creditos y Pagos
  - credit_balances
  - credit_packages
  - credit_transactions
  - payments

  # Sistema
  - referrals
  - notifications
  - otps
  - refresh_tokens

  # Admin
  - audit_logs
  - promotions
  - ia_providers

  # Feedback
  - corrections
  - ground_truth
  - product_submissions
  - validation_requests
  - validation_responses

3. TABLAS PRINCIPALES

3.1 users

tabla: "users"
schema: "public"
descripcion: "Usuarios del sistema"
columnas:
  - nombre: "id"
    tipo: "UUID"
    pk: true
  - nombre: "phone"
    tipo: "varchar(20)"
    unique: true
  - nombre: "email"
    tipo: "varchar(255)"
    unique: true
  - nombre: "passwordHash"
    tipo: "varchar(255)"
  - nombre: "name"
    tipo: "varchar(100)"
  - nombre: "businessName"
    tipo: "varchar(100)"
  - nombre: "role"
    tipo: "users_role_enum"
  - nombre: "isActive"
    tipo: "boolean"
  - nombre: "fcmToken"
    tipo: "varchar(255)"
  - nombre: "stripeCustomerId"
    tipo: "varchar(100)"
  - nombre: "createdAt"
    tipo: "timestamp"
  - nombre: "updatedAt"
    tipo: "timestamp"

3.2 stores

tabla: "stores"
schema: "public"
descripcion: "Tiendas de usuarios"
columnas:
  - nombre: "id"
    tipo: "UUID"
    pk: true
  - nombre: "ownerId"
    tipo: "UUID"
    fk: "users.id"
  - nombre: "name"
    tipo: "varchar(100)"
  - nombre: "giro"
    tipo: "varchar(50)"
  - nombre: "address"
    tipo: "varchar(255)"
  - nombre: "settings"
    tipo: "jsonb"
  - nombre: "isActive"
    tipo: "boolean"

3.3 videos

tabla: "videos"
schema: "public"
descripcion: "Videos subidos para procesamiento"
columnas:
  - nombre: "id"
    tipo: "UUID"
    pk: true
  - nombre: "storeId"
    tipo: "UUID"
    fk: "stores.id"
  - nombre: "uploadedById"
    tipo: "UUID"
    fk: "users.id"
  - nombre: "fileName"
    tipo: "varchar(255)"
  - nombre: "s3Key"
    tipo: "varchar(500)"
  - nombre: "status"
    tipo: "videos_status_enum"
  - nombre: "itemsDetected"
    tipo: "integer"
  - nombre: "creditsUsed"
    tipo: "integer"

3.4 inventory_items

tabla: "inventory_items"
schema: "public"
descripcion: "Items de inventario detectados"
columnas:
  - nombre: "id"
    tipo: "UUID"
    pk: true
  - nombre: "storeId"
    tipo: "UUID"
    fk: "stores.id"
  - nombre: "detectedByVideoId"
    tipo: "UUID"
    fk: "videos.id"
  - nombre: "name"
    tipo: "varchar(255)"
  - nombre: "category"
    tipo: "varchar(100)"
  - nombre: "quantity"
    tipo: "integer"
  - nombre: "detectionConfidence"
    tipo: "decimal(5,2)"
indices:
  - columnas: [storeId, name]
  - columnas: [storeId, category]
  - columnas: [storeId, barcode]

3.5 credit_balances

tabla: "credit_balances"
schema: "public"
descripcion: "Saldos de creditos por usuario"
columnas:
  - nombre: "id"
    tipo: "UUID"
    pk: true
  - nombre: "userId"
    tipo: "UUID"
    fk: "users.id"
    unique: true
  - nombre: "balance"
    tipo: "integer"
  - nombre: "totalPurchased"
    tipo: "integer"
  - nombre: "totalConsumed"
    tipo: "integer"
  - nombre: "totalFromReferrals"
    tipo: "integer"

3.6 payments

tabla: "payments"
schema: "public"
descripcion: "Pagos de usuarios"
columnas:
  - nombre: "id"
    tipo: "UUID"
    pk: true
  - nombre: "userId"
    tipo: "UUID"
    fk: "users.id"
  - nombre: "packageId"
    tipo: "UUID"
    fk: "credit_packages.id"
  - nombre: "amountMXN"
    tipo: "decimal(10,2)"
  - nombre: "creditsGranted"
    tipo: "integer"
  - nombre: "method"
    tipo: "payments_method_enum"
  - nombre: "status"
    tipo: "payments_status_enum"
  - nombre: "externalId"
    tipo: "varchar(255)"
indices:
  - columnas: [userId, createdAt]
  - columnas: [status, createdAt]
  - columnas: [externalId]

4. ENUMS

enums:
  users_role_enum:
    valores: [USER, VIEWER, MODERATOR, ADMIN, SUPER_ADMIN]

  videos_status_enum:
    valores: [PENDING, UPLOADING, UPLOADED, PROCESSING, COMPLETED, FAILED]

  store_users_role_enum:
    valores: [OWNER, OPERATOR]

  referrals_status_enum:
    valores: [PENDING, REGISTERED, QUALIFIED, REWARDED]

  payments_method_enum:
    valores: [CARD, OXXO, 7ELEVEN]

  payments_status_enum:
    valores: [PENDING, PROCESSING, COMPLETED, FAILED, REFUNDED, EXPIRED]

  notifications_type_enum:
    valores: [VIDEO_PROCESSING_COMPLETE, VIDEO_PROCESSING_FAILED, LOW_CREDITS, PAYMENT_COMPLETE, PAYMENT_FAILED, REFERRAL_BONUS, PROMO, SYSTEM]

  credit_transactions_type_enum:
    valores: [PURCHASE, CONSUMPTION, REFERRAL_BONUS, PROMO, REFUND]

  otps_purpose_enum:
    valores: [REGISTRATION, LOGIN, PASSWORD_RESET]

  corrections_type_enum:
    valores: [NAME, CATEGORY, QUANTITY, PRICE, BARCODE, IMAGE, OTHER]

  ground_truth_status_enum:
    valores: [PENDING, VERIFIED, REJECTED, NEEDS_REVIEW]

  product_submissions_status_enum:
    valores: [PENDING, APPROVED, REJECTED, NEEDS_INFO]

  promotions_type_enum:
    valores: [PERCENTAGE, FIXED_AMOUNT, CREDITS_BONUS, FREE_CREDITS]

5. DIAGRAMA DE RELACIONES

              users
             /  |  \
            /   |   \
       stores  credit_balances  referrals
          |         |
    store_users  credit_transactions
          |
       videos -----> inventory_items
          |              |
          +------> corrections
                       |
                  ground_truth

6. REFERENCIAS

  • Inventario detallado: orchestration/inventarios/DATABASE_INVENTORY.yml
  • Entities: Ver @PROJ_DEF_ENTITIES
  • Migraciones: apps/backend/src/migrations/

Generado: 2026-01-16