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.