Nota de programação

Ligações privadas para prestadores com envio durável de email

Atualizado 1 de setembro de 2026 Traduzido MyCasaPro Alteração verificada a454540

Nota técnica de .

O MyCasaPro cria agora convites com acesso limitado para prestadores e regista o seu envio numa outbox persistente antes de contactar um serviço SMTP.

Nesta página

O que mudou

Os prestadores podem analisar uma reparação partilhada, consultar os anexos autorizados e apresentar um orçamento sem criar conta.

Os tokens de convite contêm 256 bits aleatórios; apenas os hashes SHA-256 são conservados, as ligações expiram ao fim de sete dias e os proprietários podem revogá-las antes.

O convite e o registo na outbox de email são confirmados na mesma transação; depois, um worker trata do envio, das tentativas limitadas, do bloqueio e do estado final.

Um âmbito restrito para o convidado

A rota de convidado destina-se a um único pedido de reparação, não a uma conta de prestador reduzida. A resposta omite a identidade e a morada do proprietário; os anexos continuam protegidos por autorização da API limitada ao token.

O token de convite em bruto não é guardado. A base de dados conserva o hash SHA-256, a expiração e o estado de revogação, pelo que a leitura da base, por si só, não revela uma ligação utilizável.

Guardar antes de enviar

A criação do convite e a mensagem de email correspondente entram juntas no armazenamento persistente. O SMTP é executado depois, por um worker da outbox, e não dentro da transação do pedido do proprietário.

Esta separação impede que uma falha temporária do correio faça perder o convite ou obrigue o utilizador a adivinhar se este foi criado. O estado do envio continua disponível para consulta depois da resposta ao pedido.

Tentativas limitadas e limites de produção

Os workers assumem um lote limitado com um bloqueio de envio, aplicam um tempo máximo por mensagem e registam o sucesso ou a falha. As tentativas são limitadas, em vez de repetidas indefinidamente; tarefas abandonadas podem ser recuperadas quando o bloqueio expira.

O pacote de produção reúne num servidor a aplicação web, a API Go, PostgreSQL, ficheiros privados, envio SMTP, HTTPS e ferramentas de cópia de segurança. A documentação também identifica o que falta resolver: monitorização externa, ensaios de recuperação fora do servidor, armazenamento horizontal, controlos contra abuso e integração operacional de um prestador de pagamentos.

Nota de engenharia

A criação de acesso e o envio da notificação são transações distintas. Guardar a notificação antes de contactar o SMTP impede que uma falha do serviço apague um convite que continua válido.

Proveniência

Esta nota baseia-se no código verificado do projeto no commit a454540. Documenta uma alteração de software, não uma atualização pessoal.