From a70e9f98647bd67d7887ad1c6d98993339c5cfdd Mon Sep 17 00:00:00 2001 From: JiriUhlir <149317995+JiriUhlir@users.noreply.github.com> Date: Thu, 3 Sep 2026 10:52:54 +0200 Subject: [PATCH] swagger --- app/config.py | 2 +- app/models.py | 38 +++++++++++++----------------------- documentation/README.md | 2 +- documentation/konfigurace.md | 2 +- documentation/zmeny.md | 13 ++++++++++++ 5 files changed, 30 insertions(+), 27 deletions(-) diff --git a/app/config.py b/app/config.py index cefc064..e0627c5 100644 --- a/app/config.py +++ b/app/config.py @@ -34,7 +34,7 @@ def _list(name: str) -> list[str]: @dataclass(frozen=True) class Settings: app_name: str = field(default_factory=lambda: os.getenv("APP_NAME", "html-to-pdf")) - app_version: str = field(default_factory=lambda: os.getenv("APP_VERSION", "1.0.1")) + app_version: str = field(default_factory=lambda: os.getenv("APP_VERSION", "1.0.2")) root_path: str = field( default_factory=lambda: os.getenv("ROOT_PATH") or os.getenv("BASE_PATH") or "" ) diff --git a/app/models.py b/app/models.py index 415489f..ba52ba5 100644 --- a/app/models.py +++ b/app/models.py @@ -66,7 +66,7 @@ class PageSettings(BaseModel): "orientaci poradi hodnot." ), ) - margin: Margin = Field(default_factory=Margin, description="Okraje stranky.") + margin: Margin = Field(default_factory=Margin) class PageNumbers(BaseModel): @@ -197,9 +197,12 @@ class ConvertRequest(BaseModel): """Telo pozadavku. Stejne pro POST /convert i POST /jobs. Povinne je pouze `source`, vsechno ostatni ma pouzitelnou vychozi hodnotu. - Nastaveni tykajici se strankovani je rozdelene do ctyr bloku: `page` resi - rozmer a okraje, `page_numbers` cislovani, `chunking` deleni velkeho - dokumentu na renderovane casti a `toc` obsah s cisly stranek. + + Strankovani je rozdelene do ctyr bloku. `page` resi rozmer stranky a okraje, + `page_numbers` cislovani, `chunking` deleni velkeho dokumentu na renderovane + casti a `toc` obsah se skutecnymi cisly stranek. `assets` ridi stahovani + externich obrazku a stylu, `wait_for` cekani na dokresleni stranky + a pouziva ho jen Chromium. """ source: Source @@ -213,27 +216,14 @@ class ConvertRequest(BaseModel): "weasyprint, a pri selhani WeasyPrintu render zopakuje pres Chromium." ), ) - page: PageSettings = Field( - default_factory=PageSettings, description="Rozmer stranky a okraje." - ) - page_numbers: PageNumbers = Field( - default_factory=PageNumbers, description="Cislovani stranek, vychozi je vypnute." - ) - toc: TocSettings = Field( - default_factory=TocSettings, description="Obsah se skutecnymi cisly stranek." - ) + page: PageSettings = Field(default_factory=PageSettings) + page_numbers: PageNumbers = Field(default_factory=PageNumbers) + toc: TocSettings = Field(default_factory=TocSettings) outline: bool = Field(default=True, description="Generovat zalozky PDF z nadpisu h1 az h6.") pdf_profile: Literal["pdf/a-1b", "pdf/a-2b", "pdf/a-3b", "pdf/a-4b", "pdf/ua-1"] | None = None - assets: AssetSettings = Field( - default_factory=AssetSettings, description="Stahovani externich assetu." - ) - chunking: ChunkSettings = Field( - default_factory=ChunkSettings, - description="Deleni velkeho dokumentu na casti renderovane samostatne.", - ) - wait_for: WaitFor = Field( - default_factory=WaitFor, description="Cekani na dokresleni stranky, jen pro Chromium." - ) + assets: AssetSettings = Field(default_factory=AssetSettings) + chunking: ChunkSettings = Field(default_factory=ChunkSettings) + wait_for: WaitFor = Field(default_factory=WaitFor) filename: str | None = Field(default=None, description="Nazev souboru ve Content-Disposition.") callback_url: str | None = Field( default=None, @@ -322,7 +312,7 @@ class JobState(BaseModel): "smazou a dalsi dotaz vraci 404. Odvozuje se z JOB_RESULT_TTL_SECONDS." ), ) - progress: JobProgress = Field(default_factory=JobProgress, description="Postup renderu.") + progress: JobProgress = Field(default_factory=JobProgress) engine_used: str | None = Field(default=None, description="Engine, ktery dokument vyrenderoval.") page_count: int | None = Field(default=None, description="Pocet stranek vysledku.") missing_assets: list[MissingAsset] = Field( diff --git a/documentation/README.md b/documentation/README.md index b438d87..a294533 100644 --- a/documentation/README.md +++ b/documentation/README.md @@ -13,7 +13,7 @@ v tele requestu a vrati soubor PDF. Zvlada dokumenty o tisicich stranek. ## Aktualni stav -Verze 1.0.1, stav development. +Verze 1.0.2, stav development. Hotovo: diff --git a/documentation/konfigurace.md b/documentation/konfigurace.md index a5bc5dc..c089584 100644 --- a/documentation/konfigurace.md +++ b/documentation/konfigurace.md @@ -8,7 +8,7 @@ runtime `.env`. Zadna promenna neni povinna, sluzba nastartuje i bez nich. | Promenna | Vychozi | Vyznam | |---|---|---| | `APP_NAME` | `html-to-pdf` | nazev v dokumentaci a v odpovedi /version | -| `APP_VERSION` | `1.0.1` | verze | +| `APP_VERSION` | `1.0.2` | verze | | `ROOT_PATH` | prazdne | prefix reverse proxy, napriklad `/apps/html-to-pdf` | | `BASE_PATH` | prazdne | pouzije se, kdyz `ROOT_PATH` neni nastavene | | `LOG_LEVEL` | `INFO` | uroven logovani | diff --git a/documentation/zmeny.md b/documentation/zmeny.md index 52d7541..b64580a 100644 --- a/documentation/zmeny.md +++ b/documentation/zmeny.md @@ -1,5 +1,18 @@ # Zaznam zmen +## 1.0.2 + +Opraveno: + +- Swagger UI se u tela requestu rozbil. Verze 1.0.1 pridala popis k polim + `page`, `page_numbers`, `toc`, `assets`, `chunking`, `wait_for`, `margin` + a `progress`, coz jsou odkazy na vnorene modely. V OpenAPI z toho vznikl + `$ref` se sourozeneckym klicem `description`. To je podle OpenAPI 3.1 + v poradku, ale Swagger UI 5 takovy uzel nerozbali, takze prestala fungovat + ukazka tela requestu i Try it out. Popisy se presunuly do docstringu + prislusnych modelu, kde je Swagger zobrazi u samotneho modelu. V OpenAPI uz + neni zadny `$ref` se sourozenci. + ## 1.0.1 Opraveno: