Files
City10/RULES.md
T
marcocosta10000 79ce2a1825 feat(world): add persistent citizen simulation with needs, jobs, and social features
- Adds Character model with survival needs (hunger, thirst, energy) and state machine
- Implements city:tick world ticker for offline progression every minute
- Adds city territory expansion and building construction system
- Introduces job economy, inventory, and transaction audit trail
- Adds social graph (friends, marriage, children) and character chat
- Implements admin approval workflow for new registrations
- Adds hospital admission system for traffic accidents
- Includes comprehensive feature tests and world seeders
2026-10-17 21:46:23 -03:00

146 lines
5.5 KiB
Markdown

# 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