run_uat_dashboard_verify.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/usr/bin/env python3
  2. """Verify UAT home/detail dashboards, diagnosis, workbench, and S8 APIs."""
  3. from __future__ import annotations
  4. import json
  5. import run_wp_wb8_api_loop as api
  6. MODULES = ("S1", "S2", "S3", "S4", "S5", "S6", "S7", "S9")
  7. PASSWORD = "1234567890dop"
  8. def item_coverage(body: object) -> dict[str, int]:
  9. items = body.get("items", []) if isinstance(body, dict) else []
  10. return {
  11. "items": len(items),
  12. "valued": sum(item.get("currentValue") is not None for item in items),
  13. }
  14. def main() -> int:
  15. api.BASE = "http://127.0.0.1:5005"
  16. output: dict[str, object] = {}
  17. failed = False
  18. for tenant in (api.A, api.B, api.DEMO):
  19. token = api.login(tenant["admin"]["account"], tenant["tenant_id"], PASSWORD)["token"]
  20. modules: dict[str, object] = {}
  21. for module in MODULES:
  22. home_status, home_body = api.request(
  23. "GET", f"/api/AidopKanban/home-grid/{module}?factoryId=1", token=token
  24. )
  25. detail_status, detail_body = api.request(
  26. "GET", f"/api/AidopKanban/detail-kpis/{module}?factoryId=1", token=token
  27. )
  28. diagnosis_status, _ = api.request(
  29. "GET", f"/api/AidopKanban/smart-diagnosis/{module}?factoryId=1", token=token
  30. )
  31. home = item_coverage(home_body)
  32. detail = item_coverage(detail_body)
  33. modules[module] = {
  34. "homeStatus": home_status,
  35. "home": home,
  36. "detailStatus": detail_status,
  37. "detail": detail,
  38. "diagnosisStatus": diagnosis_status,
  39. }
  40. failed |= home_status != 200 or detail_status != 200 or diagnosis_status != 200
  41. failed |= home["items"] != home["valued"]
  42. workbench_status, _ = api.request("GET", "/api/AidopWorkbench/summary?top=6", token=token)
  43. s8_status, s8_body = api.request(
  44. "GET",
  45. f"/api/AidopKanban/s8-alerts?tenantId={tenant['tenant_id']}&factoryId={tenant['factory_id']}",
  46. token=token,
  47. )
  48. output[tenant["code"]] = {
  49. "modules": modules,
  50. "workbenchStatus": workbench_status,
  51. "s8Status": s8_status,
  52. "s8Rows": len(s8_body) if isinstance(s8_body, list) else None,
  53. }
  54. failed |= workbench_status != 200 or s8_status != 200
  55. print(json.dumps(output, ensure_ascii=False, indent=2))
  56. return 1 if failed else 0
  57. if __name__ == "__main__":
  58. raise SystemExit(main())