Workspace: KI-Vorschlaege in Calls, Start-Check und Report

Nach der Korrektur von CPUQuota (50% -> 200%) ist die KI benutzbar:
nr_throttled steht bei 0 (vorher 1752 von 1801 Zeitfenstern).

Gemessen NACH der Korrektur:
  To-dos aus einem Protokoll : 12,7 s (vorher: Abbruch nach 45 s)
  Website waehrend der Arbeit: 0,063 s -- Basis war 0,068 s

Kein Einfluss auf die Website, wie bei der ersten Messung mit zwei
echten Kernen vorhergesagt.

DREI KNOEPFE, alle nach demselben Muster:

- Calls: "To-dos vorschlagen" liest, was im Protokoll schon steht, und
  fuellt LEERE To-do-Zeilen. Bereits Getipptes wird nie ueberschrieben.
- Start-Check: "Besser formulieren" macht aus einer Notiz einen
  Aufgabentitel. Der einfache Vorschlag (erster Satz der Notiz) bleibt
  daneben bestehen -- er funktioniert auch ohne KI.
- Report: "In Worte fassen" fasst die Zahlen in drei Saetzen zusammen.

IST DIE KI AUS, GIBT ES DEN KNOPF NICHT. Jede Seite fragt beim Laden
einmal nach. Ein Knopf, der immer eine Fehlermeldung bringt, ist
schlimmer als gar kein Knopf.

Die Absicherung steht in EINER Datei (assets/js/ki.js), nicht dreimal.
Der Knopf sagt waehrend der Arbeit "Die KI denkt ..." und der Funke
pulst -- zwoelf Sekunden ohne Rueckmeldung fuehlen sich sonst an wie
ein Fehler.

Optisch bewusst ANDERS als die normalen Knoepfe: gestrichelter Rand
statt geschliffener Kante. Ein KI-Knopf tut nichts Endgueltiges, er
schlaegt vor -- das soll man auf den ersten Blick sehen.

ZWEI VERBESSERUNGEN AUS DEM TEST:

1. Der Bereichsname wurde dem Modell mitgegeben und klebte prompt in
   der Antwort: "LIVE-Struktur auf 18 und 21 Uhr festlegen". Ohne ihn
   kommt eine echte Handlung heraus. Der Befund allein reicht -- er
   steht ja ohnehin im richtigen Bereich. Variable entfernt, kein toter
   Code.

2. Der Report gab dem Modell "ueberfaellig" ohne Umlaut vor und bekam
   es genauso zurueck. Jetzt richtig geschrieben.

Geprueft: Calls 7 s und drei brauchbare To-dos, Start-Check erzeugt
einen Titel, Report drei Saetze, 0 Konsolenfehler.
This commit is contained in:
2026-08-28 13:34:57 +02:00
parent 401c8f006c
commit 4d7d9b183b
19 changed files with 300 additions and 74 deletions
+32 -1
View File
@@ -13,6 +13,7 @@
let ich = null;
let daten = null;
let offen = new Set();
let kiDa = false;
const el = (tag, klasse, text) => {
const k = document.createElement(tag);
@@ -108,7 +109,36 @@
const mehr = el('button', 'knopf-still', '+ Zeile');
mehr.type = 'button';
mehr.addEventListener('click', () => todoZeile(true));
f.append(mehr);
const reihe = el('div', 'todo-knoepfe');
reihe.append(mehr);
/* Vorschlaege aus dem, was oben schon steht. Der Knopf erscheint
nur, wenn die KI ueberhaupt laeuft -- sonst gaebe es einen Knopf,
der immer scheitert. */
if (kiDa) {
reihe.append(window.KI.knopf('To-dos vorschlagen', async () => {
const text = [fPunkte.value, fEnt.value].filter((x) => x.trim()).join(' ');
if (text.trim().length < 20) {
throw new Error('Schreib erst ein paar Sätze oben – daraus kann die KI dann ableiten.');
}
const d = await window.KI.frage('todos', { text });
if (!d.todos?.length) throw new Error('Die KI hat nichts gefunden.');
/* Leere Zeilen zuerst fuellen, dann neue anhaengen. Bereits
Getipptes wird nie ueberschrieben. */
for (const vorschlag of d.todos) {
let ziel = [...todoBox.querySelectorAll('.todo__titel')].find((i) => !i.value.trim());
if (!ziel) { todoZeile(false); ziel = todoBox.lastElementChild.querySelector('.todo__titel'); }
ziel.value = vorschlag;
ziel.dataset.vonKi = 'ja';
}
meldung.textContent = '';
const hinweis = el('p', 'ki-hinweis', d.hinweis);
reihe.after(hinweis);
setTimeout(() => hinweis.remove(), 9000);
}));
}
f.append(reihe);
/* Nächster Termin */
f.append(el('label', 'feld-schild', 'Nächster Termin'));
@@ -329,6 +359,7 @@
ich = await a.json();
} catch { return; }
$('wer').textContent = ich.name + ' · ' + (ich.rolle_name || ich.rolle);
kiDa = await window.KI.verfuegbar();
await laden();
})();
})();