NIK Vilma Mariana

Regras do sistema

NIK VILMA MARIANA — REGRAS DO SISTEMA
=====================================
Versão 1.0 — 2026-11-08

1. FINALIDADE
-------------
O NIK Vilma Mariana é um mural de anúncios de imóveis do Condomínio NIK Vila
Mariana. Ele aproxima proprietários/anunciantes e interessados. O sistema NÃO
intermedeia pagamentos, NÃO cobra comissão, NÃO realiza reservas e NÃO garante
a veracidade dos anúncios; a negociação ocorre diretamente entre as partes.

2. PERFIS DE USO
----------------
2.1 Visitante (sem login)
    - Navega livremente pelos anúncios publicados.
    - NÃO vê dados de contato (nome, e-mail, telefone) do anunciante.
2.2 Usuário autenticado
    - Vê os dados de contato dos anúncios.
    - Cria e gerencia os próprios anúncios.
    - Edita o próprio perfil e troca a própria senha.
2.3 Administrador (fase 1: via linha de comando no servidor)
    - Pode remover anúncios que violem estas regras e bloquear contas.
    - Não tem acesso às senhas dos usuários (somente hashes).

3. FLUXO DO VISITANTE
---------------------
3.1 A página inicial apresenta três escolhas, com o mesmo destaque visual:
      [ Alugar por Longa Temporada ]
      [ Alugar por Curta Temporada ]
      [ Comprar Apartamento ]
3.2 Ao escolher Longa Temporada ou Comprar, o visitante vê imediatamente a
    lista de anúncios publicados daquela modalidade.
3.3 Ao escolher Curta Temporada, o visitante é convidado a informar
    data de check-in e data de check-out (check-out > check-in; check-in não
    pode estar no passado; estadia máxima consultável: 365 noites).
    O resultado é exibido em duas seções:
      A) "Apartamentos disponíveis para essas datas"
         — unidades cujos calendários iCal foram lidos com sucesso
           recentemente e não têm nenhum bloqueio no período pedido.
      B) "Outros apartamentos, sem disponibilidade confirmada para essas datas"
         — unidades sem iCal cadastrado, com iCal inacessível/desatualizado,
           ou com conflito no período.
    O visitante pode pular a escolha de datas e ver todos os anúncios de curta
    temporada (todos aparecem na seção B nesse caso).
3.4 Filtros disponíveis: faixa de preço. A ordem é sempre aleatória (item 5).

4. CONTAS, LOGIN E SENHA
------------------------
4.1 Identificador: número de celular. Se o número começar com "+", é tratado
    como internacional; caso contrário, assume-se Brasil e prefixa-se "+55".
    O número é validado e armazenado no formato E.164 (ex.: +5511987654321).
    Um número = uma conta.
4.2 Senha: mínimo de 10 caracteres; senhas comuns/vazadas conhecidas são
    recusadas. Armazenamento exclusivamente com hash Argon2id.
4.3 Acesso somente por convite: NÃO existe cadastro aberto. As contas são
    criadas pela administração exclusivamente a partir da lista de celulares
    autorizados, cada uma com uma senha provisória individual e aleatória,
    entregue ao titular por canal privado.
    Primeiro acesso: toda conta nasce marcada como "troca obrigatória".
    Enquanto a senha não for trocada, o usuário só consegue acessar a tela de
    troca de senha e o logout. Só depois disso pode anunciar e ver contatos.
4.4 Fluxo simples: uma tela "Entrar" com dois campos (celular e senha) e os
    links "Esqueci minha senha" / "Primeiro acesso".
4.5 Recuperação de senha: por e-mail cadastrado, com link de uso único,
    válido por 30 minutos. A resposta é sempre a mesma, exista ou não a conta
    (não revela quem é cadastrado). Recuperação por SMS: fase 2.
4.6 Proteção contra força bruta: limite de tentativas por IP e por número;
    após falhas consecutivas, espera progressiva (1 min, 5 min, 15 min, 1 h).
4.7 Sessão: cookie HttpOnly, Secure, SameSite=Lax; expira após 14 dias ou
    após 2 horas de inatividade sem "manter conectado". Trocar a senha encerra
    todas as outras sessões.

5. ISONOMIA (TRATAMENTO IGUAL A TODOS OS ANUNCIANTES)
-----------------------------------------------------
5.1 Não existe anúncio pago, patrocinado, "destaque" ou "premium".
5.2 A ordem das listagens é ALEATÓRIA em todas as modalidades e em cada
    seção (inclusive dentro de "disponíveis" e de "outros").
5.3 A aleatoriedade usa uma semente por visita (sessão do visitante),
    gerada com gerador criptograficamente seguro. Assim:
      - a paginação é estável durante a visita (sem repetir nem pular itens);
      - visitantes diferentes veem ordens diferentes;
      - nenhum anúncio fica sistematicamente no topo.
    A ordenação por preço só ocorre quando o próprio visitante a solicita
    explicitamente; ainda assim, empates de preço são desempatados
    aleatoriamente.
5.4 Data de criação, data de edição, quantidade de fotos, número de acessos
    ou qualquer outro atributo NÃO influenciam a posição.
5.5 Editar ou republicar um anúncio não dá vantagem de posição.
5.6 Limite igual para todos: até 10 fotos por anúncio e até 20 anúncios
    ativos (publicados ou pausados) por conta.
5.7 Na curta temporada, a separação entre "disponíveis" e "outros" depende
    apenas de critério objetivo (dados do iCal), aplicado igualmente a todos.
5.8 O código da ordenação é aberto à auditoria e coberto por testes
    automatizados que verificam a distribuição uniforme das posições.

6. ANÚNCIOS
-----------
6.1 Tipos: Locação de longa temporada | Locação de curta temporada | Venda.
6.2 Campos obrigatórios: título (5–120 caracteres), descrição (20–5000),
    tipo, preço e contato.
6.3 Preço: valor fixo em reais OU "a combinar".
    Modalidade (locação longa): "valor total" ou "aluguel + condomínio à
    parte" (nesse caso o valor do condomínio é obrigatório).
    Curta temporada: preço por noite (ou "a combinar").
6.4 Contato: nome do contato + pelo menos um entre e-mail e telefone.
6.5 Fotos: até 10, formatos JPEG, PNG ou WebP, até 10 MB cada. O sistema
    redimensiona, gera miniatura, converte para formato seguro e remove todos
    os metadados (EXIF, inclusive localização GPS).
6.6 Status: rascunho → publicado ↔ pausado → vendido/alugado; e removido
    (exclusão lógica, recuperável pelo administrador por 30 dias).
    Somente "publicado" aparece na listagem pública.
6.7 Somente o dono do anúncio pode editar, pausar, alterar fotos, marcar como
    vendido/alugado ou excluir.
6.8 Anúncios publicados sem nenhuma edição/confirmação por 90 dias são
    pausados automaticamente, com aviso por e-mail, para manter o mural
    atualizado (vale igualmente para todos).
6.9 É proibido: anúncio de imóvel fora do condomínio, conteúdo enganoso,
    discriminatório, ofensivo, dados pessoais de terceiros, links maliciosos
    e anúncios duplicados da mesma unidade e modalidade.

7. CURTA TEMPORADA — LINK E CALENDÁRIOS iCAL
---------------------------------------------
7.1 O anunciante pode informar um link público da plataforma de locação
    (ex.: Airbnb, Booking) — exibido como "Ver na plataforma".
7.2 O anunciante pode cadastrar UM OU MAIS links iCal (até 5), por exemplo
    um por plataforma. Todos são combinados: um dia está ocupado se qualquer
    calendário o bloquear.
7.3 Links aceitos: somente https, para hosts públicos (endereços internos,
    privados ou locais são recusados), resposta máxima de 2 MB, tempo
    limite de 10 s, sem seguir redirecionamentos para hosts não públicos.
7.4 Sincronização: em segundo plano, a cada 30 minutos; nunca durante a
    requisição do visitante (a busca usa o último dado sincronizado).
7.5 Regra de disponibilidade: a unidade é "disponível" para [check-in,
    check-out) quando:
      a) todos os iCal cadastrados foram lidos com sucesso há no máximo
         6 horas; e
      b) nenhum evento (reserva ou bloqueio) intersecta o período, sendo o
         dia de check-out livre para nova entrada.
    Caso contrário a unidade vai para "Outros apartamentos, sem
    disponibilidade confirmada".
7.6 O sistema mostra a data/hora da última sincronização. A disponibilidade
    é informativa: a confirmação final é sempre com o anunciante/plataforma.
7.7 Os links iCal são privados: nunca são exibidos publicamente nem a outros
    usuários; somente o dono os vê no painel.

8. DADOS DE CONTATO E ANTI-SCRAPING
-----------------------------------
8.1 Contatos aparecem somente para usuários autenticados e são carregados
    sob demanda (botão "Mostrar contato"), com limite por usuário/hora.
8.2 Volume anormal de consultas gera bloqueio temporário.

9. SEGURANÇA
------------
9.1 HTTPS obrigatório (HSTS). Cookies HttpOnly/Secure/SameSite.
9.2 Proteção CSRF em todos os formulários; validação de todos os dados no
    servidor; escape automático de HTML nos templates (prevenção de XSS);
    Content-Security-Policy restritiva, X-Frame-Options/frame-ancestors,
    X-Content-Type-Options, Referrer-Policy e Permissions-Policy.
9.3 Uploads guardados fora do código-fonte, com nomes aleatórios não
    previsíveis, verificação do conteúdo real do arquivo (não só extensão) e
    servidos sem possibilidade de execução.
9.4 Busca de iCal protegida contra SSRF (item 7.3).
9.5 Logs não registram senhas, tokens, links iCal completos, e-mails ou
    telefones completos (são mascarados).
9.6 Princípio do menor privilégio: aplicação roda com usuário de sistema
    próprio, banco próprio e diretórios próprios, isolada dos demais
    sistemas do servidor.
9.7 Backup diário do banco e das fotos, com retenção de 14 dias, e
    procedimento de restauração testado e documentado.
9.8 Dependências fixadas e revisadas; segredos fora do código, em arquivo
    de ambiente com permissão restrita.

10. PRIVACIDADE (LGPD)
----------------------
10.1 Coletamos apenas: celular, nome, e-mail (opcional, necessário para
     recuperar senha) e os dados que o próprio anunciante publica.
10.2 O usuário pode excluir a própria conta; seus anúncios são removidos e
     os dados pessoais apagados em até 30 dias (backups expiram em 14 dias).
10.3 Não há venda nem compartilhamento de dados com terceiros, nem
     rastreadores de publicidade.

11. ACESSIBILIDADE E INTERFACE
------------------------------
11.1 Projetado primeiro para smartphones (responsivo), funcionando também
     em tablets e computadores.
11.2 Tema escuro elegante como padrão, com contraste mínimo WCAG 2.2 AA.
11.3 Navegável por teclado e leitor de tela; campos com rótulos; mensagens
     de erro claras em português.

12. DENÚNCIAS E MODERAÇÃO
-------------------------
12.1 Qualquer usuário autenticado pode denunciar um anúncio.
12.2 O administrador analisa e pode pausar/remover o anúncio, informando o
     motivo ao anunciante. Os critérios são estes mesmos, para todos.

13. RESPONSABILIDADE
--------------------
O sistema é um mural informativo. Recomenda-se que as partes verifiquem
documentação do imóvel, identidade e contratos antes de qualquer pagamento.
Nunca faça depósitos antecipados sem verificar o anunciante.