Signature
dloopiq.getUserReputation(userId: string): Promise<UserReputation>
Type UserReputation
interface UserReputation {
userId: string
score: number // 0-100, démarre à 50
goldenTasksAnswered: number
correctAnswers: number
accuracy: number // 0-1, ex: 0.87 = 87%
certification: CertificationLevel
nextLevel: NextLevelInfo | null
}
interface NextLevelInfo {
level: CertificationLevel
requiredScore: number
requiredAnswers: number
missingScore: number
missingAnswers: number
}
type CertificationLevel = 'Unranked' | 'Bronze' | 'Silver' | 'Gold' | 'Expert'
Exemple
const rep = await dloopiq.getUserReputation('user_abc123')
console.log(rep.score) // 73
console.log(rep.certification) // "Silver"
console.log(rep.accuracy) // 0.82
if (rep.nextLevel) {
console.log(
`Prochain niveau : ${rep.nextLevel.level} — ` +
`manque ${rep.nextLevel.missingScore} points et ` +
`${rep.nextLevel.missingAnswers} réponses`
)
// → "Prochain niveau : Gold — manque 2 points et 150 réponses"
}
Niveaux de certification
| Niveau | Score minimum | Réponses golden minimum |
|---|
| Unranked | — | < 10 |
| Bronze 🥉 | ≥ 40 | ≥ 10 |
| Silver 🥈 | ≥ 60 | ≥ 50 |
| Gold 🥇 | ≥ 75 | ≥ 200 |
| Expert ⭐ | ≥ 90 | ≥ 500 |
Un utilisateur doit satisfaire les deux conditions (score ET nombre de réponses) pour atteindre un niveau.
Le score démarre à 50 pour tout nouvel utilisateur.
| Événement | Impact score |
|---|
| Golden task — bonne réponse | +1 |
| Golden task — mauvaise réponse | -3 |
| Score minimum | 0 |
| Score maximum | 100 |
Affichage suggéré dans votre app
function CertificationBadge({ userId }: { userId: string }) {
const [rep, setRep] = useState<UserReputation | null>(null)
useEffect(() => {
dloopiq.getUserReputation(userId).then(setRep)
}, [userId])
if (!rep) return null
const emoji = {
Unranked: '⚪',
Bronze: '🥉',
Silver: '🥈',
Gold: '🥇',
Expert: '⭐'
}[rep.certification]
return (
<View>
<Text>{emoji} {rep.certification}</Text>
<Text>Score : {rep.score}/100</Text>
<Text>Précision : {Math.round(rep.accuracy * 100)}%</Text>
</View>
)
}
Progression vers le niveau suivant
const rep = await dloopiq.getUserReputation(userId)
if (rep.nextLevel) {
const { level, missingScore, missingAnswers } = rep.nextLevel
// Afficher une barre de progression vers le prochain niveau
const progressScore = Math.max(0, 1 - missingScore / 15) // approx
const progressAnswers = Math.max(0, 1 - missingAnswers / 50) // approx
showProgressBar(`Vers ${level}`, Math.min(progressScore, progressAnswers))
} else {
showMessage('Niveau maximum atteint ! Vous êtes Expert ⭐')
}
Première visite
Si l’utilisateur n’a encore répondu à aucune tâche, la réputation est créée à la première réponse. Si vous appelez getUserReputation avant toute réponse, l’API retourne null ou crée un profil vierge selon l’implémentation.
Le score de réputation est par (développeur, utilisateur) — un utilisateur peut avoir des scores différents selon l’app dans laquelle il annote.