The dashboard problem and the QQBot line look like separate issues.
For the blank Analytics page and the 405 from the dashboard action, restart the dashboard process itself. Your logs show the dashboard process has been running since Apr 16, while Hermes/gateway was updated and restarted later. Gateway restart does not necessarily restart the dashboard, so the browser/frontend and Python dashboard backend can get out of sync.
Run this from the machine hosting the dashboard:
hermes update
pkill -f "hermes dashboard"
hermes dashboard --no-open --host 127.0.0.1 --port 9119
Then hard-refresh the browser page with Ctrl+F5 or Cmd+Shift+R.
There is also a real config issue in the logs:
FileNotFoundError: /opt/hermes
Hermes is trying to use /opt/hermes as the terminal working directory, but that directory does not exist. Either create that directory if it is intentional, or point Hermes at a real existing directory.
For example:
hermes config set terminal.cwd /root
hermes gateway restart
For the QQBot 4009 line: that means the QQ session timed out. Hermes handles that by clearing the session and reconnecting/re-identifying. The logs show it reconnecting afterward, so that line is probably not the cause of the blank Analytics page. If QQBot is disconnecting every minute continuously after the restart, that should be treated as a separate QQBot connection issue.
After restarting the dashboard and fixing terminal.cwd, try Analytics again. If it is still blank, please paste the output of this from the same machine:
curl -s http://127.0.0.1:9119/api/analytics/usage?days=30
Also send a screenshot of the browser console error from the Analytics page.