عند النظر إلى أنماط سلوك المستخدم، بدأنا مؤخرًا في الانتباه إلى متى يجيب المستخدمون على أنفسهم. عندما يرد مستخدم على موضوعه الأصلي في سلسلة مناقشة، هل هو #bump أم #self-solve؟ لقد كتبت تقريرًا لـ
العثور على سلاسل المناقشة حيث يرد المستخدمون على أنفسهم.
-- الهدف: عرض سلاسل المناقشة حيث يرد المستخدمون على أنفسهم
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 in ('me-too', 'bump', 'self-solve')
),
-- العثور على المواضيع 'العادية' التي أنشأها مستخدمون عاديون
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 -- استبعاد المواضيع التي بدأها SonarSourcers
AND tt.topic_id IS NULL -- استبعاد المواضيع التي تم تمييزها بـ me-too، bump أو self-solve
AND visible = TRUE
AND archived = FALSE
AND archetype='regular'
AND deleted_at IS NULL
AND created_at::DATE > '2023-07-01'
),
-- العثور على أول رد غير أصلي لمواضيع المستخدم
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 -- استبعاد المواضيع حيث يكون SonarSourcer هو أول من يرد
AND ub.user_id IS NULL -- استبعاد المواضيع حيث تم منح شارة بالفعل
ORDER BY mr.created_at DESC
نحن نراجع النتائج بانتظام لتصنيف سلاسل المناقشة عن طريق إضافة علامة #bump أو #self-solve (مما يؤدي إلى إزالة سلسلة المناقشة من التقرير).
والآن نود البناء على ذلك عن طريق إرسال رسالة خاصة “رعاية” للمستخدمين الذين يحلون مشاكلهم بأنفسهم، مثل:
تهانينا على حل مشكلتك وشكرًا لمشاركة نتائجك. سيجد زملاؤك في المجتمع بالتأكيد أنها مفيدة في المستقبل. وإذا كنت ترغب في المساهمة بخبرتك بشكل أكبر، فإليك كيفية البدء…
الآن، إلى السؤال: يمكننا العثور على المستخدمين ذوي الصلة، بناءً على العلامات في سلاسل المناقشة الخاصة بهم. ويمكننا بالتأكيد إرسال هذه الرسائل يدويًا (ونحن نفعل ذلك، حتى الآن).
ولكن هل هناك أي أتمتة يمكننا وضعها حول:
- اختيار المستخدمين (نعم، يمكننا كتابة تقرير آخر لذلك…)
- إرسال الرسالة