2026-04-01 10:36:22 +02:00
|
|
|
from __future__ import annotations
|
2026-03-30 16:37:58 +02:00
|
|
|
"""Pydantic response models for the API."""
|
|
|
|
|
|
|
|
|
|
from datetime import date, datetime
|
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ParteiOut(BaseModel):
|
|
|
|
|
id: int
|
|
|
|
|
kuerzel: str
|
|
|
|
|
name: str | None = None
|
|
|
|
|
farbe: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class GremiumOut(BaseModel):
|
|
|
|
|
id: int
|
|
|
|
|
name: str
|
|
|
|
|
kuerzel: str | None = None
|
|
|
|
|
typ: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BeratungOut(BaseModel):
|
|
|
|
|
id: int
|
|
|
|
|
gremium: GremiumOut | None = None
|
|
|
|
|
sitzung_datum: date | None = None
|
|
|
|
|
rolle: str | None = None
|
|
|
|
|
ergebnis: str | None = None
|
|
|
|
|
ergebnis_text: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VorlageKurz(BaseModel):
|
|
|
|
|
id: int
|
|
|
|
|
aktenzeichen: str | None = None
|
|
|
|
|
typ: str | None = None
|
|
|
|
|
betreff: str | None = None
|
|
|
|
|
datum_eingang: date | None = None
|
|
|
|
|
ist_verwaltungsvorlage: bool = False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ReferenzOut(BaseModel):
|
|
|
|
|
vorlage_id: int
|
|
|
|
|
aktenzeichen: str | None = None
|
|
|
|
|
betreff: str | None = None
|
|
|
|
|
vorlage_typ: str | None = None
|
|
|
|
|
datum_eingang: date | None = None
|
|
|
|
|
ref_typ: str | None = None
|
|
|
|
|
konfidenz: float | None = None
|
|
|
|
|
kontext: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class KiZusammenfassung(BaseModel):
|
|
|
|
|
zusammenfassung: str | None = None
|
|
|
|
|
kernforderung: str | None = None
|
|
|
|
|
begruendung: str | None = None
|
|
|
|
|
betroffene_orte: list[str] = []
|
|
|
|
|
thema: str | None = None
|
|
|
|
|
partei: str | list[str] | None = None
|
|
|
|
|
|
|
|
|
|
|
2026-04-01 10:36:22 +02:00
|
|
|
class UmsetzungsBewertung(BaseModel):
|
|
|
|
|
score: float | None = None
|
|
|
|
|
begruendung: str | None = None
|
|
|
|
|
quelle_vorlage_id: int | None = None
|
|
|
|
|
quelle_aktenzeichen: str | None = None
|
|
|
|
|
|
|
|
|
|
|
2026-03-30 16:37:58 +02:00
|
|
|
class VorlageDetail(BaseModel):
|
|
|
|
|
id: int
|
|
|
|
|
aktenzeichen: str | None = None
|
|
|
|
|
aktenzeichen_basis: str | None = None
|
|
|
|
|
aktenzeichen_suffix: str | None = None
|
|
|
|
|
typ: str | None = None
|
|
|
|
|
betreff: str | None = None
|
|
|
|
|
volltext_clean: str | None = None
|
|
|
|
|
datum_eingang: date | None = None
|
|
|
|
|
pdf_url: str | None = None
|
|
|
|
|
web_url: str | None = None
|
|
|
|
|
ki_zusammenfassung: KiZusammenfassung | None = None
|
|
|
|
|
ist_verwaltungsvorlage: bool = False
|
|
|
|
|
thema_kurz: str | None = None
|
|
|
|
|
antragsteller: list[ParteiOut] = []
|
|
|
|
|
beratungen: list[BeratungOut] = []
|
|
|
|
|
referenzen_ausgehend: list[ReferenzOut] = []
|
|
|
|
|
referenzen_eingehend: list[ReferenzOut] = []
|
|
|
|
|
kette_id: int | None = None
|
2026-04-01 10:36:22 +02:00
|
|
|
umsetzungsbewertungen: list[UmsetzungsBewertung] = []
|
2026-03-30 16:37:58 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class KettenGliedOut(BaseModel):
|
|
|
|
|
vorlage: VorlageKurz
|
|
|
|
|
position: int
|
|
|
|
|
rolle: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class KetteKurz(BaseModel):
|
|
|
|
|
id: int
|
|
|
|
|
ursprung: VorlageKurz | None = None
|
|
|
|
|
typ: str | None = None
|
|
|
|
|
thema: str | None = None
|
|
|
|
|
status: str | None = None
|
|
|
|
|
status_seit: date | None = None
|
|
|
|
|
letzte_aktivitaet: date | None = None
|
|
|
|
|
vertagungen_count: int = 0
|
|
|
|
|
glieder_count: int = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class KetteDetail(BaseModel):
|
|
|
|
|
id: int
|
|
|
|
|
ursprung: VorlageKurz | None = None
|
|
|
|
|
typ: str | None = None
|
|
|
|
|
thema: str | None = None
|
|
|
|
|
status: str | None = None
|
|
|
|
|
status_seit: date | None = None
|
|
|
|
|
letzte_aktivitaet: date | None = None
|
|
|
|
|
vertagungen_count: int = 0
|
2026-04-01 10:36:22 +02:00
|
|
|
begruendung: str | None = None
|
2026-03-30 16:37:58 +02:00
|
|
|
glieder: list[KettenGliedOut] = []
|
|
|
|
|
antragsteller: list[ParteiOut] = []
|
|
|
|
|
graph: dict | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PaginatedVorlagen(BaseModel):
|
|
|
|
|
items: list[VorlageKurz]
|
|
|
|
|
total: int
|
|
|
|
|
page: int
|
|
|
|
|
page_size: int
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PaginatedKetten(BaseModel):
|
|
|
|
|
items: list[KetteKurz]
|
|
|
|
|
total: int
|
|
|
|
|
page: int
|
|
|
|
|
page_size: int
|