{
    "timestamp": "2025-12-25 22:24:10",
    "level": "INFO",
    "command": "SyncUserQuizGradeCommand",
    "message": "Starting sync for tenant: lms_tenant_icc",
    "memory_usage": "30 MB",
    "peak_memory": "30 MB"
}
{
    "timestamp": "2025-12-25 22:24:10",
    "level": "INFO",
    "command": "SyncUserQuizGradeCommand",
    "message": "Batch size: 1000",
    "memory_usage": "30 MB",
    "peak_memory": "30 MB"
}
{
    "timestamp": "2025-12-25 22:24:10",
    "level": "INFO",
    "command": "SyncUserQuizGradeCommand",
    "message": "Tenant connection established: lms_tenant_icc",
    "memory_usage": "30 MB",
    "peak_memory": "30 MB"
}
{
    "timestamp": "2025-12-25 22:24:10",
    "level": "INFO",
    "command": "SyncUserQuizGradeCommand",
    "message": "Using Moodle prefix: omo_",
    "memory_usage": "30 MB",
    "peak_memory": "30 MB"
}
{
    "timestamp": "2025-12-25 22:24:10",
    "level": "INFO",
    "command": "SyncUserQuizGradeCommand",
    "message": "Fetching data from Moodle...",
    "memory_usage": "30 MB",
    "peak_memory": "30 MB"
}
{
    "timestamp": "2025-12-25 22:24:10",
    "level": "ERROR",
    "command": "SyncUserQuizGradeCommand",
    "message": "Sync failed: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'moodle_speakup.omo_grade_items' doesn't exist (Connection: moodle, SQL: \n                SELECT\n                    u.id        AS user_id,\n                    u.username,\n                    u.email,\n\n                    q.id        AS quiz_id,\n                    q.name      AS quiz_name,\n\n                    cm.id       AS cmid,\n                    cm.course   AS course_id,\n\n                    gg.finalgrade AS score,        -- 👈 điểm user\n                    gi.grademax   AS grademax      -- 👈 điểm tối đa\n\n                FROM omo_grade_items gi\n\n                JOIN omo_grade_grades gg\n                    ON gg.itemid = gi.id\n                AND gg.finalgrade IS NOT NULL\n\n                JOIN omo_quiz q\n                    ON q.id = gi.iteminstance\n\n                JOIN omo_user u\n                    ON u.id = gg.userid\n\n                JOIN omo_course_modules cm\n                    ON cm.instance = q.id\n                AND cm.course = q.course\n\n                JOIN omo_modules m\n                    ON m.id = cm.module\n                AND m.name = 'quiz'\n\n                WHERE gi.itemmodule = 'quiz'\n                AND gi.courseid = cm.course\n                AND gi.courseid IN (38,39,45,46,47,68)\n                AND cm.deletioninprogress = 0;\n            )",
    "memory_usage": "30 MB",
    "peak_memory": "30 MB"
}
{
    "timestamp": "2025-12-25 22:24:10",
    "level": "ERROR",
    "command": "SyncUserQuizGradeCommand",
    "message": "Stack trace: #0 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php(779): Illuminate\\Database\\Connection->runQueryCallback()\n#1 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connection.php(398): Illuminate\\Database\\Connection->run()\n#2 \/var\/www\/html\/lms_hocmai\/app\/Console\/Commands\/SyncUserQuizGradeCommand.php(134): Illuminate\\Database\\Connection->select()\n#3 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Container\/BoundMethod.php(36): App\\Console\\Commands\\SyncUserQuizGradeCommand->handle()\n#4 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Container\/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()\n#5 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Container\/BoundMethod.php(95): Illuminate\\Container\\Util::unwrapIfClosure()\n#6 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Container\/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()\n#7 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Container\/Container.php(696): Illuminate\\Container\\BoundMethod::call()\n#8 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Console\/Command.php(213): Illuminate\\Container\\Container->call()\n#9 \/var\/www\/html\/lms_hocmai\/vendor\/symfony\/console\/Command\/Command.php(318): Illuminate\\Console\\Command->execute()\n#10 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Console\/Command.php(182): Symfony\\Component\\Console\\Command\\Command->run()\n#11 \/var\/www\/html\/lms_hocmai\/vendor\/symfony\/console\/Application.php(1110): Illuminate\\Console\\Command->run()\n#12 \/var\/www\/html\/lms_hocmai\/vendor\/symfony\/console\/Application.php(359): Symfony\\Component\\Console\\Application->doRunCommand()\n#13 \/var\/www\/html\/lms_hocmai\/vendor\/symfony\/console\/Application.php(194): Symfony\\Component\\Console\\Application->doRun()\n#14 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Console\/Kernel.php(198): Symfony\\Component\\Console\\Application->run()\n#15 \/var\/www\/html\/lms_hocmai\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle()\n#16 \/var\/www\/html\/lms_hocmai\/artisan(13): Illuminate\\Foundation\\Application->handleCommand()\n#17 {main}",
    "memory_usage": "30 MB",
    "peak_memory": "30 MB"
}
