# Configuração e Dependências

<div class="pw" id="bkmrk-"><div class="ph"></div></div>## Requires em controle.php

Carregamos três dependências via `require_once(APPPATH . '...')`:

```
require_once(APPPATH . 'controllers/bibliotecas/4cb18a6c-9c9a-4201-82e6-4f6cc3bea445/wosk_webservice.php');
require_once(APPPATH . 'controllers/bibliotecas/592ccfa0-2692-44e3-aaea-cc7c6c6cfcfa/utilOsk.php');
require_once(APPPATH . 'controllers/bibliotecas/0670acec-4aca-43a0-8943-659600407283/db_sqlserver.php');
```

<div class="pw" id="bkmrk-uuid-arquivo-o-que-f"><div class="tw"><table style="width: 92.7381%; height: 169.578px;"><thead><tr style="height: 29.7969px;"><th style="width: 14.0806%; height: 29.7969px;">UUID</th><th style="width: 20.4228%; height: 29.7969px;">Arquivo</th><th style="width: 65.4244%; height: 29.7969px;">O que fornece</th></tr></thead><tbody><tr style="height: 46.5938px;"><td style="width: 14.0806%; height: 46.5938px;">`4cb18a6c-...`</td><td style="width: 20.4228%; height: 46.5938px;">`wosk_webservice.php`</td><td style="width: 65.4244%; height: 46.5938px;">Trait `WOSK\Commons\WebService` — formata JSON, valida campos e salva logs</td></tr><tr style="height: 46.5938px;"><td style="width: 14.0806%; height: 46.5938px;">`592ccfa0-...`</td><td style="width: 20.4228%; height: 46.5938px;">`utilOsk.php`</td><td style="width: 65.4244%; height: 46.5938px;">Classe pai — conecta ao MySQL e expõe `$this->conexao` (PDO)</td></tr><tr style="height: 46.5938px;"><td style="width: 14.0806%; height: 46.5938px;">`0670acec-...`</td><td style="width: 20.4228%; height: 46.5938px;">`db_sqlserver.php`</td><td style="width: 65.4244%; height: 46.5938px;">Gerencia a conexão PDO com o SQL Server Linx (driver `sqlsrv:`)</td></tr></tbody></table>

</div></div>## Conexão MySQL

<div class="pw" id="bkmrk-como-configuramos"><div class="card"><div class="ct">Como configuramos</div></div></div>Em `utilOsk`, chamamos `getConfiguracao('db_osk_prod')` — as credenciais ficam em Base64 numa tabela de configuração do sistema. O método `_setConexao()` cria a conexão PDO:

```
// PHP 7.3 — connection string
"mysql:host={$host};port={$porta};dbname={$banco};charset=utf8"

PDO::ATTR_PERSISTENT     = true   // conexão persistente
PDO::ATTR_TIMEOUT        = 120    // timeout em segundos
PDO::ATTR_EMULATE_PREPARES = true
```

## Conexão SQL Server

<div class="pw" id="bkmrk-instanciamos-em-busc"><div class="card"><div class="ct">Instanciamos em buscarDadosEcommercePorLoja()</div></div></div>```
// PHP 7.3
$sqlserver = new \db_sqlserver(false, 'LX_ZERO_300', true);
// Parâmetros: ($homologacao = false, $banco, $conectar_agora = true)
// connection string: "sqlsrv:Server=<HOST_SQLSERVER>,<PORTA>;Database=LX_ZERO_300"
```

<div class="pw" id="bkmrk-ambiente-host-porta-"><div class="card"></div><div class="tw"><table><thead><tr><th>Ambiente</th><th>Host</th><th>Porta</th><th>Banco</th><th>Usuário</th></tr></thead><tbody><tr><td>**Produção**</td><td>`<HOST_SQLSERVER_PROD>`</td><td>`<PORTA_PROD>`</td><td>`LX_ZERO_300`</td><td>`<USUARIO_SQLSERVER>`</td></tr><tr><td>Homologação</td><td>`<HOST_SQLSERVER_HML>`</td><td>`<PORTA_HML>`</td><td>`LINX_HMLG`</td><td>`<USUARIO_SQLSERVER>`</td></tr></tbody></table>

</div><div class="db">**Credenciais hardcoded** As senhas do SQL Server ficam em `db_sqlserver.php`</div></div>## Variáveis de ambiente

<div class="pw" id="bkmrk-vari%C3%A1vel-usada-por-d"><div class="tw"><table><thead><tr><th>Variável</th><th>Usada por</th><th>Descrição</th></tr></thead><tbody><tr><td>`$_ENV["base_db"]`</td><td>`util`</td><td>Nome do banco MySQL principal</td></tr><tr><td>`$_ENV['WOSK_DB_HMG']`</td><td>`WOSK\Common`</td><td>Flag de homologação para conexões WOSK (`false` em produção)</td></tr><tr><td>`APPPATH`</td><td>`controle.php`</td><td>Constante CodeIgniter — base dos `require_once`</td></tr></tbody></table>

</div></div>## Logs de requisição

O trait `WOSK\Commons\WebService` salva automaticamente toda chamada no banco **integrador** (`{base_db}_integrador`):

<div class="pw" id="bkmrk-tabela-conte%C3%BAdo-wosk"><div class="tw"><table><thead><tr><th>Tabela</th><th>Conteúdo</th></tr></thead><tbody><tr><td>`wosk_webservice`</td><td>Registro principal da chamada</td></tr><tr><td>`wosk_webservice_parametros`</td><td>Parâmetros recebidos (JSON)</td></tr><tr><td>`wosk_webservice_retorno`</td><td>Resposta enviada (JSON)</td></tr><tr><td>`wosk_webservice_callback`</td><td>Tokens de callback</td></tr></tbody></table>

</div><div class="ib">**Diagnóstico via log** Em qualquer dúvida sobre o que retornamos em uma chamada anterior, consultamos `wosk_webservice_retorno` no banco integrador filtrando pelo timestamp e pelo token `<TOKEN_FULLSTORE>`.</div>  
</div>