Add sync engine and wire it into the web app

- Add sync_engine.py: background asyncio loop syncing Evotor products to VK market
- Wire sync_loop into lifespan alongside health_check_loop
- Add SYNC_INTERVAL_SECONDS and VK_DEFAULT_PHOTO_PATH settings to config
- Mount default product image in docker-compose
- Add synced_at column to CachedProduct model + migration
- Show synced_at status in catalog products template
- Fix VK groups API response parsing (handle list vs dict)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mguschin
2026-03-10 17:05:37 +03:00
parent 9a68c083e3
commit 1bf82adbfc
8 changed files with 540 additions and 7 deletions

View File

@@ -65,7 +65,8 @@ async def vk_token(
data = resp.json()
if "error" in data:
return RedirectResponse("/vk?error=invalid_token", 303)
groups = data.get("response", {}).get("groups", [])
response = data.get("response", [])
groups = response if isinstance(response, list) else response.get("groups", [])
if groups:
group_id = str(groups[0].get("id", ""))
group_name = groups[0].get("name")