- Go 89.7%
- CSS 9.2%
- Shell 1.1%
| cmd/treework | ||
| internal | ||
| scripts | ||
| web | ||
| .gitignore | ||
| CHANGELOG.md | ||
| go.mod | ||
| go.sum | ||
| index.png | ||
| README.md | ||
| to-JzTQA5A.jpeg | ||
| to-XtREhYw.jpeg | ||
| wo-cover.jpeg | ||
| wo-mappicker.jpeg | ||
treework
Druckbare Arbeitsaufträge für die Obstbaumpflege. Für einen einzelnen Baum
(per treeid) wird ein A4-Bogen erzeugt mit Baum- und Standortdaten, einem
Erkennungsfoto, Kartenausschnitt sowie handschriftlich auszufüllenden Feldern
für Bearbeitung, Baummaße und eine verkürzte baumbezogene
Gefährdungsbeurteilung.
Die Baumdaten stammen ausschließlich über die offizielle, öffentliche
treedoc-API (https://app.treedoc.foxel.org/api/tree/v1). Gelesen wird
anonym; geschrieben wird nur beim Rapport (siehe unten), und dann
ausschließlich in treedocs Notiz- und TODO-Seitentabellen.
Standortdaten
Aus den Koordinaten des Baums abgeleitet (best-effort, jeweils gecacht):
- Plus Code (Open Location Code) — offline berechnet, als Kurzform mit Ortsanhang und Google-Maps-Link
- Nächster öffentlicher Weg — Overpass (
highway=*) - Anschrift — Nominatim Reverse-Geocoding
- Kartenausschnitt — OSM-Kacheln via go-staticmaps, mit Marker
Rapport (nach der Arbeitssitzung)
/wo/<id>/rapport ist die Erfassungstabelle zum Papierstapel: eine Zeile pro
Baum, in Blattreihenfolge, mit denselben Feldern wie der gedruckte Bogen —
Datum, Personen, Arbeitszeit, Baumhöhe, Kronendurchmesser, BHD, Stammlänge,
Auffälligkeit und Notiz. Datum und Personen sind pro Baum verschieden; „↓"
überträgt einen Wert in alle folgenden Zeilen.
Erfassen und Übertragen sind zwei Schritte:
- Speichern schreibt nur in treeworks eigene Datenbank. Das funktioniert auch, wenn treedoc gerade nicht erreichbar ist.
- An treedoc übertragen schreibt die Werte als Notizen an die Bäume (und bei „Unters." zusätzlich ein TODO) — mit dem OSM-Token der angemeldeten Person, die damit in treedoc als Urheber:in steht.
Was übertragen wurde, merkt sich treework pro Feld. Ein zweites Senden
korrigiert die vorhandenen Einträge (PATCH) statt neue anzulegen; ein
gelöschter Wert zieht die zugehörige Notiz wieder zurück. Der Versand ist
gedrosselt, weil treedoc 30 Schreibvorgänge pro Minute und Nutzer:in annimmt.
| Feld | Ziel in treedoc |
|---|---|
| Baumhöhe / Kronen-Ø / BHD / Stammlänge | Notiz Höhe / Kronendurchmesser / Stammumfang / Stammlänge mit Zahlenwert |
| Datum, Personen, Zeiten, Personenstunden | Notiz Arbeitszeit |
| Auffälligkeit | Notiz mit gewähltem Thema (Stamm, Krone, …) |
| „Unters." | zusätzlich ein TODO am Baum |
| Notiz | Notiz Sonstiges |
Starten
go run ./cmd/treework
# Bogen: http://localhost:8080/to/<treeid> z. B. /to/m4pdq
Konfiguration (Umgebungsvariablen)
| Variable | Default | Zweck |
|---|---|---|
TREEWORK_LISTEN |
:8080 |
Listen-Adresse |
TREEDOC_BASE_URL |
öffentliche treedoc-API | Basis-URL der Datenquelle |
NOMINATIM_USER_AGENT |
treework/0.1 … |
Pflicht-UA für Nominatim/Overpass |
GEO_CACHE_DIR |
(nur Speicher) | Verzeichnis für den Geo-Cache auf Platte |
Aufbau
| Pfad | Inhalt |
|---|---|
cmd/treework |
HTTP-Server, Routing, QR-Code |
internal/treedoc |
Client für die treedoc-API (Lesen anonym, Notizen/TODOs mit OSM-Token) |
internal/geo |
Plus Code, Overpass, Nominatim, Karte, Cache |
internal/workorder |
View-Modell (Baumdaten + Geo → Bogen) |
internal/rapport |
Rapport → treedoc-Notizen/TODOs, gedrosselte Übertragung |
internal/store |
Postgres: Workorders, Bäume, Rapporte, Übertragungs-Ledger |
web |
HTML-Template + Print-CSS |