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())