From 656b5bb6215bbb9b7b0ca29c74d0da31d1125175 Mon Sep 17 00:00:00 2001 From: Team3 Date: Sat, 6 Jun 2026 22:58:58 +0200 Subject: [PATCH] update --- backend/generator.py | 9 +++++++-- frontend/src/components/TopicDetail.vue | 13 +++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/backend/generator.py b/backend/generator.py index 365d04b..0bb02ee 100644 --- a/backend/generator.py +++ b/backend/generator.py @@ -504,7 +504,11 @@ async def generate_bausteine(topic: str, instructions: str = "", provider: str = # --- Guide-Generierung: Bausteine → (Plan) → Writer → JSON --- # Parallele Writer pro Format (OnePager hat einen eigenen Weg). -WRITER_COUNT = {"MiniGuide": 1, "Guide": 2, "FullGuide": 4} +# Writer skalieren mit der Section-Zahl: 1 Writer je ~30 Sections (gedeckelt). +# Kleine Pakete vermeiden Lazy-Output bei langen Listen und begrenzen den Schaden +# eines fehlgeschlagenen Writers. +WRITER_SECTIONS = 30 +WRITER_MAX = 10 def _resolve_gliederung(data, entries: dict[int, str], soll: int) -> list[dict] | None: @@ -743,7 +747,8 @@ async def _generate_sections( await _fail(guide_id, "Gliederung fehlgeschlagen") return None plan = res[0] - chunks = _split_chunks(plan, WRITER_COUNT[format_name]) + total_sections = sum(len(c["nums"]) for c in plan) + chunks = _split_chunks(plan, min(WRITER_MAX, max(1, math.ceil(total_sections / WRITER_SECTIONS)))) zuteilungen = [_zuteilung_text(chunk, entries) for chunk in chunks] chunk_sizes = [sum(len(c["nums"]) for c in chunk) for chunk in chunks] diff --git a/frontend/src/components/TopicDetail.vue b/frontend/src/components/TopicDetail.vue index 9b485ba..a8b8fc0 100644 --- a/frontend/src/components/TopicDetail.vue +++ b/frontend/src/components/TopicDetail.vue @@ -254,6 +254,9 @@ async function send() {