Segurança
O controle de acesso é o modelo.
A regra de quem vê o quê não vive na tela — vive no banco de dados. A interface é só uma das formas de chegar nele, e todas passam pela mesma verificação.
Isolamento por firma
Cada firma opera em um projeto de banco de dados separado. Não há um banco compartilhado com “coluna de firma” — a separação é física.
Controle de acesso no banco (RLS)
As permissões são aplicadas em Row Level Security no Postgres. Um contato de cliente só consegue ler e escrever nos trabalhos do próprio cliente, mesmo que a requisição tente burlar a interface.
Dois papéis, escopos distintos
Auditores da firma têm acesso completo ao projeto. Contatos de cliente têm acesso restrito ao seu cliente e não podem criar nem alterar a estrutura do checklist.
Arquivos em bucket privado
Os documentos ficam em armazenamento privado. O acesso é feito por URLs assinadas de curta duração, geradas só para quem tem permissão sobre aquele item.
Trilha de auditoria
Mudanças de status, comentários e uploads são registrados em uma linha do tempo apenas-adição, preservando o histórico de cada item.
Autenticação gerenciada
Login por e-mail com provedor de identidade gerenciado, envio de convites e redefinição de senha por e-mail transacional da firma.
Detalhes técnicos adicionais (retenção, backups, região de hospedagem, DPA) podem ser tratados caso a caso na implantação de cada firma.