# 2026-04-15 - tarefas com prazo protegido, score reforcado e lembretes automaticos

## O que mudou
- o backend de tarefas passou a calcular permissoes por tarefa e bloquear alteracoes sensiveis para quem apenas recebeu a demanda
- usuarios atribuidos agora nao conseguem alterar prazo, responsavel principal, titulo, descricao e demais campos estruturais quando nao forem criadores nem gestores
- o detalhe da tarefa e o modal administrativo passaram a refletir essas restricoes na interface, com aviso explicito quando prazo e responsavel estiverem travados
- tarefas com prazo definido ou atualizado agora disparam notificacao `task_due_date_set` para o responsavel afetado
- o modulo de tarefas passou a sincronizar lembretes automaticos em `app_reminders` para o dia anterior e para o dia do vencimento
- lembretes automaticos sao cancelados e recriados quando prazo, responsavel ou status mudam, evitando alertas obsoletos
- a exclusao da tarefa agora cancela lembretes abertos do contexto da tarefa
- o seed de performance ganhou regras para bonificar conclusao no prazo e penalizar conclusao em atraso
- foi adicionado o script `sql/2026-04-15-perf-rules-tarefas-prazo.sql` para aplicar essas regras de score de forma idempotente no banco

## Impacto
- o compromisso com o prazo deixa de depender apenas de boa vontade do executor, porque o sistema passa a proteger a data combinada no backend
- a cobranca operacional fica mais forte com tres camadas combinadas: notificacao imediata ao definir prazo, lembrete automatico antes do vencimento e reflexo direto no score
- a gestao ganha mais previsibilidade porque o responsavel continua podendo executar e atualizar status, mas nao consegue renegociar o prazo sozinho
- a trilha de eventos da tarefa fica mais rica, com logs de troca de prazo e de responsavel para apoiar auditoria

## Arquivos envolvidos
- `src/Modules/Tasks/Http/TasksController.php`
- `src/Modules/Tasks/Services/TasksService.php`
- `src/Modules/Notifications/NotificationTypes.php`
- `src/Modules/Performance/Services/PerformanceSeedService.php`
- `pages/admin/dev-tarefas.php`
- `pages/admin/tarefa-detalhe.php`
- `pages/admin/modals/modalTarefa.php`
- `sql/2026-04-15-perf-rules-tarefas-prazo.sql`
- `docs/tarefas-prazo-score-e-lembretes.md`

## Observacoes
- a protecao de prazo e responsavel foi implementada no backend, nao apenas na interface
- o fluxo automatico de lembretes reutiliza o modulo transversal de lembretes operacionais com `context_type = task`
- a logica atual considera que criador da tarefa e perfis com visao de equipe podem administrar os campos estruturais
- endpoints secundarios baseados em ids de itens internos, como atualizacao de comentario ou toggle de checklist, ainda dependem das validacoes internas ja existentes do modulo e podem ser endurecidos numa proxima rodada se quisermos fechar 100 por cento da superficie

## Validacao
- `php -l src/Modules/Tasks/Http/TasksController.php`
- `php -l src/Modules/Tasks/Services/TasksService.php`
- `php -l src/Modules/Notifications/NotificationTypes.php`
- `php -l src/Modules/Performance/Services/PerformanceSeedService.php`
- `php -l pages/admin/tarefa-detalhe.php`
- `php -l pages/admin/dev-tarefas.php`
- `php -l pages/admin/modals/modalTarefa.php`
