Pular para conteúdo

Estrutura do Projeto

Mapa completo de diretórios e arquivos do Morpheus Env com descrição de cada elemento.


Árvore de Diretórios

morpheus_env/
│
├── core/                          # Configurações centrais Django
│   ├── templates/
│   │   ├── base.html              # Template base (herança)
│   │   ├── index.html             # Home
│   │   └── components/
│   │       ├── _header.html
│   │       └── _footer.html
│   ├── settings.py                # Configurações Django
│   ├── urls.py                    # Rotas globais
│   ├── views.py                   # Views globais
│   ├── wsgi.py                    # Configuração WSGI
│   └── asgi.py                    # Configuração ASGI
│
├── users/                         # App autenticação
│   ├── migrations/                # Histórico banco de dados
│   ├── templates/registration/
│   │   ├── login.html
│   │   └── register.html
│   ├── validators/
│   │   └── disposable_email_blocklist.conf  # Emails bloqueados
│   ├── forms.py                   # Formulários customizados
│   ├── models.py                  # Modelos de dados
│   ├── signals.py                 # Sinais (emails automáticos)
│   ├── urls.py                    # Rotas
│   ├── views.py                   # Views
│   └── admin.py                   # Admin panel
│
├── tools/                         # App ferramentas
│   ├── services/                  # Lógica de negócio
│   │   ├── system_metrics.py
│   │   ├── ai_analysis.py
│   │   └── num_converter.py
│   ├── templates/
│   │   ├── system_analysis.html
│   │   └── num_converter.html
│   ├── views.py                   # Views e APIs
│   ├── urls.py                    # Rotas
│   ├── admin.py
│   └── migrations/
│
├── notifications/                 # App notificações
│   ├── utils/
│   │   ├── send_email.py
│   │   ├── email_oauth2.py
│   │   ├── colors.py
│   │   ├── emails.py
│   │   └── terminal_msg.py
│   ├── models.py
│   └── admin.py
│
├── static/                        # Arquivos estáticos
│   ├── css/
│   │   ├── input.css              # Input Tailwind
│   │   └── styles.css             # Output compilado
│   ├── img/                       # Imagens
│   └── javascript/
│       ├── system-analysis.js
│       ├── num-converter.js
│       └── register.js
│
├── docs/                          # Documentação
│   ├── index.md
│   ├── overview.md
│   ├── installation.md
│   ├── configuration.md
│   ├── architecture.md
│   ├── project-structure.md
│   ├── authentication.md
│   ├── security.md
│   ├── api-reference.md
│   ├── guidelines.md
│   ├── contributing.md
│   ├── development.md
│   ├── tools.md
│   ├── prerequisites.md
│   └── release-notes.md
│
├── .gitignore
├── .env.example
├── build-tailwind.sh
├── manage.py
├── README.md
├── requirements.txt
├── requirements_dev.txt
├── requirements_docs.txt
├── tailwind.config.js
├── db.sqlite3                     # Banco (dev only)
└── venv/                          # Ambiente virtual (ignorado)

Arquivos Principais

core/settings.py

Configurações centrais do Django:

  • SECRET_KEY: Chave de segurança
  • DEBUG: Modo debug
  • INSTALLED_APPS: Apps registradas
  • MIDDLEWARE: Middlewares ativas
  • TEMPLATES: Configuração de templates
  • DATABASES: Banco de dados

Quando editar: Adicionar apps, configurar variáveis, modificar middlewares.


core/urls.py

Rotas globais:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', HomeView.as_view(), name='home'),
    path('accounts/', include('users.urls')),
    path('sistema/', include('tools.urls')),
]

users/forms.py

Formulários customizados para registro:

  • CustomUserCreationForm: Valida username, email, senha
  • clean_email(): Bloqueia emails temporários
  • clean_username(): Verifica duplicação

users/models.py

Modelos:

  • TermsOfUseAndPrivacyPolicy: Histórico de termos

users/signals.py

Quando usuário é criado, dispara send_new_user_email().


tools/views.py

Template Views:

  • SystemAnalysisView: Dashboard monitoramento
  • NumberConverterView: Página conversor

API Views:

  • SystemAnalysisAPIView: GET /sistema/monitoramento/api/v1/metrics
  • AiAPIView: GET /sistema/monitoramento/api/v1/ai
  • NumberConverterAPIView: GET /sistema/conversor/api/v1/converter

tools/services/system_metrics.py

Coleta de métricas:

def get_system_status():
    """Retorna dict com cpu_percent, ram_percent, etc."""

def sanitize_system_data(status):
    """Normaliza para high/normal para IA."""

tools/services/ai_analysis.py

Integração Groq:

def get_ai_analysis():
    """Coleta dados, sanitiza, chama Groq."""

tools/services/num_converter.py

Conversões numéricas:

bin_to_dec(binary: str) -> int
dec_to_bin(decimal: int) -> str
hex_to_dec(hex: str) -> int
dec_to_hex(decimal: int) -> str
oct_to_dec(oct: str) -> int
dec_to_oct(decimal: int) -> str

notifications/utils/send_email.py

Lógica de envio:

def send_new_user_email(user):
    """Envia email de boas-vindas."""

def send_update_terms_email(user):
    """Notifica atualização de termos."""

notifications/utils/email_oauth2.py

Autenticação OAuth2 Google:

def get_oauth2_string(email, client_id, client_secret, refresh_token):
    """Retorna string XOAUTH2 para SMTP."""

static/javascript/system-analysis.js

Dashboard de monitoramento:

async function getSystemMetrics()
    // Requisita API a cada 5s

async function aiAnalysis()
    // Requisita análise IA

static/javascript/num-converter.js

Conversor numérico:

async function converter()
    // Requisita conversão

async function boolean()
    // Operações lógicas

build-tailwind.sh

Script para compilar Tailwind CSS:

bash build-tailwind.sh

Execute quando modificar static/css/input.css.


requirements.txt

Dependências do projeto. Instale com:

pip install -r requirements.txt

tailwind.config.js

Configuração do Tailwind CSS. Escaneia templates para classes usadas.


Convenções de Nomenclatura

Python

  • Classes: PascalCaseSystemAnalysisView
  • Funções: snake_caseget_system_status()
  • Variáveis: snake_casecpu_percent
  • Constantes: UPPER_SNAKE_CASEAPI_TIMEOUT

HTML/CSS

  • Classes Tailwind: kebab-casebg-purple-500, text-white
  • IDs: snake_casecpu_meter
  • Data attributes: kebab-casedata-system-id

JavaScript

  • Funções: camelCasegetSystemMetrics()
  • Variáveis: camelCasecpuValue
  • Constantes: UPPER_SNAKE_CASEAPI_ENDPOINT

Arquivos

  • Python: snake_case.pysystem_metrics.py
  • HTML: snake_case.htmlsystem_analysis.html
  • JavaScript: kebab-case.jssystem-analysis.js

Fluxo de Adição de Novo Recurso

Exemplo: Adicionar novo endpoint para RAM apenas.

1. Criar função no service

# tools/services/system_metrics.py
def get_ram_only():
    ram = psutil.virtual_memory()
    return {
        'ram_percent': ram.percent,
        'ram_total': round(ram.total / (1024**3), 2),
        'ram_used': round(ram.used / (1024**3), 2)
    }

2. Criar view

# tools/views.py
class RamOnlyAPIView(LoginRequiredMixin, generic.View):
    def get(self, request):
        data = get_ram_only()
        return JsonResponse({'data': data})

3. Adicionar rota

# tools/urls.py
path('ram/', RamOnlyAPIView.as_view(), name='ram_only_api')

4. Usar no frontend

fetch('/sistema/ram/')
    .then(r => r.json())
    .then(data => console.log(data))

Próximas Etapas