« Transaction » : différence entre les versions

De Boite A Outils
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(6 versions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :


== Description ==
== Description ==
Cette page permet de '''transférer des crédits à d’autres joueurs''' et de '''suivre l’historique de vos transactions'''.
Cette page permet de '''transférer des crédits à d’autres joueurs''' et de '''suivre vos transactions'''.


Elle permet notamment :
Elle permet :


* d’envoyer des crédits à un autre joueur
* d’envoyer des crédits
* de consulter les transactions envoyées et reçues
* de consulter les transactions envoyées et reçues
* de filtrer les opérations par statut, type ou sens
* de filtrer et rechercher dans l’historique
* d’obtenir le détail complet d’une transaction


👉 Une transaction n’est pas toujours instantanée :
👉 Une transaction peut ne pas être immédiate selon l’état du serveur ou des joueurs.
elle peut rester en attente jusqu’à ce que les joueurs concernés soient connectés sur le serveur de jeu.


== Accès ==
== Accès ==
Menu '''Joueur''' → '''Transactions'''


== Vue globale ==
Depuis le menu principal :
 
* '''Joueur''' → '''Transactions'''
 
[[Fichier:Accès transactions joueur.png|cadre|centre|Accès]]
 
== Vue de l’écran ==
 
=== Écran principal ===
<br clear="all"/>
<br clear="all"/>
[[Fichier:Ecran transactions joueur.png|cadre|gauche|Écran des transactions joueur]]
[[Fichier:Ecran transactions joueur.png|cadre|centre|Écran des transactions]]
<br clear="all"/>
<br clear="all"/>


L’écran est divisé en deux parties :
L’écran est divisé en deux zones :


* en haut : '''envoi de crédits'''
* en haut : '''Envoi de crédits'''
* en bas : '''historique des transactions'''
* en bas : '''Historique des transactions'''


== Envoyer des crédits ==
== Envoyer des crédits ==


=== Champs disponibles ===
=== Zone d’envoi ===
 
<br clear="all"/>
[[Fichier:Ecran transactions joueur.png|cadre|centre|Zone d’envoi de crédits]]
<br clear="all"/>
 
=== Champs ===


* '''Univers'''
* '''Univers'''
   → serveur concerné par la transaction
   → serveur sur lequel effectuer la transaction
  (ex : ''Univ2 - Sans CPU'')


* '''Destinataire'''
* '''Destinataire'''
Ligne 38 : Ligne 50 :


* '''SteamID'''
* '''SteamID'''
   → permet de saisir manuellement le SteamID d’un joueur si celui-ci n’apparaît pas dans la liste
   → permet de saisir un joueur manuellement
  (utile s’il n’apparaît pas dans la liste)


* '''Montant'''
* '''Montant'''
   → nombre de crédits à transférer
   → crédits à envoyer


* '''Message'''
* '''Message'''
   → description facultative associée à la transaction
   → texte libre associé à la transaction


=== Envoi ===
=== Envoi ===


Cliquez sur '''Envoyer''' pour créer la transaction.
Cliquez sur '''Envoyer'''.


✔️ Si tout est valide :
✔️ Si tout est valide :


* la demande est envoyée au serveur
* un message s’affiche :
* un résumé s’affiche avec l’ID de transaction, les frais et le total débité
  → '''OK (ID xxx - Frais xxx - Total débité xxx)'''
* l’historique est automatiquement rechargé
* la transaction apparaît dans l’historique
 
* le statut passe à '''Créée'''
⚠️ Règles importantes :
 
* vous ne pouvez pas vous envoyer des crédits à vous-même
* le montant doit être strictement supérieur à 0
* une connexion online valide est obligatoire
* le destinataire peut être choisi dans la liste ou saisi manuellement via son SteamID


== Frais de transaction ==
Exemple réel :


Pour les transferts entre joueurs, des frais peuvent être appliqués.
* Montant : 100
* Frais : 1000
* Total débité : 1100


👉 Ces frais sont calculés côté serveur selon une configuration dynamique :
=== Contraintes ===


* pourcentage
* impossible de s’envoyer des crédits à soi-même
* minimum
* le montant doit être > 0
* maximum
* un seul transfert en cours à la fois (côté serveur)
 
👉 Les joueurs donateurs du mois sont exemptés de frais sur les transferts joueur à joueur.


== Historique des transactions ==
== Historique des transactions ==


La partie basse affiche votre historique personnel.
=== Zone historique ===


Elle contient :
<br clear="all"/>
[[Fichier:Ecran transactions joueur historique.png|cadre|centre|Historique des transactions]]
<br clear="all"/>


* les transactions que vous avez envoyées
=== Colonnes ===
* les transactions que vous avez reçues


👉 Les '''250 dernières transactions''' sont chargées pour éviter de surcharger l’interface. Les filtres sont ensuite appliqués côté client. :contentReference[oaicite:5]{index=5}
* '''ID''' → identifiant interne
 
* '''Univers''' → serveur concerné
=== Colonnes ===
* '''Sens'''
  * '''Envoyé'''
  * '''Reçu'''
* '''Autre joueur''' → joueur concerné
* '''Montant''' → montant principal
* '''Frais''' → frais appliqués
* '''Statut''' → état actuel
* '''Créée le''' → date de création
* '''Terminée le''' → date de fin (si applicable)
* '''Description''' → message


* '''ID''' : identifiant interne de la transaction
=== Exemple réel ===
* '''Univers''' : serveur concerné
* '''Sens''' :
** '''Envoyé''' → transaction sortante
** '''Reçu''' → transaction entrante
* '''Autre joueur''' : autre partie impliquée
* '''Montant''' : montant principal de la transaction
* '''Frais''' : frais prélevés
* '''Statut''' : état actuel de la transaction
* '''Créée le''' : date de création
* '''Terminée le''' : date de finalisation
* '''Description''' : message associé


== Codes couleur ==
Transaction affichée :


Les lignes sont colorées automatiquement selon leur statut :
* ID : 138
* Univers : Univ2 - Sans CPU
* Sens : Envoyé
* Joueur : babyloune
* Montant : 100
* Frais : 1000
* Statut : Créée


* '''Vert''' → transaction terminée
👉 Cela signifie que la transaction est enregistrée mais pas encore exécutée.
* '''Jaune''' → transaction en attente ou en cours de traitement
* '''Rouge''' → transaction échouée ou annulée


== Filtres ==
== Filtres ==


Plusieurs filtres sont disponibles :
Situés au-dessus de l’historique :
 
* '''Statut'''
  → par défaut : '''En cours'''


* '''Statut''' (par défaut : En cours)
* '''Type'''
* '''Type'''
  → par exemple :
* '''Sens'''
  * transfert joueur
* '''Recherche'''
  * récompense vote
  * don admin
  * retrait admin


* '''Sens'''
Recherche possible sur :
  → envoyé / reçu


* '''Recherche'''
* pseudo
  → recherche par :
* GUID
  * pseudo
* description
  * description
* ID
  * GUID
  * ID


👉 Les filtres sont appliqués directement dans l’application, sans nouvel appel serveur.
👉 Les filtres s’appliquent instantanément.


== Actions disponibles ==
== Actions ==


=== Actualiser ===
=== Actualiser ===
Recharge l’historique depuis le serveur.
Recharge les transactions depuis le serveur.


=== Détails ===
=== Détails ===
Sélectionnez une transaction puis cliquez sur '''Détails''' ou double-cliquez sur la ligne.
Affiche les informations complètes d’une transaction.


La fenêtre de détail affiche notamment :
=== Copier GUID ===
 
Copie l’identifiant unique.
* l’ID et le GUID
* le type
* le statut
* la source et la destination
* le montant
* les frais
* le total débité
* le total crédité
* les dates
* la description complète


=== Copier GUID ===
== Statuts des transactions ==
Permet de copier le GUID de la transaction sélectionnée.


👉 Ce GUID peut être utile pour le support ou pour retrouver précisément une transaction.
=== Cycle normal ===


== Fonctionnement ==
* 1. '''Créée'''
* 2. '''Débit en attente'''
* 3. '''Débitée'''
* 4. '''Crédit en attente'''
* 5. '''Terminée'''


Les transactions de crédits sont créées dans la BAO, puis traitées côté serveur.
=== Important ===


Pour les transferts entre joueurs :
👉 Une transaction peut rester bloquée en :


* la transaction est d’abord créée
* '''Créée'''
* le joueur source doit être joignable pour le débit
* '''Débit en attente'''
* le joueur cible doit être joignable pour le crédit
* '''Crédit en attente'''
* si tout se passe bien, la transaction est finalisée


👉 Le traitement est réalisé en arrière-plan par un worker serveur qui vérifie régulièrement les transactions en attente.
si :


== Cycle de vie d’une transaction ==
* le joueur source est hors ligne
* le joueur cible est hors ligne
* le serveur est indisponible


Une transaction suit plusieurs statuts possibles.
=== Cas d’erreur ===


=== Étapes normales ===
* '''Échec''' → erreur technique
* '''Annulée''' → arrêt manuel
* '''Rollback''' → remboursement automatique après problème


1. '''Créée'''
== Fonctionnement réel ==
  * la transaction est enregistrée


2. '''Débit en attente'''
* la transaction est créée dans la BAO
  * le système attend de pouvoir débiter le joueur source
* elle est traitée en arrière-plan côté serveur
* le système attend que les joueurs soient connectés
* le débit et le crédit se font séparément


3. '''Débitée'''
👉 Le transfert n’est donc pas instantané.
  * les crédits ont été retirés au joueur source


4. '''Crédit en attente'''
== Architecture technique ==
  * le système attend de pouvoir créditer le joueur cible


5. '''Terminée'''
Le système de transactions repose sur 3 composants principaux :
  * les crédits ont bien été transférés


=== Cas particuliers ===
* '''Client (Boîte à Outils)'''
  → envoie les demandes de transfert et affiche l’historique


* '''Échec'''
* '''API BAO'''
   * erreur définitive avant finalisation
   → enregistre les transactions et pilote leur exécution


* '''Annulée'''
* '''Serveur Empyrion (mod Credits)'''
   * transaction annulée volontairement
   → applique réellement les crédits en jeu


* '''Rollback en attente'''
👉 Les crédits ne sont jamais modifiés directement par le client.
  * le débit a réussi, mais le crédit final n’a pas pu aboutir
Tout passe par l’API serveur.


* '''Rollback terminé'''
== Traitement en arrière-plan ==
  * les crédits ont été restitués au joueur source


=== Schéma simplifié ===
Les transactions sont traitées automatiquement par un service serveur.


Créée 
Ce service :
→ Débit en attente 
→ Débitée 
→ Crédit en attente 
→ Terminée


ou, en cas de problème après débit :
* vérifie les transactions toutes les '''30 secondes'''
* traite les transactions par lot
* priorise les joueurs qui viennent de se connecter


Débitée 
👉 Une transaction n’est donc jamais exécutée immédiatement.
→ Crédit en attente 
Elle est prise en charge par un worker.
→ Rollback en attente 
→ Rollback terminé


== Transactions en attente ==
=== Priorités de traitement ===


Une transaction peut rester en attente dans plusieurs cas :
* 1. Joueurs qui viennent de se connecter
* 2. Transactions en attente
* 3. Transactions expirées


* le joueur source n’est pas connecté
👉 Cela permet d’accélérer les transferts dès qu’un joueur revient en ligne.
* le joueur cible n’est pas connecté
* le serveur de jeu ou le mod Empyrion n’est pas joignable
* le traitement attend le prochain cycle du worker


👉 Ce comportement est normal.
== Gestion des joueurs hors ligne ==


Le système interroge le serveur de jeu via l’API du mod Empyrion pour lire et modifier les crédits du joueur concerné.  
Le système gère automatiquement les joueurs hors ligne.


== Sécurité et robustesse ==
=== Cas 1 : joueur source hors ligne ===


Le système met en place plusieurs protections :
* la transaction reste en attente
* elle sera exécutée à sa prochaine connexion


* verrou côté serveur pour éviter plusieurs transferts concurrents depuis le même joueur
=== Cas 2 : joueur cible hors ligne ===
* logs détaillés d’audit
* retries techniques
* attente spécifique quand un joueur est hors ligne
* rollback si un débit a eu lieu mais que le crédit final échoue


👉 L’objectif est de sécuriser les crédits et d’éviter les pertes silencieuses.
* le débit est effectué
* le crédit est mis en attente
* il sera appliqué à la prochaine connexion


== Notifications ==
=== Retry automatique ===


Les transactions peuvent générer :
* le système réessaie régulièrement
* les compteurs sont réinitialisés à chaque reconnexion


* des notifications dans la BAO pour les joueurs concernés
👉 Aucune action manuelle n’est nécessaire.
* des notifications Discord côté serveur


Exemples :
== Notifications ==


* transfert initié
Le système envoie automatiquement des notifications Discord :
* transfert réussi
* transaction échouée
* rollback effectué


== Ce que cette fonctionnalité fait ==
* création de transaction
* débit effectué
* crédit effectué
* transaction terminée
* erreurs ou rollback


* crée des transferts de crédits entre joueurs
👉 Les joueurs peuvent suivre l’évolution en temps réel.
* permet de suivre l’avancement réel d’une transaction
* affiche l’historique personnel
* fournit des détails utiles pour le support


== Ce que cette fonctionnalité ne fait pas ==
=== Exemple ===


* ne garantit pas un transfert instantané
* Étape 1/2 : débit effectué
* ne permet pas d’annuler soi-même une transaction côté joueur
* Étape 2/2 : crédit effectué
* ne traite pas les crédits hors serveur concerné
* ne contourne pas l’état de connexion des joueurs


== Notes ==
== Notes ==


* une connexion online valide est obligatoire
* une connexion online est obligatoire
* l’interface traduit les statuts techniques en français pour l’affichage
* les statuts évoluent automatiquement
* les dates sont affichées en heure locale
* les frais sont calculés côté serveur
* certaines transactions peuvent rester temporairement en attente avant d’évoluer automatiquement
* les transactions sont sécurisées (pas de double envoi possible)

Dernière version du 28 mars 2026 à 14:18

Transactions

Description

Cette page permet de transférer des crédits à d’autres joueurs et de suivre vos transactions.

Elle permet :

  • d’envoyer des crédits
  • de consulter les transactions envoyées et reçues
  • de filtrer et rechercher dans l’historique

👉 Une transaction peut ne pas être immédiate selon l’état du serveur ou des joueurs.

Accès

Depuis le menu principal :

  • JoueurTransactions
Accès

Vue de l’écran

Écran principal


Écran des transactions


L’écran est divisé en deux zones :

  • en haut : Envoi de crédits
  • en bas : Historique des transactions

Envoyer des crédits

Zone d’envoi


Zone d’envoi de crédits


Champs

  • Univers
 → serveur sur lequel effectuer la transaction  
 (ex : Univ2 - Sans CPU)
  • Destinataire
 → joueur sélectionné dans la liste
  • SteamID
 → permet de saisir un joueur manuellement  
 (utile s’il n’apparaît pas dans la liste)
  • Montant
 → crédits à envoyer
  • Message
 → texte libre associé à la transaction

Envoi

Cliquez sur Envoyer.

✔️ Si tout est valide :

  • un message s’affiche :
OK (ID xxx - Frais xxx - Total débité xxx)
  • la transaction apparaît dans l’historique
  • le statut passe à Créée

Exemple réel :

  • Montant : 100
  • Frais : 1000
  • Total débité : 1100

Contraintes

  • impossible de s’envoyer des crédits à soi-même
  • le montant doit être > 0
  • un seul transfert en cours à la fois (côté serveur)

Historique des transactions

Zone historique


Fichier:Ecran transactions joueur historique.png
Historique des transactions


Colonnes

  • ID → identifiant interne
  • Univers → serveur concerné
  • Sens
 * Envoyé
 * Reçu
  • Autre joueur → joueur concerné
  • Montant → montant principal
  • Frais → frais appliqués
  • Statut → état actuel
  • Créée le → date de création
  • Terminée le → date de fin (si applicable)
  • Description → message

Exemple réel

Transaction affichée :

  • ID : 138
  • Univers : Univ2 - Sans CPU
  • Sens : Envoyé
  • Joueur : babyloune
  • Montant : 100
  • Frais : 1000
  • Statut : Créée

👉 Cela signifie que la transaction est enregistrée mais pas encore exécutée.

Filtres

Situés au-dessus de l’historique :

  • Statut (par défaut : En cours)
  • Type
  • Sens
  • Recherche

Recherche possible sur :

  • pseudo
  • GUID
  • description
  • ID

👉 Les filtres s’appliquent instantanément.

Actions

Actualiser

Recharge les transactions depuis le serveur.

Détails

Affiche les informations complètes d’une transaction.

Copier GUID

Copie l’identifiant unique.

Statuts des transactions

Cycle normal

  • 1. Créée
  • 2. Débit en attente
  • 3. Débitée
  • 4. Crédit en attente
  • 5. Terminée

Important

👉 Une transaction peut rester bloquée en :

  • Créée
  • Débit en attente
  • Crédit en attente

si :

  • le joueur source est hors ligne
  • le joueur cible est hors ligne
  • le serveur est indisponible

Cas d’erreur

  • Échec → erreur technique
  • Annulée → arrêt manuel
  • Rollback → remboursement automatique après problème

Fonctionnement réel

  • la transaction est créée dans la BAO
  • elle est traitée en arrière-plan côté serveur
  • le système attend que les joueurs soient connectés
  • le débit et le crédit se font séparément

👉 Le transfert n’est donc pas instantané.

Architecture technique

Le système de transactions repose sur 3 composants principaux :

  • Client (Boîte à Outils)
 → envoie les demandes de transfert et affiche l’historique
  • API BAO
 → enregistre les transactions et pilote leur exécution
  • Serveur Empyrion (mod Credits)
 → applique réellement les crédits en jeu

👉 Les crédits ne sont jamais modifiés directement par le client. Tout passe par l’API serveur.

Traitement en arrière-plan

Les transactions sont traitées automatiquement par un service serveur.

Ce service :

  • vérifie les transactions toutes les 30 secondes
  • traite les transactions par lot
  • priorise les joueurs qui viennent de se connecter

👉 Une transaction n’est donc jamais exécutée immédiatement. Elle est prise en charge par un worker.

Priorités de traitement

  • 1. Joueurs qui viennent de se connecter
  • 2. Transactions en attente
  • 3. Transactions expirées

👉 Cela permet d’accélérer les transferts dès qu’un joueur revient en ligne.

Gestion des joueurs hors ligne

Le système gère automatiquement les joueurs hors ligne.

Cas 1 : joueur source hors ligne

  • la transaction reste en attente
  • elle sera exécutée à sa prochaine connexion

Cas 2 : joueur cible hors ligne

  • le débit est effectué
  • le crédit est mis en attente
  • il sera appliqué à la prochaine connexion

Retry automatique

  • le système réessaie régulièrement
  • les compteurs sont réinitialisés à chaque reconnexion

👉 Aucune action manuelle n’est nécessaire.

Notifications

Le système envoie automatiquement des notifications Discord :

  • création de transaction
  • débit effectué
  • crédit effectué
  • transaction terminée
  • erreurs ou rollback

👉 Les joueurs peuvent suivre l’évolution en temps réel.

Exemple

  • Étape 1/2 : débit effectué
  • Étape 2/2 : crédit effectué

Notes

  • une connexion online est obligatoire
  • les statuts évoluent automatiquement
  • les frais sont calculés côté serveur
  • les transactions sont sécurisées (pas de double envoi possible)