Je me suis penché sur les rapports d’écart de niveau de confiance ces derniers temps. Plus précisément sur le niveau de confiance 2 (TL2) et ce qui empêche les utilisateurs d’être promus du TL1 au TL2.
Examiner les écarts des utilisateurs m’a fait réaliser à quel point tout cela concerne la communauté. Il ne s’agit pas seulement de mes questions et de mes opinions. Il s’agit aussi d’interagir avec d’autres utilisateurs. Et c’est une bonne chose.
Pourtant, je trouve un peu déprimant de réaliser combien d’utilisateurs sont si proches du TL2, et qu’il leur manque juste… “rendre”.
Je me demande si quelqu’un (les parents de jeunes enfants de 2 ans, peut-être ?
) a des idées sur la façon d’encourager les gens à adopter un esprit communautaire et à penser aux autres / à aider les autres… ?
Pour référence :
Requête Data Explorer
Pour ceux qui veulent la requête :
with
-- Utilisateurs de niveau de confiance 1
tl AS (
SELECT id as user_id, trust_level, last_seen_at
FROM users
WHERE trust_level = 1
),
-- Utilisateurs vus au cours des 3 derniers mois + visites, messages lus, temps de lecture
pr AS (
SELECT user_id,
count(1) as visits,
sum(posts_read) as posts_read,
SUM(time_read)/60 as minutes_reading_time,
DATE(last_seen_at) AS last_seen
FROM user_visits
INNER JOIN tl using (user_id)
WHERE DATE(last_seen_at) >= CURRENT_DATE - INTERVAL '3 month'
GROUP BY user_id, last_seen
ORDER BY visits, last_seen DESC
),
-- Sujets auxquels il a été répondu
trt as (
select posts.user_id,
count(distinct topic_id) as replied_count
from posts
INNER JOIN tl using (user_id)
INNER JOIN topics ON topics.id = posts.topic_id
WHERE topics.user_id <> posts.user_id
AND posts.deleted_at IS NULL AND topics.deleted_at IS NULL
-- AND topics.archetype <> 'private_message'
AND archetype = 'regular'
GROUP BY posts.user_id
ORDER BY replied_count DESC
),
-- Sujets vus tout le temps
tvat as (
select tv.user_id,
COUNT(distinct tv.topic_id) AS topic_id
FROM topic_views tv
LEFT JOIN topics t on tv.topic_id=t.id
INNER JOIN tl on tv.user_id=tl.user_id
WHERE
t.archetype = 'regular'
AND t.deleted_at is null
group by tv.user_id
),
likes AS (
SELECT user_id,
likes_given, likes_received
from user_stats
INNER JOIN tl using (user_id)
)
SELECT pr.user_id,
pr.last_seen as "Dernière connexion",
-- jours visités : 15
greatest(15-coalesce(pr.visits,0),0) as "Écart jours visités",
-- réponses aux sujets : 3
greatest(3-coalesce(trt.replied_count,0), 0) as "Écart réponses sujet",
-- sujets consultés : 20
greatest(20-coalesce(tvat.topic_id,0),0) as "Écart sujets consultés",
-- messages lus : 100
greatest(100-coalesce(pr.posts_read,0),0) as "Écart messages lus",
-- temps passé à lire les messages : 60min
greatest(60-pr.minutes_reading_time,0) as "Écart temps de lecture",
-- likes donnés : 1
greatest(1-likes.likes_given,0) as "Écart likes donnés",
-- likes reçus : 1
greatest(1-likes.likes_received,0) as "Écart likes reçus"
FROM pr
left join trt using (user_id)
left join tvat using (user_id)
LEFT JOIN likes using (user_id)
ORDER BY
pr.visits DESC
LIMIT 500
