| Resumo | O plugin Solved Reminders estende a funcionalidade do plugin Solved oferecendo capacidades adicionais de lembretes para tópicos resolvidos. | |
| Link do Repositório | https://github.com/discourse/discourse-solved-reminders-plugin | |
| Guia de Instalação | Como instalar plugins no Discourse |
Observe que este plugin está em desenvolvimento ativo e ainda não está totalmente concluído.
O plugin Solved Reminders estende a funcionalidade do plugin Discourse Solved adicionando capacidades de lembrete e notificação para tópicos que precisam ser fechados. Este plugin não apenas ajuda a manter uma gestão eficiente de tópicos, incentivando os usuários a marcá-los como resolvidos, mas também engaja os usuários por meio de mensagens de parabéns.
Recursos
- Lembretes Automatizados: Envia notificações aos usuários, incentivando-os a revisitar e marcar seus tópicos como resolvidos.
- Mensagens de Engajamento: Parabena os usuários que resolveram tópicos com sucesso e sugere outros tópicos adicionais que eles podem ajudar a resolver.
- Integração Perfeita: Funciona em conjunto com o plugin Discourse Solved para garantir uma experiência de usuário suave.
Instalação
Para instalar o plugin Solved Reminders, siga o processo geral de instalação de plugins descrito no guia do Discourse Meta:
- Edite sua configuração de container: Adicione o link do repositório do plugin ao seu arquivo
app.ymlna seçãohooks.
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/discourse-solved-reminders-plugin.git
- Reconstrua o container do Discourse: Aplique o plugin reconstruindo sua aplicação.
./launcher rebuild app
Configuração
Após a instalação, você pode ajustar as configurações do plugin através do painel administrativo do Discourse. Considere ajustar:
Uso
Uma vez configurado, o plugin funcionará automaticamente com base nas configurações definidas pelo administrador. Ele participa ativamente para garantir que os tópicos sejam resolvidos, lembrando os usuários relevantes com lembretes e mensagens.
Mensagem privada enviada ao usuário para lembrá-lo de marcar uma resposta como solução:
Mensagem privada enviada ao usuário que marcou a resposta como solução:
Os usuários podem desativar a mensagem privada que recomenda tópicos similares para marcar como solução em suas preferências:

Os administradores podem ajustar as configurações conforme necessário para atender às necessidades da comunidade.
Personalização do Texto da Mensagem
A mensagem de lembrete enviada aos usuários pode ser encontrada na página Aparência → Texto do Site do seu site, sob mark_as_solution.message.
Relatórios e Análise de Dados
Este plugin não adiciona tabelas de banco de dados específicas ao Discourse; no entanto, você pode usá-lo em combinação com o plugin Data Explorer para rastrear e analisar a eficácia das suas mensagens de lembrete.
Abaixo estão duas consultas SQL de exemplo do Data Explorer que você pode usar com este plugin.
Contagem de Mensagens de Lembrete Resolvido
Esta consulta fornece estatísticas agregadas mensais sobre as mensagens de lembrete do Solved Reminders. Ela:
- Identifica mensagens privadas contendo o texto “Houve uma resposta no tópico que você publicou”
- Agrupa os dados por mês e calcula:
- Número de mensagens de lembrete enviadas
- Número total de usuários que receberam esses lembretes
- Número de usuários que leram esses lembretes
- Porcentagem de taxa de leitura (leitores/destinatários)
- Os resultados mostram tendências mensais na atividade e eficácia das mensagens de lembrete
Detalhes SQL
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2025-12-31
-- text :reminder_text = %Houve uma resposta no tópico que você publicou%
WITH reminder_pms AS (
SELECT
t.id AS topic_id,
t.created_at,
p.id AS post_id,
p.user_id AS sender_id,
DATE_TRUNC('month', t.created_at) AS month
FROM topics t
JOIN posts p ON p.topic_id = t.id AND p.post_number = 1
WHERE
t.archetype = 'private_message'
AND t.created_at BETWEEN :start_date AND :end_date
AND p.raw LIKE :reminder_text
),
recipient_stats AS (
SELECT
r.topic_id,
r.month,
COUNT(DISTINCT tu.user_id) AS total_recipients,
COUNT(DISTINCT CASE WHEN tu.last_read_post_number > 0 THEN tu.user_id END) AS read_recipients
FROM reminder_pms r
JOIN topic_users tu ON tu.topic_id = r.topic_id AND tu.user_id != r.sender_id
GROUP BY r.topic_id, r.month
)
SELECT
TO_CHAR(month, 'YYYY-MM') AS month,
COUNT(DISTINCT topic_id) AS reminder_pms_sent,
SUM(total_recipients) AS total_users_received,
SUM(read_recipients) AS users_who_read,
ROUND(100.0 * SUM(read_recipients) / NULLIF(SUM(total_recipients), 0), 2) AS read_rate_percentage
FROM recipient_stats
GROUP BY month
ORDER BY month
Mensagens Individuais de Lembrete Resolvido
Esta consulta fornece dados detalhados em nível individual para cada usuário que recebeu uma mensagem de lembrete. Ela:
- Identifica mensagens privadas contendo o texto “Houve uma resposta no tópico que você publicou”
- Lista cada destinatário individual com:
- Informações do usuário (ID, nome de usuário, nome, e-mail)
- Detalhes da mensagem (título, link)
- Se leram a mensagem (VERDADEIRO/FALSO)
- Quando leram (se aplicável)
- Quantos segundos passaram visualizando-a
- Os resultados são ordenados por data de envio e nome de usuário, mostrando exatamente quem recebeu e leu cada mensagem
Detalhes SQL
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2025-12-31
-- text :reminder_text = %Houve uma resposta no tópico que você publicou%
WITH reminder_pms AS (
SELECT
t.id AS topic_id,
t.title AS message_title,
t.slug AS message_slug,
t.created_at AS sent_at,
p.id AS post_id,
p.user_id AS sender_id,
p.raw AS message_content
FROM topics t
JOIN posts p ON p.topic_id = t.id AND p.post_number = 1
WHERE
t.archetype = 'private_message'
AND t.created_at BETWEEN :start_date AND :end_date
AND p.raw LIKE :reminder_text
)
SELECT
u.id AS user_id, -- Renderizado como link para o usuário
u.username,
u.name,
ue.email,
r.topic_id, -- Renderizado como link para o tópico
r.message_title,
-- Link para a mensagem (construído manualmente para referência)
'/t/' || r.message_slug || '/' || r.topic_id AS message_link,
r.sent_at,
-- Verifica se o usuário leu a mensagem
CASE
WHEN tu.last_read_post_number > 0 THEN TRUE
ELSE FALSE
END AS message_read,
-- Quando leram (se leram)
CASE
WHEN tu.last_read_post_number > 0 THEN tu.last_visited_at
ELSE NULL
END AS read_at,
-- Tempo gasto visualizando (em segundos)
ROUND(tu.total_msecs_viewed / 1000.0, 1) AS time_viewed_seconds
FROM reminder_pms r
JOIN topic_users tu ON tu.topic_id = r.topic_id
JOIN users u ON u.id = tu.user_id
LEFT JOIN user_emails ue ON ue.user_id = u.id AND ue.primary = TRUE
WHERE
-- Exclui o remetente (sistema/bot) da lista de destinatários
tu.user_id != r.sender_id
ORDER BY
r.sent_at DESC,
u.username




