iOS-App angefangen; Import-Modi; MHD-Formatierung; Gebinde in Ablauf-Ansichten
iOS (neu, ios/):
- SwiftUI-App: Login (Server + Keychain-Token), Kamera-Scanner (EAN/UPC/Code128),
Einlagern mit mehreren Chargen und eigenem MHD, Auslagern mit Chargenauswahl
oder FEFO, Artikelsuche, Anlegen mit Open-Food-Facts-Vorbefuellung.
- Home-Screen-Shortcuts: Schnellaktionen (langer Druck) und URL-Schema
projectgood://checkin | ://checkout fuer eigene Symbole via Kurzbefehle.
- project.yml (XcodeGen) + README mit Build-Anleitung. NICHT kompiliert - auf
diesem Rechner ist kein Xcode vorhanden.
Import-Modi (wie besprochen sinnvoll):
- add (Standard, nichts loeschen), replace_listed (Bestaende der in der Datei
genannten Produkte ersetzen - fuer Inventur), replace_all (alles ersetzen).
Geleerte Bestaende werden als Korrektur-Bewegung protokolliert; die Oberflaeche
fragt bei den zerstoerenden Modi nach.
Anzeige:
- "Bald ablaufend"/"Abgelaufen" zeigen jetzt das Gebinde ("1 Glas") mit der
Basiseinheit klein darunter (ExpiringItem liefert die Einheiten mit).
- MHD als Zeitspanne mit korrektem Numerus: "in 3 Tagen", "in 1 Woche",
"vor 2 Wochen", dazu heute/morgen/gestern.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
74
ios/README.md
Normal file
74
ios/README.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# Project-Good – iOS-App
|
||||
|
||||
Native SwiftUI-App zum Ein- und Auslagern per Barcode-Scan. Sie spricht dieselbe
|
||||
REST-API wie die Web-Oberfläche.
|
||||
|
||||
> **Stand:** Erste lauffähige Fassung (Login, Scanner, Einlagern mit mehreren
|
||||
> Chargen/MHDs, Auslagern mit Chargenauswahl, Artikel anlegen aus Open Food Facts).
|
||||
> Sie wurde bisher **nicht in Xcode kompiliert** – auf dem Entwicklungsrechner ist
|
||||
> kein macOS/Xcode vorhanden. Rechne beim ersten Build mit Kleinigkeiten.
|
||||
|
||||
## Projekt in Xcode öffnen
|
||||
|
||||
### Variante A – mit XcodeGen (empfohlen)
|
||||
```bash
|
||||
brew install xcodegen
|
||||
cd ios
|
||||
xcodegen generate
|
||||
open ProjectGood.xcodeproj
|
||||
```
|
||||
`project.yml` beschreibt das Projekt vollständig (Bundle-ID, Info.plist,
|
||||
Shortcuts, URL-Schema).
|
||||
|
||||
### Variante B – ohne XcodeGen
|
||||
1. Xcode → *File ▸ New ▸ Project…* → **App**, Interface **SwiftUI**, Sprache **Swift**
|
||||
2. Produktname `ProjectGood`, Bundle-ID z. B. `com.scarriffle.projectgood`
|
||||
3. Die von Xcode erzeugte `ContentView.swift` und `…App.swift` löschen
|
||||
4. Den Ordner `Sources/` per Drag & Drop ins Projekt ziehen („Copy items if needed")
|
||||
5. In den Target-Einstellungen die mitgelieferte `Sources/Info.plist` als Info.plist setzen
|
||||
(*Build Settings ▸ Info.plist File*) und *Generate Info.plist File* auf **No** stellen
|
||||
|
||||
## Auf dem iPhone installieren
|
||||
1. iPhone per Kabel verbinden, in Xcode als Ziel auswählen
|
||||
2. *Signing & Capabilities* → dein Apple-Developer-Team wählen
|
||||
3. ▶︎ Run. Beim ersten Start auf dem iPhone unter
|
||||
*Einstellungen ▸ Allgemein ▸ VPN & Geräteverwaltung* dem Entwickler vertrauen
|
||||
|
||||
## Erste Schritte in der App
|
||||
Beim Start nach der Server-Adresse fragen lassen, z. B. `http://192.168.1.50:8080`
|
||||
(dieselbe Adresse wie im Browser), dann mit deinem Benutzer anmelden. Adresse und
|
||||
Token bleiben gespeichert – das Token liegt im Keychain.
|
||||
|
||||
## Home-Screen-Shortcuts
|
||||
Es gibt zwei Wege direkt in den Scan-Bildschirm:
|
||||
|
||||
**Schnellaktionen** – langer Druck auf das App-Symbol zeigt „Einlagern" und
|
||||
„Auslagern" (funktioniert ohne weitere Einrichtung).
|
||||
|
||||
**Eigene Symbole auf dem Home-Bildschirm** – über die Apple-App *Kurzbefehle*:
|
||||
1. Kurzbefehle ▸ **+** ▸ Aktion *URL öffnen*
|
||||
2. URL `projectgood://checkin` (bzw. `projectgood://checkout`) eintragen
|
||||
3. Kurzbefehl benennen, dann ▸ *Zum Home-Bildschirm hinzufügen*
|
||||
|
||||
Beide Wege öffnen die App **direkt in der Kamera**.
|
||||
|
||||
## Aufbau der Quellen
|
||||
| Datei | Inhalt |
|
||||
|---|---|
|
||||
| `ProjectGoodApp.swift` | App-Einstieg, Schnellaktionen, URL-Schema |
|
||||
| `Session.swift` | Server-Adresse (UserDefaults) und Token (Keychain) |
|
||||
| `APIClient.swift` | REST-Aufrufe gegen `/api/...` |
|
||||
| `Models.swift` | Codable-Typen passend zu `backend/app/schemas.py` |
|
||||
| `ScannerView.swift` | Kamera + Barcode-Erkennung (EAN-8/13, UPC-E, Code128, QR) |
|
||||
| `RootView.swift` | Startbildschirm und Routing |
|
||||
| `LoginView.swift` | Server + Anmeldung |
|
||||
| `CheckInView.swift` / `CheckInFormView.swift` | Scan → Menge, mehrere Chargen mit MHD |
|
||||
| `CheckOutView.swift` | Scan → Menge, Chargenauswahl oder FEFO |
|
||||
| `ProductViews.swift` | Artikelsuche und Anlegen (mit OFF-Vorbefüllung) |
|
||||
|
||||
## Noch offen
|
||||
- Einkaufsliste und „bald ablaufend" in der App
|
||||
- Gruppenauswahl beim Anlegen (aktuell wird die Gruppe aus dem gescannten
|
||||
EAN-Code übernommen, falls hinterlegt)
|
||||
- Push-Benachrichtigungen bei ablaufenden Produkten
|
||||
- App-Icon
|
||||
Reference in New Issue
Block a user