Release Candidate: Production Release with Multi-Tenant & Onboarding Enhancements

This commit is contained in:
ajaysi
2026-02-28 20:06:26 +05:30
parent 08a1f4a1d8
commit 4828274cbf
162 changed files with 19489 additions and 4300 deletions

View File

@@ -0,0 +1,56 @@
import os
import asyncio
from datetime import date, timedelta
import httpx
async def main() -> None:
base_url = os.environ.get("ALWRITY_API_BASE_URL", "http://localhost:8000")
token = os.environ.get("ALWRITY_API_TOKEN")
today = date.today()
start = today - timedelta(days=29)
params = {
"platforms": "gsc",
"start_date": start.isoformat(),
"end_date": today.isoformat(),
}
headers = {}
if token:
headers["Authorization"] = f"Bearer {token}"
async with httpx.AsyncClient(base_url=base_url, headers=headers, timeout=60.0) as client:
resp = await client.get("/api/analytics/data", params=params)
print(f"Status: {resp.status_code}")
try:
data = resp.json()
except Exception:
print("NonJSON response body:")
print(resp.text)
return
print("Raw JSON response:")
print(data)
summary = data.get("summary") or {}
platforms = data.get("data") or {}
gsc = platforms.get("gsc") or {}
gsc_metrics = gsc.get("metrics") or {}
print("\nSummary snapshot:")
print(f" total_clicks: {summary.get('total_clicks')}")
print(f" total_impressions: {summary.get('total_impressions')}")
print(f" overall_ctr: {summary.get('overall_ctr')}")
print("\nGSC metrics snapshot:")
print(f" total_clicks: {gsc_metrics.get('total_clicks')}")
print(f" total_impressions: {gsc_metrics.get('total_impressions')}")
print(f" avg_ctr: {gsc_metrics.get('avg_ctr')}")
print(f" avg_position: {gsc_metrics.get('avg_position')}")
if __name__ == "__main__":
asyncio.run(main())