( ! ) Warning: file_put_contents(/var/www/html/storage/logs/app_2026-07-22.log): Failed to open stream: Permission denied in /var/www/html/src/Services/Logger.php on line 161
Call Stack
#TimeMemoryFunctionLocation
10.0142441888{main}( ).../index.php:0
20.0149546048Connection::getInstance( $type = 'local' ).../index.php:15
30.0149546160Connection->__construct( $type = 'local' ).../Connection.php:32
40.0149546648Connection->connect( ).../Connection.php:26
50.0149549568Logger->info( $message = 'Tentando conexão com método: padrão', $context = ??? ).../Connection.php:120
60.0149549568Logger->log( $level = 'INFO', $message = 'Tentando conexão com método: padrão', $context = [] ).../Logger.php:88
70.0150551760Logger->writeToFile( $file = '/var/www/html/storage/logs/app_2026-07-22.log', $content = '[2026-07-22 01:42:06] [INFO] Tentando conexão com método: padrão\n' ).../Logger.php:138
80.0150551760file_put_contents( $filename = '/var/www/html/storage/logs/app_2026-07-22.log', $data = '[2026-07-22 01:42:06] [INFO] Tentando conexão com método: padrão\n', $flags = 10 ).../Logger.php:161

( ! ) Warning: file_put_contents(/var/www/html/storage/logs/app_2026-07-22.log): Failed to open stream: Permission denied in /var/www/html/src/Services/Logger.php on line 161
Call Stack
#TimeMemoryFunctionLocation
10.0142441888{main}( ).../index.php:0
20.0149546048Connection::getInstance( $type = 'local' ).../index.php:15
30.0149546160Connection->__construct( $type = 'local' ).../Connection.php:32
40.0149546648Connection->connect( ).../Connection.php:26
50.0688593880Logger->info( $message = 'Conexão estabelecida com método \'padrão\': chevaliertech02', $context = ??? ).../Connection.php:126
60.0688593880Logger->log( $level = 'INFO', $message = 'Conexão estabelecida com método \'padrão\': chevaliertech02', $context = [] ).../Logger.php:88
70.0688594344Logger->writeToFile( $file = '/var/www/html/storage/logs/app_2026-07-22.log', $content = '[2026-07-22 01:42:06] [INFO] Conexão estabelecida com método \'padrão\': chevaliertech02\n' ).../Logger.php:138
80.0688594344file_put_contents( $filename = '/var/www/html/storage/logs/app_2026-07-22.log', $data = '[2026-07-22 01:42:06] [INFO] Conexão estabelecida com método \'padrão\': chevaliertech02\n', $flags = 10 ).../Logger.php:161

( ! ) Warning: file_put_contents(/var/www/html/storage/logs/app_2026-07-22.log): Failed to open stream: Permission denied in /var/www/html/src/Services/Logger.php on line 161
Call Stack
#TimeMemoryFunctionLocation
10.0142441888{main}( ).../index.php:0
20.0694599608Logger->info( $message = 'Acesso à página principal', $context = ??? ).../index.php:16
30.0694599608Logger->log( $level = 'INFO', $message = 'Acesso à página principal', $context = [] ).../Logger.php:88
40.0694600040Logger->writeToFile( $file = '/var/www/html/storage/logs/app_2026-07-22.log', $content = '[2026-07-22 01:42:06] [INFO] Acesso à página principal\n' ).../Logger.php:138
50.0694600040file_put_contents( $filename = '/var/www/html/storage/logs/app_2026-07-22.log', $data = '[2026-07-22 01:42:06] [INFO] Acesso à página principal\n', $flags = 10 ).../Logger.php:161
Início - Sistema de Canhotos de Frete

Sistema de Canhotos de Frete

Bem-vindo ao sistema de processamento de canhotos

✅ Sistema Conectado

Banco de dados conectado com sucesso!

Pendentes


( ! ) Warning: file_put_contents(/var/www/html/storage/logs/app_2026-07-22.log): Failed to open stream: Permission denied in /var/www/html/src/Services/Logger.php on line 161
Call Stack
#TimeMemoryFunctionLocation
10.0142441888{main}( ).../index.php:0
20.0697599648Connection->fetchOne( $sql = 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Pendente\'', $params = ??? ).../index.php:116
30.0697599648Connection->query( $sql = 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Pendente\'', $params = [] ).../Connection.php:214
40.0863638392Logger->debug( $message = 'Query executada', $context = ['sql' => 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Pendente\'', 'params' => [], 'execution_time' => 0.01662588119506836] ).../Connection.php:181
50.0863638392Logger->log( $level = 'DEBUG', $message = 'Query executada', $context = ['sql' => 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Pendente\'', 'params' => [], 'execution_time' => 0.01662588119506836] ).../Logger.php:76
60.0864639144Logger->writeToFile( $file = '/var/www/html/storage/logs/app_2026-07-22.log', $content = '[2026-07-22 01:42:06] [DEBUG] Query executada {"sql":"SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Pendente\'","params":[],"execution_time":0.01662588119506836}\n' ).../Logger.php:138
70.0864639144file_put_contents( $filename = '/var/www/html/storage/logs/app_2026-07-22.log', $data = '[2026-07-22 01:42:06] [DEBUG] Query executada {"sql":"SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Pendente\'","params":[],"execution_time":0.01662588119506836}\n', $flags = 10 ).../Logger.php:161
0

Processando


( ! ) Warning: file_put_contents(/var/www/html/storage/logs/app_2026-07-22.log): Failed to open stream: Permission denied in /var/www/html/src/Services/Logger.php on line 161
Call Stack
#TimeMemoryFunctionLocation
10.0142441888{main}( ).../index.php:0
20.0870600024Connection->fetchOne( $sql = 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processando\'', $params = ??? ).../index.php:130
30.0870600024Connection->query( $sql = 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processando\'', $params = [] ).../Connection.php:214
40.1037638768Logger->debug( $message = 'Query executada', $context = ['sql' => 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processando\'', 'params' => [], 'execution_time' => 0.016607046127319336] ).../Connection.php:181
50.1037638768Logger->log( $level = 'DEBUG', $message = 'Query executada', $context = ['sql' => 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processando\'', 'params' => [], 'execution_time' => 0.016607046127319336] ).../Logger.php:76
60.1037639552Logger->writeToFile( $file = '/var/www/html/storage/logs/app_2026-07-22.log', $content = '[2026-07-22 01:42:06] [DEBUG] Query executada {"sql":"SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processando\'","params":[],"execution_time":0.016607046127319336}\n' ).../Logger.php:138
70.1037639552file_put_contents( $filename = '/var/www/html/storage/logs/app_2026-07-22.log', $data = '[2026-07-22 01:42:06] [DEBUG] Query executada {"sql":"SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processando\'","params":[],"execution_time":0.016607046127319336}\n', $flags = 10 ).../Logger.php:161
0

Processados


( ! ) Warning: file_put_contents(/var/www/html/storage/logs/app_2026-07-22.log): Failed to open stream: Permission denied in /var/www/html/src/Services/Logger.php on line 161
Call Stack
#TimeMemoryFunctionLocation
10.0142441888{main}( ).../index.php:0
20.1041600024Connection->fetchOne( $sql = 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processado\'', $params = ??? ).../index.php:144
30.1041600024Connection->query( $sql = 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processado\'', $params = [] ).../Connection.php:214
40.1208638768Logger->debug( $message = 'Query executada', $context = ['sql' => 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processado\'', 'params' => [], 'execution_time' => 0.01672220230102539] ).../Connection.php:181
50.1208638768Logger->log( $level = 'DEBUG', $message = 'Query executada', $context = ['sql' => 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processado\'', 'params' => [], 'execution_time' => 0.01672220230102539] ).../Logger.php:76
60.1209639552Logger->writeToFile( $file = '/var/www/html/storage/logs/app_2026-07-22.log', $content = '[2026-07-22 01:42:06] [DEBUG] Query executada {"sql":"SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processado\'","params":[],"execution_time":0.01672220230102539}\n' ).../Logger.php:138
70.1209639552file_put_contents( $filename = '/var/www/html/storage/logs/app_2026-07-22.log', $data = '[2026-07-22 01:42:06] [DEBUG] Query executada {"sql":"SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Processado\'","params":[],"execution_time":0.01672220230102539}\n', $flags = 10 ).../Logger.php:161
714

Rejeitados


( ! ) Warning: file_put_contents(/var/www/html/storage/logs/app_2026-07-22.log): Failed to open stream: Permission denied in /var/www/html/src/Services/Logger.php on line 161
Call Stack
#TimeMemoryFunctionLocation
10.0142441888{main}( ).../index.php:0
20.1214600024Connection->fetchOne( $sql = 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Rejeitado\'', $params = ??? ).../index.php:158
30.1215600024Connection->query( $sql = 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Rejeitado\'', $params = [] ).../Connection.php:214
40.1381638768Logger->debug( $message = 'Query executada', $context = ['sql' => 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Rejeitado\'', 'params' => [], 'execution_time' => 0.01668381690979004] ).../Connection.php:181
50.1381638768Logger->log( $level = 'DEBUG', $message = 'Query executada', $context = ['sql' => 'SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Rejeitado\'', 'params' => [], 'execution_time' => 0.01668381690979004] ).../Logger.php:76
60.1382639520Logger->writeToFile( $file = '/var/www/html/storage/logs/app_2026-07-22.log', $content = '[2026-07-22 01:42:06] [DEBUG] Query executada {"sql":"SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Rejeitado\'","params":[],"execution_time":0.01668381690979004}\n' ).../Logger.php:138
70.1382639520file_put_contents( $filename = '/var/www/html/storage/logs/app_2026-07-22.log', $data = '[2026-07-22 01:42:06] [DEBUG] Query executada {"sql":"SELECT COUNT(*) as count FROM canhotos_processamento WHERE status_processamento = \'Rejeitado\'","params":[],"execution_time":0.01668381690979004}\n', $flags = 10 ).../Logger.php:161
1

Fila MySoft


( ! ) Warning: file_put_contents(/var/www/html/storage/logs/app_2026-07-22.log): Failed to open stream: Permission denied in /var/www/html/src/Services/Logger.php on line 161
Call Stack
#TimeMemoryFunctionLocation
10.0142441888{main}( ).../index.php:0
20.1386600024Connection->fetchOne( $sql = 'SELECT COUNT(*) as count FROM fila_canhoto_mysoft', $params = ??? ).../index.php:171
30.1386600024Connection->query( $sql = 'SELECT COUNT(*) as count FROM fila_canhoto_mysoft', $params = [] ).../Connection.php:214
40.1554638768Logger->debug( $message = 'Query executada', $context = ['sql' => 'SELECT COUNT(*) as count FROM fila_canhoto_mysoft', 'params' => [], 'execution_time' => 0.01674509048461914] ).../Connection.php:181
50.1554638768Logger->log( $level = 'DEBUG', $message = 'Query executada', $context = ['sql' => 'SELECT COUNT(*) as count FROM fila_canhoto_mysoft', 'params' => [], 'execution_time' => 0.01674509048461914] ).../Logger.php:76
60.1554639456Logger->writeToFile( $file = '/var/www/html/storage/logs/app_2026-07-22.log', $content = '[2026-07-22 01:42:06] [DEBUG] Query executada {"sql":"SELECT COUNT(*) as count FROM fila_canhoto_mysoft","params":[],"execution_time":0.01674509048461914}\n' ).../Logger.php:138
70.1554639456file_put_contents( $filename = '/var/www/html/storage/logs/app_2026-07-22.log', $data = '[2026-07-22 01:42:06] [DEBUG] Query executada {"sql":"SELECT COUNT(*) as count FROM fila_canhoto_mysoft","params":[],"execution_time":0.01674509048461914}\n', $flags = 10 ).../Logger.php:161
235

📜 Histórico de Versões

📋 Changelog - Sistema de Canhotos de Frete



Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.

O formato é baseado em Keep a Changelog,
e este projeto adere ao Versionamento Semântico.

🚀 Versão 1.2 - Padronização de Layout & Componentes 2026-04-20


🚀 Adicionado

  • Arquitetura de Componentes: Extração de Topo, Menu de Navegação e Rodapé para componentes PHP reutilizáveis.

  • Identidade Visual Unificada: Padronização da interface em todas as páginas do sistema (Dashboard, Processamento, Logs e Visualização).

  • CSS Centralizado: Criação do `common.css` unificando estilos globais e reduzindo redundância de código.


🛠️ Corrigido

  • Correção de sintaxe em tags de script em páginas refatoradas.

  • Ajuste no balanço de fechamento de divs (DOM) após migração para componentes.

  • Validação de consistência visual entre as páginas 'index', 'dashboard', 'process' e 'logs'.


🚀 Versão 1.1 - Smart Crop & Correções 2026-04-20


🚀 Adicionado

  • Implementação da função de recorte inteligente (AICrop) utilizando IA para otimizar a visualização dos canhotos.

  • Integração de recorte automático no fluxo de visualização de imagens.


🛠️ Corrigido

  • Ajustes e correções na lógica de status de processamento (ex: diferenciação entre 'Processado' e 'Pendente Recorte').

  • Melhoria na exibição e filtragem de status na interface web.


🚀 Versão 1.0 - Validação Humana 2026-04-16


🚀 Adicionado

  • Liberado para produção.

  • Implementação de modal interativo de Changelog global.

  • Validação IA expandida para canhotos com preenchimento manual de 'Liberação Canhoto' (vistos locais).

  • Ajuste e correção da gravação das aprovações da IA como status 'Validado'.