# RULES.md — Regras para IA e Desenvolvedores do City10 Este documento reúne as regras obrigatórias que **modelos de IA** (agentes, copilotos, assistentes de código) e **desenvolvedores humanos** devem seguir ao trabalhar neste repositório. --- ## 1. Diretrizes Gerais 1.1. **Priorize a segurança.** Nunca introduza código que exponha, registre ou transmita segredos (chaves de API, senhas, tokens). Chave do OpenRouter vive apenas em `.env` (não versionado). 1.2. **Não remova a proteção LGPD.** Consentimento, banner de cookies, trilha de auditoria e direitos do titular são obrigatórios e não podem ser desativados ou contornados. 1.3. **Comentários PHPDoc em inglês.** Todo arquivo PHP de origem deve possuir comentários técnicos em inglês usando o padrão PHPDoc. 1.4. **Multi-idioma.** Toda string visível ao usuário deve existir nos arquivos `lang/pt_BR.json`, `lang/en.json` e `lang/es.json`. 1.5. **CSRF em formulários.** Todo formulário HTML deve incluir `@csrf`. Nunca desative o middleware `VerifyCsrfToken`. 1.6. **CAPTCHA nos formulários públicos.** Login e registro devem manter o CAPTCHA matemático (soma) nativo, sem bibliotecas externas. 1.7. **Senhas com ícone "eye".** Campos de senha em formulários devem exibir o botão de alternar visibilidade (olho). --- ## 2. Regras para Modelos de IA (Agentes do City10) 2.1. **Somente modelos gratuitos allow-listed.** Agentes só podem usar modelos definidos em `config/ai.php` (`allowed_models`). A validação acontece no backend (`AiAgentRequest`) — não contorne. 2.2. **Nunca envie dados pessoais ao modelo.** Ao chamar o OpenRouter, envie apenas contexto simulado da cidade (posições, metas, estado de lojas). Nunca inclua nome, e-mail, senha ou outros dados cadastrais de usuários. 2.3. **Respeite o intervalo de raciocínio.** Não faça chamadas à API com frequência maior que `config('ai.think_interval')` por agente. 2.4. **Trate falhas com backoff.** Erros da API devem incrementar `error_count` e usar espera exponencial; não repita chamadas em loop. 2.5. **Persista metas e decisões.** O estado do agente (`current_goal`, `last_decision`) deve ser gravado no banco para auditoria e retomada. 2.6. **Não execute ações destrutivas por conta própria.** Decisões que alterem dados de usuários ou excluam recursos exigem aprovação humana. --- ## 3. Regras para Desenvolvedores 3.1. **Estrutura Laravel 13 (estilo atual)** - Middleware customizado em `app/Http/Middleware/`, registrado em `bootstrap/app.php` via alias. - Controllers em `app/Http/Controllers/{Api,Web}/`. - Validação em `app/Http/Requests/`. - Rotas em `routes/api.php` e `routes/web.php`. 3.2. **Migrations** - Nunca edite uma migration já executada em produção; crie uma nova. - Use tipos adequados (`foreignId`, `decimal` para coordenadas 3D). 3.3. **Eloquent** - Declare relações e `casts()` nos models. - Use `$fillable` (ou attributes `#[Fillable]`) para evitar mass-assignment. 3.4. **Autorização** - `admin` e `user` são os papéis suportados (`User::ROLE_*`). - Proteja rotas administrativas com o middleware `admin`. 3.5. **Testes** - Rode `php artisan test` antes de considerar uma tarefa concluída. - Rode `./vendor/bin/pint --test` para validar o estilo de código. 3.6. **Bibliotecas e licenças** - Antes de adicionar qualquer dependência, verifique a licença. - Apenas licenças que permitam uso comercial (MIT, Apache-2.0, BSD, ISC, etc.) são aceitáveis. - Registre a licença e o autor aqui (ver seção 4). 3.7. **Imagens e assets** - Use apenas imagens, fontes e ícones de licença livre ou própria. 3.8. **Variáveis de ambiente** - Adicione novas chaves ao `.env.example` (sem valores secretos). - Documente o propósito no `.env` com comentário. --- ## 4. Registro de Bibliotecas e Licenças | Biblioteca | Licença | Autor / Origem | Uso | |---|---|---|---| | Laravel Framework | MIT | Laravel LLC / Taylor Otwell | Backend | | Laravel Sanctum | MIT | Laravel LLC | Tokens de API | | Laravel Boost | MIT | Laravel LLC | Diretrizes do agente de IA | | Three.js | MIT | Ricardo Cabello (Mr.doob) e contribuidores | Renderização 3D (Fase 2) | | Tailwind CSS | MIT | Tailwind Labs | Estilos | | Instrument Sans | OFL 1.1 | Instrument (Google Fonts) | Tipografia | | PHP | PHP License | The PHP Group | Runtime | | MariaDB | GPL / comercial | MariaDB Foundation | Banco de dados | > Observação: licenças MIT, Apache-2.0, BSD, ISC e OFL permitem uso comercial > livremente, atendendo à exigência da Syspanel. Registre aqui toda nova > dependência antes de mergear. --- ## 5. Padrões de Código 5.1. Siga o estilo do Laravel (Pint). Formate com `./vendor/bin/pint`. 5.2. Prefira código explícito a "mágica" obscura; legibilidade primeiro. 5.3. Valide sempre a entrada do usuário (Form Requests). 5.4. Retorne respostas de erro consistentes (JSON com `message` e `errors`). 5.5. Use as traduções (`__()` / `@lang`) em vez de strings literais no meio das views e controllers. --- ## 6. Commits e Versionamento 6.1. Mensagens de commit claras e no imperativo (ex.: `Add store CRUD API`). 6.2. Nunca commite: `.env`, chaves, `storage/logs/*`, `vendor/`, `node_modules/`. 6.3. Uma mudança por commit quando possível; mantenha o histórico legível. --- © 2026 — Todos os direitos reservados — Powered by [Syspanel](https://syspanel.com.br) — www.syspanel.com.br