Exportar Comentários das Lições
TLDR: Adiciona “Comentários das Lições” como novo tipo no fluxo de Exportar Engajamento, gerando linhas individuais por comentário com curso, lição, usuário e texto no CSV.
Contexto
Os comentários deixados pelos alunos nas lições (ReactionLesson.comment) concentram feedbacks qualitativos sobre a experiência com os cursos. Hoje essas informações ficam restritas à consulta dentro da plataforma admin, o que impede análises consolidadas por curso, lição ou período.
Objetivos
- Adicionar a opção “Comentários das Lições” entre os tipos de engajamento disponíveis no form de exportação.
- Permitir filtrar os comentários por
date_fromedate_to, aplicados sobrecommented_at. - Sem período informado, exportar todos os comentários existentes.
- Cada linha do CSV representar um comentário individual (um por usuário/lição).
- A coluna
conteudoexibir"<nome do curso> - <título da lição>". - Adicionar uma coluna
comentarioao CSV (única coluna nova), que fica em branco para os demais tipos.
Fora de escopo
- Nenhuma mudança no modelo de dados (nenhuma migration).
- Nenhuma mudança no template HTML (os checkboxes são renderizados dinamicamente a partir de
_PROGRESS_CHOICES). - Não exportar reações (
up/down) — apenas o texto do comentário. - Não incluir registros com
commentnulo ou vazio.
Mudanças
apps/engagements/admin.py
- Adicionar
("lesson_comments", "Comentários das Lições")em_PROGRESS_CHOICES. - No cabeçalho do CSV em
_build_combined_csv, acrescentar a coluna"comentario"ao final:["tipo", "conteudo", "usuario", "email", "status", "iniciaram", "chegaram_metade", "terminaram", "criado_em", "comentario"]. - Atualizar todas as
lambdaexistentes para incluir""(string vazia) como último elemento, mantendo consistência com o novo cabeçalho. - Adicionar a entrada
"lesson_comments"emqueriescom:- Queryset:
ReactionLesson.objects.select_related("user", "lesson__course")filtrado porcomment__isnull=False,comment__gt="", ecommented_at__date__gte/lteconforme as datas informadas. - Ordenação:
-commented_at. - Row lambda:
["Comentário de Lição", f"{lesson.course.title} - {lesson.title}", user.name, user.email, "", "", "", "", _fmt(commented_at), comment].
- Queryset:
tests/engagements/test_models_admin_apps.py
Adicionar dois testes para o novo tipo:
test_build_combined_csv_lesson_comments_listed_individually: verifica que cada comentário gera uma linha, queconteudosegue o formato"Curso - Lição", e que a colunacomentariocontém o texto.test_build_combined_csv_lesson_comments_date_filter: verifica que o filtro de data porcommented_atfunciona corretamente (exclui comentários fora do intervalo).
Como verificar
- No admin, acessar “Exportar Engajamento”.
- Selecionar apenas “Comentários das Lições” e clicar em Exportar CSV.
- Confirmar que o CSV contém uma linha por comentário, com
tipo=Comentário de Lição,conteudo=<Curso> - <Lição>,usuario,email,comentariopreenchidos e as demais colunas em branco. - Testar com filtro de data: comentários fora do intervalo não devem aparecer.
- Selecionar múltiplos tipos (ex: Progresso de Lições + Comentários): confirmar que as linhas de progresso têm
comentarioem branco e as de comentário têm os campos de funil em branco.