This commit is contained in:
Team3
2026-06-06 22:58:58 +02:00
parent 07b2338e67
commit 656b5bb621
2 changed files with 20 additions and 2 deletions

View File

@@ -504,7 +504,11 @@ async def generate_bausteine(topic: str, instructions: str = "", provider: str =
# --- Guide-Generierung: Bausteine → (Plan) → Writer → JSON --- # --- Guide-Generierung: Bausteine → (Plan) → Writer → JSON ---
# Parallele Writer pro Format (OnePager hat einen eigenen Weg). # 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: 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") await _fail(guide_id, "Gliederung fehlgeschlagen")
return None return None
plan = res[0] 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] zuteilungen = [_zuteilung_text(chunk, entries) for chunk in chunks]
chunk_sizes = [sum(len(c["nums"]) for c in chunk) for chunk in chunks] chunk_sizes = [sum(len(c["nums"]) for c in chunk) for chunk in chunks]

View File

@@ -254,6 +254,9 @@ async function send() {
<style scoped> <style scoped>
.detail { .detail {
flex: 1; flex: 1;
/* Flex-Item darf schmaler werden als seine Code-Blöcke — sonst sprengt
deren Mindestbreite auf Mobile das Layout */
min-width: 0;
height: 100vh; height: 100vh;
position: relative; position: relative;
} }
@@ -261,6 +264,8 @@ async function send() {
.guide-scroll { .guide-scroll {
height: 100%; height: 100%;
overflow-y: auto; overflow-y: auto;
/* Kein horizontales Pannen der ganzen Seite — Code-Blöcke scrollen intern */
overflow-x: hidden;
background: var(--bg-preview); background: var(--bg-preview);
} }
@@ -270,6 +275,12 @@ async function send() {
padding: 2rem 2.5rem 5rem; padding: 2rem 2.5rem 5rem;
} }
@media (max-width: 600px) {
.guide-content {
padding: 1.25rem 0.9rem 4rem;
}
}
.guide-head { .guide-head {
display: flex; display: flex;
align-items: baseline; align-items: baseline;
@@ -398,6 +409,8 @@ async function send() {
border-radius: 4px; border-radius: 4px;
font-family: "SF Mono", Consolas, monospace; font-family: "SF Mono", Consolas, monospace;
font-size: 0.85em; font-size: 0.85em;
/* Lange Bezeichner (Namespaces, Pfade) dürfen umbrechen statt zu überlaufen */
overflow-wrap: anywhere;
} }
.markdown :deep(pre) { .markdown :deep(pre) {