Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Программа не отправляет результаты в Online и Telegram #472

Open
sportog opened this issue Jan 5, 2025 · 4 comments

Comments

@sportog
Copy link
Contributor

sportog commented Jan 5, 2025

Файл-база с проблемой:
20240105.json
Как готовился файл сказать не могу. Ко мне обратились с вопросом по данной проблеме.

Проблема:
Отправка информации о спортсмене в orgeo происходит успешно, но результаты не отправляются в Online и Telegram. Во вкладке "Логи" даже нет попытки отправки.

Решение:
Путём анализа информации в файле sportorg.log пришёл к тому что что-то не так с определением стартового времени, так как фиксировалась строка "Start: 00:00:00", при том что результат корректный и стартовое время есть. Путём пересохранения в настройках хронометража во вкладке "Результат" параметра "Время старта" на любой (не выбранный ранее "Из протокола") и потом сохранения на нужный "Из протокола" удалось восстановить работу онлайна.

С точки зрения кода я понимаю как этот виджет может работать и что в случае если не один из вариантов не выбран он зачем то подсвечивает что якобы выбран первый, но именно это и не позволит рядовому пользователю самостоятельно решить проблему.

P.S. Проблема решается простым сохранением (даже без изменений) в "Настройки хронометража"... огромный пласт настроек отсутствует в файле.

@daxartio
Copy link
Collaborator

daxartio commented Jan 5, 2025

Спасибо за рессерч. Надо будет подумать как можно исправить или подсветить проблему.

@alex-karpov
Copy link
Contributor

alex-karpov commented Jan 13, 2025

Подтверждаю проблему.

  1. При создании нового файла создаётся пустой файл без какиих-либо настроек: "settings": {}, "organizations": [], "courses": [], "groups": [], "results": [], "persons": []. Аналогичный эффект при импорте из wdb, например.

1.1) Настройки заполняются при открытии соответствующих диалоговых окон и нажатии OK. При создании диалогового окна формируются настройки по умолчанию, при нажатии OK настройки записываются в память.

  1. В orgeo.py происходит обращение по несуществующему ключу словаря: race_data["settings"]["result_processing_mode"] == "ardf".

2.1) Появившееся исключение теряется где-то в недрах многопоточности, без какого-либо видимого эффекта.

В прилагаемом файле присутствует группа настроек Онлайн и Подготовка к старту (жеребьёвка). Отсутствует группа настроек, отвечающих за Настройки хронометража, куда входит и result_processing_mode. Предполагаю, что для соревнований был создан новый файл, проведена жеребьёвка и настроен онлайн. Но не заходили в настройки хронометража или заходили, ничего не изменили и вышли по кнопке Отмена.

Обходной вариант: открыть Настройки хронометража и нажать OK. После этого онлайн заработает.

Сделаю простой вариант лечения: в этом и паре соседних мест вместо обращения по ключу воспользуюсь .get(key, default)

В целом, в orgeo.py данные приходят уже в сериализованном виде. Возможно, ради потокобезопасности. Внутри происходит работа со словарями без проверок на существование ключей.

@sportog
Copy link
Contributor Author

sportog commented Jan 13, 2025

Кстати, проблема повторилась и в прошедшие выходные, но причина оказалась немного в другом...
Настройки хронометража сохранялись, в файле все настройки были на месте... проблема онлайна решилась по совету решения второй проблемы: при ручном вводе на финише по номерам не находились спортсмены, хотя они точно есть в базе.

С данной проблемой сталкивался неоднократно, как и с той что стираешь чип N у спортсмена X, пытаешься прописать его спортсмену Y, а сохранить не получается по причине неуникальности номера чипа N. В какой момент возникает проблема определить не удалось, но решение нашел: переоткрытие файла базы. Видимо какое-то кэширование не обновляется из-за каких-либо действий и только открытие файла заново решает проблему.

Так вот, по факту переоткрытие базы решило и первую проблему с отправкой онлайна.

@alex-karpov
Copy link
Contributor

Обновление кэширования можно сделать с помощью Результаты -> Перепроверка отметки (Ctrl+R). (да, знаю, что не очевидно и нигде не записано).

Необновление кэша замечал. Пока не хватает данных для анализа.

Проблема «стираешь чип у спортсмена X, пытаешься прописать спортсмену Y» уже должна была быть решена в 1.7.1. Сообщите, если до сих пор появляется.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants