-- ===================================================================== -- Annehmen und Ablehnen einer Anfrage — und eine Zeit, die wirklich läuft -- -- WARUM EIN ZWEITES TERMINFELD -- -- `wd_projekte.richttermin` gibt es schon, es ist aber freier Text: -- "Mitte Oktober", "KW 42", "sobald die Texte da sind". Das ist für ein -- Gespräch genau richtig und für eine Rechnung völlig unbrauchbar — man -- kann daraus keine verbleibenden Tage ermitteln. -- -- Den bestehenden Text nachträglich zu deuten wäre die schlechtere -- Lösung: Aus "Mitte Oktober" ein Datum zu raten heißt, sich bei jedem -- zweiten Projekt um Tage zu vertun — und ausgerechnet ein Liefertermin -- ist nichts, wo man raten sollte. Deshalb ein eigenes, echtes Datum -- daneben. Der Text bleibt, weil er das Menschliche transportiert -- ("wenn deine Texte da sind"), das Datum trägt das Rechnen. -- -- Bewusst ein reines Datum (JJJJ-MM-TT) und kein Zeitstempel: Ein -- Liefertermin ist ein Tag, keine Uhrzeit. "Noch 3 Tage" darf nicht -- davon abhängen, ob um 9 oder um 17 Uhr angenommen wurde. -- ===================================================================== ALTER TABLE wd_projekte ADD COLUMN termin_am TEXT; -- Wann die Uhr zu laufen begann. `start_am` gibt es schon, wird aber -- frei gesetzt; dieses Feld hält fest, wann ANGENOMMEN wurde. Beides -- kann auseinanderfallen (angenommen am Freitag, Start am Montag), und -- für "seit wann läuft das" zählt die Annahme. ALTER TABLE wd_projekte ADD COLUMN angenommen_am TEXT; -- Wie viele Werktage beim Annehmen vorgesehen waren. Nur zur -- Nachvollziehbarkeit: Verschiebt man den Termin später, sieht man noch, -- was ursprünglich zugesagt war. ALTER TABLE wd_projekte ADD COLUMN termin_werktage INTEGER; -- --------------------------------------------------------------------- -- Ablehnung -- -- Der Grund steht am Vorgang selbst und nicht nur in einer Notiz: Er -- entscheidet mit, welcher Absagetext erzeugt wird, und man will später -- auswerten können, WORAN Anfragen scheitern (kein Budget? kein -- Zeitfenster?). In Fließtext vergraben ginge das nicht. -- --------------------------------------------------------------------- ALTER TABLE wd_anfragen ADD COLUMN ablehnung_grund TEXT; ALTER TABLE wd_anfragen ADD COLUMN ablehnung_am TEXT; -- Ob die Absage tatsächlich verschickt wurde. Getrennt vom Grund, weil -- beides verschiedene Dinge sind: Man kann intern ablehnen, ohne zu -- schreiben — und dann muss man sehen, dass der Mensch noch wartet. ALTER TABLE wd_anfragen ADD COLUMN absage_gesendet_am TEXT; -- Zwei Wege führen von einer Anfrage zum Projekt, und beide sollen -- schnell auffindbar sein: vom Projekt zur Anfrage (Spalte anfrage_id, -- gibt es schon) und umgekehrt. CREATE INDEX IF NOT EXISTS idx_wd_projekte_anfrage ON wd_projekte (anfrage_id); CREATE INDEX IF NOT EXISTS idx_wd_projekte_termin ON wd_projekte (termin_am);