fix(parcels): wrap forecast-export PDF in try/except+logger (#1739 completion)
This commit is contained in:
parent
bcd24923b8
commit
c859872217
1 changed files with 13 additions and 6 deletions
|
|
@ -1302,9 +1302,19 @@ def export_parcel_forecast(
|
||||||
|
|
||||||
# pdf — байты (WeasyPrint), отдельной веткой (зеркало pptx early-return): §13-отчёт
|
# pdf — байты (WeasyPrint), отдельной веткой (зеркало pptx early-return): §13-отчёт
|
||||||
# из export_report_pdf (#1739). md/json string-ветки остаются байт-в-байт прежними.
|
# из export_report_pdf (#1739). md/json string-ветки остаются байт-в-байт прежними.
|
||||||
|
# WeasyPrint-рендер — отдельная зона отказа (шрифты, шаблон, движок): без обёртки
|
||||||
|
# ошибка всплывает 500-кой без объяснения причины. logger.exception сохраняет
|
||||||
|
# traceback причины 500 (#1739), пользователю — безопасное RU-сообщение.
|
||||||
if format == "pdf":
|
if format == "pdf":
|
||||||
|
try:
|
||||||
|
pdf_bytes = export_report_pdf(run.result)
|
||||||
|
except HTTPException:
|
||||||
|
raise
|
||||||
|
except Exception as exc:
|
||||||
|
logger.exception("forecast PDF render failed for %s", cad_num)
|
||||||
|
raise HTTPException(status_code=500, detail="Ошибка генерации PDF-форсайта") from exc
|
||||||
return Response(
|
return Response(
|
||||||
content=export_report_pdf(run.result),
|
content=pdf_bytes,
|
||||||
media_type="application/pdf",
|
media_type="application/pdf",
|
||||||
headers={"Content-Disposition": f'attachment; filename="{base_name}.pdf"'},
|
headers={"Content-Disposition": f'attachment; filename="{base_name}.pdf"'},
|
||||||
)
|
)
|
||||||
|
|
@ -3494,8 +3504,7 @@ def parcel_snapshot_pdf(
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=404,
|
status_code=404,
|
||||||
detail=(
|
detail=(
|
||||||
f"Участок {cad_num} не найден в БД. "
|
f"Участок {cad_num} не найден в БД. " "Используйте POST /analyze для загрузки."
|
||||||
"Используйте POST /analyze для загрузки."
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -3618,9 +3627,7 @@ def parcel_snapshot_pdf(
|
||||||
raise
|
raise
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logger.exception("snapshot data fetch failed for %s", cad_num)
|
logger.exception("snapshot data fetch failed for %s", cad_num)
|
||||||
raise HTTPException(
|
raise HTTPException(status_code=500, detail="Ошибка сбора данных для PDF-снимка") from exc
|
||||||
status_code=500, detail="Ошибка сбора данных для PDF-снимка"
|
|
||||||
) from exc
|
|
||||||
|
|
||||||
# 7) Сгенерировать PDF (WeasyPrint-рендер — отдельная зона отказа: шрифты,
|
# 7) Сгенерировать PDF (WeasyPrint-рендер — отдельная зона отказа: шрифты,
|
||||||
# шаблон, движок). logger.exception сохраняет traceback причины 500 (#1739).
|
# шаблон, движок). logger.exception сохраняет traceback причины 500 (#1739).
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue