Initiale Ablage der umsortierten Skrift-Programme
Struktur: Docker/ (skrift-backend, signature-service), Webseite/ (skrift-configurator, skrift-job-manager), Produktion/ (skrift-produktion, AutoRecover). Aufgeräumt: signature-to-svg entfernt, Backend-PayPal-Service entfernt (PayPal läuft client-seitig im Configurator), Dev-/Test-Artefakte und Deployment-Dokus bereinigt, .dockerignore repariert. CLAUDE.md mit Architektur ergänzt. Secrets (.env, config.json) via .gitignore ausgeschlossen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
29
Docker/signature-service/models.py
Normal file
29
Docker/signature-service/models.py
Normal file
@@ -0,0 +1,29 @@
|
||||
"""Pydantic-Modelle für die Job-Definition des Signatur-Plotter-Service."""
|
||||
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel, Field, field_validator
|
||||
|
||||
|
||||
class SignatureJob(BaseModel):
|
||||
"""Ein Eintrag der Job-Definition: ordnet genau einen Marker-Token einer SVG zu."""
|
||||
|
||||
token: str # unsichtbarer Token im PDF, z.B. "§§SIG1§§"
|
||||
svg_id: str # Dateiname der hochgeladenen SVG
|
||||
# Lage relativ zum Token. "genau" = direkt an der Marker-Position (Standard),
|
||||
# "ueber"/"unter" = mit Abstand darüber/darunter.
|
||||
position: Literal["genau", "ueber", "unter"] = "genau"
|
||||
breite_mm: float = Field(default=45.0, gt=0) # Zielbreite der Unterschrift
|
||||
abstand_mm: float = Field(default=8.0, ge=0) # Abstand (nur bei ueber/unter relevant)
|
||||
# Feinjustierung relativ zur berechneten Position (darf negativ sein):
|
||||
versatz_x_mm: float = 0.0 # + = nach rechts, − = nach links
|
||||
versatz_y_mm: float = 0.0 # + = nach unten, − = nach oben
|
||||
# Signaturen werden grundsätzlich als Single-Stroke gezeichnet (keine Füllung).
|
||||
linienstaerke_mm: float = Field(default=0.35, gt=0) # Linienstärke der Kontur
|
||||
|
||||
@field_validator("token", "svg_id")
|
||||
@classmethod
|
||||
def _not_blank(cls, v: str) -> str:
|
||||
if not v or not v.strip():
|
||||
raise ValueError("darf nicht leer sein")
|
||||
return v
|
||||
Reference in New Issue
Block a user