feat: restore source parity and harden agent runtime
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
报表模块端到端验收自检(无需启动浏览器)。
|
||||
|
||||
运行:cd backend-fastapi && python -m online_dev.report_manager.acceptance_e2e
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from online_dev.report_manager.engine.test_golden import test_all_golden_fixtures
|
||||
|
||||
|
||||
def _check_routes_registered() -> None:
|
||||
root = Path(__file__).parent
|
||||
sources = [
|
||||
(root / "api.py").read_text(encoding="utf-8"),
|
||||
(root / "data_api.py").read_text(encoding="utf-8"),
|
||||
]
|
||||
blob = "\n".join(sources)
|
||||
required = [
|
||||
'"/list"',
|
||||
'"/save"',
|
||||
'"/{version_id}/preview"',
|
||||
'"/preview-template"',
|
||||
'"/export-excel/template"',
|
||||
'"/export-pdf/template"',
|
||||
'"/import-excel"',
|
||||
'"/query-list/{template_id}"',
|
||||
'"/{template_id}/publish"',
|
||||
]
|
||||
missing = [p for p in required if p not in blob]
|
||||
if missing:
|
||||
raise AssertionError(f"missing route decorators for: {missing}")
|
||||
|
||||
|
||||
def _check_jnpf_db_fixtures() -> None:
|
||||
fixtures_dir = Path(__file__).parent / "engine" / "fixtures"
|
||||
names = [
|
||||
"golden_jnpf_db_user_list.json",
|
||||
"golden_jnpf_db_user_group.json",
|
||||
"golden_jnpf_db_user_matrix.json",
|
||||
]
|
||||
for name in names:
|
||||
path = fixtures_dir / name
|
||||
if not path.is_file():
|
||||
raise AssertionError(f"missing JNPF DB fixture: {name}")
|
||||
|
||||
|
||||
def main() -> int:
|
||||
print("1/3 route registration …")
|
||||
_check_routes_registered()
|
||||
print(" ok")
|
||||
|
||||
print("2/3 JNPF DB golden fixtures …")
|
||||
_check_jnpf_db_fixtures()
|
||||
print(" ok (3 fixtures)")
|
||||
|
||||
print("3/3 golden transform regression …")
|
||||
test_all_golden_fixtures()
|
||||
count = len(list((Path(__file__).parent / "engine" / "fixtures").glob("golden_*.json")))
|
||||
print(f" ok ({count} fixtures)")
|
||||
|
||||
print("\nManual E2E (browser):")
|
||||
print(" - 新建报表 → 设计 → 保存 → 发布版本")
|
||||
print(" - 发布菜单 → 运行时填写查询 → 预览")
|
||||
print(" - Excel / PDF 导出、浏览器打印(>100 张图告警)")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user