# Anforderungen:

# features v2.x


**Standortanzeige**


Die App soll den Standort nur auf mobile devices abrufen, nicht auf PC.


Das Standort-Icons soll  immer sichtbar auf aktiviert sein, aber nur auf mobile devices


Das Standort icon soll die Hintergrundfarbe ändern, sobald es gecklickt wurd


Die Position des users gemäss letzter Standordabfrage wird mit eine roten Nadel (emoj) angezeigt, wenn "Standort Freigabe" gewählt ist


* Die Größe des Standort-Buttons is abhängig von der Displaybreite des Geräts gewählt werden (10% der Displaybreite).
* Das icon soll dem google standortpfeil ähneln.
* Beim Klick auf das Standort-Icon soll die Ansicht sofort aktualisiert werden, ohne Verzögerung.
* Die Ansicht muss nach erhalt der Standortdaten auf den Standort und Zoom-Level 17 gesetzt werden


**Clustering**

* Die POIs müssen als Cluster mit runden Ícon angezeigt werden, darin die Zahl der POIs
* Der Cluster soll als rotes oder grünes Symbol mit der Anzahl der POIs dargestellt werden, basierend darauf, ob Reinigung erforderlich ist.
* Die POIs werden als quadrate dargestellt,rotes oder grün basierend darauf, ob Reinigung erforderlich ist.


**Performance**

* Die Ansicht muss schnell und ohne Verzögerung aktualisiert werden, speziell nach klick auf das Standort Icon.


**App-Verhalten**

* Bein Start der App wird immer der Flughafen Neukölln als Standardstandort angezeigt, wenn "Standort Freigabe" nicht gewählt ist
* Bein Start der App wird immer der aktuelle  Standort angezeigt, wenn "Standort Freigabe" gewählt ist
* Das Standort-Icon und ergänzen-Icon werden getoggelt, wenn der Benutzer auf den Standort-Button klickt und "Standort Freigabe" gewählt ist.
* -> **es fehlen hinweise was der user machen soll, wenn der ortungsdienst geseperrt ist**
* beim Klick auf ein POI wird im info popup Vor- und Nachname, Geburstdatum, Straße und Hausnummer  und datum der letzten Reinigung angezeigt
* Abhängig von der Entfernung zum POI zeigt der Button "zum Markieren den Stolperstein aufsuchen" oder "Ist gereinigt"
* Beim Klick auf den "Ist gereinigt" Button wird das Reinigungsdatum aktualisert und das Popp geschlossen.
* Beim Klick auf ein Cluster werden die POI spiderfyed
* Beim Klick auf ein Cluster wird das Standort tracking, damit nicht ungewollt benachbarte Cluster geöffent werden
* Beim Klick auf die Karte bei pausiertem Standort tracking wird dieses wieder gestartet. Die spiderfy Ansicht wird automatisch geschlossen
* Ein POI wird grün angezeigt, wenn das Dateum der letzten Reinigung nicht älter als 3 Monate ist, sonst rot
* Ein Cluster wird grün angezeig, wenn all enthaltenen POI "grün " sind (s.o.)
* *Beim Start der App wird überprüft, von welchem Gerät sie aufgerufen wurd*e.**noch unnötig**
* 

## Stolperstein ergänzen

1. Adresse vorschlagen aufgr standort, nur strassenname wg ungenauigkeit des standorts
2. nach ergänzen der hausnummer wird gegen nominatim geprüft, bei mehrere einträgen kommt auswahlliste
3. bei einem einzigen eintrag oder nach auswahl, prüfen ob adresse in der nähe ides users ist
4. wenn ja, namensfelder anzeigen und speichern lassen. dabei prüfung gegen duplikate an exakt dieser adresse und ergänzen von updated_by und updated_at
5. (liste ähnlicher einträge an anderen Adressen habe ich erst mal entfernt -> das macht erst sinn mit der update funktion)
6. user kann mehrere steine können im dialog an einer adresse eingeben
7. nach "zurück" wird die karte neu gezeichent, um die neuen steine zu zeigen
8. aktuell der dialog als als popup mit eigener html seite gelöst, **nicht so schön**


## **Datenbank

* Aktuelle Daten der KoDb muss sich einfach verarbeiten lassen(spalte **url** als "pk  zu sein): updates(auf basis der url), inserts und deletes
* die datenhaltung und die regeln zur datenbereinigung im Konfiktfall sin d2 verschiedene Dinge
* Bei updates prüfen, ob es neue Steine sind ( -> url unbekannt). wenn ja, prüfen  ob  es schon "passende" korrektureinträge un den dummy eintrag upzudaten. Wenn nein, stein komplett insrerten.
* Regel zur Datenbereinigung: Daten, die von Experten oder durch Beweise ( Foto mit koordinaten, 4-augen-Bestätigung), haben Priorität/Autorität. Auch "abgelehnt" Daten werden gespeichert

| Vorname,Nachname,Geburtsjahr,LÃ¤ngengrad,Breitengrad,Straße,Hausnummer,Postleitzahl,Straße+Hausnummer,Ortsteil,Ortsteil-ID,Bezirk, Bezirk-ID, Virtueller-Stein,Url zu| Biografie                                                               |
|  Hedwig,"Abraham",1861,13.4105551,52.513028,"MÃ¤rkisches Ufer","20",10179,"MÃ¤rkisches Ufer 20",Mitte,62,Mitte,61,0,https://www.stolpersteine-berlin.de/biografie/1 |

+ Primary Key ist spalte **gid, ** kommt aus der stolperstein app (check: wird ev. von leaflet benötigt)
+ kernattribute für Stolperclean pro Stein sind last_cleaned und cleanded_by, aber sie machen keinen sinn ohne einen stein (->keine eigene tabelle).
+ die gid muss unique sein auch über die custom_ergänzungen
+ neue steine aufnehmen mit leer/dummy eintrag in haupttabelle und mit einem korrektur eintag:
+ korrrekturen für einen bestehenden eintrag in custom_update tabelle:
  + eine refrenenz auf dessen gid muss enthalten sein
  + cleaned by und last _cleaned sind hier tabu
  + es sollte updated_by dort stehen (besser noch als historie, oje).
  + Es braucht ein konzept, wann diese korrekturen gelöscht werden, weil die haupt-db updated wurde (zB abh. vom datum des update)
+ Auch an einem ergänzten Stein können korrekturen erfolgen
+ bei korrekturen zum stein mail an zuständige editoren senden
+ wenn korrekturen zu einem stein da sein, immer die letzte korrektur zeigen
+ wenn neue korrektur, immer die letzte korrektur als vorgabe nehmen


**use cases**


steindaten korrigieren: a) stein aus KoDb b) stein aus ergänzung


stein ergänzen: nur wenn key daten (name, gebdat) noch nicht erfasst wurden. Wenn der Stein in KoDb an einer anderen Adresse liegt, ist das eine änderung zu diesem anderen Stein)?
steps:

1. Adresse erfassen (Street, Hnr), püfen ob überhaupt vorhanden in berlin
2. wenn ja, unterbezirk ergänzen
   diese "kopfdaten" sind dann "fixiert" im dialog
3. Namen erfassen(VN,NN,gebDat),
   per button "Speichern": prüfen ob in KoDB ähnlich vorhanden(adresse egal)
4. wenn ja, daten anzeigen, user wählt welchen eintrag er ändern will
5. wenn nein, neuen eintrag in master_tab und zugeordenete in custom_tab rstellen

aa


es muss möglich sein, an dieser adresse einen stein für weitere personen zu ergänzen


stein aus KoDb ergänzen
wenn URl identisch,  dann update. -> was ist mit änderungen aus der custom _db zu diesem stein, bleiben sie erhalten? Ziel muss ein einheitlicher Sand sein, diskrepanzen müssen minimiert werden
Wenn URL=NULL und attribute in custom_Db sehr änlich oder ident (Datenabgleich!) -, dann die leeren felder udpaten


stein als entfernt markieren; das ist ein feld in der korrektur

**Felder der custom tabelle**

* user - text
* updated timestamp
* gid_ref
* status (deleted, beädigt, sehr verschmutzt)
* comment
* vn,nn,geb,str,hnr, bez,plz, lat,lon, url_wiki
* lage
* foto


# Migration

1. sicherung prod-> daten und sourcen
2. prüfe restore
3. anpassen datenstruktur stolpersteine
4. kopieren der sourcen auf prod
5. geniessen
