Партицируйте таблицу с пользователями. Подумайте, по каким критериям вы бы разделили её. Важно посмотреть на таблицу не только в текущем времени, но и заглядывая в некое будущее, когда в ней будут миллионы записей. Пользователи могут быть из одной страны, но из разных регионов. А еще пользователи могут использовать разные устройства для входа и иметь разные возрастные ограничения.
Сейчас сервис Auth беззащитен перед DDOS-атаками. Чтобы сберечь важный элемент системы от чрезмерной нагрузки, которая может вывести его из строя, реализуйте алгоритм Leaky bucket или Token bucket, используя Redis для синхронизации реплик
Везде, где вы используете поле типа String, нужно указывать максимальную длину поля. Это позволяет оптимизировать расход ресурсов и защищает от случаев, когда в такие поля пытаются вставить огромные тексты. Если вам точно нужно не ограничивать длину строки, то лучше использовать поле Text. https://flask-sqlalchemy.palletsprojects.com/en/2.x/models/
Избегайте автоименованных миграций в flask-solution/src/migrations/versions
Имена провайдеров (google, yandex и т.д.) лучше поместить в enum. Работа с литералами - всегда не очень хорошая практика. Далее с развитием проекта может возникнуть необходимость их использовать в коде. Работа с enum, как минимум, избавит нас от опасности опечатки.
Не забывайте про типизацию принимаемых параметров и возвращаемых значений.
Вызов родительского метода можно представить проще super().__init__("yandex")