Configurações do Integrador AVA ============================== Esta página documenta **todas** as configurações e variáveis de ambiente utilizadas pelo **Integrador AVA** (localizado em ``./integrador_ava``). Essas configurações estão organizadas de acordo com a estrutura de módulos contida na pasta ``src/settings/`` do projeto. Informações de Título e Metadados do Projeto (``project.py``) ------------------------------------------------------------- * **``PROJECT_TITLE``** (String, Padrão: ``"Integrador AVA"``): Título principal do projeto/middleware de integração. * **``PROJECT_SUBTITLE``** (String, Padrão: ``"Sistema de integração de ambientes virtuais de aprendizagem"``): Subtítulo descritivo exibido no painel de administração e endpoints. * **``PROJECT_VERSION``** (String, Padrão: ``"1.1.063"``): Versão instalada do Integrador. * **``PROJECT_COPYRIGHT``** (String, Padrão: ``"©2025 IFRN"``): Assinatura de direitos autorais. * **``PROJECT_LICENSE``** (String, Padrão: ``"Licença MIT"``): Licença de distribuição do software. * **``PROJECT_LICENSE_URL``** (String, Padrão: ``"https://opensource.org/license/mit"``): Link oficial contendo os termos da licença. Configurações Básicas e de Debug (``developments.py``) ------------------------------------------------------ * **``DJANGO_DEBUG``** (Bool, Padrão: ``True``): Define se o framework Django rodará em modo debug. **Aviso:** Deve ser definido como ``False`` em produção. Configurações de Segurança e Roteamentos (``securities.py``) ------------------------------------------------------------- * **``SUAP_INTEGRADOR_KEY``** (String, Sem padrão): Token de API de segurança que deve ser enviado nas chamadas REST do SUAP para autenticação de requisições. * **``SUAP_BASE_URL``** (String, Padrão: ``"https://suap.ifrn.edu.br"``): URL base da instância principal do SUAP. * **``DJANGO_SECRET_KEY``** (String, Padrão: ``"changeme"``): Chave secreta de hashing do Django para sessões e tokens CSRF. Deve ser alterada em produção (mínimo de 50 caracteres). * **``DJANGO_LOGIN_URL``** (String, Padrão: ``"/login/"``): URL padrão do formulário de autenticação. * **``DJANGO_LOGIN_REDIRECT_URL``** (String, Padrão: ``"/admin/"``): Rota para onde o usuário é enviado após logar com sucesso. * **``DJANGO_LOGOUT_REDIRECT_URL``** (String, Padrão: ``"{SUAP_BASE_URL}/comum/logout"``): URL final de redirecionamento após o encerramento da sessão. * **``GO_TO_HTTPS``** (Bool, Padrão: ``False``): Força o uso de cookies seguros e redirecionamentos para conexões HTTPS. * **``AUTHENTICATION_BACKENDS``** (List, Padrão: ``["django.contrib.auth.backends.ModelBackend"]``): Mecanismos de backend de autenticação do Django. * **``DJANGO_AUTH_PASSWORD_VALIDATORS``** (List, Padrão: ``[]``): Lista de validadores de complexidade de senhas ativados. **Configuração do Cliente OAuth2 (SGA/SUAP):** * **``OAUTH_BASE_URL``** (String, Padrão: ``"https://suap.ifrn.edu.br"``): URL raiz do provedor de identidade acadêmico. * **``OAUTH_AUTHORIZE_URL``** (String, Padrão: ``"{OAUTH_BASE_URL}/o/authorize/"``): URL do endpoint de autorização OAuth2. * **``OAUTH_TOKEN_URL``** (String, Padrão: ``"{OAUTH_BASE_URL}/o/token/"``): Endpoint de emissão do token OAuth2. * **``OAUTH_USERINFO_URL``** (String, Padrão: ``"{OAUTH_BASE_URL}/api/rh/eu/"``): URL para obtenção de dados básicos do usuário (nome, login, etc.). * **``OAUTH_REDIRECT_URI``** (String, Padrão: ``""``): Callback URL registrada no provedor de autenticação. * **``OAUTH_CLIENT_ID``** (String, Sem padrão): Identificador do cliente de integração da suite registrado no SUAP. * **``OAUTH_CLIENT_SECRET``** (String, Sem padrão): Chave secreta correspondente ao cliente de integração cadastrado. * **``OAUTH_VERIFY_SSL``** (Bool, Padrão: ``True``): Define se as chamadas de API feitas pelo orquestrador exigem a validação de certificado SSL. **Configuração de CORS (Cross-Origin Resource Sharing):** * **``DJANGO_CORS_ALLOWED_ORIGINS``** (List, Padrão: ``[]``): Origens/hosts específicos autorizados a realizar chamadas cross-origin de API. * **``DJANGO_CORS_ALLOWED_ORIGIN_REGEXES``** (List, Padrão: ``[]``): Expressões regulares para autorização dinâmica de origens CORS. * **``DJANGO_CORS_ALLOW_ALL_ORIGINS``** (Bool, Padrão: ``False``): Se ``True``, permite requisições AJAX a partir de qualquer endereço. **Perigoso em produção.** * **``DJANGO_CORS_URLS_REGEX``** (String, Padrão: ``r"^.*$"``): Regexp que limita as URLs internas expostas via CORS. * **``DJANGO_CORS_ALLOW_METHODS``** (List, Padrão: verbos HTTP comuns): Métodos HTTP autorizados para requisições cross-site. * **``DJANGO_CORS_ALLOW_HEADERS``** (List, Padrão: ``[]``): Cabeçalhos HTTP customizados autorizados nas requisições do navegador. * **``DJANGO_CORS_EXPOSE_HEADERS``** (List, Padrão: ``[]``): Cabeçalhos da resposta HTTP expostos ao cliente. * **``DJANGO_CORS_PREFLIGHT_MAX_AGE``** (Int, Padrão: ``86400``): Tempo limite de cacheamento em segundos do preflight CORS pelo navegador. * **``DJANGO_CORS_ALLOW_CREDENTIALS``** (Bool, Padrão: ``False``): Permite o envio de cookies e cabeçalhos de autorização em chamadas CORS. * **``DJANGO_CORS_ALLOW_PRIVATE_NETWORK``** (Bool, Padrão: ``False``): Permite requisições CORS partindo ou destinando-se a redes locais/privadas. **Configuração de CSRF (Cross-Site Request Forgery):** * **``DJANGO_CSRF_COOKIE_AGE``** (Int, Padrão: ``31536000``): Tempo de expiração em segundos do cookie CSRF. * **``DJANGO_CSRF_COOKIE_DOMAIN``** (String, Padrão: ``None``): Domínio de validade do cookie CSRF. * **``DJANGO_CSRF_COOKIE_HTTPONLY``** (Bool, Padrão: ``True``): Se ativo, impede leitura do cookie CSRF via Javascript (proteção XSS). * **``DJANGO_CSRF_COOKIE_NAME``** (String, Padrão: ``"csrftoken"``): Nome do cookie gravado no navegador. * **``DJANGO_CSRF_COOKIE_PATH``** (String, Padrão: ``"/"``): Caminho associado ao cookie CSRF. * **``DJANGO_CSRF_COOKIE_SAMESITE``** (String, Padrão: ``"Lax"``): Controle de envio em contextos cross-site. * **``DJANGO_CSRF_COOKIE_SECURE``** (Bool, Padrão: assume o valor de ``GO_TO_HTTPS``): Exige conexão HTTPS segura para transmitir o cookie CSRF. * **``DJANGO_CSRF_USE_SESSIONS``** (Bool, Padrão: ``False``): Armazena o token CSRF na sessão do usuário ao invés de cookie. * **``DJANGO_CSRF_FAILURE_VIEW``** (String, Padrão: ``"integrador.views_errors.csrf_failure"``): View customizada chamada em falhas de validação CSRF. * **``DJANGO_CSRF_HEADER_NAME``** (String, Padrão: ``"HTTP_X_CSRFTOKEN"``): Cabeçalho HTTP contendo o token no envio. * **``DJANGO_CSRF_TRUSTED_ORIGINS``** (List, Padrão: ``[]``): Lista de origens confiáveis para requisições inseguras (ex: ``POST``) via subdomínios. Configurações de Banco de Dados (``databases.py``) ------------------------------------------------- * **``POSTGRES_ENGINE``** (String, Padrão: ``"django.db.backends.postgresql"``): Motor/driver Django de banco de dados. * **``POSTGRES_HOST``** (String, Padrão: ``"db"``): Endereço de rede do banco de dados PostgreSQL. * **``POSTGRES_PORT``** (String/Int, Padrão: ``"5432"``): Porta do PostgreSQL. * **``POSTGRES_DATABASE``** (String, Padrão: ``"integrador"``): Nome da base de dados PostgreSQL. * **``POSTGRES_USER``** (String, Padrão: ``"postgres"``): Usuário do banco de dados. * **``POSTGRES_PASSWORD``** (String, Padrão: ``"postgres"``): Senha do usuário do banco de dados. * **``POSTGRES_OPTIONS``** (String, Padrão: ``""``): Opções adicionais passadas na string de conexão do driver. Configurações de Cache (``caches.py``) -------------------------------------- * **``DJANGO_CACHES_DEFAULT_BACKEND``** (String, Padrão: ``"django.core.cache.backends.redis.RedisCache"``): Backend de cache configurado. * **``DJANGO_CACHES_DEFAULT_LOCATION``** (List/String, Padrão: ``["redis://cache:6379/1"]``): URLs dos nós de conexão da instância Redis. * **``DASHBOARD_CACHE_ENABLED``** (Bool, Padrão: ``True``): Habilita cacheamento dos endpoints do dashboard administrativo do Integrador. * **``DASHBOARD_CACHE_TIMEOUT``** (Int, Padrão: ``300``): Tempo limite de validade do cache em segundos. Configurações de Rotas e Recursos (``routings.py``) --------------------------------------------------- * **``DJANGO_WSGI_APPLICATION``** (String, Padrão: ``"wsgi.application"``): Módulo de entrada WSGI do app Django. * **``DJANGO_ROOT_URLCONF``** (String, Padrão: ``"urls"``): Módulo principal que define as URLs e endpoints. * **``DJANGO_ROOT_URL_PATH``** (String, Padrão: ``""``): Subdiretório de URL base (ex: caso rode sob ``/integrador``). * **``DJANGO_STATIC_URL``** (String, Padrão: ``"/static/"``): Endereço URL público dos arquivos estáticos. * **``DJANGO_STATIC_ROOT``** (String, Padrão: ``"/app/static"``): Diretório absoluto de consolidação física dos recursos estáticos estáticos. * **``DJANGO_MEDIA_URL``** (String, Padrão: ``"/media/"``): Caminho URL público de downloads e uploads. * **``DJANGO_MEDIA_ROOT``** (String, Padrão: ``"/app/media"``): Diretório absoluto físico para mídias geradas em disco. Configurações de E-mail (``emails.py``) --------------------------------------- * **``DJANGO_EMAIL_BACKEND``** (String, Padrão: ``"django.core.mail.backends.smtp.EmailBackend"``): Backend de envio de e-mails configurado. * **``DJANGO_EMAIL_FILE_PATH``** (String, Padrão: ``None``): Caminho físico se usar o backend de arquivos. * **``DJANGO_EMAIL_HOST``** (String, Padrão: ``"mail"``): Endereço do host SMTP. * **``DJANGO_EMAIL_PORT``** (Int, Padrão: ``1025``): Porta do host SMTP. * **``DJANGO_EMAIL_HOST_USER``** (String, Padrão: ``""``): Usuário SMTP. * **``DJANGO_EMAIL_HOST_PASSWORD``** (String, Padrão: ``""``): Senha SMTP. * **``DJANGO_EMAIL_SUBJECT_PREFIX``** (String, Padrão: ``""``): Prefixo anexado no início do título de e-mails disparados. * **``DJANGO_EMAIL_USE_LOCALTIME``** (Bool, Padrão: ``False``): Envia e-mails com data e fuso horários ajustados localmente. * **``DJANGO_EMAIL_USE_TLS``** (Bool, Padrão: ``False``): Habilita encriptação TLS. * **``DJANGO_EMAIL_USE_SSL``** (Bool, Padrão: ``False``): Habilita encriptação SSL. * **``DJANGO_EMAIL_SSL_KEYFILE``** (String, Padrão: ``None``): Caminho da chave privada SSL de conexão SMTP. * **``DJANGO_EMAIL_TIMEOUT``** (Int, Padrão: ``None``): Tempo limite de conexão SMTP em segundos. * **``DJANGO_DEFAULT_FROM_EMAIL``** (String, Padrão: ``"Atendimento do integrador SUAP-MOODLE "``): E-mail padrão utilizado como remetente. * **``DEFAULT_REPLYTO_EMAIL``** (List, Padrão: ``["Atendimento do integrador SUAP-MOODLE "]``): E-mail configurado no cabeçalho "Reply-To" (Responder Para). Configurações de Sessão e Cookies (``sessions.py``) --------------------------------------------------- * **``DJANGO_SESSION_ENGINE``** (String, Padrão: ``"django.contrib.sessions.backends.cache"``): Backend de armazenamento das sessões ativas (Padrão: Cache Redis). * **``DJANGO_SESSION_CACHE_ALIAS``** (String, Padrão: ``"default"``): Alias de cache a ser utilizado para as sessões. * **``DJANGO_SESSION_COOKIE_SAMESITE``** (String, Padrão: ``"Lax"``): Diretiva SameSite configurada nos cookies de sessão. Configurações de Observabilidade (``observabilities.py`` / ``loggings.py``) -------------------------------------------------------------------------- * **``SENTRY_DSN``** ou **``SENTRY_DNS``** (String, Padrão: ``None``): Endereço de DSN exclusivo do Sentry para capturar exceções da aplicação. * **``SENTRY_DEFAULT_INTEGRATIONS``** (Bool, Padrão: ``True``): Define se as integrações padrão do SDK do Sentry serão inicializadas. * **``SENTRY_SAMPLE_RATE``** (Int, Padrão: ``100``): Amostragem percentual de erros enviados ao Sentry (100 = todos os erros). * **``SENTRY_TRACES_SAMPLE_RATE``** (Int, Padrão: ``100``): Amostragem de traços de telemetria enviados. * **``SENTRY_SEND_DEFAULT_PII``** (Bool, Padrão: ``True``): Se ativo, envia dados pessoais associados a falhas (ex: identificação de usuário logado). * **``SENTRY_DEBUG``** (Bool, Padrão: ``False``): Ativa o modo debug interno do SDK Sentry. * **``SENTRY_ENVIRONMENT``** (String, Padrão: ``"local"``): Classificação do ambiente na console Sentry (ex: ``production``, ``staging``). * **``SENTRY_MAX_BREADCRUMBS``** (Int, Padrão: ``100``): Número máximo de logs de histórico de passos do usuário gravados em um report de crash. * **``SENTRY_PROFILES_SAMPLE_RATE``** (Int, Padrão: ``100``): Taxa percentual de amostragem de profiles gravados no sentry. * **``SENTRY_RELEASE``** (String, Padrão: versão corrente da aplicação): Versão de release do código mapeada nos relatórios de erros do Sentry. * **``DJANGO_LOGLEVEL``** (String, Padrão: ``"INFO"`` / ``"DEBUG"``): Severidade mínima padrão capturada pelos loggers. Configurações de Internacionalização (``internationalizations.py``) --------------------------------------------------------------------- * **``DJANGO_LANGUAGE_CODE``** (String, Padrão: ``"pt-br"``): Código de idioma base do painel. * **``DJANGO_TIME_ZONE``** (String, Padrão: ``"America/Fortaleza"``): Fuso horário para cálculos de data e hora. * **``DJANGO_USE_I18N``** (Bool, Padrão: ``True``): Habilita o sistema de tradução do Django. * **``DJANGO_USE_L10N``** (Bool, Padrão: ``True``): Habilita a formatação localizada de dados (datas, números). * **``DJANGO_USE_TZ``** (Bool, Padrão: ``True``): Se ativo, o Django armazenará datas com timezone nos bancos (recomendado). * **``DJANGO_USE_THOUSAND_SEPARATOR``** (Bool, Padrão: ``True``): Habilita separadores de milhares nas visualizações numéricas. Configurações de Aplicativos Integrados (``apps.py``) ----------------------------------------------------- * **``MY_APPS``** (List, Padrão: ``["cohort", "integrador", "security", "dashboard", "base", "dsgovbr", "health"]``): Lista de módulos locais do integrador. * **``THIRD_APPS``** (List, contendo ``import_export``, ``django_rule_engine``, etc.): Bibliotecas utilitárias carregadas pelo framework. * **``HACK_APPS``** (List, Padrão: ``["hacks"]``): Aplicações que adicionam hacks ou interceptações na lógica interna da suite. Configurações do Mock do Moodle (``integrador/moodle_mock.py``) --------------------------------------------------------------- Utilizadas exclusivamente para ambiente de testes locais e simulação de resposta da API do Moodle: * **``MOODLE_HTTP_MOCK_ENABLED``** (Bool, Padrão: ``False``): Se ativado, responde chamadas REST do Moodle por mocks locais estáticos. * **``MOODLE_HTTP_MOCK_BACKGROUND``** (Bool, Padrão: ``False``): Inicia o mock server em segundo plano. * **``MOODLE_HTTP_MOCK_HOST``** (String, Padrão: ``"127.0.0.1"``): Endereço de rede em que o mock de Moodle receberá requisições. * **``MOODLE_HTTP_MOCK_PORT``** (Int, Padrão: ``18091``): Porta do serviço local de mock.