has_new_lessons considera o progresso do usuário

TLDR: has_new_lessons retorna false quando o usuário autenticado já concluiu todas as aulas publicadas nos últimos 30 dias.

Contexto

Hoje has_new_lessons retorna true sempre que qualquer aula do curso foi publicada nos últimos 30 dias, independente de o usuário já tê-la assistido. Isso faz o selo “novo” continuar visível mesmo depois de o usuário concluir todo o conteúdo novo.

Objetivos

  • Retornar false quando o usuário autenticado concluiu todas as aulas publicadas nos últimos 30 dias
  • O endpoint é apenas autenticado — o acesso anônimo é bloqueado no nível da rota

Fora de escopo

— (não registrado na spec original)

Mudanças

apps/courses/serializers.py - Atualizar _course_has_new_lessons para exigir o parâmetro user (sem default) - Retornar true apenas se existirem aulas novas que o usuário não concluiu (progress.completed_at nulo) - Atualizar get_has_new_lessons em CourseSerializer e CourseModuleSerializer para passar request.user a partir do contexto

Como verificar

  1. Curso com aulas novas (publicadas há menos de 30 dias) e usuário sem nenhuma concluída → has_new_lessons: true
  2. Curso com aulas novas e usuário que concluiu todas → has_new_lessons: false
  3. Curso com aulas novas e usuário que concluiu algumas mas não todas → has_new_lessons: true
  4. Curso sem aulas publicadas nos últimos 30 dias → has_new_lessons: false

Documentação

Atualizar a documentação de cursos com a regra revisada de has_new_lessons.