Identifizierung aufstrebender Top-Beitragender

Unser erster Versuch war die Rangliste, aber sie scheint das reine Volumen (denken Sie an „Ist es schon behoben? Ist es schon behoben? Ist es schon behoben? Hallo?“) gegenüber der Qualität zu bevorzugen. Okay, ja, „Qualität“ ist schwer zu algorithmisieren, obwohl es einige offensichtliche Anpassungen gibt, die vorgenommen werden können.

Was wir begonnen haben, um wirklich hilfreiche Benutzer zu identifizieren, ist,

nach Threads zu suchen, bei denen ein anderer Benutzer als Erster antwortet
-- Ziel: Themen finden, bei denen die erste Nicht-OP-Antwort ein Nicht-SonarSourcer ist

WITH

SonarSourcers AS (
    SELECT u.id AS user_id
    FROM groups g
    INNER JOIN group_users gu ON g.id=gu.group_id
    INNER JOIN users u ON u.id = gu.user_id
    WHERE g.name='sonarsourcers'
),

Tagged_topics AS (
    SELECT tt.topic_id
    FROM topic_tags tt
    JOIN tags t on t.id=tt.tag_id
    WHERE name = 'me-too'
)


-- 'normale' Themen finden, die von normalen Benutzern erstellt wurden
topic_user AS (
    SELECT id as topic_id, user_id, created_at
    FROM topics
    LEFT JOIN SonarSourcers ss USING(user_id)
    LEFT JOIN tagged_topics tt on topics.id = tt.topic_id
    WHERE ss.user_id IS NULL  -- Themen von SonarSourcers weglassen
        AND tt.topic_id IS NULL -- Themen mit dem Tag 'me-too' weglassen
        AND user_id > 0  -- 'Willkommens'-PM/Tutorial-Threads von DiscoBot weglassen
        AND visible = TRUE
        AND archived = FALSE
        AND archetype='regular'
        AND created_at::DATE > '2023-07-01'
),

-- erste Nicht-OP-Antwort auf Benutzer-Themen finden
min_response AS (
    SELECT p.topic_id, tu.created_at, MIN(post_number) as post_number
    FROM posts p
    JOIN topic_user tu USING(topic_id)
    WHERE p.post_type = 1
        AND p.user_id != tu.user_id
        AND p.post_number > 1
        AND p.hidden = false
        AND p.deleted_at IS NULL
    GROUP BY topic_id, tu.created_at
)

SELECT p.topic_id, p.user_id, mr.created_at::DATE as thread_date
FROM posts p
JOIN min_response mr ON p.topic_id = mr.topic_id AND p.post_number=mr.post_number
LEFT JOIN SonarSourcers ss ON p.user_id=ss.user_id
LEFT JOIN user_badges ub on p.id = ub.post_id and ub.badge_id=110
WHERE ss.user_id IS NULL -- Themen eliminieren, bei denen SonarSourcer zuerst antwortet
    AND ub.user_id IS NULL -- Themen eliminieren, bei denen bereits ein Abzeichen vergeben wurde
ORDER BY mr.created_at DESC

Sobald wir diese Threads identifiziert haben, bewerten wir die Benutzerantwort und vergeben entweder dem antwortenden Benutzer ein „Users helping Users“-Abzeichen oder markieren den Thread mit einem (für Nicht-Mitarbeiter unsichtbaren) „me-too“-Tag. (Übrigens hat dieser Benutzer-Antwort-Bericht den positiven Nebeneffekt, Vorfälle in unserem Cloud-Dienst schnell zu erkennen. :joy:)

Von dort aus ist es einfach, hilfreiche Benutzer weiter zu belohnen und sie für weitere Förderung zu identifizieren.

5 „Gefällt mir“