Aller au contenu

Architecture

Le domaine immobilier suit la frontière standard : PostgreSQL/FastAPI sont autoritaires et medusa-buildings ne porte que streaming, interactions, DoorSystem et NUI. Voir Architecture technique de l'immobilier.

Le domaine Crafting suit la même frontière : FastAPI/PostgreSQL possèdent définitions, files et scheduler; medusa-crafting adapte placement, props, interactions et NUI sans accès direct à la base. Voir Crafting technique.

Dialogues administratifs

L'admin web fournit openAdminModal et la NUI medusa-admin fournit openAdminAction. Ces deux adaptateurs asynchrones utilisent un élément HTML dialog, construisent les champs par API DOM, conservent la validation native des formulaires et résolvent null en cas d'annulation. Aucun flux administratif ne doit appeler alert, confirm ou prompt : les nouvelles actions réutilisent le dialogue de leur application afin de préserver thème, focus clavier et sémantique destructive.

PostgreSQL est la source de vérité. FastAPI porte toute la logique métier et Redis ne conserve que cache, sessions temporaires et verrous. FiveM et le bot ne se connectent jamais directement à la base.

flowchart LR
  Player[Joueur] --> FiveM[FXServer / FiveM]
  Browser[Navigateur staff] --> Admin[Admin nginx]
  Discord[Discord] <--> Bot[Bot Medusa]
  Admin --> API[FastAPI]
  FiveM --> API
  Bot <--> API
  API --> DB[(PostgreSQL)]
  API --> Redis[(Redis)]
  Docs[Documentation nginx]

Réseaux

gta_backend est un bridge interne partagé par les services de données et leurs consommateurs. gta_runtime permet à admin, bot, FiveM et documentation de publier ou joindre les services externes nécessaires. L'API, PostgreSQL et Redis ne publient aucun port hôte par défaut.

Répertoires

  • api/ : FastAPI, modèles, services, migrations Alembic et tests.
  • admin/ : application statique modulaire servie par nginx et proxy /api; voir Administration web.
  • bot/ : bot Discord et service HTTP privé pour OAuth/rôles.
  • fivem/ : image FXServer, configuration et ressources.
  • docs/ : sources MkDocs, réparties entre fonctionnel et technique.

Contrat HTTP interne FiveM

medusa-core est l'unique adaptateur HTTP partagé. apiRequest conserve les réponses de succès et rejette un objet simple sérialisable contenant message, code, statut, méthode, route, corrélation et caractère transitoire. formatApiError garantit un diagnostic même si un rejet inter-ressources perd ses propriétés. apiRequestWithRetry est un choix explicite du consommateur : aucun retry implicite n'est appliqué aux mutations.

Domaine Communications

Le domaine associe medusa-arphone, pma-voice, screenshot-basic, l'API autoritaire et le volume arphone_media. L'implant est indépendant du personnage afin de permettre orphaning et réassignation, sans implémenter le hacking futur.

Le domaine véhicules suit la même frontière : medusa-vehicles possède le runtime réseau, FastAPI possède les règles et PostgreSQL possède les dossiers, clés et snapshots. Les interfaces web et F10 appellent les mêmes services métier ; elles ne modifient jamais directement les tables.