feat: PDF-Export zusätzlich zu DOCX
Mac-Worker:
- pdf_export.py mit reportlab (pure Python, kein externes Tool)
- Nutzt dieselbe profile.docx-Konfig wie der DOCX-Renderer →
strukturell identisch, nur andere Optik
- POST /api/export/pdf
- requirements: reportlab==4.2.5
LXC:
- Job.pdf_path neu (Migration: ALTER TABLE job ADD COLUMN)
- Pipeline-Step nach DOCX: PDF wird ebenfalls erzeugt
(Progress: 90 DOCX → 95 PDF → 100 done)
- /api/jobs/{id}/download/pdf
- /api/jobs/{id}/retry löscht PDF mit, damit es neu erzeugt wird
- Frontend: zusätzlicher Download-Button "PDF" (vorne im Array)
- Tabelle: Download-Spalte 320px, 3-spaltiges Grid (5 Buttons → 3+2)
- Cards (Mobile) bleiben 2-spaltig (5 Buttons → 3 Zeilen)
This commit is contained in:
@@ -108,7 +108,7 @@ async def retry_job(
|
||||
raise HTTPException(400, "Job ist bereits abgeschlossen")
|
||||
|
||||
# Post-Transkriptions-Artefakte löschen, damit sie neu erzeugt werden.
|
||||
for attr in ("summary_path", "protocol_path", "docx_path"):
|
||||
for attr in ("summary_path", "protocol_path", "docx_path", "pdf_path"):
|
||||
p = getattr(job, attr)
|
||||
if p:
|
||||
try:
|
||||
@@ -133,6 +133,7 @@ def download(job_id: int, kind: str, session: Session = Depends(get_session), us
|
||||
job = _require_access(session.get(Job, job_id), user)
|
||||
mapping = {
|
||||
"docx": (job.docx_path, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "protocol.docx"),
|
||||
"pdf": (job.pdf_path, "application/pdf", "protocol.pdf"),
|
||||
"transcript": (job.transcript_path, "application/json", "transcript.json"),
|
||||
"summary": (job.summary_path, "application/json", "summary.json"),
|
||||
"protocol": (job.protocol_path, "application/json", "protocol.json"),
|
||||
@@ -162,6 +163,7 @@ def _job_dict(j: Job, user: User, owner_username: str | None = None) -> dict:
|
||||
"summary": bool(j.summary_path),
|
||||
"protocol": bool(j.protocol_path),
|
||||
"docx": bool(j.docx_path),
|
||||
"pdf": bool(j.pdf_path),
|
||||
},
|
||||
}
|
||||
if user.is_admin:
|
||||
|
||||
Reference in New Issue
Block a user