Registraire de musée
Construire avec l'agent IA
Backend de registraire de musée

Modèle de backend d'application de registraire de musée
Contrôle de localisation des objets de musée et flux de travail des registraires

Un backend de registraire de musée prêt pour la production sur Back4app avec suivi des objets de musée, propriété de collection, mises à jour de localisation, flux de travail des accords de prêt, historique des journaux de désaffectation et audit de journaux d'activité. Inclut un diagramme ER, un dictionnaire de données, un schéma JSON, un espace de jeu API et un prompt Agent IA pour une configuration rapide.

Principales conclusions du registraire

Ce modèle vous offre un backend de registraire de musée pour les enregistrements MuseumObject, les mises à jour de localisation, les workflows LoanAgreement, les entrées DeaccessionLog et l'historique ActivityLog afin que les équipes de collections puissent travailler à partir d'une source de vérité partagée.

  1. Contrôle de localisation MuseumObjectModélisez chaque MuseumObject avec currentLocation, status, collection, conditionSummary et provenanceNote afin que les registraires puissent suivre un accès de la galerie au stockage.
  2. Workflow LoanAgreementSuivez les prêts sortants et entrants avec le statut LoanAgreement, loanNumber, borrowingInstitution, startDate, dueDate et signedBy du personnel.
  3. Responsabilité DeaccessionLogEnregistrez les décisions de déaccession, les étapes d'approbation et les notes de finalDisposition dans les entrées DeaccessionLog liées à chaque MuseumObject.
  4. Permissions conviviales pour les registrairesUtilisez des règles ACL et CLP afin que les registraires, conservateurs, gestionnaires de collections et conservateurs ne touchent qu'aux classes qui leur sont assignées.
  5. API unique pour les opérations de collectionsServez des outils web, mobiles et administratifs à travers une couche REST et GraphQL pour MuseumObject, Location, Collection, LoanAgreement, DeaccessionLog et ActivityLog.

Qu'est-ce que le modèle d'application de registraire de musée ?

Les délais dans le registraire de musée sont rarement facultatifs ; une couche d'enregistrement structurée transforme les dates en alertes plutôt qu'en surprises. L'élan dépend d'un état précis. Avec Collection, Location, MuseumObject, LoanAgreement et DeaccessionLog sur Back4app, les équipes de registraire de musée peuvent appliquer une séparation des fonctions tout en collaborant sur le même enregistrement de cas. Le schéma couvre Utilisateur (nom d'utilisateur, e-mail, mot de passe, rôle, nom complet), Collection (numéro d'accès, titre, département, conservateur principal), Location (code, nom, type, sécurisé), MuseumObject (numéro d'accès, titre de l'objet, type d'objet, collection, emplacement actuel, statut), LoanAgreement (numéro de prêt, museumObject, type de prêt, institution emprunteuse, date de début, date d'échéance, signé par, statut de l'accord), DeaccessionLog (numéro de désaffectation, museumObject, date de décision, raison, approuvé par, disposition finale, statut de l'enregistrement), et ActivityLog (acteur, museumObject, type d'action, action à) avec des flux de travail d'authentification et d'enregistrement intégrés. Connectez votre frontend préféré et expédiez plus rapidement.

Meilleur pour :

Systèmes de registraire de muséeOutils de suivi des collectionsFlux de travail d'accord de prêtSystèmes d'enregistrement de désaffectionApplications de localisation d'exposition et de stockageÉquipes choisissant BaaS pour les opérations muséales

Comment ce backend de registraire de musée est organisé

Les semaines de pointe exposent la dette des registraires de musée : les raccourcis qui semblaient corrects en janvier deviennent la raison pour laquelle vous manquez vos engagements de février.

Utilisez Collection, Location et MuseumObject comme liste de contrôle pour l'étendue MVP : si cela n'est pas modélisé, cela deviendra une solution de contournement sous forme de feuille de calcul.

Fonctionnalités du registraire de musée

Chaque carte technologique dans ce hub utilise le même schéma de backend de registraire de musée avec Utilisateur, Collection, Emplacement, ObjetMusée, AccordDePrêt, JournalDeDésaffectation et JournalDActivité.

Gestion des MuseumObject

MuseumObject stocke accessionNumber, objectTitle, objectType, status, collection et currentLocation.

Suivi des emplacements

L'emplacement capture le code, le nom, le type et estSecure.

Flux de travail de l'accord de prêt

L'accord de prêt lie l'objet du musée, le numéro de prêt, le type de prêt, l'institution emprunteuse, la date d'échéance et le statut de l'accord.

Suivi du journal de désaffectation

Le journal de désaffectation enregistre le numéro de désaffectation, la date de décision, la raison, la disposition finale et le statut du dossier.

Pourquoi construire le backend de votre application de registraire de musée avec Back4app ?

Back4app fournit aux registraire, aux conservateurs et aux gestionnaires de collections les classes nécessaires afin que l'équipe puisse se concentrer sur les numéros d'accession, currentLocation et l'historique des mouvements au lieu de l'infrastructure.

  • MuseumObject et Location restent connectés: Les pointeurs MuseumObject et Location maintiennent currentLocation, statut et propriété de la collection faciles à interroger.
  • Les enregistrements LoanAgreement restent audités: LoanAgreement stocke loanNumber, loanType, borrowingInstitution, startDate, dueDate, agreementStatus et signedBy pour les objets sortants et entrants.
  • Les entrées DeaccessionLog sont structurées dès le premier jour: DeaccessionLog capture deaccessionNumber, decisionDate, reason, approvedBy, finalDisposition et recordStatus pour chaque cas de retrait d'objet.

Construisez le backend du registraire une fois, puis réutilisez le même schéma dans chaque flux de travail de collection et client.

Avantages pour les registraires

Un backend de musée qui aide les équipes de collection à garder le mouvement, les prêts et les désaffectations en ordre.

Recherches d'objets plus rapides

Commencez par MuseumObject et Location au lieu de créer manuellement des tables de suivi des acquisitions et des étagères.

Administration des prêts plus claire

Utilisez des champs de LoanAgreement tels que agreementStatus, dueDate, borrowingInstitution, et signedBy pour garder les prêts sortants et entrants visibles.

Historique de désaffectation traçable

Stockez les décisions de désaffectation dans DeaccessionLog avec decisionDate, reason, finalDisposition, et approvedBy pour un examen ultérieur.

Limites de permission pour les rôles du personnel

Appliquez les règles ACL et CLP afin que les registraires puissent modifier les enregistrements MuseumObject tandis que le personnel plus large ne lit que les emplacements d'objets approuvés.

Opérations de collection recherchables

Interrogez les entrées MuseumObject, Location, LoanAgreement, DeaccessionLog, et ActivityLog sans réinitialiser le schéma chaque saison.

Échafaudage assisté par IA

Générez un backend de registraire de musée et des intégrations de démarrage à partir d'une invite structurée.

Prêt à lancer votre application de registraire de musée ?

Laissez l'Agent IA de Back4app échafauder votre backend de registraire et générer des flux de travail MuseumObject, LoanAgreement, DeaccessionLog et ActivityLog à partir d'une seule invite.

Gratuit pour commencer — 50 invites d'Agent IA/mois, sans carte de crédit requise

Pile technologique de musée

Tout est inclus dans ce modèle de registre de musée backend.

Frontend
13+ technologies
Backend
Back4app
Base de données
MongoDB
Auth
Authentification intégrée + sessions
API
REST et GraphQL
Temps réel
Live Queries

Diagramme ER du musée

Modèle de relation d'entité pour le schéma backend du registraire de musée.

Voir la source du diagramme
Mermaid
erDiagram
    User ||--o{ Collection : "primaryCurator"
    User ||--o{ LoanAgreement : "signedBy"
    User ||--o{ DeaccessionLog : "approvedBy"
    User ||--o{ ActivityLog : "actor"
    Collection ||--o{ MuseumObject : "collection"
    Location ||--o{ MuseumObject : "currentLocation"
    MuseumObject ||--o{ LoanAgreement : "museumObject"
    MuseumObject ||--o{ DeaccessionLog : "museumObject"
    MuseumObject ||--o{ ActivityLog : "museumObject"

    User {
        String objectId PK
        String username
        String email
        String password
        String role
        String fullName
        Date createdAt
        Date updatedAt
    }

    Collection {
        String objectId PK
        String accessionNumber
        String title
        String department
        String primaryCuratorId FK
        Date createdAt
        Date updatedAt
    }

    Location {
        String objectId PK
        String code
        String name
        String type
        Boolean isSecure
        Date createdAt
        Date updatedAt
    }

    MuseumObject {
        String objectId PK
        String accessionNumber
        String objectTitle
        String objectType
        String collectionId FK
        String currentLocationId FK
        String status
        String conditionSummary
        String provenanceNote
        Date createdAt
        Date updatedAt
    }

    LoanAgreement {
        String objectId PK
        String loanNumber
        String museumObjectId FK
        String loanType
        String borrowingInstitution
        Date startDate
        Date dueDate
        String signedById FK
        String agreementStatus
        Date createdAt
        Date updatedAt
    }

    DeaccessionLog {
        String objectId PK
        String deaccessionNumber
        String museumObjectId FK
        Date decisionDate
        String reason
        String approvedById FK
        String finalDisposition
        String recordStatus
        Date createdAt
        Date updatedAt
    }

    ActivityLog {
        String objectId PK
        String actorId FK
        String museumObjectId FK
        String actionType
        String notes
        Date actionAt
        Date createdAt
        Date updatedAt
    }

Flux d'intégration du registraire

Flux d'exécution typique pour l'authentification, la recherche d'objets de musée, les mises à jour de localisation, la création d'accords de prêt, les enregistrements de journal de désaffectation et les mises à jour de journal d'activité.

Voir la source du diagramme
Mermaid
sequenceDiagram
  participant User
  participant App as Museum Registrar App
  participant Back4app as Back4app Cloud

  User->>App: Sign in as registrar, curator, or collections manager
  App->>Back4app: POST /login
  Back4app-->>App: Session token

  User->>App: Open object location board
  App->>Back4app: GET /classes/MuseumObject?include=collection,currentLocation&order=accessionNumber
  Back4app-->>App: MuseumObject list with Location and Collection pointers

  User->>App: Record a transfer to storage or gallery
  App->>Back4app: PUT /classes/MuseumObject/{objectId}
  Back4app-->>App: Updated currentLocation and status

  User->>App: Create a loan agreement or deaccession log
  App->>Back4app: POST /classes/LoanAgreement or /classes/DeaccessionLog
  Back4app-->>App: Agreement or log saved

  App->>Back4app: Subscribe to ActivityLog updates
  Back4app-->>App: Live updates for object movements and record changes

Guide de terrain du musée

Référence complète au niveau des champs pour chaque classe dans le schéma de registraire de musée.

ChampTypeDescriptionObligatoire
objectIdStringAuto-generated unique identifierAuto
usernameStringUser login name
emailStringUser email address
passwordStringHashed password (write-only)
roleStringRole of the user (e.g., registrar, curator, collections-manager, conservator, read-only-staff)
fullNameStringDisplay name for staff and stakeholders
createdAtDateAuto-generated creation timestampAuto
updatedAtDateAuto-generated last-update timestampAuto

8 champs dans User

Sécurité et autorisations du registraire

Comment la stratégie ACL et CLP protège les enregistrements de MuseumObject, les documents de prêt et les notes de désaffectation.

Accès basé sur les rôles du registraire

Les registraires peuvent créer et modifier des entrées de MuseumObject, Location, LoanAgreement et DeaccessionLog ; d'autres membres du personnel ont un accès en lecture seule là où c'est approprié.

Contrôle des prêts et des désaffectations

Limiter l'accès en écriture à LoanAgreement et DeaccessionLog afin que les approbations restent avec le personnel des collections autorisées.

Intégrité de l'historique des objets

Utilisez le Cloud Code pour valider les mises à jour de currentLocation et ajouter ActivityLog avant d'enregistrer les changements de mouvement.

Schéma JSON

Définition du schéma JSON brute prête à être copiée dans Back4app ou utilisée comme référence d'implémentation.

JSON
{
  "classes": [
    {
      "className": "User",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "username": {
          "type": "String",
          "required": true
        },
        "email": {
          "type": "String",
          "required": true
        },
        "password": {
          "type": "String",
          "required": true
        },
        "role": {
          "type": "String",
          "required": true
        },
        "fullName": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Collection",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "accessionNumber": {
          "type": "String",
          "required": true
        },
        "title": {
          "type": "String",
          "required": true
        },
        "department": {
          "type": "String",
          "required": true
        },
        "primaryCurator": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "Location",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "code": {
          "type": "String",
          "required": true
        },
        "name": {
          "type": "String",
          "required": true
        },
        "type": {
          "type": "String",
          "required": true
        },
        "isSecure": {
          "type": "Boolean",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "MuseumObject",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "accessionNumber": {
          "type": "String",
          "required": true
        },
        "objectTitle": {
          "type": "String",
          "required": true
        },
        "objectType": {
          "type": "String",
          "required": true
        },
        "collection": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Collection"
        },
        "currentLocation": {
          "type": "Pointer",
          "required": true,
          "targetClass": "Location"
        },
        "status": {
          "type": "String",
          "required": true
        },
        "conditionSummary": {
          "type": "String",
          "required": false
        },
        "provenanceNote": {
          "type": "String",
          "required": false
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "LoanAgreement",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "loanNumber": {
          "type": "String",
          "required": true
        },
        "museumObject": {
          "type": "Pointer",
          "required": true,
          "targetClass": "MuseumObject"
        },
        "loanType": {
          "type": "String",
          "required": true
        },
        "borrowingInstitution": {
          "type": "String",
          "required": true
        },
        "startDate": {
          "type": "Date",
          "required": true
        },
        "dueDate": {
          "type": "Date",
          "required": true
        },
        "signedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "agreementStatus": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "DeaccessionLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "deaccessionNumber": {
          "type": "String",
          "required": true
        },
        "museumObject": {
          "type": "Pointer",
          "required": true,
          "targetClass": "MuseumObject"
        },
        "decisionDate": {
          "type": "Date",
          "required": true
        },
        "reason": {
          "type": "String",
          "required": true
        },
        "approvedBy": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "finalDisposition": {
          "type": "String",
          "required": true
        },
        "recordStatus": {
          "type": "String",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    },
    {
      "className": "ActivityLog",
      "fields": {
        "objectId": {
          "type": "String",
          "required": false
        },
        "actor": {
          "type": "Pointer",
          "required": true,
          "targetClass": "User"
        },
        "museumObject": {
          "type": "Pointer",
          "required": true,
          "targetClass": "MuseumObject"
        },
        "actionType": {
          "type": "String",
          "required": true
        },
        "notes": {
          "type": "String",
          "required": false
        },
        "actionAt": {
          "type": "Date",
          "required": true
        },
        "createdAt": {
          "type": "Date",
          "required": false
        },
        "updatedAt": {
          "type": "Date",
          "required": false
        }
      }
    }
  ]
}

Construire avec l'Agent IA

Utilisez l'Agent IA Back4app pour générer une véritable application de registraire de musée à partir de ce modèle, y compris le frontend, le backend, l'authentification et les flux d'objet, de prêt et de désaffectation.

Agent IA Back4app
Prêt à construire
Créez une application de registre de musée sur Back4app avec ce schéma et ce comportement exacts.

Schéma:
1. Utilisateur (utiliser Back4app intégré) : nom d'utilisateur, e-mail, mot de passe, rôle, nom complet ; objectId, createdAt, updatedAt (système).
2. Collection : numéro d'accès (String, requis), titre (String, requis), département (String, requis), conservateur principal (Pointer vers Utilisateur, requis) ; objectId, createdAt, updatedAt (système).
3. Emplacement : code (String, requis), nom (String, requis), type (String, requis), estSécurisé (Boolean, requis) ; objectId, createdAt, updatedAt (système).
4. ObjetMusée : numéro d'accès (String, requis), titreObjet (String, requis), typeObjet (String, requis), collection (Pointer vers Collection, requis), emplacementActuel (Pointer vers Emplacement, requis), statut (String, requis), résuméCondition (String, optionnel), noteProvenance (String, optionnel) ; objectId, createdAt, updatedAt (système).
5. AccordPrêt : numéroPrêt (String, requis), objetMusée (Pointer vers ObjetMusée, requis), typePrêt (String, requis), institutionEmprunteuse (String, requis), dateDébut (Date, requis), dateÉchéance (Date, requis), signéPar (Pointer vers Utilisateur, requis), statutAccord (String, requis) ; objectId, createdAt, updatedAt (système).
6. JournalDeaccession : numéroDeaccession (String, requis), objetMusée (Pointer vers ObjetMusée, requis), dateDécision (Date, requis), raison (String, requis), approuvéPar (Pointer vers Utilisateur, requis), dispositionFinale (String, requis), statutEnregistrement (String, requis) ; objectId, createdAt, updatedAt (système).
7. JournalActivité : acteur (Pointer vers Utilisateur, requis), objetMusée (Pointer vers ObjetMusée, requis), typeAction (String, requis), notes (String, optionnel), actionÀ (Date, requis) ; objectId, createdAt, updatedAt (système).

Sécurité:
- Les rôles de registrar, conservateur et gestionnaire de collections peuvent créer et éditer des enregistrements ObjetMusée, Emplacement, AccordPrêt et JournalDeaccession selon leur responsabilité.
- Limitez l'accès en écriture aux enregistrements de collection et d'objet au personnel autorisé.
- Gardez les entrées de prêt et de déaccession auditables ; conservez l'historique du JournalActivité.

Auth:
- Inscription, connexion, déconnexion.

Comportement:
- Suivez les emplacements des objets, gérez les accords de prêt et enregistrez les journaux de déaccession.
- Affichez les collections par département et les objets par emplacementActuel et statut.
- Enregistrez des notes d'activité lorsqu'un ObjetMusée se déplace, qu'un prêt est signé ou qu'une déaccession est approuvée.

Livrer:
- Application Back4app avec schéma, CLPs, ACLs et une interface pour les registrars, conservateurs, gestionnaires de collections et conservateurs pour gérer le mouvement des objets, la paperasse de prêt et les flux de travail de déaccession.

Appuyez sur le bouton ci-dessous pour ouvrir l'Agent avec ce modèle de prompt pré-rempli.

Ceci est l'invite de base sans suffixe technologique. Vous pouvez adapter la pile frontend générée par la suite.

Déployer en quelques minutes50 invites gratuites / moisAucune carte de crédit requise

API Sandbox

Essayez les endpoints REST et GraphQL contre le schéma du registre de musée. Les réponses utilisent des données fictives et ne nécessitent pas de compte Back4app.

Chargement du bac à sable…

Utilise le même schéma que ce modèle.

Choisissez votre technologie

Développez chaque carte pour voir comment intégrer Collection, Location et MuseumObject avec votre pile choisie.

Flutter Registre de musée Backend

React Registre de musée Backend

React Natif Registre de musée Backend

Next.js Registre de musée Backend

JavaScript Registre de musée Backend

Android Registre de musée Backend

iOS Registre de musée Backend

Vue Registre de musée Backend

Angular Registre de musée Backend

GraphQL Registre de musée Backend

REST API Registre de musée Backend

PHP Registre de musée Backend

.NET Registre de musée Backend

Ce que vous obtenez avec chaque technologie

Chaque pile utilise le même schéma backend de registraire de musée et les contrats API.

Structure de données musée unifiée

Gérez les enregistrements MuseumObject, les entrées Location, les fichiers LoanAgreement et les notes DeaccessionLog avec un seul schéma.

Suivi de l'emplacement des objets pour les équipes de collections

Gardez l'historique de l'emplacement actuel et de l'activité lisible pour les registraire et conservateurs.

Flux de travail d'accord de prêt pour les musées

Stockez borrowingInstitution, dueDate, agreementStatus et signedBy dans un flux structuré.

Documentation de désaffectation pour les musées

Enregistrez recordStatus, decisionDate et reason for review and audit.

REST/GraphQL APIs pour les applications de musée

Connectez des outils web, mobiles et internes en utilisant des APIs flexibles.

Architecture extensible pour les opérations de collections

Ajoutez des champs ou des classes à mesure que l'accès et les expositions évoluent.

Comparaison de la pile de registraire de musée

Comparez la vitesse de configuration, le style SDK et le support AI à travers toutes les technologies prises en charge.

CadreTemps de configurationAvantage du Registrateur de MuséeType de SDKSupport AI
Environ 5 minCodebase unique pour les outils mobiles et web du registraire.SDK typéComplet
Moins de 5 minutesTableau de bord web rapide pour le suivi des objets.SDK tapéComplet
~3–7 minApplication mobile multiplateforme pour le personnel des collections.SDK tapéComplet
Configuration rapide (5 min)Portail de registraire rendu par le serveur pour le personnel.SDK tapéComplet
~3–5 minIntégration web légère pour les outils d'enregistrement.SDK tapéComplet
Environ 5 minApplication Android native pour le suivi des galeries et du stockage.SDK tapéComplet
Moins de 5 minutesApplication iOS native pour le personnel du musée.SDK tapéComplet
~3–7 minInterface web React pour les opérations de collections.SDK tapéComplet
Configuration rapide (5 min)Application web entreprise pour les workflows d'enregistrement.SDK tapéComplet
Moins de 2 minAPI GraphQL flexible pour les vues d'objet et de prêt.API GraphQLComplet
Configuration rapide (2 min)intégration REST API pour les systèmes de registraire.REST APIComplet
~3 minBackend PHP côté serveur pour les outils de musée.REST APIComplet
~3–7 minBackend .NET pour la gestion des collections.SDK typéComplet

Le temps de configuration reflète la durée prévue depuis le démarrage du projet jusqu'à la première requête MuseumObject ou LoanAgreement utilisant ce schéma de modèle.

Questions du Registrateur de Musée

Questions courantes sur la création d'un backend de registrateur de musée avec ce modèle.

Comment les pratiques des registraires de musée maintiennent-elles une qualité d'intégration élevée à mesure que le volume augmente ?
Comment les équipes de registraires de musée devraient-elles modéliser les clients, les affaires et les transferts internes sans ambiguïté ?
Pouvons-nous intégrer la signature électronique ou le stockage de documents sans fragmenter l'enregistrement du registraire de musée ?
Comment puis-je exécuter des requêtes pour des objets de musée et des emplacements avec Flutter ?
Comment gérer l'accès des registraires de musée avec Next.js Server Actions ?
Est-ce que React Native peut mettre en cache les accords de prêt hors ligne ?
Comment empêcher les modifications non autorisées de désaffectation ?
Quelle est la meilleure façon d'afficher les numéros d'acquisition sur Android ?
Comment fonctionne le flux de mouvement des objets de bout en bout ?
Quelles classes alimentent ce modèle d'enregistrement de musée ?

Approuvé par des développeurs du monde entier

Rejoignez des équipes expédiant des produits de registraire de musée plus rapidement avec des modèles Back4app

G2 Users Love Us Badge

Prêt à construire votre application de registraire de musée ?

Commencez votre projet de registrateur de musée en quelques minutes. Pas de carte de crédit requise.

Choisissez la technologie