Skip to Content
Modelo de datos

Modelo de datos

Esquema PostgreSQL gestionado con Prisma (apps/api/prisma/schema.prisma). En modo demo el mismo modelo vive en memoria (createMemoryRepos).

Entidades

User

Remitentes (rol USER), operadores de empresa (BUSINESS) y admins.

CampoNotas
emailúnico, login
roleUSER · BUSINESS · ADMIN
kycStatusNOT_STARTED → PENDING → APPROVED/REJECTED
monthlyLimitEurlímite mensual (equivalente EUR), editable por admin
companyIdenlaza al operador con su empresa (B2B)

Company

Cuenta B2B. kybStatus controla si la empresa puede enviar (lo aprueba el backoffice en /admin/companies/:id/kyb).

KycSubmission

Documento + selfie + prueba de residencia (base64 en MVP). El admin la revisa y el resultado se replica en User.kycStatus.

Beneficiary

Destinatario guardado del remitente, con métodos de cobro opcionales: bank (Json), wallet (Json), usdt (Json). Validación: el método debe existir como corredor en su país.

Remittance — el corazón

GrupoCampos
Identidadreference (NX-XXXXXX, único), senderId, companyId?, beneficiaryId?
ReceptorrecipientName, recipientPhone, recipientToken? (smart link), deliveryDetails (Json)
Cotización congeladaamount, amountEur, sourceCurrency, destinationCountry, deliveryMethod, destinationCurrency, appliedRate, corridorFee, totalFees, totalToPay, receiveAmount
Estadostatus, requiresReview, awaitingRecipient, failureReason
CashelapayinId, payoutId, paymentInstructions (Json)
FuturobatchId (mass payouts Fase 6)

amountEur se congela al crear para que límites y umbrales AML no dependan del FX del momento de la consulta.

RemittanceEvent

Timeline append-only por remesa — alimenta el tracking del cliente.

ComplianceAlert

Alertas AML (AML_THRESHOLD, MONTHLY_LIMIT, MANUAL) con estado OPEN/RESOLVED. Se resuelven al aprobar/rechazar la remesa o manualmente.

Lead

CRM de la Fase 0: capturados por la landing, gestionados en el backoffice (NEW → CONTACTED → CONVERTED / DISCARDED).

Diagrama

User 1──n Beneficiary User 1──n KycSubmission User 1──n Remittance n──1 Company (opcional) Remittance 1──n RemittanceEvent Remittance 1──n ComplianceAlert n──1 User Lead (independiente)

Migraciones

El MVP usa prisma db push en el arranque de Railway (deploy:start). Antes de producción real: congelar el esquema con prisma migrate dev y cambiar el comando a prisma migrate deploy.

Last updated on

Modelo de datos — Nexlo Wiki