Saltar al contenido
CRM Postventa documentación

Arquitectura

Backend

Backend

Rust, 55 archivos, 22 144 líneas, 166 tests. cargo clippy corre con -D warnings: ningún aviso pasa.

Autenticación

  • Contraseñas con Argon2id. Bloqueo temporal por intentos fallidos — comprobado en la práctica: bloquea de verdad.
  • Access token JWT HS256 de vida corta (30 min), en memoria en la web y en expo-secure-store en móvil. Nunca en localStorage ni AsyncStorage.
  • Refresh token opaco y rotatorio: se guarda sólo su hash SHA-256. Cada refresco encadena el nuevo al anterior; si llega uno ya revocado se revoca toda la cadena, que es la forma estándar de detectar un token robado.

Autorización

La directiva @auth(requires: [...]) está declarada en el contrato y cada campo anotado lleva su guarda en el servidor. Son 22 campos.

DataLoaders

Nueve, uno por agregado. Resolver ticket.customer en una lista de 50 tickets es una consulta, no 50. Uno de ellos usa dos claves para que ticket.warranty y asset.warranty compartan caché.

Tareas de fondo

Ver Tareas de fondo.

Subcomandos

crm-api                          # arranca el servidor
crm-api seed-demo [--reset]      # datos de demostración coherentes
crm-api export-schema [ruta]     # el SDL que emite async-graphql
crm-api run-jobs                 # una pasada del barrido, sin esperar
crm-api set-password <correo> <clave>

Integraciones

Ver Mensajería y chatbot y ADR-08 El sistema funciona sin credenciales de Meta.

Enlazan aquí