Bem-vindo ao Agente Empréstimos! Sua privacidade é nossa prioridade máxima. Esta política explica como suas informações são tratadas em nossa plataforma.
Data de Efetivação: [03 de Janeiro de 2026]
Bem-vindo ao Agente Empréstimos! Sua privacidade é nossa prioridade máxima. Esta política explica como suas informações são tratadas em nossa plataforma.
No Agente Empréstimos, implementamos um design focado na privacidade desde o início. Isso significa que seus dados financeiros (saldo, lucro, detalhes de empréstimos) são acessíveis apenas por você. Mesmo nós, os desenvolvedores da plataforma, não temos acesso direto ao conteúdo dos seus dados transacionais.
Informações de Autenticação: Coletamos seu e-mail e senha para criar e proteger sua conta. Usamos o Supabase Auth, um serviço seguro, para gerenciar isso. Seu e-mail pode ser usado para recuperação de senha ou comunicações essenciais do sistema.
Dados Financeiros e de Empréstimos: Quando você registra um empréstimo (nome do cliente, valor, parcelas, datas, WhatsApp do cliente), esses dados são armazenados de forma segura e privada para sua conta. Usamos essas informações para:
Preferências Locais: Armazenamos em seu próprio dispositivo (LocalStorage) uma preferência para "ocultar o capital" na tela principal. Isso é apenas para sua conveniência e segurança visual, e não é compartilhado conosco.
Nosso sistema foi construído com as seguintes camadas de segurança:
Não compartilhamos, vendemos ou alugamos suas informações pessoais ou dados financeiros com terceiros, exceto conforme exigido por lei.
Você tem controle total sobre os empréstimos e a lista de negativação que cadastra.
Você pode solicitar o reset completo da sua conta a qualquer momento. Ao fazer isso, todos os seus dados financeiros (empréstimos, configurações, blacklist) serão permanentemente excluídos.
Nosso código-fonte é aberto e visível publicamente no GitHub. Isso permite que qualquer pessoa,
incluindo especialistas em segurança, revise como nosso sistema funciona e valide nossas
promessas
de privacidade. Acreditamos que a transparência é a melhor forma de construir confiança.
Acessar o Repositório
Podemos atualizar nossa Política de Privacidade periodicamente. Notificaremos você sobre quaisquer alterações publicando a nova política nesta página.
Fluxograma de Privacidade e Segurança (Imagem) Aqui está o conceito para um fluxograma que visualiza as camadas de privacidade. Eu vou gerar a imagem.

-- ###############################################################
-- # ESQUEMAS DE SEGURANÇA E PRIVACIDADE DO BANCO DE DADOS #
-- # PROJETO: AGENTE EMPRÉSTIMOS #
-- # OBJETIVO: GARANTIR QUE CADA USUÁRIO SÓ ACESSE SEUS PRÓPRIOS #
-- # DADOS E QUE O DESENVOLVEDOR NÃO VEJA CONTEÚDO. #
-- ###############################################################
-- ===============================================================
-- PASSO 1: CRIAÇÃO DAS TABELAS (SE AINDA NÃO EXISTIREM)
-- Garante a estrutura básica com a coluna 'user_id' referenciando auth.users.
-- 'numeric' é usado para valores monetários para precisão.
-- ===============================================================
-- Tabela de Configurações (Saldo Global, Lucro, Taxas)
create table if not exists public.configuracoes (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users(id) not null, -- CHAVE DE SEGURANÇA: Vincula ao usuário logado
saldo_global numeric default 0,
lucro_total numeric default 0,
taxa_juros_padrao numeric default 1.30,
taxa_juros_atraso numeric default 0.001,
unique(user_id), -- Garante que cada usuário tenha APENAS uma linha de configuração
created_at timestamp with time zone default now()
);
-- Tabela de Empréstimos
create table if not exists public.emprestimos (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users(id) not null, -- CHAVE DE SEGURANÇA: Vincula ao usuário logado
cliente text not null,
whatsapp text,
valor_total numeric not null,
valor_parcela numeric not null,
num_parcelas int not null,
parcela_atual int default 1,
data_vencimento date not null,
valor_restante_parcela_atual numeric,
created_at timestamp with time zone default now()
);
-- Tabela de Blacklist
create table if not exists public.blacklist (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users(id) not null, -- CHAVE DE SEGURANÇA: Vincula ao usuário logado
nome text not null,
whatsapp text,
unique(user_id, nome), -- Garante que um cliente só pode ser negativado uma vez por usuário
created_at timestamp with time zone default now()
);
-- ===============================================================
-- PASSO 2: ATIVAÇÃO DO ROW LEVEL SECURITY (RLS) - "A MURALHA DA PRIVACIDADE"
-- Este é o coração da privacidade. O RLS filtra as consultas NO BANCO DE DADOS,
-- antes mesmo dos dados chegarem à sua aplicação ou ao desenvolvedor.
-- ===============================================================
-- Ativa o RLS em todas as tabelas sensíveis
ALTER TABLE public.configuracoes ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.emprestimos ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.blacklist ENABLE ROW LEVEL SECURITY;
-- ===============================================================
-- PASSO 3: DEFINIÇÃO DAS POLÍTICAS DE ACESSO (POLICIES)
-- Estas políticas determinam QUEM pode fazer o QUÊ com os dados.
-- "FOR ALL" significa que se aplica a SELECT, INSERT, UPDATE, DELETE.
-- "USING (auth.uid() = user_id)" é a regra mágica: só permite a operação
-- se o ID do usuário logado (auth.uid()) for IGUAL ao 'user_id' da linha.
-- ===============================================================
-- Política para a tabela 'configuracoes'
CREATE POLICY "Apenas usuários autenticados podem gerenciar suas configuracoes"
ON public.configuracoes FOR ALL
USING (auth.uid() = user_id);
-- Política para a tabela 'emprestimos'
CREATE POLICY "Apenas usuários autenticados podem gerenciar seus emprestimos"
ON public.emprestimos FOR ALL
USING (auth.uid() = user_id);
-- Política para a tabela 'blacklist'
CREATE POLICY "Apenas usuários autenticados podem gerenciar sua blacklist"
ON public.blacklist FOR ALL
USING (auth.uid() = user_id);
-- ===============================================================
-- PASSO 4: FUNÇÃO DE RESET DE DADOS (PARA O DESENVOLVEDOR/SUPORTE)
-- Permite que o desenvolvedor resete a conta de um usuário (a pedido dele)
-- SEM que o desenvolvedor tenha que visualizar os dados.
-- 'SECURITY DEFINER' é crucial: a função é executada com privilégios de SUPERUSER
-- para ignorar o RLS APENAS dentro desta função, garantindo a limpeza.
-- ===============================================================
CREATE OR REPLACE FUNCTION public.resetar_dados_usuario(target_user_id uuid)
RETURNS void AS $$
BEGIN
-- 1. Deleta todos os empréstimos associados ao ID fornecido
DELETE FROM public.emprestimos WHERE user_id = target_user_id;
-- 2. Reseta as configurações financeiras (saldo e lucro) para zero para o ID fornecido
UPDATE public.configuracoes
SET saldo_global = 0 , lucro_total = 0
WHERE user_id = target_user_id;
-- 3. Limpa a lista de negativação associada ao ID fornecido
DELETE FROM public.blacklist WHERE user_id = target_user_id;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
-- OBS: Para o desenvolvedor rodar esta função:
-- SELECT public.resetar_dados_usuario('O-ID-DO-USUARIO-AQUI');
-- ===============================================================
-- PASSO 5: CONFIGURAÇÃO DE SEGURANÇA PARA A CHAVE ANON_KEY
-- Por padrão, a 'anon_key' é segura com RLS. Este passo é mais um lembrete
-- de que sua aplicação frontend NÃO DEVE usar a 'service_role_key'.
-- Sua anon_key está sujeita ao RLS, garantindo o isolamento.
-- ===============================================================
-- Nenhuma ação SQL é necessária aqui. É uma política implícita do Supabase.
-- Garanta que em 'supabase-client.js' você usa a 'SUPABASE_ANON_KEY'.
-- ###############################################################
-- # FIM DOS ESQUEMAS DE SEGURANÇA E PRIVACIDADE #
-- ###############################################################