From 990b08cfdc3cf979488b64551c8f10e4d27da64b Mon Sep 17 00:00:00 2001 From: machka-pasla Date: Wed, 6 Aug 2025 17:00:44 +0300 Subject: [PATCH] Enhance subscription handling in admin sync process - Added logic to retrieve the subscription UUID from the panel user data, improving the accuracy of subscription records. - Updated the subscription creation process to use the actual subscription UUID when available, with fallback to the user UUID. - Enhanced logging to provide clearer information on which UUID is being used for each user during synchronization. --- bot/handlers/admin/sync_admin.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/bot/handlers/admin/sync_admin.py b/bot/handlers/admin/sync_admin.py index dce869e..deeeae1 100644 --- a/bot/handlers/admin/sync_admin.py +++ b/bot/handlers/admin/sync_admin.py @@ -51,6 +51,7 @@ async def perform_sync(panel_service: PanelApiService, session: AsyncSession, try: users_processed_count += 1 panel_uuid = panel_user_dict.get("uuid") + panel_subscription_uuid = panel_user_dict.get("subscriptionUuid") or panel_user_dict.get("shortUuid") telegram_id_from_panel = panel_user_dict.get("telegramId") if not panel_uuid: @@ -91,11 +92,19 @@ async def perform_sync(panel_service: PanelApiService, session: AsyncSession, ) subscriptions_synced_count += 1 else: - # Create new subscription record if none exists + # Create or update subscription record + # Use actual subscription UUID from panel if available, fallback to user UUID + subscription_uuid_to_use = panel_subscription_uuid or panel_uuid + + if panel_subscription_uuid: + logging.info(f"Using panel subscriptionUuid {panel_subscription_uuid} for user {telegram_id_from_panel}") + else: + logging.info(f"No subscriptionUuid from panel, using panel_uuid {panel_uuid} for user {telegram_id_from_panel}") + sub_payload = { "user_id": telegram_id_from_panel, "panel_user_uuid": panel_uuid, - "panel_subscription_uuid": panel_uuid, # Using same UUID + "panel_subscription_uuid": subscription_uuid_to_use, "start_date": datetime.now(timezone.utc), "end_date": panel_expire_at, "duration_months": 1, # Default