- Le but d'un système de récompense est d'être attractif, engageant et motivant pour les contributeurs
- L'organisation doit décider des types de comportements ou d'accomplissements (relation durable, assiduité, dévouement, contribution essentielle, responsabilité et conformité) qu'elle souhaite encourager avec ce système de récompenses: tout ce qui est récompensé tend à se répéter.
⚠️ récompenses intrinsèques et extrinsèques
- elles possèdent une surface et un symbolisme: elles signifient combien sont précieux ses contributeurs à l'organisation mais aussi leur importance vis-à-vis des uns et des autres.
Le débat est l'architecture et l'implémentation de ce système: pourquoi vouloir l'implémenter en SQL ?
portabilité: 0
expressivité: 0
maintenabilité: 0
S'il est question, effectivement, de raisonner sur des résultats d'observations, alors développons un autre système dédié et découplé du système de récompense.
Les contributeurs, l'environnement, les taxa observés vont toujours arriver à surprendre: le système de récompense demandera des réglages réguliers des pondérations en particulier au démarrage de l'expérience, sans socle de connaissance.
Une implémentation en python pourrait potentiellement être plus expressive, descriptive et beaucoup plus maintenable.
Ici, par exemple, un prototype sous forme d'automate ...
... avec une suggestion de config descriptive mais concise:
states = {
'initial': 'Start',
'Start': (None, None, [start_transitions]),
'amateur_state': (User.attendance >= 3, 'bronze_state', [amateur_bronze,]),
'bronze_state': (User.attendance >= 5, 'argent_state', [some_reducer,]),
'bronze_state': (User.observations[-1].taxon.rarity >= 0.7, 'argent_state',[r1, r2,]),
'bronze_state': (User.seniority >= 4 and User.attendance >= 5, 'argent_state', []),
'argent_state': (User.attendance >= 10, 'or_state', [r3,]),
'argent_state': (User.observations[-1].taxon.rarity >= 0.7, 'or_state', [r4,]),
'argent_state': (User.attendance * User.observations[-1].taxon.rarity >= 7, 'or_state', [r5,]),
'or_state': (None, None, None)
}
for old_state, (trigger, next_state, reducers) in states.items()
...