LXC-Frontend (FastAPI + HTML/JS): - Audio-Upload (MP3/WAV/M4A/MP4/OGG/FLAC, max. 500 MB) - SQLite Job-Store, BackgroundTask-Pipeline - Job-Liste mit Live-Status, Downloads (DOCX + JSON) - Mac-Health-Indicator im UI Mac-Worker (FastAPI): - /api/transcribe (lightning-whisper-mlx | faster-whisper | mock) - /api/summarize + /api/protocol via Ollama (llama3.1:8b) - /api/export/docx via python-docx Deploy: - systemd-Service, Nginx Reverse-Proxy - deploy/install.sh: idempotentes LXC-Setup Doku: README.md, lxc-frontend/README.md, mac-worker/README.md
30 lines
828 B
Python
30 lines
828 B
Python
from datetime import datetime, timezone
|
|
from typing import Optional
|
|
from sqlmodel import SQLModel, Field
|
|
|
|
|
|
class JobStatus:
|
|
QUEUED = "queued"
|
|
TRANSCRIBING = "transcribing"
|
|
SUMMARIZING = "summarizing"
|
|
PROTOCOLLING = "protocolling"
|
|
EXPORTING = "exporting"
|
|
DONE = "done"
|
|
FAILED = "failed"
|
|
|
|
|
|
class Job(SQLModel, table=True):
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
filename: str
|
|
original_name: str
|
|
title: str = ""
|
|
status: str = JobStatus.QUEUED
|
|
progress: int = 0
|
|
error: str = ""
|
|
transcript_path: str = ""
|
|
summary_path: str = ""
|
|
protocol_path: str = ""
|
|
docx_path: str = ""
|
|
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|