openai>=1.40.0
Pillow>=10.0.0
markdown-it-py>=3.0.0  # for scripts/render_report_pdf.py (md → PDF, 按需)
fpdf2>=2.8.0,<3.0.0  # structured CJK PDF fallback when headless Chrome is unavailable
