feat: implement backend API clients for multi-marketplace integration and frontend service layer

This commit is contained in:
2026-05-12 13:16:14 +03:00
parent 6974af486a
commit ee39a3d83b
65 changed files with 2501 additions and 33 deletions

59
backend/test_ym_api.py Normal file
View File

@@ -0,0 +1,59 @@
import os
import sys
from dotenv import load_dotenv
# Add parent dir to path so we can import backend packages
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from backend.ym_api import YandexMarketAPI
from backend.ym_api.exceptions import YMAPIError
def test_ym_api():
# Load environment variables
env_path = os.path.join(os.path.dirname(__file__), '.env')
load_dotenv(env_path)
# Check if key is loaded
api_token = os.getenv('YM_API_TOKEN')
campaign_id = os.getenv('YM_CAMPAIGN_ID')
business_id = os.getenv('YM_BUSINESS_ID')
if not api_token:
print("Error: YM_API_TOKEN must be in backend/.env")
return
print(f"Initializing YandexMarketAPI...")
if not campaign_id:
print("Warning: YM_CAMPAIGN_ID not provided. Orders API might fail.")
if not business_id:
print("Warning: YM_BUSINESS_ID not provided. Assortment API might fail.")
api = YandexMarketAPI()
try:
if business_id:
# Test 1: Get Assortment (Products)
print("\n--- Testing Assortment API (Business Offers) ---")
assortment_response = api.assortment.get_offer_mappings(limit=5)
print("Success! Response keys:", assortment_response.keys())
result = assortment_response.get("result", {})
offers = result.get("offerMappings", [])
print(f"Found {len(offers)} offers in business catalog.")
if campaign_id:
# Test 2: Get Orders
print("\n--- Testing Orders API (Campaign Orders) ---")
orders_response = api.orders.get_list(params={"limit": 5})
# Yandex returns lists under 'orders'
orders = orders_response.get("orders", [])
print(f"Found {len(orders)} orders for campaign.")
except YMAPIError as e:
print(f"API Error: {e}")
except Exception as e:
print(f"Unexpected Error: {e}")
if __name__ == '__main__':
test_ym_api()