Mac-Worker: - profiles/meeting.yaml — extrahiert die bisherigen Prompts + DOCX-Layout - core/profiles.py — YAML-Loader mit Cache und Fallback - ollama_client.summarize/make_protocol nehmen profile_name - docx_export: generischer Renderer aus profile.docx (meta + sections mit Typ text/list/tasks/transcript) - /api/profiles listet verfügbare Profile - pyyaml als Dependency LXC: - Job.profile + User.default_profile (Migration: ALTER TABLE) - /api/profiles proxy mit 60s-Cache und Fallback - Upload-Form akzeptiert profile (Server-Default: user.default_profile) - Pipeline gibt Profile bei summarize/protocol/docx an Mac weiter - PATCH /api/auth/me — User kann Standard-Profil ändern Frontend: - Profile-Dropdown im Upload (nur sichtbar wenn ≥2 Profile) - Settings-Karte "Mein Standard-Profil" (nur wenn ≥2 Profile) - Job-Zeile zeigt grünes Profile-Tag (nur wenn relevant) Neue Profile = neue YAML-Datei in mac-worker/profiles/ — kein Code-Deploy nötig, der Mac-Worker liest sie beim Start ein.
32 lines
957 B
Python
32 lines
957 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)
|
|
owner_id: Optional[int] = Field(default=None, foreign_key="user.id", index=True)
|
|
profile: str = Field(default="meeting")
|
|
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))
|