diff --git a/CLAUDE.md b/CLAUDE.md index d5fa3a9..a3d3b06 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1521,6 +1521,25 @@ step into a project explicit. Everything lives in `public/js/auftrag.js`: system entirely — `loadAmpelColor()` returns `var(--red)` etc., so this view now also follows the app-wide dark-mode palette like everywhere else. + - **Aufwand im Aufgaben-Panel** (Eriks Wunsch „schöner darstellen“): + Kapsel mit −/+ (±1 h) und Einheit „Std.“, Schnellwahl 2 h / ½ Tag / + 1 Tag / 2 Tage / 1 Woche (Tage über `APP_SETTINGS.arbeitsstundenProTag`; + erneuter Klick leert), darunter die Umrechnung in Arbeitstage + (`todoAufwandAendern()`/`todoAufwandSetzen()`/`todoAufwandInfo()`, + `plan-modals.js`). Feld-id `todoEditAufwand` und Speichern unverändert. + Das Eingabefeld ist per `!important` durchsichtig, weil die Glas-Regeln + für Eingabefelder ihm sonst eine eigene Fläche geben. + - **„Externe Personen“ im Aufgaben-Panel** (Eriks Wunsch): unter „Wer“ + stehen oben die Projektbeteiligten als Chips, darunter der Abschnitt + „Externe Personen“ — Kollegen mit Konto, die dem Projekt NICHT + zugeordnet sind, über eine Auswahl nach Gewerk (`todoExterneSetzen()`, + `todoExternHinzufuegen()`/`todoExternEntfernen()` in `plan-modals.js`; + Quelle: Teilnehmerkreis der Sitzung ohne die Projektbeteiligten). Sie + landen ganz normal in `t.assignees` — damit zählen sie zu ihrer + Auslastung, erscheinen unter „Meine Aufgaben“, bekommen Glocke und + Teams-Nachricht. Wer einer Aufgabe zugewiesen ist, aber (nicht mehr) im + Projekt, erscheint beim Öffnen automatisch dort. Keine Daten­änderung + am Projekt: die Person wird NICHT unter „Beteiligte“ eingetragen. - **Aufgabe und Meilenstein als Seitenpanel** (Eriks Wahl „B“): `#todoModal` und `#milestoneModal` sind `.modal-bg.als-panel` — rechts am Rand, volle Höhe, Hintergrund nur leicht abgedunkelt, damit der @@ -4210,36 +4229,38 @@ kopieren, „In Outlook öffnen“ (`webcal:`-Link), Anleitung, „Neue Adresse Microsoft-Server aus dem Internet ab — dafür muss der Server von außen erreichbar sein. Das klassische Outlook am PC holt es im Firmennetz direkt. -## Teams: Nachricht bei neuen Aufgaben +## Teams: persönliche Nachricht bei neuen Aufgaben -Eriks Wunsch: Wird jemandem eine Aufgabe zugewiesen, erscheint in einem -Teams-Kanal eine Karte mit Link direkt auf die Aufgabe. -- **Einrichten:** In Teams im Kanal *Workflows* → „Beim Empfang einer - Webhook-Anfrage in einem Kanal posten“; die erzeugte https-Adresse unter - **Admin → Teams** eintragen (`loadAdminTeams()`, `js/admin/admin.js`, - Recht **`a.teams`**, neu im Katalog „Admin-Bereich“), „Testnachricht - senden“. Anleitung steht aufklappbar in der Karte. -- **Speicher:** Tabelle `integrationen` (schluessel/wert; `teams_webhook`, +Eriks Wunsch („nur persönlich“): Wird jemandem eine Aufgabe zugewiesen, +bekommt GENAU DIESE Person in Teams eine Nachricht im Chat mit dem Flow-Bot, +mit Link direkt auf die Aufgabe. Kein Kanal. +- **Einrichten in Teams** (Anleitung aufklappbar unter **Admin → Teams**): + leerer Workflow, Auslöser „Bei Empfang einer Teams-Webhookanforderung“ + (Jeder), Aktion „Karte in einem Chat oder Kanal veröffentlichen“ als + Flow-Bot im Chat mit Flow-Bot, Empfänger `triggerBody()?['empfaenger']`, + Karte `string(triggerBody()?['karte'])`. Die Auslöser-Adresse trägt ein + Admin in der App ein (`loadAdminTeams()`, Recht **`a.teams`**). Der + Workflow läuft unter dem Konto, das ihn anlegt (besser Sammelkonto/IT). +- **Was die App schickt:** je neu zuständiger Person `{empfaenger, karte}` — + `empfaenger` = `users.email` (muss dem Teams-Anmeldenamen entsprechen), + `karte` = Adaptive Card (`teamsKarte()`: „Neue Aufgabe für Sie: …“, + Projekt, Fällig/Zeitraum, Aufwand, Zugewiesen von, bei mehreren auch + Zuständig, Knopf „Aufgabe öffnen“). Ohne Konto/E-Mail keine Nachricht + (nur ein Log-Eintrag). Testnachricht geht an die E-Mail des Admins. +- **Speicher:** Tabelle `integrationen` (`teams_webhook`, `teams_neue_aufgaben`), bewusst NICHT `app_settings` (das darf jedes - Konto lesen) und nicht in `IMPORT_TABLES`. Die Adresse geht nie an den - Browser zurück — `GET /admin/teams` liefert nur `konfiguriert`/`host`. - `PUT /admin/teams {webhook?, neueAufgaben?}` (nur https), `POST - /admin/teams/test` (Fehler als `{ok:false}` mit HTTP 200). + Konto lesen) und nicht in `IMPORT_TABLES`; die Adresse geht nie an den + Browser zurück. Routen `GET`/`PUT /admin/teams`, `POST /admin/teams/test`. - **Auslöser:** `neueZuweisungenMelden()` (aus `/save-week` und - `/save-projects`, jetzt mit `req`) sammelt je Aufgabe die NEU Zuständigen - — auch Personen ohne Konto, nicht wer sich selbst zuweist, keine - Phasenbalken, nie die Sandbox — und `teamsNeueAufgaben()` schickt je - Aufgabe EINE Adaptive Card (`teamsKarte()`: Titel, Projekt, Zuständig, - Fällig/Zeitraum, Aufwand, Zugewiesen von, Knopf „Aufgabe öffnen“). Im - Hintergrund; Fehler nur im Log, das Speichern scheitert nie daran. + `/save-projects`, mit `req`) sammelt je Aufgabe die NEU Zuständigen — + nicht wer sich selbst zuweist, keine Phasenbalken, nie die Sandbox —, + `teamsNeueAufgaben()` sendet im Hintergrund; Fehler nur im Log. - **Link** (`aufgabenLink()`): `/Projektplan/?weekLabel=…&projNr=… - &aufgabe=#aufgaben`, Host aus der speichernden Anfrage (= Adresse - der App im Büro; funktioniert nur im Büronetz/VPN). Im Browser liest - `plan-state.js` `aufgabe` beim Laden (`startAufgabe`): öffnet die - JÜNGSTE Sitzung, falls der Link eine ältere nennt (Aufgaben-ids bleiben - beim Sitzungswechsel gleich), springt nach „Aufgaben“ und öffnet das - Aufgaben-Panel; Adresszeile wird nachgezogen. -- Braucht Internetzugang nach außen (Microsoft-Server). + &aufgabe=#aufgaben`, Host aus der speichernden Anfrage (nur im + Büronetz/VPN erreichbar). `plan-state.js` (`startAufgabe`) öffnet die + jüngste Sitzung, falls der Link eine ältere nennt, und dort das + Aufgaben-Panel; die Adresszeile wird nachgezogen. +- Braucht Internetzugang nach außen. ## Sitzungen nach Bedarf laden (`js/store.js`) diff --git a/public/App.html b/public/App.html index b86cf3b..b82c942 100644 --- a/public/App.html +++ b/public/App.html @@ -39,7 +39,7 @@ - +