81 lines
2.3 KiB
Python
81 lines
2.3 KiB
Python
from __future__ import annotations
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
from datetime import datetime
|
|
from typing import Any, Dict
|
|
|
|
import requests
|
|
|
|
|
|
def build_demo_payload() -> Dict[str, Any]:
|
|
now = datetime.utcnow()
|
|
started_at = now.replace(microsecond=0).isoformat() + "Z"
|
|
finished_at = now.replace(microsecond=0).isoformat() + "Z"
|
|
return {
|
|
"table_id": 42,
|
|
"version_ts": 20251101200000,
|
|
"action_type": "snippet",
|
|
"status": "success",
|
|
"callback_url": "http://localhost:9999/dummy-callback",
|
|
"table_schema_version_id": 7,
|
|
"table_schema": {
|
|
"columns": [
|
|
{"name": "order_id", "type": "bigint"},
|
|
{"name": "order_dt", "type": "date"},
|
|
{"name": "gmv", "type": "decimal(18,2)"},
|
|
]
|
|
},
|
|
"result_json": [
|
|
{
|
|
"id": "snpt_daily_gmv",
|
|
"title": "按日GMV",
|
|
"desc": "统计每日GMV总额",
|
|
"type": "trend",
|
|
"dialect_sql": {
|
|
"mysql": "SELECT order_dt, SUM(gmv) AS total_gmv FROM orders GROUP BY order_dt ORDER BY order_dt"
|
|
},
|
|
}
|
|
],
|
|
"result_summary_json": {"total_snippets": 1},
|
|
"html_report_url": None,
|
|
"error_code": None,
|
|
"error_message": None,
|
|
"started_at": started_at,
|
|
"finished_at": finished_at,
|
|
"duration_ms": 1234,
|
|
"result_checksum": "demo-checksum",
|
|
}
|
|
|
|
|
|
def main() -> int:
|
|
base_url = os.getenv("TABLE_SNIPPET_DEMO_BASE_URL", "http://localhost:8000")
|
|
endpoint = f"{base_url.rstrip('/')}/v1/table/snippet"
|
|
payload = build_demo_payload()
|
|
|
|
print(f"POST {endpoint}")
|
|
print(json.dumps(payload, ensure_ascii=False, indent=2))
|
|
|
|
try:
|
|
response = requests.post(endpoint, json=payload, timeout=30)
|
|
except requests.RequestException as exc:
|
|
print(f"Request failed: {exc}", file=sys.stderr)
|
|
return 1
|
|
|
|
print(f"\nStatus: {response.status_code}")
|
|
|
|
try:
|
|
data = response.json()
|
|
print("Response JSON:")
|
|
print(json.dumps(data, ensure_ascii=False, indent=2))
|
|
except ValueError:
|
|
print("Response Text:")
|
|
print(response.text)
|
|
|
|
return 0 if response.ok else 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|