feat: add City10 platform with Laravel 13, AI agents, 3D viewer, and LGPD compliance
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
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
# 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](https://syspanel.com.br) — www.syspanel.com.br
|
||||
Reference in New Issue
Block a user