diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 673b1a6..7e72b09 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -27,6 +27,8 @@ Descreva brevemente o objetivo deste PR. - [ ] Não introduzi novas issues críticas de Security ou Reliability - [ ] Mantive ou aumentei a cobertura de New Code quando houve código novo - [ ] Atualizei o `CHANGELOG.md` quando necessário +- [ ] Atualizei o roadmap quando o estado de uma frente mudou +- [ ] Em promoção: reconciliei versão, changelog, roadmap, issues e impactos operacionais conforme `docs/releases.md` - [ ] Atualizei o `README.md` ou documentação quando necessário - [ ] Verifiquei que não foram adicionados tokens, senhas ou secrets diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f58102..1b9af2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,31 +1,256 @@ # Changelog +As versões do produto seguem as [regras de release](docs/releases.md). O histórico abaixo foi reconciliado com as releases publicadas; as tags antigas foram preservadas. Datas usam UTC, conforme o GitHub. + ## [Unreleased] +## [v1.10.1] — 2026-09-16 + +### Changed + +- Reconciliados changelog e roadmap com as releases publicadas e o estado das issues. +- Formalizados versionamento, promoção, notas de release e atualização contínua da documentação. +- Registradas melhorias da landing page (#208) e detalhado o escopo de finalização do dashboard (#164), sem implementação de frontend nesta release. + +## [v1.10.0](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.10.0) — 2026-09-16 + +### Added + +- alertas explicáveis de gastos fora do padrão por categoria, excesso de parcelas e orçamento apertado; +- resumos financeiros da última semana e do último mês completos, enviados pelo Telegram; +- comando `/alertas` para consultar preferências e habilitar ou desabilitar alertas, resumos semanais e mensais separadamente. + +### Changed + +- geração de notificações e publicação no RabbitMQ separadas, com recuperação de trabalho pendente; +- recuperação do último período fechado quando uma execução agendada é perdida; +- processamento de usuários e notificações em lotes, com configurações documentadas no `.env.example`; +- documentação das regras, contratos internos e procedimentos operacionais em `docs/alerts.md`. + +### Fixed + +- indisponibilidade do broker mantém notificações pendentes na outbox PostgreSQL; +- reservas transacionais e confirmação idempotente evitam envio simultâneo por consumidores duplicados; +- falhas na confirmação da API não provocam novo envio ao Telegram; +- preferências, vínculo Telegram e expiração são verificados antes da entrega. + +### Security + +- RabbitMQ recebe apenas o ID opaco da notificação; destino e conteúdo são obtidos pela API interna autenticada; +- migration V15 adiciona a outbox e as preferências individuais, habilitadas por padrão; +- configurações novas têm valores padrão e não exigem novos secrets; +- o Telegram não oferece idempotência em `sendMessage`: entregas incertas ficam `UNKNOWN`, sem reenvio automático, e exigem acompanhamento operacional; +- recuperação de resumos limitada ao último período fechado. + +### Tests + +- 358 testes da API e 188 do bot aprovados no código final da implementação; +- happy path e cenários de erro cobrem detectores, períodos, publicação, duplicatas, reservas expiradas, confirmação perdida e preferências; +- CI do PR de promoção aprovado; verificação final de CI e deploy da main registrada abaixo. + +### Referências + +- issue #119 e subtarefas #140–#145; +- PRs #200–#205 — implementação; +- PR #206 — promoção para `main`; +- comparação: https://github.com/BryanPinheiro77/FinanceBot-BackEnd/compare/v1.9.1...v1.10.0 + +CI da `main` aprovado: https://github.com/BryanPinheiro77/FinanceBot-BackEnd/actions/runs/35044646112 + +Deploy concluído com health checks da API, bot e observabilidade aprovados: https://github.com/BryanPinheiro77/FinanceBot-BackEnd/actions/runs/35044646082 + +## [v1.9.1](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.9.1) — 2026-09-13 + +### Added + +- adicionada publicação automática da stack de observabilidade no deploy; +- adicionada configuração de produção para Prometheus coletar API e bot pela `backend-network`; +- adicionado acesso privado de Grafana, Prometheus e Loki pelo endereço da Tailscale. + +### Changed + +- Grafana agora exige `GRAFANA_ADMIN_PASSWORD` configurada no ambiente; +- removido o fallback de senha `admin/admin` para a configuração de produção; +- workflow passou a validar API, bot, Prometheus, Grafana e Loki após o deploy; +- adicionados exemplos de ambiente para API, bot e observabilidade. + +### Security + +- portas da observabilidade ficam vinculadas somente ao IPv4 da Tailscale do servidor; +- métricas da API e do bot trafegam pela rede Docker privada; +- nenhum token, senha ou endereço privado foi versionado; +- a rotação de chaves continua desabilitada por padrão. + +### Tests + +- CI da `main` aprovado; +- configuração dos Compose local e de produção validada; +- deploy de produção concluído com health checks da API, bot e observabilidade; +- Prometheus confirmou API e bot com `up=1`. + +### Referências + +- PR #198 — implementação da observabilidade; +- PR #199 — promoção para `main`. + +## [v1.9.0](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.9.0) — 2026-09-13 + +### Added + +- adicionado chaveiro versionado para criptografia de campos sensíveis; +- adicionada escrita com a chave ativa e leitura compatível com chaves anteriores; +- adicionado job opt-in para recriptografar dados em lotes, com transações e atualização otimista; +- adicionados health check e interrupção segura quando a rotação falha. + +### Changed + +- novos envelopes usam o formato `v2..`; +- valores legados `v1` podem ser migrados sem indisponibilidade da API; +- configuração permite manter chaves anteriores somente para leitura e revogá-las após a migração; +- documentação de desenvolvimento, deploy e segurança foi atualizada com o procedimento de rotação. + +### Fixed + +- a troca direta da chave deixou de tornar os valores existentes ilegíveis durante a transição; +- alterações concorrentes durante a migração são detectadas e interrompem o lote afetado. + +### Tests + +- suíte completa da API validada com 315 testes, sem falhas ou erros; +- suíte completa do bot Telegram validada com 170 testes, sem falhas ou erros; +- testes de criptografia, chaveiro, seleção SQL, migração em lotes, concorrência, conclusão e falha aprovados; +- CI dos PRs #195 e #196 aprovado. + +### Security + +- a rotação permanece desabilitada por padrão; +- a execução exige `FINANCEBOT_DATA_ENCRYPTION_ROTATION_BACKUP_CONFIRMED=true`; +- as chaves não são registradas no log nem versionadas; +- a documentação inclui backup restaurável, rollback, validação e revogação da chave antiga; +- nenhuma alteração de chave foi ativada automaticamente no deploy desta release. + +### Referências + +- Issue #187 — rotação de chaves de criptografia; +- PR #195 — implementação em `develop`; +- PR #196 — promoção para `main`. + +## [v1.8.4](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.8.4) — 2026-09-13 + +### Added + +- adicionada autenticação configurável para Redis nos módulos da API e do bot Telegram; +- adicionado vhost exclusivo `/financebot` e suporte configurável a TLS para RabbitMQ; +- adicionada documentação de backup criptografado, restauração isolada e resposta a falhas; +- adicionado modelo de ameaças STRIDE/DREAD para os armazenamentos de dados. + +### Changed + +- mensagens de lembrete no RabbitMQ agora expiram após 24 horas por padrão; +- logs SQL detalhados ficam desativados por padrão em produção; +- portas administrativas de Redis e RabbitMQ foram limitadas ao localhost no servidor; +- Redis passou a utilizar autenticação e volume persistente; +- credenciais de infraestrutura foram isoladas nos arquivos de ambiente protegidos. + +### Fixed + +- removido o usuário padrão `guest` do RabbitMQ; +- removidos o usuário legado e as permissões temporárias do vhost raiz após a migração; +- eliminada a exposição pública das portas `6379`, `5672` e `15672` no servidor. + +### Tests + +- suíte completa da API validada com `./mvnw clean verify`; +- suíte completa do bot Telegram validada com `./mvnw clean verify`; +- expiração das mensagens RabbitMQ coberta por teste unitário; +- CI e health checks de produção aprovados após o deploy. + +### Security + +- API e bot utilizam o usuário dedicado `financebot_app` no vhost `/financebot`; +- Redis rejeita conexões sem autenticação; +- API e bot permaneceram com health `UP` após a rotação das configurações; +- procedimentos de backup, verificação de integridade e restauração estão documentados. + +### Referências + +- Issue #188 — proteger Redis, RabbitMQ, logs e backups; +- PR #193 — implementação e documentação em `develop`; +- PR #194 — promoção para `main`. + +## [v1.8.3](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.8.3) — 2026-09-13 + ### Added -- Adicionados alertas financeiros explicáveis, resumos de períodos fechados e preferências individuais pelo comando `/alertas`. -- Adicionada outbox PostgreSQL para notificações Telegram, com reservas por token, confirmação de entrega e recuperação de publicação interrompida. -- Adicionado keyring versionado para leitura com chaves anteriores e escrita exclusiva com a chave ativa. -- Adicionado job opt-in de recriptografia em lotes, condicionado à confirmação explícita de backup. -- Adicionado procedimento operacional de rotação, rollback e revogação de chaves. -- Adicionada stack local de observabilidade com Prometheus, Grafana, Loki e Grafana Alloy. -- Adicionados dashboard inicial, métricas dos fluxos de Telegram, OpenAI, recorrências e lembretes, além de correlação entre logs do bot e da API. -- Adicionados guias públicos de contribuição, conduta, segurança, privacidade, suporte e roadmap. +- adicionada cobertura automatizada para os principais fluxos financeiros, Telegram, lembretes e segurança; +- adicionados testes dos mappers principais e dos controllers de integração; +- adicionados testes para o scheduler de transações recorrentes. ### Changed -- Valores cifrados novos passam a registrar o ID da chave no envelope `v2`, mantendo leitura do formato legado `v1`. -- Padronizados os logs da API e do bot em JSON, sem conteúdo financeiro ou dados pessoais. +- aumentada a cobertura geral do backend para 90,1% de linhas e 73,6% de branches; +- ampliada a validação dos cenários de análise financeira e projeções recorrentes; +- ampliada a cobertura dos fluxos de cadastro, login, JWT e autenticação de requisições; +- ampliada a cobertura de consultas e operações financeiras do bot Telegram. + +- nenhum código de produção foi alterado nesta entrega; +- branches de trabalho continuam sendo removidas automaticamente após o merge; +- `develop` permanece preservada no fluxo de promoção para `main`. + +### Tests + +- cobertos caminhos de erro para credenciais inválidas, tokens expirados ou malformados e usuários Telegram inexistentes; +- cobertos cenários de validação de parcelamentos, categorias duplicadas, lembretes e exceções globais; +- cobertos cenários de recorrências ativas, inativas, vencidas e reagendamento de lembretes. + +- suíte completa validada com `./mvnw clean verify`; +- testes unitários adicionados para análise financeira, autenticação, Telegram, lembretes, mappers, controllers e scheduler; +- caminhos de sucesso, erro e limite incluídos na cobertura. + +### Referências + +- Issue #42 — aumentar cobertura geral de testes para 60%; +- PR #191 — implementação dos testes em `develop`; +- PR #192 — promoção para `main`. + +## [v1.8.2](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.8.2) — 2026-09-13 ### Security -- A rotação falha de forma segura diante de chave ausente, ciphertext inválido ou alteração concorrente. -- Chaves antigas só podem ser revogadas depois da recriptografia e da verificação explícita dos dados. +- adiciona criptografia AES-256-GCM para a renda mensal; +- adiciona configuração externa de chave de criptografia; +- documenta classificação e proteção de dados sensíveis. + +### Added + +- adiciona processamento de documentos PDF; +- adiciona OCR opcional para imagens via endpoint compatível com OpenAI; +- adiciona transcrição opcional de áudio; +- encaminha conteúdo extraído ao fluxo existente de interpretação, preview e confirmação; +- adiciona limites de tamanho e tratamento de erros para mídias. + +### Changed + +- atualiza Compose e documentação para configuração de IA e transcrição; +- deploy de produção validado com API e bot saudáveis. + +## [v1.8.1](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.8.1) — 2026-09-12 + +### Added + +- Observabilidade inicial da API e do bot Telegram. +- Métricas Prometheus para requisições, lembretes, recorrências e IA. +- Correlation IDs e logs estruturados em ECS. +- Stack local com Prometheus, Grafana, Loki e Grafana Alloy. +- Documentação operacional atualizada. ### Tests -- Adicionados testes de idempotência, falhas de publicação, reservas, retry de ACK, entrega incerta, preferências e vínculo Telegram das notificações financeiras. +- API: 225 testes aprovados. +- Bot: 161 testes aprovados. +- CI da branch `develop` aprovado. + +Inclui as alterações do PR #115, promovidas no PR #116. ## [v1.8.0] @@ -79,7 +304,7 @@ - Adicionada cobertura para resposta válida da IA, prioridade sobre o parser determinístico, resposta inválida e fallback em caso de indisponibilidade. - Mantida a suíte completa do bot Telegram e da API passando após as refatorações. - ## [v1.5.0] +## [v1.5.0](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/1.5.0) — 2026-06-20 ### Added diff --git a/README.md b/README.md index 2569918..8b66cca 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,7 @@ O projeto está evoluindo para reduzir acoplamento entre domínio, aplicação, - [Privacidade](PRIVACY.md) - [Suporte](SUPPORT.md) - [Roadmap](docs/roadmap.md) +- [Governança de releases](docs/releases.md) - [Desenvolvimento local](docs/development.md) - [Arquitetura](docs/architecture.md) - [API](docs/api.md) diff --git a/docs/README.md b/docs/README.md index 4849e0f..0a277fe 100644 --- a/docs/README.md +++ b/docs/README.md @@ -10,6 +10,7 @@ - [Rotação de chaves](security/key-rotation.md) - [Suporte](../SUPPORT.md) - [Roadmap](roadmap.md) +- [Governança de releases](releases.md) - [Desenvolvimento local](development.md) - [Arquitetura](architecture.md) - [Back-end da API](api.md) diff --git a/docs/contributing.md b/docs/contributing.md index 2c0dab6..7a2aade 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -36,3 +36,7 @@ Pull requests de documentação também devem explicar o que foi atualizado e va ## Commits Use mensagens curtas e descritivas, preferencialmente no formato `tipo: descrição`, por exemplo `fix: valida valor de parcela`. Um commit deve representar uma mudança coerente. + +## Roadmap e releases + +Atualize o changelog em Unreleased e o roadmap no mesmo PR que altera o estado de uma frente. Antes da promoção, reconcilie ambos com o conjunto entregue. Versionamento, tags e publicação seguem [Governança de releases](releases.md). diff --git a/docs/deployment.md b/docs/deployment.md index 10926ec..f9d639b 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -44,7 +44,7 @@ docker network create backend-network ## Publicação -1. Faça merge na `main` após o CI passar. +1. Prepare a promoção conforme [Governança de releases](releases.md) e faça merge na `main` após revisão, CI e autorização. 2. Acompanhe o workflow no GitHub. 3. No servidor, confirme os containers com `docker compose -f compose.prod.yml ps` em cada módulo e `docker compose -f compose.observability.yml -f compose.observability.prod.yml ps`. @@ -59,6 +59,5 @@ O rollback atual é manual: identifique o commit anterior saudável, volte o che ## Melhorias planejadas - substituir `git pull` no servidor por checkout imutável do SHA do workflow; -- adicionar health check pós-deploy e notificação de falha; - separar ambientes e usar aprovação para produção; - avaliar armazenamento seguro de secrets. diff --git a/docs/releases.md b/docs/releases.md new file mode 100644 index 0000000..aaea43a --- /dev/null +++ b/docs/releases.md @@ -0,0 +1,74 @@ +# Governança de releases + +## Versão e fontes de verdade + +A versão pública do produto é a tag Git `vMAJOR.MINOR.PATCH`, compartilhada pela API e pelo bot. O changelog registra essa mesma versão e a release do GitHub usa a mesma tag. Não crie versões independentes para os módulos. + +- `PATCH`: correções compatíveis, documentação ou ajustes operacionais. +- `MINOR`: recursos novos compatíveis com os contratos existentes. +- `MAJOR`: mudanças incompatíveis que exigem migração dos consumidores. + +Números previstos em issues são intenção de planejamento. A versão final é definida pelo conjunto efetivamente promovido; atualize a issue se a previsão mudar. Nunca reutilize ou mova uma tag publicada. Tags históricas sem `v` permanecem válidas; use o prefixo nas próximas releases. + +Os POMs atualmente usam `0.0.1-SNAPSHOT` como versão técnica dos artefatos Maven. Ela não identifica a versão pública instalada: consulte a tag e o SHA do deploy. Não publique esses snapshots como se fossem artefatos numerados da release. Uma futura publicação de artefatos deverá alinhar os dois POMs à versão do produto antes de criar a tag. + +## Atualização durante o desenvolvimento + +O responsável pelo PR atualiza os registros na mesma mudança: + +1. Adicionar a alteração em `CHANGELOG.md`, em `Unreleased`, com impacto para usuário ou operação. Usar Added, Changed, Fixed, Security ou Tests. +2. Atualizar `docs/roadmap.md` quando uma frente começar, mudar de escopo ou for concluída. Distinguir trabalho entregue de melhorias futuras. +3. Atualizar os documentos dos contratos, configuração e operação afetados. +4. Vincular issues e subtarefas no PR; registrar explicitamente o que ficou pendente. + +A revisão verifica esses itens. Não basta atualizar somente as notas no GitHub. PRs de documentação também entram no changelog quando alteram o fluxo do projeto. + +## Promoção de develop para main + +1. Verificar que os PRs do conjunto estão mesclados em `develop` e que os checks passaram. +2. Comparar `origin/main..origin/develop` e `origin/develop..origin/main`. Se houver commits exclusivos de main, integrá-los em develop por PR antes de promover. +3. Definir a versão pelo impacto do conjunto. No PR de preparação para develop, mover apenas as alterações ainda não publicadas de Unreleased para a seção da versão escolhida e deixar Unreleased disponível para o próximo trabalho. Usar a data UTC planejada, corrigindo-a se a publicação mudar de dia. +4. Reconciliar roadmap, issues, changelog e configuração necessária no servidor. Não versionar valores reais de ambiente. +5. Criar uma branch temporária `promote/` a partir do SHA atualizado de develop e abrir PR para main usando o [template](../.github/pull_request_template.md). A branch deve conter exatamente o conjunto aprovado. +6. Descrever a versão prevista, migrations, variáveis novas, compatibilidade, riscos e evidências. Usar `Closes #...` apenas para issues cujo aceite foi atendido integralmente. +7. Executar `bash scripts/review-pr-with-codex.sh main` na branch de promoção e realizar a revisão com o prompt gerado. O script prepara contexto; não emite aprovação automática. +8. Aguardar o CI específico do PR e a autorização do mantenedor para merge. Push em main aciona o deploy de produção. + +## Publicação e verificação + +Depois do merge, o responsável pela release: + +- acompanha CI e deploy do SHA promovido; confirma os health checks conforme [Deploy](deployment.md); +- se o deploy falhar, registra o problema e trata a recuperação antes de apresentar a versão como saudável; +- cria a release autorizada usando o SHA exato do merge, não um nome de branch que pode avançar; +- confere versão, tag, changelog, links e fechamento das issues; +- se a data real divergir da seção preparada, corrige o registro por um novo PR; +- leva eventuais ajustes exclusivos de main para develop por PR antes da próxima promoção. + +Exemplo de publicação, somente após autorização e verificações: + +```bash +gh release create vX.Y.Z --target \ + --title 'vX.Y.Z - Descrição da entrega' --notes-file +``` + +As releases já publicadas são histórico: corrigir uma informação documental é permitido, mas não apagar ou substituir tags e commits. Não alegar testes, análises ou validações de produção que não foram feitos. + +## Padrão das notas + +Usar português brasileiro e descrever comportamento e impacto. Incluir somente seções relevantes: + +- **Novidades**: recursos que o usuário pode utilizar. +- **Melhorias**: mudanças de experiência, manutenção ou operação. +- **Correções**: problemas concretos resolvidos; testes novos não são correções de comportamento. +- **Segurança e operação**: migrations, configuração, ativação opcional, limitações e ações necessárias. +- **Testes**: comandos/resultados realmente executados e links de CI/deploy; indicar validações não realizadas quando relevantes. +- **Referências**: issues, PRs e comparação com a tag anterior real, inclusive quando ela não tem prefixo `v`. + +O changelog é o registro versionado; as notas da release apresentam o mesmo escopo com evidências da publicação. Notas geradas automaticamente podem auxiliar, mas devem ser revisadas e não substituir o changelog. + +## Limpeza de branches + +Manter habilitada a exclusão automática de branches temporárias após merge. Promover por branch `promote/...` permite excluir a origem do PR sem remover `develop`. + +Nunca excluir `main` ou `develop`. Conferir a branch de origem antes de usar `--delete-branch`. Branches antigas só devem ser removidas após confirmar que não contêm trabalho pendente nem PR aberto. diff --git a/docs/roadmap.md b/docs/roadmap.md index ce5bb3a..bebf579 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,22 +1,35 @@ # Roadmap -O FinanceBot está em desenvolvimento inicial. O roadmap indica direção, não uma promessa de datas. +O FinanceBot está em desenvolvimento inicial. O roadmap indica direção, não uma promessa de datas. Estado reconciliado em 16/09/2026 (UTC). Última release publicada: v1.10.0; v1.10.1 em preparação. -## Em andamento +## Entregue -- [Segurança e criptografia de dados sensíveis (#81)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/81); -- [Cobertura geral de testes (#42)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/42); -- [Evolução gradual da arquitetura (#37)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/37). +- Lembretes assíncronos via RabbitMQ: [v1.8.0](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.8.0). +- Observabilidade inicial: [v1.8.1](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.8.1); deploy e acesso privado: [v1.9.1](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.9.1). +- Criptografia inicial e suporte a PDF, imagem e áudio: [v1.8.2](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.8.2), issues [#81](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/81) e [#82](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/82). OCR e transcrição são opcionais e dependem de configuração. +- Cobertura geral de testes: [v1.8.3](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.8.3), issue [#42](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/42). +- Proteção de Redis, RabbitMQ, logs e procedimentos de backup: [v1.8.4](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.8.4), issue [#188](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/188). +- Rotação segura de chaves, com execução opt-in: [v1.9.0](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.9.0), issue [#187](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/187). +- Alertas financeiros, resumos automáticos e preferências Telegram: [v1.10.0](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.10.0), issue [#119](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/119) e subtarefas #140–#145. + +## Preparado para publicação -A observabilidade foi entregue na [v1.8.1](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/releases/tag/v1.8.1), e a documentação de contribuição foi organizada na [Issue #117](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/117). +- [Governança de releases (#123)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/123): implementada em develop no PR #207; publicação prevista na v1.10.1. ## Próximos temas -- [PDF, imagem e áudio (#82)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/82); -- [Sistema de alertas inteligentes e resumos automáticos (#119)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/119); -- [IA como camada de enriquecimento com fallback determinístico (#120)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/120); -- [Planos, assinatura e limites por plano (#121)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/121); -- [Dashboard web inicial (#122)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/122); -- [Governança de releases (#123)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/123). +- [Melhorias da landing page (#208)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/208): identidade visual, animações, responsividade e acessibilidade, no repositório do frontend. + +- [Planos, assinatura e limites (#121)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/121): definir o contrato do produto antes de cobrança; preservar a instalação self-hosted. +- [Dashboard web inicial (#122)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/122): neste repositório, limitar o trabalho aos contratos e endpoints da API; o frontend não está aqui. A [#164](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/164) detalha a finalização visual e funcional dos cards e gráficos. +- [IA como camada de enriquecimento com fallback determinístico (#120)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/120): evolução além da interpretação OpenAI já disponível. + +## Frentes abertas de manutenção + +- [Evolução gradual da arquitetura (#37)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/37). +- [Governança e contribuição open source (#117)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/117): guias públicos já existem; conferir os critérios e subtarefas restantes antes de fechar. +- [Proteção de campos textuais pesquisáveis (#186)](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues/186): extensão da proteção inicial, com análise de impacto nas buscas. + +Há subtarefas abertas que podem sobrepor entregas já publicadas. Antes de iniciar uma, conferir o código e os critérios para evitar duplicar trabalho; não tratá-las como concluídas apenas pelo título. -Consulte as [issues abertas](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues) para o estado atual do trabalho. +Atualizar este documento no PR que muda o estado de uma frente e reconciliá-lo antes de cada promoção, conforme [Governança de releases](releases.md). Consulte as [issues abertas](https://github.com/BryanPinheiro77/FinanceBot-BackEnd/issues) para o estado detalhado e o [changelog](../CHANGELOG.md) para o histórico.