Sync not Work #9

Closed
opened 2026-03-10 16:41:54 +03:00 by mish · 1 comment
Owner

https://evosync.ru/sync is enabled. I changed the price of one product but this changes is not synched with vk.

https://evosync.ru/sync is enabled. I changed the price of one product but this changes is not synched with vk.
Author
Owner

Исправления

Найдено и устранено несколько причин, по которым синхронизация не работала.

1. Синхронизация переписана на Python

Shell-скрипты заменены Python-движком (web/sync_engine.py), который запускается как фоновый цикл внутри веб-приложения. Движок читает конфигурацию пользователя (токены, фильтры, включённые магазины) напрямую из БД и выполняет синхронизацию каждый час.

2. VK group_id не сохранялся

groups.getById с токеном пользователя возвращает response как плоский список, а не {"groups": [...]}. Из-за этого vk_user_id всегда оставался null и синхронизация пропускала всех пользователей. Исправлено: теперь используется groups.get?filter=admin.

3. Неверное сравнение цен

VK хранит и возвращает цены в рублях (целое число), а не в копейках. В коде ошибочно делалось деление price.amount // 100, из-за чего сравнение всегда показывало изменение цены неверно. Исправлено.

4. Автоматическое подключение VK через OAuth

Добавлен OAuth implicit flow:

  • Кнопка "Подключить ВКонтакте" перенаправляет на oauth.vk.com
  • После авторизации VK возвращает на /vk/callback
  • JS на странице автоматически считывает access_token из фрагмента URL и сохраняет его

Требует VK_CLIENT_ID в .env. При отсутствии — доступен ручной ввод токена.

## Исправления Найдено и устранено несколько причин, по которым синхронизация не работала. ### 1. Синхронизация переписана на Python Shell-скрипты заменены Python-движком (`web/sync_engine.py`), который запускается как фоновый цикл внутри веб-приложения. Движок читает конфигурацию пользователя (токены, фильтры, включённые магазины) напрямую из БД и выполняет синхронизацию каждый час. ### 2. VK group_id не сохранялся `groups.getById` с токеном пользователя возвращает `response` как плоский список, а не `{"groups": [...]}`. Из-за этого `vk_user_id` всегда оставался `null` и синхронизация пропускала всех пользователей. Исправлено: теперь используется `groups.get?filter=admin`. ### 3. Неверное сравнение цен VK хранит и возвращает цены в рублях (целое число), а не в копейках. В коде ошибочно делалось деление `price.amount // 100`, из-за чего сравнение всегда показывало изменение цены неверно. Исправлено. ### 4. Автоматическое подключение VK через OAuth Добавлен OAuth implicit flow: - Кнопка "Подключить ВКонтакте" перенаправляет на `oauth.vk.com` - После авторизации VK возвращает на `/vk/callback` - JS на странице автоматически считывает `access_token` из фрагмента URL и сохраняет его Требует `VK_CLIENT_ID` в `.env`. При отсутствии — доступен ручной ввод токена.
mish closed this issue 2026-03-10 17:19:59 +03:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mish/evo-sync#9