feat(tasks): adiciona /task-finish para concluir tarefas em aberto - #30
Merged
Merged
Conversation
Fecha a lacuna em que, apos criar uma tarefa com /task, nao havia comando para avanca-la na maquina de estados. Agora: - TaskService.finish() leva uma tarefa aberta ate 'Concluido' em um unico passo, auto-avancando de 'Pendente' por 'Em Andamento'. E idempotente: tarefas ja 'Concluido'/'Aceito' sao devolvidas sem erro. - CommandRouter.task_finish() com mensagens amigaveis em portugues. - Adaptador Discord expoe /task-finish e tambem liga /task-status (que ja existia no router mas nao estava disponivel), necessario para descobrir o id da tarefa a fechar. - Testes de core (Pendente, Em Andamento, idempotencia, Aceito, last_activity, inexistente) e de router (sucesso, aceita, inexistente). - README e tutorial de XP atualizados com os novos comandos. Closes #29 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XySNzzBTnxSYCTyJd9aA47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexto
Resolve a issue #29: fechar as tarefas em aberto após concluir (
/task-finish/ "task-done").Hoje, depois de criar uma tarefa com
/task, não havia nenhum comando para avançá-la na máquina de estados (Pendente → Em Andamento → Concluído → Aceito). Oadvanceexistia apenas no núcleo, sem exposição, então a tarefa ficava "Pendente" para sempre do ponto de vista de quem usa o bot.O que muda
task_service.py) —TaskService.finish(): leva uma tarefa aberta até Concluído em um único passo, auto-avançando dePendente(passa porEm Andamento, respeitando as transições válidas). É idempotente: tarefas jáConcluído/Aceitosão devolvidas sem alteração, sem levantarInvalidTransition.command_router.py) —task_finish()com mensagens amigáveis em português:✅ Tarefa concluída [id]: título🔒 Tarefa [id] já está aceita e encerrada: título⚠️ Tarefa <id> não encontrada.discord_bot.py) — expõe/task-finish task_id:<id>e também liga/task-status(que já existia no router, mas não estava disponível no Discord), necessário para o usuário descobrir oidda tarefa a fechar.A arquitetura hexagonal é preservada: toda a regra vive no núcleo, o adaptador segue fino.
Testes
Seguindo o TDD do projeto, foram adicionados testes de núcleo e de router:
test_task_state_machine.py): concluir dePendente, deEm Andamento, idempotência emConcluído, no-op emAceito, atualização delast_activity, tarefa inexistente.test_ingest_and_report.py): mensagem de sucesso, tarefa já aceita, tarefa inexistente.Gates locais (mesmos comandos do CI):
ruff check .— sem errospytest --cov=src/daily --cov-fail-under=85— 96 passando, cobertura 87.65%Closes #29
🤖 Generated with Claude Code
https://claude.ai/code/session_01XySNzzBTnxSYCTyJd9aA47
Generated by Claude Code