Neues Pflichtfeld dokumenttyp (Enum: Prüfprotokoll/Wartungsbericht/ Bedienungsanleitung/Rechnung/Zulassungsdokument/Sonstiges, Migration 0026) - macht Dokumente kategorisier- und filterbar statt nur per Freitext- Beschreibung auffindbar zu sein. Backend: Pflichtfeld beim Upload, optionaler Query-Filter bei GET /dokumente. Frontend: Auswahl-Dropdown beim Upload, Typ-Badge + Filter-Dropdown in der Liste (DokumentePanel). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
"""DOC-002: feste Dokumenttypen statt reinem Freitext (Kategorie beim Upload).
|
|
|
|
Revision ID: 0026_dokumenttyp
|
|
Revises: 0025_material_suchindex
|
|
Create Date: 2026-09-08
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
|
|
revision: str = "0026_dokumenttyp"
|
|
down_revision: Union[str, None] = "0025_material_suchindex"
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.execute(
|
|
"CREATE TYPE dokument_typ AS ENUM "
|
|
"('pruefprotokoll', 'wartungsbericht', 'bedienungsanleitung', 'rechnung', "
|
|
"'zulassungsdokument', 'sonstiges')"
|
|
)
|
|
op.execute(
|
|
"ALTER TABLE dokument ADD COLUMN dokumenttyp dokument_typ NOT NULL DEFAULT 'sonstiges'"
|
|
)
|
|
# Default nur für den Backfill nötig - künftige Inserts sollen den Typ immer
|
|
# explizit mitgeben (Anwendungsebene), kein stiller Fallback mehr.
|
|
op.execute("ALTER TABLE dokument ALTER COLUMN dokumenttyp DROP DEFAULT")
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.execute("ALTER TABLE dokument DROP COLUMN dokumenttyp")
|
|
op.execute("DROP TYPE dokument_typ")
|