# Manual tasks module

## Visao geral

- Permite cadastrar tarefas recorrentes para usuarios especificos com regras baseadas em metricas operacionais.
- Tambem e possivel criar tarefas livres, sem condicoes automatizadas, deixando a conclusao a cargo do operador (com ou sem recorrencia).
- As regras disponiveis contabilizam cadastros de leads, propostas criadas, envio de orcamentos, ligacoes registradas e percentual de conversao.
- Cada instancia ativa gera automaticamente um conjunto de micro tarefas com origem marcada como manual.

## Eventos e contadores

- **Enviar orcamentos**: contabiliza entradas no historico do lead com o tipo `Orcamento enviado` (internamente `orcamento_enviado`).
- **Registrar ligacoes**: contabiliza entradas no historico com o tipo `Ligacao realizada` (`ligacao_realizada`).
- Os demais contadores usam as tabelas `leads`, `loan_proposals` e `loan_proposals` (status aprovados) para calcular conversao.
- O formulario de historico do lead agora oferece as novas opcoes garantindo o registro correto.

## Integracao com micro tarefas

- Cada template ativo gera um `micro_task_set` com metadados `origin = manual` e referencia ao template.
- Na lista de micro tarefas (`/micro-tasks`) conjuntos manuais aparecem com o selo **Origem manual** e podem ser filtrados pelo seletor de origem.
- O detalhe do conjunto exibe o id do template para facilitar auditoria.

## Fluxos administrativos

- A tela de administracao (`/manual-tasks`) ganhou botao **Concluir** para forcar a finalizacao de todas as instancias pendentes do template.
- As regras de conclusao exibem observacoes descrevendo como cada evento e contabilizado.
- Campos de regra sao opcionais: deixe vazios para tarefas 100% manuais ou adicione metas automaticas conforme necessario.
- Jobs agendados: `manual.tasks.sync` sincroniza templates diariamente, criando novas instancias e avaliando conclusao automaticamente.

## Testes

- Suite dedicada em `tests/ManualTaskServiceTest.php` valida sincronismo, conclusao por metas e contagem de orcamentos.
- Execute via `php tests/ManualTaskServiceTest.php` (requer PHP CLI) para garantir que alteracoes futuras nao quebrem o motor manual.

## Novidades

- Administradores podem associar um selo de recompensa a cada tarefa manual. O campo fica disponível na tela `/selos` e na criação/edição da tarefa.
- Ao concluir a tarefa manual, o usuário recebe automaticamente o selo escolhido (com registro em `user_badges` e `micro_task_set_badges`).

