# Instruções do projeto

## Ambiente

- Este é um projeto Laravel em produção/teste hospedado em cPanel.
- O projeto local é usado principalmente para edição do código.
- Não existe ambiente Laravel local para testes.
- Os testes funcionais são realizados no servidor.
- Não iniciar servidor Laravel local.
- Não instalar ou atualizar dependências sem autorização.
- Não executar migrations automaticamente.
- Não modificar `.env`, credenciais, configurações FTP ou dados sensíveis.

## Alterações de código

- Antes de alterar uma funcionalidade existente, localizar e compreender os arquivos envolvidos.
- Fazer somente as alterações necessárias para a solicitação.
- Preservar funcionalidades existentes que não façam parte da solicitação.
- Evitar refatorações desnecessárias.
- Não substituir arquivos inteiros quando uma alteração localizada for suficiente.
- Verificar `git diff` após as alterações.
- Informar claramente quais arquivos foram modificados.

## Banco de dados

- Não executar migrations automaticamente.
- Não executar comandos destrutivos no banco.
- Não alterar dados do banco sem autorização explícita.
- Se uma alteração exigir migration ou SQL, preparar a alteração e explicar antes de executar.

## Deploy

O deploy é realizado pelo script:

`scripts/deploy.ps1`

Regras obrigatórias:

- Nunca fazer upload automaticamente após editar arquivos.
- Nunca executar deploy sem autorização explícita do usuário.
- Antes de qualquer deploy, mostrar os arquivos modificados.
- Resumir o que será enviado.
- Aguardar autorização explícita do usuário.
- O deploy deve enviar os arquivos selecionados sem criar commit.
- Nunca executar `git add` ou `git commit` como parte do fluxo de deploy; commits só podem ser feitos mediante pedido explícito separado do usuário.
- Nunca responder `SIM` ao prompt do `deploy.ps1` em nome do usuário.
- O usuário deve fornecer pessoalmente a confirmação `SIM`.
- Não contornar, remover ou automatizar a confirmação existente no script.
- Não fazer upload por outro método para evitar a confirmação.
- Não excluir arquivos do servidor automaticamente.

## Git

- Git é usado localmente para controlar as alterações.
- Antes de começar uma alteração relevante, verificar `git status`.
- Não descartar alterações existentes do usuário.
- Não usar `git reset --hard`.
- Não usar `git clean` sem autorização explícita.
- Não criar commits automaticamente, salvo quando solicitado.
- Não executar `git push` sem solicitação explícita.

## Fluxo esperado

1. Verificar o estado atual com `git status`.
2. Analisar os arquivos necessários.
3. Implementar a alteração localmente.
4. Verificar `git diff`.
5. Informar ao usuário o que foi alterado.
6. Se o usuário quiser publicar, executar `scripts/deploy.ps1` sem criar commit.
7. Mostrar a lista de arquivos que o script pretende enviar.
8. Aguardar o usuário digitar `SIM`.
9. Somente então permitir o envio ao servidor.
10. Após o deploy, aguardar o usuário testar no servidor antes de considerar a alteração concluída.

## Princípio principal

Editar localmente é permitido.

Publicar no servidor exige sempre confirmação humana explícita.