/* ===================================================================== Womit anfangen? (15.09.2026) Letztes Stück von Stufe 9: „Wichtig-vs-Aufwand im Report". --------------------------------------------------------------------- DIE FRAGE, DIE EINE AUFGABENLISTE NICHT BEANTWORTET Ein Brett mit dreißig offenen Karten sagt, WAS zu tun ist. Es sagt nicht, WOMIT man anfängt. „Wichtig" allein hilft dabei nicht: Wenn acht Karten wichtig sind, ist keine davon die erste. Die zweite Angabe, die dafür fehlt, ist der AUFWAND. Wichtig und klein ist etwas anderes als wichtig und groß — das eine macht man jetzt, das andere plant man ein. Mit beiden Angaben zusammen fällt die Entscheidung von selbst. --------------------------------------------------------------------- VIER FELDER, UND JEDES SAGT, WAS ZU TUN IST wichtig + klein SOFORT in einer halben Stunde erledigt, und es zählt wichtig + groß EINPLANEN braucht einen Termin, keinen guten Willen normal + klein NEBENBEI wenn zwischendurch Luft ist normal + groß SPÄTER ehrlich: das wird gerade nichts Die Namen sind Handlungsanweisungen, keine Etiketten. „Quadrant 2" sagt niemandem, was er tun soll. --------------------------------------------------------------------- OHNE SCHÄTZUNG VERSCHWINDET NICHTS Der Aufwand ist freiwillig. Aufgaben ohne Schätzung landen deshalb NICHT stillschweigend in einer Ecke, sondern in einer eigenen, klar benannten Gruppe: „noch nicht eingeschätzt". Eine Übersicht, die einen Teil der Arbeit unsichtbar macht, ist schlimmer als keine -- man verlässt sich darauf und übersieht genau das, was fehlt. ===================================================================== */ /** Die drei Aufwandsstufen. Bewusst nur drei. * * Fünf Stufen klingen genauer und sind es nicht: Niemand unterscheidet * verlässlich zwischen "eher mittel" und "eher groß". Drei kann man * ohne Nachdenken vergeben, und nur was ohne Nachdenken geht, wird * auch gepflegt. */ export const AUFWAND = [ { schluessel: "klein", name: "klein", etwa: "unter einer Stunde" }, { schluessel: "mittel", name: "mittel", etwa: "ein halber Tag" }, { schluessel: "gross", name: "groß", etwa: "mehr als ein Tag" }, ]; export const AUFWAND_SCHLUESSEL = AUFWAND.map((a) => a.schluessel); /** Die vier Felder plus das fünfte für alles ohne Schätzung. */ export const FELDER = [ { schluessel: "sofort", name: "Sofort", satz: "Wichtig und schnell erledigt. Damit anfangen.", wichtig: true, klein: true, }, { schluessel: "einplanen", name: "Einplanen", satz: "Wichtig, aber größer. Braucht einen Termin, keinen guten Willen.", wichtig: true, klein: false, }, { schluessel: "nebenbei", name: "Nebenbei", satz: "Schnell gemacht, wenn zwischendurch Luft ist.", wichtig: false, klein: true, }, { schluessel: "spaeter", name: "Später", satz: "Weder dringend noch schnell. Ehrlich: Das wird gerade nichts.", wichtig: false, klein: false, }, { schluessel: "offen", name: "Noch nicht eingeschätzt", satz: "Ohne Aufwand lässt sich nicht sagen, wohin sie gehören.", wichtig: null, klein: null, }, ]; /** In welches Feld gehört diese Aufgabe? * * „Wichtig" ist die vorhandene Priorität `hoch` -- es wird kein * zweites Feld dafür erfunden. Wer eine Aufgabe als wichtig markiert, * hat das schon getan. * * „Klein" ist `klein`; `mittel` und `gross` zaehlen beide als nicht * klein. Die Trennlinie liegt dort, wo sie im Alltag liegt: Schaffe * ich das zwischendurch, oder muss ich mir Zeit nehmen? */ export function feldVon(aufgabe) { if (!aufgabe) return null; if (!AUFWAND_SCHLUESSEL.includes(aufgabe.aufwand)) return "offen"; const wichtig = aufgabe.prioritaet === "hoch"; const klein = aufgabe.aufwand === "klein"; return FELDER.find((f) => f.wichtig === wichtig && f.klein === klein)?.schluessel ?? "offen"; } /** Die offenen Aufgaben auf die Felder verteilen. * * ERLEDIGTES UND ABGEBROCHENES ZAEHLT NICHT MIT. Die Frage lautet * "womit fange ich an?" -- fertige Arbeit beantwortet sie nicht, und * sie wuerde die Felder so voll machen, dass man nichts mehr sieht. * * @returns {Array} die Felder in ihrer Reihenfolge, jedes mit seinen * Aufgaben und ihrer Anzahl */ export function verteilen(aufgaben) { const nach = new Map(FELDER.map((f) => [f.schluessel, []])); for (const a of aufgaben || []) { if (a.status === "erledigt" || a.status === "abgebrochen") continue; const feld = feldVon(a); nach.get(feld)?.push(a); } return FELDER.map((f) => ({ schluessel: f.schluessel, name: f.name, satz: f.satz, anzahl: nach.get(f.schluessel).length, /* Nur Titel und Nummer -- der Report ist eine Uebersicht, keine zweite Aufgabenliste. Wer eine Karte oeffnen will, geht ins Brett; die Nummer reicht dafuer. */ aufgaben: nach.get(f.schluessel).slice(0, 12).map((a) => ({ id: a.id, titel: a.titel, frist: a.frist ?? null, })), gekuerzt: nach.get(f.schluessel).length > 12, })); }