Actuellement le résultat de l’évaluation de la règle de distance est stocké dans la map IdentityDistanceStatus
qui à idty_index
associe (requester_account_id
, DistanceStatus
) avec le statut qui peut valoir Pending
, Valid
, Invalid
.
La seule utilisation du résultat de la règle de distance est d’appeler claim_membership
ou renew_membership
, et cela doit se faire automatiquement après, c’est l’objet de !219.
Donc a priori, pas besoin de stocker le résultat du calcul, le seul élément à stocker est le compte du demandeur pour la mécanique reserve/slash.
De plus DistanceStatusExpireOn
est inutilisé (#164), et donc cette valeur n’est jamais retirée.
Souhaite-t-on conserver le résultat de la règle de distance pendant une certain durée ou peut-on adopter le fonctionnement suivant :
Les deux seules manière de demander l’évaluation sont :
request_distance_evaluation_for
: on demande l’évaluation pour une autre identité dans le contexte de la validation d’identité- le compte demandeur doit être membre (est-ce nécessaire ?)
- il ne doit pas y avoir de demande en cours pour l’identité cible
- l’identité cible doit avoir le statut
Unvalidated
request_distance_evaluation
: on demande l’évaluation pour soi-même pour renouveler son adhésion (renew_membership
) ou pour redevenir membre après expiration de l’adhésion (claim_membership
)- le compte demandeur doit avoir le statut
Member
ouNotMember
(est-ce nécessaire de la vérifier en amont ?) - il ne doit pas y avoir de demande en cours pour cette identité
- le compte demandeur doit avoir le statut
Après une évaluation positive, si le statut est Unvalidated
ou NotMember
on appelle claim_membership
, si le statut est Member
on appelle renew_membership
. D’où la nécessité de ne pouvoir demander l’évaluation de la règle de distance pour quelqu’un d’autre que dans le cas où il est Unvalidated
.
Dans ce scénario, on pourrait quand même avoir besoin d’un mécanisme antispam car rien n’empêche les membres d’appeler request_distance_evaluation
à chaque session. Si MAX_EVALUATIONS_PER_SESSION
membres font ça, les pools d’évaluation seront toujours pleines, et aucune nouvelle évaluation ne pourra passer.
Donc en gros, pas besoin de conserver le résultat de la règle de distance, qui est immédiatement utilisé, mais on peut conserver une trace de la demande pour :
- éviter d’avoir plusieurs demandes d’évaluation en cours pour une même identité
- servir de mécanisme antispam en limitant la fréquence de demande d’évaluation pour une identité
Mais dans certains cas ce mécanisme antispam peut être gênant. Par exemple si on veut faire entrer quelqu’un dans la toile, que sa distance est tout juste ok au moment où on fait la demande, mais au moment où c’est évalué ça devient tout juste ko. Dans ce cas il faut attendre le délai antispam avant une nouvelle évaluation. On pourrait donc différencier le délai antispam en cas d’évaluation positive ou négative, mais ça devient franchement compliqué.
Voilà mes réflexions du jour, toute remarque est bonne à prendre et m’aide à avancer concrètement.