Entwicklung: aus einer Beobachtung wird ein Schritt
Filipe: "ich will die noch viel besser, perfektionniert, viel geiler und krasser. es soll so einfach wie moeglich sein fuer jeden." Die Karte konnte bisher genau eines: festhalten, dass etwas hakt -- mit Anlass, das war schon richtig. Danach passierte nichts. Beim naechsten Oeffnen stand dieselbe Beobachtung da, nur aelter. Die Quellen zur laufenden Entwicklungsbegleitung sagen zweierlei: weg von der Bewertung, hin zum Gespraech -- und ein Entwicklungsplan wirkt dann, wenn er an einer ECHTEN Aufgabe haengt. Nicht "daran arbeiten wir", sondern etwas mit Verantwortlichem und Frist. Also: An einem Punkt, der hakt, steht ein Knopf. Er legt eine Aufgabe auf dem Brett an -- Titel = der Punkt, der Anlass wandert in die Beschreibung (ohne ihn waere es ein Vorwurf), verantwortlich ist der Mensch selbst, Frist in 14 Tagen. Die Karte zeigt danach, dass ein Schritt laeuft, und verweist auf ihn. UND DANN SCHLIESST SICH DER KREIS: Ist der Schritt erledigt, sagt die Karte das und bittet, noch einmal hinzusehen. Das ist der Rhythmus, den die Quellen meinen -- keine Bewertung einmal im Jahr, sondern eine Runde, die zu Ende geht. Danach geht derselbe Punkt wieder. Die Riegel: nur aus dem EIGENEN "da hakt es" (aus dem eines anderen hiesse, in seinem Namen zu handeln), nur ein offener Schritt je Punkt, nur Leitung, und ein Punkt aus Block 5 sieht von aussen aus wie ein erfundener. Im Protokoll steht, DASS -- nie der Anlass. NEBENBEFUND, beim Uebernehmen der Schreibweise gefunden: aufgaben.html #a<nummer> stand an DREI Stellen im Haus (bereich.js, report.js, jetzt die Entwicklungskarte) und wurde von keiner gelesen -- das Brett kannte nur ?zeigen=, und eine Karte mit ihrer Nummer als Anker gab es nicht. Wer draufdrueckte, landete auf dem Brett und suchte von Hand. Jetzt tragen die Karten ihre Nummer, und das Brett hebt genau die eine hervor. Alle drei Verweise funktionieren damit. Und was die Pruefung an sich selbst gefunden hat: Ich habe die rechte Hand ueber die Adresse von DogFather gerufen. Sie bekam 401 -- und WEIL sie nichts setzen konnte, ging ein zweiter Test aus dem falschen Grund durch. Ein gruener Haken ueber einer Leere. server/pruef-schritt.mjs 46 Pruefungen, 0 Fehler (Port 4421) pruef-uebergang 61, pruef-nachwuchs 123, pruef-entwicklung 43, pruef-uebernahme 39, pruef-aufgabenbrett, pruef-css-klassen -- 0 Fehler Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -241,9 +241,89 @@
|
||||
z.append(el('p', 'e-punkt__wann',
|
||||
`von dir am ${datum(pt.meins.am)}${pt.meins.verblasst ? ' – älter als 90 Tage' : ''}`));
|
||||
}
|
||||
|
||||
/* ==== AUS DER BEOBACHTUNG WIRD EIN SCHRITT (15.09.2026) ==========
|
||||
|
||||
Bis heute konnte diese Zeile genau eines: festhalten, dass etwas
|
||||
hakt. Danach passierte nichts — beim nächsten Öffnen stand
|
||||
dieselbe Beobachtung da, nur älter.
|
||||
|
||||
Ein Entwicklungsplan wirkt dann, wenn er an einer ECHTEN Aufgabe
|
||||
hängt. Also wird aus „da hakt es" eine Aufgabe auf dem Brett,
|
||||
mit Verantwortlichem und Frist — und wenn sie erledigt ist,
|
||||
fragt die Karte dieselbe Frage noch einmal. Das ist der Kreis.
|
||||
============================================================== */
|
||||
z.append(schrittZeile(personId, pt));
|
||||
return z;
|
||||
}
|
||||
|
||||
const SCHRITT_ABSAGE = {
|
||||
kein_hakt: 'Ein Schritt entsteht aus „Da hakt es“ – setz das zuerst.',
|
||||
schon_da: 'Dazu läuft schon ein Schritt.',
|
||||
};
|
||||
|
||||
function schrittZeile(personId, pt) {
|
||||
const s = pt.schritt;
|
||||
const zeile = el('div', 'e-schritt');
|
||||
|
||||
/* ---- Es läuft schon etwas ---- */
|
||||
if (s && s.status !== 'erledigt' && s.status !== 'abgebrochen') {
|
||||
zeile.dataset.lage = 'laeuft';
|
||||
zeile.append(el('span', 'e-schritt__was', 'Schritt läuft'));
|
||||
const a = el('a', 'e-schritt__hin', s.titel);
|
||||
/* DIE SCHREIBWEISE DES HAUSES: `#a<nummer>`. Das Brett springt
|
||||
damit wirklich zu der Aufgabe -- `?a=` hatte ich erfunden, und
|
||||
das Brett liest es nicht. Ein Verweis, der nur die Seite
|
||||
oeffnet und nichts zeigt, ist schlechter als keiner. */
|
||||
a.href = 'aufgaben.html#a' + s.id;
|
||||
zeile.append(a);
|
||||
if (s.frist) zeile.append(el('span', 'e-schritt__frist', `bis ${datum(s.frist)}`));
|
||||
return zeile;
|
||||
}
|
||||
|
||||
/* ---- Er ist durch: dieselbe Frage noch einmal ----
|
||||
DAS IST DER EIGENTLICHE GEWINN. Ohne diesen Satz wäre der Schritt
|
||||
nur eine Aufgabe mehr; mit ihm wird aus der Beobachtung eine
|
||||
Runde, die zu Ende geht. */
|
||||
if (s && s.status === 'erledigt') {
|
||||
zeile.dataset.lage = 'durch';
|
||||
zeile.append(el('span', 'e-schritt__was', 'Schritt erledigt'));
|
||||
zeile.append(el('span', 'e-schritt__satz',
|
||||
s.erledigt_am
|
||||
? `am ${datum(s.erledigt_am)} – sieh noch einmal hin und setz neu.`
|
||||
: 'Sieh noch einmal hin und setz neu.'));
|
||||
return zeile;
|
||||
}
|
||||
|
||||
/* ---- Noch keiner: aber nur aus einem „da hakt es" ----
|
||||
Der Knopf steht NUR dort. Ein Knopf, der überall steht und fast
|
||||
überall „geht nicht" antwortet, ist schlechter als keiner. */
|
||||
if (pt.meins?.stufe !== 'hakt') return zeile;
|
||||
|
||||
zeile.dataset.lage = 'offen';
|
||||
const b = el('button', 'schritt e-schritt__knopf', 'Daraus einen Schritt machen');
|
||||
b.type = 'button';
|
||||
b.title = 'Legt eine Aufgabe auf dem Brett an – mit dieser Person als '
|
||||
+ 'Verantwortlicher und einer Frist in zwei Wochen.';
|
||||
b.addEventListener('click', async () => {
|
||||
b.disabled = true;
|
||||
const a = await hole(
|
||||
`/workspace/api/entwicklung/person/${personId}/${pt.schluessel}/schritt`,
|
||||
{ method: 'POST', headers: { 'Content-Type': 'application/json' }, body: '{}' });
|
||||
b.disabled = false;
|
||||
if (!a.ok) {
|
||||
const j = await a.json().catch(() => ({}));
|
||||
melde(SCHRITT_ABSAGE[j.fehler] || 'Ging nicht.');
|
||||
return;
|
||||
}
|
||||
const neu = await a.json();
|
||||
melde(`Steht auf dem Aufgabenbrett: „${neu.titel}“, bis ${datum(neu.frist)}.`);
|
||||
await karte(personId);
|
||||
});
|
||||
zeile.append(b);
|
||||
return zeile;
|
||||
}
|
||||
|
||||
/* ---- Deine eigene Karte -----------------------------------------------
|
||||
|
||||
WAS HIER STEHT UND WAS NICHT: die Antworten, nicht die Namen, und
|
||||
|
||||
Reference in New Issue
Block a user