Files
meida_backend/packages/report/pdf/__init__.py
T
xsl cd0ddb131b feat(report): 报告 PDF 导出管线(Phase A,WeasyPrint 服务端渲染)
- POST /reports/{id}/export:request_key 幂等 + hd_export 日配额三段式(reserve/commit/refund)+ tier2 熔断场景闸(BudgetGuardDep),仅 succeeded 报告可导
- GET /reports/{id}/export/download:归属校验 + 路径收敛(rendered_asset_key 必须落在 report_export_dir 内),FileResponse 携带 UTF-8 文件名
- celery 任务 meida.report.export(cpu 队列):渲染→落盘 var/exports→回写 rendered_asset_key;业务性拒绝(报告状态变化)结案退款不重试,基础设施异常重试一次后兜底结案退款
- packages/report/pdf:Jinja2 模板 + WeasyPrint 渲染器(url_fetcher 全拒外部资源防 SSRF;维度中文名按 DIMENSION_BY_KEY 回填;色板维度渲染色卡)
- 单测 10 例(资格/幂等/并发同键/下载校验/渲染);scripts/seed_pdf_e2e.sql 供本地 E2E 造数
2026-08-30 13:17:23 +08:00

8 lines
451 B
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.
"""报告 PDF 渲染(Phase A):Jinja2 HTML 模板 + WeasyPrint。
为什么偏离 TD-12 的 Playwright 方案:本版报告的勾选行 / 色卡 / 置信度条
用 CSS Paged Media 足以表达,而本环境拉取 Chromium(Microsoft CDN)困难;
WeasyPrint 纯 Python + Pango,无浏览器依赖、渲染确定性好。代价是复杂
长图式交互布局表达力弱——Phase B 若要像素级复刻参考长图再评估切回。
"""