перебор даже миллиона точек - довольно быстрая задача, на фоне остальных вариантов (комбинации, интерполяционные полиномы и тд).
Предлагаю мысленный эксперимент. Миллион точек, на вход подается первая и последняя точка графика. Выходит, что пара точек должна хранить информацию о всех остальных точках графика, чтобы знать, какая из них максимальная. Пусть, для примера, она окажется 500-й. Меняем первую точку на тысячную. Мы получаем новое значение максимума, определенного почти на миллионе значений, поменяв всего одну точку?
{
value: 4,
meta1: 1.234,
meta2: 4
...
}
Нашел вариант даже попроще
Т.е. на сайте пользователь кликает на ссылку следующего вида: https://t.me/<имя бота>?start=asdf
где в параметре start находится временный токен пользователя (то, что позволяет нам определить пользователя) и когда пользователь кликает на /start, то токен приходит на бэк, тем самым позволяя создать связку на бэке telegram_chat_id - site_user_id