# Comment fonctionne le classement des demandes d'aide

Ce document explique publiquement comment est calcule le score qui classe
les demandes d'aide a la fin de chaque **tranche** (une periode d'entraide
de duree libre — une heure, un jour, un mois, une annee, decidee par
l'administrateur : voir `docs/architecture.md`), en cas de fonds
insuffisants pour tout le monde. Il n'y a pas de boite noire : le code qui
implemente cette formule est dans
[`backend-php/src/scoring_engine.php`](../backend-php/src/scoring_engine.php)
et le moteur de repartition dans
[`backend-php/src/distribution_engine.php`](../backend-php/src/distribution_engine.php) —
tous deux publics, testes, et directement lisibles.

## Pourquoi un score ?

L'association fonctionne en **don**, financee par le minage volontaire des
membres. Quand la cagnotte de la tranche suffit a couvrir toutes les
demandes, **tout le monde recoit l'integralite de ce qu'il a demande** — le
score ne sert a rien dans ce cas. Il n'intervient que pour decider **dans
quel ordre** payer quand la cagnotte ne suffit pas a tout le monde.

Il n'y a **aucune condition d'anciennete ou de temps de minage minimum**
pour avoir le droit de demander de l'aide : un nouveau membre peut demander
de l'aide des son inscription, et sera paye normalement si les fonds
suffisent. Le score ne le desavantage qu'en cas de fonds insuffisants — et
meme la, seulement partiellement (voir plus bas).

## La formule

```
score_final = 0.30 * bonus_malus_montant
            + 0.15 * malus_recurrence
            + 0.20 * votes_normalises
            + 0.15 * temps_minage_normalise
            + 0.10 * hashpower_normalise
            + 0.10 * anciennete_normalisee
```

| Composante | Poids | Ce qu'elle recompense |
|---|---|---|
| Ecart a la moyenne des montants demandes | 30% | Demander un montant raisonnable par rapport aux autres demandes de la tranche |
| Malus de recurrence | 15% | Ne pas avoir demande de l'aide plusieurs tranches de suite (jamais bloquant a 100%) |
| Votes recus | 20% | Le soutien de la communaute (vote facultatif, un par membre et par tranche) |
| Temps de minage de la tranche | 15% | Avoir contribue en minant sur cette tranche |
| Puissance de hash moyenne | 10% | Contribution en puissance (poids volontairement bas pour ne pas avantager les gros mineurs) |
| Anciennete | 10% | Fidelite a l'association (plafonnee a 24 mois pour ne pas figer le classement) |

Le detail complet du calcul (chaque composante, sa valeur et sa contribution
au score) est stocke pour chaque membre et chaque tranche, et consultable via
`GET /scoring/index.php?tranche_id=...` — jamais seulement le total.

### Sources des donnees

- Le **temps de minage** et la **puissance de hash** viennent exclusivement
  de l'API publique du pool de minage (source difficile a falsifier),
  jamais d'un auto-signalement du membre — collectees par l'administrateur
  sur sa propre machine et poussees au serveur (voir `docs/architecture.md`),
  le serveur web ne parle jamais lui-meme au pool.
- Les **votes** sont ponderes par l'anciennete du votant pour limiter
  l'impact de comptes recents coordonnes.
- Le **montant demande** et sa comparaison a la moyenne sont bases sur les
  demandes du mois en cours uniquement.

## Comment l'argent est reparti

1. Les **frais de gestion de la plateforme** (10% par defaut, variable
   selon les couts reels — hebergement, frais reseau Monero...) sont
   preleves sur la cagnotte brute de la tranche. Le montant brut, le taux
   applique et le montant net qui en resulte sont **toujours affiches
   publiquement** — jamais silencieux.
2. Les demandeurs sont tries par `score_final` decroissant. En cas
   d'egalite, celui qui demande le **moins** passe en premier.
3. La cagnotte nette est distribuee dans cet ordre : chacun recoit
   **l'integralite** de son montant demande, jusqu'a ce que la cagnotte ne
   permette plus de couvrir un montant en entier.
4. Des que ca arrive, la distribution **s'arrete net** : pas de paiement
   partiel au dernier rang. Ce qui reste dans la cagnotte est **reporte a
   la tranche suivante** (et s'ajoutera a sa cagnotte nette, sans etre
   re-taxe une seconde fois) — cette meme distribution reelle cloture
   aussi la tranche et en ouvre une nouvelle. Les demandeurs non payes
   peuvent redeposer une demande sur la tranche suivante.

## Ce que ce systeme ne fait pas

- Il ne verifie pas activement la sincerite des metriques de minage
  (pas de detection de triche technique) : un signalement manuel a
  l'association reste la reponse aux abus averes. Un temps de minage
  anormalement bas se traduit simplement par un moins bon classement en
  cas de fonds insuffisants.
- Il ne convertit jamais reellement du Monero en euros : les montants en
  euros affiches sur le site servent uniquement de repere de comparaison
  (oracle de prix), tous les mouvements de fonds se font en XMR natif.
