Aufgaben
Aufgaben definieren geplante Arbeiten mit spezifischen Ressourcenanforderungen und geografischen Standorten. Aufgaben verwenden den Versions-/Commit-Workflow für kollaborative Offline-Planung und Rollback-Fähigkeit.
Aufgabenstruktur
Aufgabenseite zeigt geplante Arbeiten mit Fortschrittsverfolgung und Mehrfach-Ressourcenanforderungen
Grundlegende Felder:
- Name - Beschreibender Aufgabenname
- Beschreibung - Detaillierte Arbeitsanweisungen
- Geometrie - Punkt, Linie oder Polygon zeigt Arbeitsstandort
- Auftrag - Übergeordnete Arbeitsauftragsgruppierung verwandter Aufgaben
- Ressourcen - Array der erforderlichen Materialien/Arbeitskräfte (Mehrfach-Ressourcen-Unterstützung)
Ressourcenanforderungen: Jeder Ressourceneintrag enthält:
resource- Ressourcendefinitionsreferenzvolume- Erforderliche Menge/Betraguom- MaßeinheitassignedTo- Person, die für die Beschaffung oder Ausführung dieser Ressourcenzeile verantwortlich ist
Beispiel:
Aufgabe: "Netzwerk-Verbindungskasten in Gebäude 42 installieren"
Geometrie: Punkt (lat: 40.7128, lng: -74.0060)
Ressourcen: [
{ resource: "Verbindungskasten", volume: 1, uom: "Einheiten" },
{ resource: "Cat6-Kabel", volume: 15, uom: "Meter" },
{ resource: "Montageschrauben", volume: 8, uom: "Einheiten" },
{ resource: "Elektriker", volume: 2, uom: "Stunden" }
]
Mehrfach-Ressourcen-Aufgaben
Vorheriges System: Eine Ressource pro Aufgabe
- Problem: Komplexe Arbeit erzeugt übermäßige Kartenmarkierungen
- Beispiel: 100 Installationen × 4 Ressourcen = 400 Kartempunkte
Aktuelles System: Mehrere Ressourcen pro Aufgabe
- Lösung: Einzelne Kartenmarkierung repräsentiert vollständige Arbeit
- Gleiches Beispiel: 100 Kartempunkte (einer pro Installation)
- Sauberere Karte, einfachere räumliche Planung
Vorteile:
- Reduzierte Kartenunübersichtlichkeit
- Gruppierte verwandte Materialien (Tür + Schrauben + Klebstoff = eine Aufgabe)
- Fortschritt über alle Ressourcen verfolgt
Zuweisung pro Ressource
Jede Ressourcenzeile einer Aufgabe kann einer bestimmten Person zugewiesen werden. So können Planer festlegen, wer für die Beschaffung eines bestimmten Materials oder die Ausführung einer bestimmten Arbeitskomponente verantwortlich ist – auf Zeilenebene, nicht nur auf Auftragsebene.
Funktionsweise der Zuweisung:
- In der Aufgabendetailansicht besitzt jede Ressourcenzeile eine Spalte Zugewiesen an
- Die Spalte erscheint automatisch, sobald mindestens eine Zeile der Aufgabe eine Zuweisung trägt; bei Berichts- und anderen Datensatztypen, bei denen Zuweisungen nicht relevant sind, bleibt sie ausgeblendet
- Die Zuweisung einer Person zu einer Ressourcenzeile reserviert keinen Bestand – sie dokumentiert, wer den Artikel voraussichtlich abholt und anliefert
- Der tatsächliche Abholstatus (wer hat wie viel wann abgeholt) wird über das Transaktionsprotokoll erfasst, nicht in der Aufgabe selbst
Warum auf Ressourcenebene verfolgen?
Arbeitsaufträge fassen viele Aufgaben zusammen und weisen sie Personen zu, können aber Dutzende von Ressourcenzeilen über zahlreiche Aufgaben umfassen. Die Zuweisung auf Ressourcenebene schließt diese Lücke: Ein Planer kann beispielsweise festlegen: „Alice beschafft die 50 m Leerrohr für diese Aufgabe, Bob übernimmt die Verteilerdosen." Jede Person erhält eine fokussierte Ansicht genau der Artikel, die sie beschaffen muss – ohne Unklarheit darüber, wer für welchen Artikel verantwortlich ist.
Benachrichtigung „Zuweisungen senden":
Nachdem die Ressourcenzuweisungen festgelegt wurden, versendet die Aktion Zuweisungen senden auf der Aufgabenseite Benachrichtigungen an alle zugewiesenen Personen. Jede Person erhält eine einzige kombinierte Nachricht mit allen ihren Arbeitsaufträgen (Name, Fälligkeitsdatum, Link) sowie einen QR-Code pro zugewiesener Ressourcenzeile. Der QR-Code dient als Abholberechtigung – der Mitarbeiter scannt ihn im Lager, um seinen spezifischen Artikel zu entnehmen. Die Abholung wird beim Scan automatisch als Transaktion erfasst.
Die Aktion „Zuweisungen senden" steht sowohl als Zeilenaktion für einzelne Aufgaben als auch als Massenoperation zur Verfügung, wenn mehrere Aufgaben in der Tabelle ausgewählt sind.
Aufgaben Sind Versioniert
Im Gegensatz zu Zuweisungen/Berichten verwenden Aufgaben den Versions-/Commit-Workflow:
Warum Versioniert:
- Admins entwerfen Arbeitsbereiche offline (U-Bahn-Tunnel, entfernte Standorte)
- Räumliche Konflikterkennung erforderlich (überlappende Geografie)
- Stapeloperationen üblich (gesamte Kampagne neu gestalten)
- Rollback wertvoll (gesamte Planungsänderung rückgängig machen)
Workflow:
- Version erstellen (Entwurfsmodus)
- Aufgaben im Entwurf hinzufügen/bearbeiten
- Räumliche Validierung (auf Überlappungen prüfen)
- Version committen → Aufgaben werden "offiziell"
- Arbeiter sehen committete Aufgaben in Zuweisungen
Offline-Zusammenarbeit: Mehrere Admins können separate Versionen erstellen:
- Admin A: Aufgaben für Nordregion planen
- Admin B: Aufgaben für Südregion planen
- Beide arbeiten offline, committen später
- Konfliktlösung bei überlappender Geografie
Aufgabengeometrie-Typen
Punkt-Aufgaben
Arbeit an einem einzelnen Standort (Geräteinstallation, Inspektion).
Beispiel: Verbindungskasten installieren
Geometrie: { type: "Point", coordinates: [lng, lat] }
Linien-Aufgaben
Lineare Arbeit (Kabelverlegung, Pipeline-Installation).
Beispiel: 500m Glasfaserkabel verlegen
Geometrie: { type: "LineString", coordinates: [[lng1,lat1], [lng2,lat2], ...] }
Polygon-Aufgaben
Flächenbasierte Arbeit (Abdeckungszonen, Servicebereiche).
Beispiel: Tür-zu-Tür-Arbeit im Stadtteil
Geometrie: { type: "Polygon", coordinates: [[[lng1,lat1], ...]] }
Näherungsfilterung
Aufgaben nahe bestimmter Standorte finden:
Anwendungsfall: Arbeiter im Lagerhaus möchte nahegelegene Aufgaben
- Aufgabenseite öffnen
- "In der Nähe filtern"-Button klicken
- Kartenmarkierung zum Lagerhausstandort ziehen
- Entfernung festlegen (z.B. 5km)
- Tabelle zeigt nur Aufgaben innerhalb des Radius
Backend-Implementierung:
- MongoDB
$geoWithin-Abfrage mit$centerSphere - Verwendet 2dsphere-Index auf Geometriefeld
- Schnelle räumliche Filterung auch bei tausenden Aufgaben
Zeilenaktion: "In der Nähe filtern" auf Aufgabenzeile klicken → automatisch Näherung zu diesem Aufgabenstandort festlegen
Aufgabenverwendung in Zuweisungen
Aufgaben erscheinen in Zuweisungen als verfügbare Arbeitsoptionen:
Flexible Zuweisung:
- Zuweisung könnte 10 verfügbare Aufgaben haben
- Ressourcenziele erfordern Abschluss von 1-2 dieser Aufgaben
- Arbeiter wählt aus, welche Aufgaben abzuschließen (Flexibilität)
- Überzuweisung um 10x üblich (mehr Optionen als Ziele)
Beispiel:
Zuweisung an John:
Ressourcenziele: 50m Kabel, 20 Verbindungskästen
Verfügbare Aufgaben: [Aufgabe1, Aufgabe2, Aufgabe3, ... Aufgabe30]
John schließt ab:
Aufgabe 5: 30m Kabel, 12 Verbindungskästen
Aufgabe 12: 20m Kabel, 8 Verbindungskästen
Gesamt: Kabelziel erreicht, Verbindungskastenziel erreicht
Arbeiter hatte 30 Aufgabenoptionen, um Ziele zu erreichen - hohe Flexibilität.
Aufgaben-Fortschrittsverfolgung
Berechnung: Fortschritt = Durchschnittlicher Abschluss über alle Ressourcen
Beispiel:
Aufgabe mit 3 Ressourcen:
- Cat6-Kabel: 10m erforderlich, 5m abgeschlossen = 50%
- Schrauben: 8 erforderlich, 8 abgeschlossen = 100%
- Arbeit: 2 Stunden erforderlich, 0 Stunden berichtet = 0%
Gesamtfortschritt = (50% + 100% + 0%) / 3 = 50%
Visuelle Indikatoren:
- Fortschrittsbalken: Grün ≥100%, Gelb ≥50%, Rot <50%
- Geometrie-Indikator: Grünes Häkchen wenn gültiger Punkt/Linie/Polygon
- Verwendet in: Zeigt welche Zuweisungen/Berichte diese Aufgabe referenzieren
Aufgaben Erstellen
Erforderlicher Zugriff: tasksCreate Admin-Recht
Workflow:
- Zu Fulfillment → Aufgaben navigieren
- Neue Version erstellen (oder bestehenden Entwurf bearbeiten)
- "Aufgabe hinzufügen" in Version klicken
- Grundlegende Informationen ausfüllen (Name, Beschreibung)
- Auftrag auswählen (übergeordnete Gruppierung)
- Karte anklicken, um Geometrie festzulegen
- Ressourcen hinzufügen (mehrere möglich)
- Aufgabe im Entwurf speichern
- Version committen, wenn Planung abgeschlossen
Bewährte Praktiken:
- Verwandte Materialien in einer Aufgabe gruppieren (reduziert Kartenunübersichtlichkeit)
- Konsistente Benennung verwenden (z.B. "Installieren - Verbindungskasten - Gebäude 42")
- Realistische Ressourcenvolumina festlegen (informiert Bestandsplanung)
- Arbeitsressourcen einbeziehen (hilft bei Personalkalkulationen)
Massen-Aufgabenerstellung
Viele ähnliche Aufgaben effizient erstellen:
Szenario: 100 Verbindungskästen in verschiedenen Gebäuden installieren
Methode 1: Aus GeoJSON importieren
- GeoJSON mit 100 Punkten erstellen
- Jedes Feature hat Eigenschaften: Name, Beschreibung, Ressourcen
- Importieren → erstellt 100 Aufgaben in einer Version
Methode 2: Aus Kartenauswahl generieren
- 100 bestehende Gebäude-Features auf Karte auswählen
- "Aufgaben generieren" klicken
- Aufgabenvorlage wählen (Ressourcenanforderungen)
- Erstellt Aufgabe an jedem Gebäude-Standort
Methode 3: Bestehende Aufgabe kopieren
- Aufgabe mit korrekter Ressourcenkonfiguration auswählen
- "Aufgabe duplizieren" klicken
- Geometrie zu neuem Standort bearbeiten
- Für ähnliche Installationen wiederholen
Stapeldruck für Aufgaben
Ein Projekt kann Dutzende oder Hunderte von Aufgaben enthalten. Anstatt jede einzeln von ihrer Detailseite zu drucken, verwenden Sie die projektweite Aktion Alle Aufgaben drucken:
- Die Detailseite des übergeordneten Projekts öffnen (
/fulfillment/projects/:id) - Im Header auf Alle Aufgaben drucken klicken
- Die Stapeldruckansicht öffnet sich unter
/fulfillment/tasks/batch/[ids]— eine kommagetrennte Liste von Aufgaben-IDs in der URL - Die Ansicht zeigt 10 Aufgaben pro Seite (seitenweise, CSS-gesteuert — alle Datensätze sind im DOM, sodass beim Drucken alles ausgegeben wird)
- Die Seite drucken — jede Aufgabe ist durch einen Seitenumbruch getrennt, sodass pro gedruckter Seite eine Aufgabe erscheint
Hinweise:
- Sicherheitsobergrenze: Die Stapelansicht ist auf 200 Aufgaben pro Druckvorgang begrenzt. Wenn das Projekt diese Anzahl überschreitet, erscheint ein Banner und Aufgaben jenseits von 200 werden abgeschnitten — teilen Sie den Druckvorgang in kleinere Stapel auf, wenn nötig.
- Es ist keine neue Serverarbeit erforderlich — die Stapelansicht liest den vorhandenen Endpunkt
/api/tasks/get?_id=csvund rendert jede Aufgabe mit denselbenRecordDetail*-Komponenten wie die einzelne Aufgabenseite, sodass der gedruckte Inhalt dem entspricht, was Sie beim Einzeldruck erhalten würden.
Aufgabenvalidierung
Vor Versionscommit validiert das System:
Räumliche Konflikte:
- Überlappende Polygone (zwei Aufgaben decken denselben Bereich ab)
- Punkt-Aufgaben zu nah beieinander (konfigurierbarer Schwellenwert)
- Linien-Aufgaben kreuzen eingeschränkte Zonen
Ressourcenverfügbarkeit:
- Warnung wenn erforderliche Ressourcen nicht im Bestand
- Blockiert Commit nicht (Aufgaben können zukünftig datiert sein)
- Hilft bei Beschaffungsplanung
Geometrievalidität:
- Punkte müssen gültige Koordinaten haben
- Linien müssen mindestens 2 Punkte haben
- Polygone müssen geschlossen sein (erster Punkt = letzter Punkt)
Aufgaben-Zuweisungs-Lebenszyklus
Typischer Ablauf:
- Planung - Admin erstellt Aufgaben in Entwurfsversion
- Commit - Version committet, Aufgaben werden offiziell
- Zuweisung - Aufgaben zu Arbeiterzuweisungen hinzugefügt (availableTasks-Array)
- Ausführung - Arbeiter schließt einige der verfügbaren Aufgaben ab
- Berichterstattung - Arbeiter referenziert taskRef in Bericht workCompleted
- Fortschritt - Aufgabenfortschritt basierend auf abgeschlossener Arbeit aktualisiert
- Abschluss - Wenn alle Ressourcen bei 100%, Aufgabe als abgeschlossen markiert
Aufgabenwiederverwendung: Aufgaben können in mehreren Zuweisungen erscheinen:
- Gleiche Aufgabe mehreren Arbeitern zugewiesen (Arbeit teilen)
- Aufgabe teilweise von einem Arbeiter abgeschlossen, von einem anderen fertiggestellt
- Fortschritt über alle Berichte aggregiert
Aufgabendetails Anzeigen
Aufgabendetail-Seite Zeigt:
- Grundlegende Informationen und Geometrie
- Ressourcenanforderungsliste
- Fortschrittsbalken und Prozentsatz
- Verwendet in: Zuweisungen und Berichte, die diese Aufgabe referenzieren
- Versionshistorie (welche Versionen diese Aufgabe modifizierten)
- Räumliche Beziehung zu nahegelegenen Aufgaben
Kartenansicht:
- Farbkodiert nach Fortschritt (rot = nicht begonnen, gelb = teilweise, grün = abgeschlossen)
- Geometrietyp-Indikatoren (Icon für Punkt, Linienstil, Polygonfüllung)
- Anklickbar für schnelles Detail-Popup
- Filterbar nach Auftrag, Fortschritt, Näherung