Die Probezeit hat einen Inhalt -- und man sieht, wer was gesehen hat
Filipe: "wie talente bewertet werden, aufgaben bekommen, analysiert werden von vanvan und mir, alles moegliche, wie gesagt ich will hoch profissionel arbeiten." WAS GEMESSEN FEHLTE Die Stufe "Probe" hatte eine Frist von 30 Tagen, einen Buddy, ein Datum -- und einen Satz: "Nach 30 Tagen: uebernehmen oder sauber beenden." Worauf diese Entscheidung sich gruenden soll, stand nirgends. Eine Probezeit ohne Inhalt ist keine Probe, sondern eine Wartezeit; am dreissigsten Tag entscheidet dann das Bauchgefuehl dessen, der zuletzt etwas gesehen hat. Und: `von_id` stand seit dem Bau in talent_merkmal und wurde nie ausgeliefert. Man sah, DASS ein Merkmal gesetzt ist -- nicht, von wem. Bei zwei Leuten, die unabhaengig beobachten, ist genau das die Auskunft. DER PROBEPLAN Zwoelf Schritte in drei Phasen: mitlaufen -> selbst machen -> allein. Die Reihenfolge ist der Punkt (Discord empfiehlt sie so, in der Ausbildung heisst sie "see one, do one"). Wer die mittlere Stufe ueberspringt, hat am Tag 30 zwei Sorten Kandidaten, die man nicht unterscheiden kann. JEDER SCHRITT HAT EINEN ZUSTAENDIGEN -- sechs das Talent, drei der Buddy, drei die Leitung. Ohne diese Angabe wandern in jeder Probezeit dieselben drei an niemanden: Der Buddy denkt, die Leitung macht es. KEINE PUNKTZAHL. Am Ende stehen drei Fragen, die ein Mensch beantwortet; die Haken sagen nur, ob er genug gesehen hat. Und "entscheidbar" haengt an DREI Schritten, nicht an einer Anzahl: Wer nie allein gearbeitet hat und wen das Team nie beurteilt hat, ueber den weiss man nichts, egal wie viele andere Haken stehen. Neun von zwoelf reichen nicht, drei genuegen -- wenn es die richtigen sind. WAS DAS HINSEHEN GEFUNDEN HAT `.t-schritt` gibt es auf dieser Seite schon -- es ist die Zeile mit dem naechsten Schritt der Trichterstufe. Meine Regeln standen SPAETER in derselben Datei und haetten sie ueberschrieben. Gefunden hat das keine Ueberlegung, sondern das Nachzaehlen im Browser: 13 Elemente mit `.t-schritt`, obwohl der Plan zwoelf hat. ZWEI PRUEFUNGEN WAREN SCHON VORHER ROT (gemessen mit git stash) pruef-schritt (6 rot) und pruef-befinden (4 rot) -- seit den Erweiterungen von heute frueh: aus sechs Befinden-Fragen wurden zwoelf, aus vier Kategorien sechs, und die Personenkachel zaehlt seit heute in Kaesten statt in einem Satz. Die Zahlen standen als feste Werte in den Pruefdateien. Nicht die Zahlen angepasst, sondern ABGELEITET: aus ENTWICKLUNG_BLOECKE und ENTWICKLUNG_PUNKTE.befinden. Eine feste Zahl ist eine Rechnung von gestern; wer sie nachtraegt, traegt sie beim naechsten Mal wieder nach. GEPRUEFT pruef-nachwuchs 123 -> 152. Vier Gegenproben, jede trifft ihr Ziel: Liste auch vor der Probe -> 1 rot, Abhaken ohne Stufenpruefung -> 7 rot, "entscheidbar" nach Anzahl statt nach den drei -> 3 rot, Name nicht mitgeliefert -> 1 rot. Dazu gruen: schritt 65, befinden 75, entwicklung 43, uebergang, neue-seiten, rechtetafel, css-klassen, struktur, deutsche-texte, modi-wortleck.
This commit is contained in:
@@ -247,6 +247,15 @@
|
||||
a.append(u);
|
||||
}
|
||||
|
||||
/* ---- Die Probezeit --------------------------------------------------
|
||||
|
||||
Sie steht direkt unter dem Uebergang: waehrend einer Probe ist sie
|
||||
das Wichtigste auf der Karte. Und sie erscheint NUR dann -- an
|
||||
einem Kandidaten, der noch beobachtet wird, waere eine leere
|
||||
Zwoelferliste Laerm, und Laerm liest man auch dann weg, wenn er
|
||||
gilt. */
|
||||
if (k.probe) probeZeigen(a, k);
|
||||
|
||||
/* ---- Merkmale, aufklappbar ------------------------------------------
|
||||
Zugeklappt steht dort eine Zahl, aufgeklappt die 21 Merkmale.
|
||||
Immer offen wären es bei zehn Kandidaten 270 Kästchen auf einer
|
||||
@@ -534,9 +543,19 @@
|
||||
b.type = 'button';
|
||||
if (istWarnung) b.dataset.warnung = 'ja';
|
||||
b.setAttribute('aria-pressed', String(gesetzt));
|
||||
b.title = m.text;
|
||||
/* WER ES GESEHEN HAT, steht im Titel -- nicht als weitere Zeile
|
||||
auf einem Knopf, der in 27 Stueck nebeneinander steht.
|
||||
|
||||
Filipe: „analysiert werden von vanvan und mir." Bei zwei Leuten,
|
||||
die unabhaengig beobachten, ist genau das die Auskunft: Wer hat
|
||||
es gesehen? Bis heute stand `von_id` in der Tabelle und wurde nie
|
||||
ausgeliefert. */
|
||||
const wer = k.gesehen_von?.[m.schluessel];
|
||||
b.title = m.text + (gesetzt && wer ? ' — gesehen von ' + wer + '.' : '');
|
||||
if (gesetzt && wer) b.dataset.wer = wer;
|
||||
b.append(el('span', 't-merkmal__haken', gesetzt ? '✓' : '+'));
|
||||
b.append(el('span', 't-merkmal__titel', m.titel));
|
||||
if (gesetzt && wer) b.append(el('span', 't-merkmal__wer', wer));
|
||||
b.addEventListener('click', async () => {
|
||||
b.disabled = true;
|
||||
const r = await hole(`/workspace/api/talente/${k.id}/merkmal/${m.schluessel}`,
|
||||
@@ -549,6 +568,122 @@
|
||||
}
|
||||
|
||||
/* ---- Zeichnen --------------------------------------------------------- */
|
||||
/* =====================================================================
|
||||
DIE PROBEZEIT (17.09.2026)
|
||||
|
||||
Filipe: „wie talente bewertet werden, aufgaben bekommen, analysiert
|
||||
werden von vanvan und mir."
|
||||
|
||||
Zwoelf Schritte in drei Phasen -- mitlaufen, selbst machen, allein.
|
||||
Jeder mit einem Zustaendigen, denn ohne den wandern in jeder
|
||||
Probezeit dieselben drei Schritte an niemanden.
|
||||
|
||||
KEINE PUNKTZAHL, KEIN PROZENT. Die Zahl sagt, wie viel man GESEHEN
|
||||
hat -- nicht, wie gut jemand ist. Ein Prozentwert ueber einem
|
||||
Menschen wird gelesen, verglichen und weitererzaehlt.
|
||||
===================================================================== */
|
||||
const kurzDatum = (iso) => {
|
||||
const d = new Date(iso || '');
|
||||
return Number.isNaN(d.getTime()) ? ''
|
||||
: d.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' });
|
||||
};
|
||||
|
||||
function probeZeigen(ziel, k) {
|
||||
const pr = k.probe;
|
||||
const kasten = el('section', 't-probe');
|
||||
if (pr.entscheidbar) kasten.dataset.reif = 'ja';
|
||||
|
||||
const kopf = el('div', 't-probe__kopf');
|
||||
kopf.append(el('h3', 't-probe__titel', 'Die Probezeit'));
|
||||
kopf.append(el('span', 't-probe__stand', pr.getan + ' von ' + pr.gesamt + ' gesehen'));
|
||||
kasten.append(kopf);
|
||||
|
||||
/* DER SATZ, DER DIE ENTSCHEIDUNG TRAEGT. Er steht oben und nicht
|
||||
unter zwoelf Zeilen: Wer die Karte aufmacht, will wissen, ob man
|
||||
schon entscheiden kann. */
|
||||
if (pr.entscheidbar) {
|
||||
kasten.append(el('p', 't-probe__reif',
|
||||
'Genug gesehen, um zu entscheiden. Die drei Fragen stehen unten.'));
|
||||
} else {
|
||||
const fehlt = pr.fehlt_noetig
|
||||
.map((s) => (pr.schritte.find((x) => x.schluessel === s) || {}).titel)
|
||||
.filter(Boolean);
|
||||
kasten.append(el('p', 't-probe__offen',
|
||||
'Noch nicht entscheidbar – dafür fehlt: ' + fehlt.join(' · ')));
|
||||
}
|
||||
|
||||
for (const ph of pr.phasen) {
|
||||
const block = el('div', 't-phase');
|
||||
const pk = el('div', 't-phase__kopf');
|
||||
pk.append(el('h4', 't-phase__titel', ph.name));
|
||||
pk.append(el('span', 't-phase__zeit', ph.zeit + ' · ' + ph.fertig + '/' + ph.gesamt));
|
||||
block.append(pk);
|
||||
block.append(el('p', 't-phase__satz', ph.text));
|
||||
|
||||
for (const sch of pr.schritte.filter((x) => x.phase === ph.schluessel)) {
|
||||
const zeile = el('div', 't-pschritt');
|
||||
if (sch.fertig) zeile.dataset.fertig = 'ja';
|
||||
|
||||
const knopf = el('button', 't-pschritt__haken', sch.fertig ? '✓' : '');
|
||||
knopf.type = 'button';
|
||||
knopf.setAttribute('aria-pressed', String(!!sch.fertig));
|
||||
knopf.setAttribute('aria-label',
|
||||
(sch.fertig ? 'Zurücknehmen: ' : 'Abhaken: ') + sch.titel);
|
||||
knopf.addEventListener('click', async () => {
|
||||
knopf.disabled = true;
|
||||
const r = await hole('/workspace/api/talente/' + k.id + '/probe/' + sch.schluessel,
|
||||
{ method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: '{}' });
|
||||
if (!r.ok) {
|
||||
const d = await r.json().catch(() => ({}));
|
||||
melde(d.fehler || absage(d));
|
||||
knopf.disabled = false;
|
||||
return;
|
||||
}
|
||||
await laden();
|
||||
});
|
||||
zeile.append(knopf);
|
||||
|
||||
const text = el('div', 't-pschritt__text');
|
||||
const oben = el('p', 't-pschritt__titel');
|
||||
oben.append(document.createTextNode(sch.titel));
|
||||
oben.append(el('span', 't-pschritt__wer', sch.wer_name));
|
||||
text.append(oben);
|
||||
text.append(el('p', 't-pschritt__satz', sch.text));
|
||||
/* WOFUER der Schritt da ist. Ein Haken, dessen Zweck man nicht
|
||||
kennt, wird gesetzt, weil er dasteht. */
|
||||
text.append(el('p', 't-pschritt__wofuer', sch.wofuer));
|
||||
if (sch.fertig && sch.von) {
|
||||
text.append(el('p', 't-pschritt__von',
|
||||
'abgehakt von ' + sch.von + (sch.am ? ' · ' + kurzDatum(sch.am) : '')));
|
||||
}
|
||||
zeile.append(text);
|
||||
block.append(zeile);
|
||||
}
|
||||
kasten.append(block);
|
||||
}
|
||||
|
||||
/* DIE DREI FRAGEN. Sie erscheinen erst, wenn man sie beantworten
|
||||
kann -- vorher waeren sie eine Einladung, aus dem Bauch zu
|
||||
entscheiden. */
|
||||
if (pr.entscheidbar) {
|
||||
const f = el('div', 't-probe__fragen');
|
||||
f.append(el('h4', 't-phase__titel', 'Und jetzt – drei Fragen'));
|
||||
for (const q of pr.fragen) {
|
||||
const z = el('div', 't-frage');
|
||||
z.append(el('p', 't-frage__frage', q.frage));
|
||||
z.append(el('p', 't-frage__satz', q.text));
|
||||
f.append(z);
|
||||
}
|
||||
f.append(el('p', 't-probe__schluss',
|
||||
'Drei Mal Ja: übernehmen. Ein Mal Nein: sauber beenden und sagen, '
|
||||
+ 'warum. Ein „weiß nicht“ heißt, dass noch etwas fehlt – dann '
|
||||
+ 'nicht raten, sondern nachholen.'));
|
||||
kasten.append(f);
|
||||
}
|
||||
|
||||
ziel.append(kasten);
|
||||
}
|
||||
|
||||
function zeichne() {
|
||||
trichter();
|
||||
const ziel = $('liste');
|
||||
|
||||
Reference in New Issue
Block a user