Trichter und Entwicklungskarte kennen einander

An der Stufe "Im Team" steht seit jeher zweimal: "ab hier zaehlt die
Entwicklungskarte, nicht mehr diese". Gemessen: Es gab keinen Weg
dorthin. Wer den Satz las, musste die Seite selbst finden und die
Person dort aus einer Liste heraussuchen.

Das ist heute das DRITTE Mal dasselbe Muster -- ein Text verspricht
einen Weg, den es nicht gibt:
  "uebernehmen oder sauber beenden"  -> der Ausgang fehlte
  Kalender zeigt Brettzettel         -> zurueck fuehrte nichts
  "ab hier die Entwicklungskarte"    -> kein Link

HIN: Von der Talentkarte fuehrt ein Weg auf die Entwicklungskarte
GENAU DIESER Person -- ueber `?zeigen=person-<id>`, den Weg, den das
Haus dafuer schon hat (kopf.js), nicht ueber eine zweite Mechanik. Die
Karte ist beim Ankommen offen; ein Link, der auf einer Liste endet, auf
der man die Person wieder sucht, hat nichts erspart.

Der Sprung passiert ERST, wenn alle Kacheln stehen. Waehrend der
Schleife haengt die gesuchte noch nicht im Dokument und hat keine
Position -- ein Sprung dorthin waere einer an den Seitenanfang,
lautlos, und man haelt den Link fuer kaputt.

ZURUECK: Die Entwicklungskarte sagt jetzt, wie dieser Mensch gekommen
ist -- mit dem Namen der Talentkarte und wer ihn eingearbeitet hat.
Beim ersten Beurteilen ist genau das die Frage ("woher kommt der
eigentlich?"), und wer sie nicht beantwortet bekommt, faengt bei null
an, obwohl vier Wochen Beobachtung vorliegen.

NUR DER WEG, NICHT DIE DATEN. Die Merkmale aus dem Trichter hierher zu
kopieren waere bequem und falsch: zwei Kataloge, zwei Fragen (taugt er?
/ wie entwickelt er sich?). Eine Zahl aus dem einen sieht im anderen
aus wie eine Beurteilung und ist keine.

Moeglich wurde beides erst durch `talent_stufe.person_id` von vorhin --
ohne die Verknuepfung gibt es keine Richtung, in die man zeigen
koennte.

pruef-nachwuchs 236 -> 244. Geprueft wird nicht, ob ein Link DASTEHT,
sondern ob man am Ziel ankommt: Karte offen, richtige Person, Kachel
hervorgehoben, Herkunft da, Rueckweg da. Mit Gegenprobe an einer
zweiten Karte, die NICHT aus dem Trichter kam (sonst hiesse "kam ueber
den Trichter" nur, dass ueberall etwas steht).

Gegenproben:
  Sprung ausgebaut    -> 5 rot
  Herkunft ausgebaut  -> 2 rot, genau die beiden richtigen

Und wieder eine Schriftgroesse unter der Hausgrenze (.7rem = 11,2 px),
gefunden von pruef-css-klassen. Zurueckhaltend wird ueber FARBE
gedaempft, nicht ueber Groesse -- das ist der Unterschied zwischen
"leise" und "zusammengekniffen".

Gruen: nachwuchs, entwicklung, sprung, modi-wortleck, namen,
css-klassen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-18 01:01:12 +02:00
co-authored by Claude Opus 5
parent a435e734c9
commit 1a2dfa07f3
38 changed files with 622 additions and 401 deletions
+36
View File
@@ -476,8 +476,44 @@ entwicklungRouter.get("/workspace/api/entwicklung/person/:id", nurLeitung, (req,
}
}
/* WIE DIESER MENSCH GEKOMMEN IST (17.09.2026).
Die Talentkarte sagt seit heute, wer aus ihr geworden ist. Die
Gegenrichtung fehlte: Wer hier eine Karte aufschlaegt, sieht
Namen und Punkte -- aber nicht, dass derselbe Mensch vier Wochen
lang beobachtet wurde, wer ihn eingearbeitet hat und was dabei
aufgefallen ist.
Das ist keine Nebensaechlichkeit. Beim ersten Beurteilen ist
genau das die Frage: „Woher kommt der eigentlich?" -- und wer sie
nicht beantwortet bekommt, faengt bei null an, obwohl vier Wochen
Beobachtung vorliegen.
NUR DER HINWEIS, NICHT DIE DATEN. Die Merkmale aus dem Trichter
hierher zu kopieren waere bequem und falsch: Es sind zwei
verschiedene Kataloge mit zwei verschiedenen Fragen (taugt er? /
wie entwickelt er sich?). Eine Zahl aus dem einen im anderen
sieht aus wie eine Beurteilung und ist keine. Hier steht der
WEG dorthin -- lesen kann man ihn selbst. */
const herkunft = db().prepare(
`SELECT e.id, e.titel, s.stufe, s.seit, b.name AS buddy_name
FROM talent_stufe s
JOIN eintraege e ON e.id = s.eintrag_id
LEFT JOIN personen b ON b.id = s.buddy_id
WHERE s.person_id = ? AND e.bereich = 'talente'
ORDER BY s.seit DESC LIMIT 1`).get(p.id);
res.json({
person: { id: p.id, name: p.name, rolle_name: ROLLEN_NAME[p.rolle] ?? p.rolle },
/* Null, wenn niemand die Karte verknuepft hat -- und das ist der
Normalfall fuer alle, die vor dem 17.09. ins Team kamen. Eine
erfundene Herkunft waere schlimmer als keine. */
herkunft: herkunft ? {
eintrag_id: herkunft.id,
titel: herkunft.titel,
seit: herkunft.seit,
buddy_name: herkunft.buddy_name || null,
} : null,
stufen: ENTWICKLUNG_STUFEN,
erwartung: ENTWICKLUNG_ERWARTUNG,
bloecke,