Initial commit of the complete City10 virtual city simulation platform. Backend (Laravel 13): - REST API with Sanctum tokens and session-based web authentication - Role-based access control (admin/user) with middleware protection - AI agent CRUD with OpenRouter.ai integration restricted to free models - Store management with 3D coordinates and AI shopkeeper assignment - Versioned legal documents (Terms, Privacy, Cookies) with LGPD audit trail - Math CAPTCHA on public forms and multi-language support (pt_BR, en, es) Frontend: - Responsive Blade templates with Tailwind CSS v4 - Three.js 3D city viewer with SSE chat streaming to AI agents - Admin panel for store and user administration Infrastructure: - MariaDB/MySQL database with comprehensive migrations - Database seeders for demo content and test accounts - PHPUnit test suite and Laravel Pint code styling - Vite build configuration with hot reload
5.4 KiB
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 |
| 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 — www.syspanel.com.br