Files
zyt/app/scripts/render_reception_ai_exact.py
T
2026-08-14 14:37:30 +08:00

79 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Render the 1710×920 reception AI acceptance artifact offscreen."""
from __future__ import annotations
import os
from pathlib import Path
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
from PySide6.QtCore import QPoint, QThreadPool
from PySide6.QtGui import QFontDatabase
from PySide6.QtWidgets import QApplication
from doctor_workstation.services.mock_repository import DemoDoctorRepository
from doctor_workstation.ui.shell import ShellWindow
from doctor_workstation.ui.theme import apply_theme
def main() -> int:
app = QApplication.instance() or QApplication([])
apply_theme(app)
font_path = Path(r"C:\Windows\Fonts\msyh.ttc")
if font_path.is_file():
QFontDatabase.addApplicationFont(str(font_path))
repository = DemoDoctorRepository()
session = repository.login("doctor", "doctor123")
window = ShellWindow(repository, session)
window.resize(1710, 920)
window.show()
if not window.navigate("reception"):
raise RuntimeError("reception navigation is unavailable")
for _index in range(4):
app.processEvents()
QThreadPool.globalInstance().waitForDone(10_000)
app.processEvents()
output = Path(__file__).resolve().parents[1] / "artifacts" / "reception_ai_exact" / "reception.png"
output.parent.mkdir(parents=True, exist_ok=True)
pixmap = window.grab()
if pixmap.size().width() != 1710 or pixmap.size().height() != 920:
raise RuntimeError(f"unexpected render size: {pixmap.size().width()}x{pixmap.size().height()}")
if not pixmap.save(str(output), "PNG"):
raise RuntimeError(f"failed to save {output}")
page = window.pages.get("reception")
if page is not None:
left = page.ai_analysis_card.geometry()
right = page.ai_assistant_card.geometry()
left_global = page.ai_analysis_card.mapTo(window, QPoint(0, 0))
right_global = page.ai_assistant_card.mapTo(window, QPoint(0, 0))
print(
"AI_CARDS",
left.x(),
left.y(),
left.width(),
left.height(),
right.x(),
right.y(),
right.width(),
right.height(),
page._ai_analysis_state,
)
print(
"AI_CARDS_GLOBAL",
left_global.x(),
left_global.y(),
right_global.x(),
right_global.y(),
)
print(output)
window.close()
return 0
if __name__ == "__main__":
raise SystemExit(main())