Aptli

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 - Ressourcendefinitionsreferenz
  • volume - Erforderliche Menge/Betrag
  • uom - Maßeinheit
  • assignedTo - 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:

  1. Version erstellen (Entwurfsmodus)
  2. Aufgaben im Entwurf hinzufügen/bearbeiten
  3. Räumliche Validierung (auf Überlappungen prüfen)
  4. Version committen → Aufgaben werden "offiziell"
  5. 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

  1. Aufgabenseite öffnen
  2. "In der Nähe filtern"-Button klicken
  3. Kartenmarkierung zum Lagerhausstandort ziehen
  4. Entfernung festlegen (z.B. 5km)
  5. 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:

  1. Zu Fulfillment → Aufgaben navigieren
  2. Neue Version erstellen (oder bestehenden Entwurf bearbeiten)
  3. "Aufgabe hinzufügen" in Version klicken
  4. Grundlegende Informationen ausfüllen (Name, Beschreibung)
  5. Auftrag auswählen (übergeordnete Gruppierung)
  6. Karte anklicken, um Geometrie festzulegen
  7. Ressourcen hinzufügen (mehrere möglich)
  8. Aufgabe im Entwurf speichern
  9. 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

  1. GeoJSON mit 100 Punkten erstellen
  2. Jedes Feature hat Eigenschaften: Name, Beschreibung, Ressourcen
  3. Importieren → erstellt 100 Aufgaben in einer Version

Methode 2: Aus Kartenauswahl generieren

  1. 100 bestehende Gebäude-Features auf Karte auswählen
  2. "Aufgaben generieren" klicken
  3. Aufgabenvorlage wählen (Ressourcenanforderungen)
  4. Erstellt Aufgabe an jedem Gebäude-Standort

Methode 3: Bestehende Aufgabe kopieren

  1. Aufgabe mit korrekter Ressourcenkonfiguration auswählen
  2. "Aufgabe duplizieren" klicken
  3. Geometrie zu neuem Standort bearbeiten
  4. 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:

  1. Die Detailseite des übergeordneten Projekts öffnen (/fulfillment/projects/:id)
  2. Im Header auf Alle Aufgaben drucken klicken
  3. Die Stapeldruckansicht öffnet sich unter /fulfillment/tasks/batch/[ids] — eine kommagetrennte Liste von Aufgaben-IDs in der URL
  4. Die Ansicht zeigt 10 Aufgaben pro Seite (seitenweise, CSS-gesteuert — alle Datensätze sind im DOM, sodass beim Drucken alles ausgegeben wird)
  5. 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=csv und rendert jede Aufgabe mit denselben RecordDetail*-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:

  1. Planung - Admin erstellt Aufgaben in Entwurfsversion
  2. Commit - Version committet, Aufgaben werden offiziell
  3. Zuweisung - Aufgaben zu Arbeiterzuweisungen hinzugefügt (availableTasks-Array)
  4. Ausführung - Arbeiter schließt einige der verfügbaren Aufgaben ab
  5. Berichterstattung - Arbeiter referenziert taskRef in Bericht workCompleted
  6. Fortschritt - Aufgabenfortschritt basierend auf abgeschlossener Arbeit aktualisiert
  7. 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