[2026-04-11 05:55:59] local.INFO: 🔴 CACHE MISS: course_progress_3_156 - Buscando no Moodle... {"type":"progress","user":156,"course":3} 
[2026-04-11 05:56:03] local.INFO: ✅ CACHE SAVED: course_progress_3_156 (4135.13ms total) {"ttl_minutes":10} 
[2026-04-11 05:56:03] local.INFO: 🔴 CACHE MISS: course_content_3 - Buscando no Moodle... {"type":"contents","user":null,"course":3} 
[2026-04-11 05:56:07] local.INFO: ✅ CACHE SAVED: course_content_3 (4199.92ms total) {"ttl_minutes":120} 
[2026-04-11 05:56:10] local.ERROR: Moodle API Exception {"function":"core_grades_get_grades","exception":"dml_missing_record_exception","message":"Não foi encontrada nenhum registro na tabela  external_functions do banco de dados."} 
[2026-04-11 05:56:10] local.ERROR: Moodle API Call Failed {"function":"core_grades_get_grades","error":"Erro Moodle: Não foi encontrada nenhum registro na tabela  external_functions do banco de dados.","attempt":1} 
[2026-04-11 05:56:21] local.INFO: 🔴 CACHE MISS: course_content_3 - Buscando no Moodle... {"type":"contents","user":null,"course":3} 
[2026-04-11 05:56:24] local.INFO: ✅ CACHE SAVED: course_content_3 (3201.94ms total) {"ttl_minutes":120} 
[2026-04-11 05:56:28] local.INFO: 🔴 CACHE MISS: grades_3_271 - Buscando no Moodle... {"type":"grades","user":271,"course":3} 
[2026-04-11 05:56:28] local.INFO: ✅ CACHE SAVED: grades_3_271 (541.27ms total) {"ttl_minutes":5} 
[2026-04-11 05:56:28] local.INFO: 🔴 CACHE MISS: course_content_3 - Buscando no Moodle... {"type":"contents","user":null,"course":3} 
[2026-04-11 05:56:31] local.INFO: ✅ CACHE SAVED: course_content_3 (3126.63ms total) {"ttl_minutes":120} 
[2026-04-11 05:56:40] local.INFO: 🔴 CACHE MISS: user_courses_156 - Buscando no Moodle... {"type":"courses","user":156,"course":null} 
[2026-04-11 05:56:41] local.INFO: Usando courseimage para curso 3: https://ava.ibrevayah.com.br/pluginfile.php/27/course/overviewfiles/CAPA-IBR.png  
[2026-04-11 05:56:41] local.INFO: Imagem do curso 3 já existe e está OK  
[2026-04-11 05:56:41] local.INFO: ✅ CACHE SAVED: user_courses_156 (1153.14ms total) {"ttl_minutes":60} 
[2026-04-11 05:56:51] local.INFO: [ImgDownload] Curso 5: tentando sem token — https://ava.ibrevayah.com.br/pluginfile.php/47/course/overviewfiles/CAPA-BLIOTECA-VIRTUAL.png  
[2026-04-11 05:56:52] local.INFO: [ImgDownload] Curso 5: tentando com token da API  
[2026-04-11 05:56:52] local.INFO: [ImgDownload] Curso 5: tentando via login web  
[2026-04-11 05:56:53] local.INFO: [ImgDownload] Curso 5: sucesso via login web  
[2026-04-11 05:56:53] local.INFO: [ImgDownload] Salvo: /home/ibrevayahnew/public_html_app/portal-dev/storage/app/public/course-images/course_5.png (372,562 bytes)  
[2026-04-11 05:56:53] local.INFO: [ImgDownload] Curso 3: tentando sem token — https://ava.ibrevayah.com.br/pluginfile.php/27/course/overviewfiles/CAPA-IBR.png  
[2026-04-11 05:56:53] local.INFO: [ImgDownload] Curso 3: tentando com token da API  
[2026-04-11 05:56:54] local.INFO: [ImgDownload] Curso 3: tentando via login web  
[2026-04-11 05:56:55] local.INFO: [ImgDownload] Curso 3: sucesso via login web  
[2026-04-11 05:56:55] local.INFO: [ImgDownload] Salvo: /home/ibrevayahnew/public_html_app/portal-dev/storage/app/public/course-images/course_3.png (2,899,806 bytes)  
