# Jarvis Produkt-Erkenner · FoodScan

MVP-Webseite im Jarvis-HUD-Stil für Verbraucher, die No-Name-/Eigenmarkenprodukte mit möglichen Markenprodukten vergleichen möchten.

## Funktionen

- Mobile Startseite mit Querformat-Cover
- Suche nach Produktname, Marke, Händler, Barcode oder EG-/Veterinärnummer
- Barcode-Kamera über `html5-qrcode` CDN
- Foto-Upload mit OCR über `Tesseract.js` CDN
- EG-/Veterinärnummer-Extraktion per Regex
- Live-Barcode-Abfrage über Open Food Facts API
- Seed-Datenbank als lokale Teststruktur
- Recherche-Leads für mögliche Marken-Zwillinge, bewusst unverifiziert markiert
- Evidence-HUD mit Match-Score, Preisvergleich und Warnhinweisen
- Lokales Produkt-Meldeformular über `localStorage`
- Vorbereitete MySQL-Struktur in `database/schema.sql`
- PHP-API-Stubs in `api/`

## Wichtige Einordnung

Identische EG-/Veterinärnummer oder gleiche Adresse bedeutet nicht automatisch, dass Rezeptur, Rohstoffqualität oder Charge identisch sind. Das Tool spricht deshalb von **Hinweisen**, **wahrscheinlichen Zwillingen** und **Evidenzstufen**.

## Deployment

1. Ordner auf den Webspace laden.
2. `index.html` öffnen.
3. Für Kamera/OCR muss die Seite über HTTPS laufen.
4. Für OCR und Barcode werden externe CDN-Dateien geladen. Ohne Internet bleibt die Textsuche und Lead-Datenbank aktiv.

## Nächste Backend-Stufe

- Upload-Endpunkt für Produktfotos
- Admin-Prüfung für gemeldete Produkte
- Import für BVL/BLtU/EU-Betriebslisten
- Open Food Facts Proxy mit Cache
- MySQL-Tabellen für Produkte, Betriebe, Firmen, Scans, Matches und Evidenz

## Version 2 Ergänzungen

- Login-/Registrierungsbereich im Jarvis-Stil
- Optionale PHP-API für die vorhandene Jarvis-User-Schicht
- Persönliches Allergieprofil mit EU-Hauptallergenen und eigenen Warnbegriffen
- Zutaten-Warnsystem für OCR-Texte und Open-Food-Facts-Produkte
- Markierung erkannter Begriffe in „Erkannte Zutaten & Nährwerte“
- Beobachtungsliste für Zusatzstoffe wie Süßstoffe, bestimmte Farbstoffe, Phosphate, Nitrit/Nitrat und Glutamate
- Tagesrichtwert-Orientierung für Salz, Zucker und gesättigte Fette
- Erweiterte MySQL-Tabellen für Profile, Inhaltsstoffregeln und erkannte Produktflags

## Login einrichten

1. `api/config.example.php` nach `api/config.local.php` kopieren.
2. Datenbankzugang eintragen.
3. In `auth.user_table` die bestehende Jarvis-User-Tabelle eintragen, wenn die vorhandene Account-Schicht genutzt werden soll.
4. `database/schema.sql` ausführen, um die Produkt-Erkenner-Tabellen zu ergänzen.
5. Registrierung ist offen: kein Code, kein Invite, keine Admin-Freischaltung.

Die bestehende User-Tabelle wird nicht neu erzeugt. Die Produkt-Erkenner-Erweiterung nutzt nur die User-ID für Profile und spätere Meldungen.

## Allergie- und Inhaltsstoffhinweis

Das System ist ein Warn- und Transparenzwerkzeug. Es ersetzt keine medizinische Beratung, keine Verpackungsprüfung und keine Rücksprache mit Ärztinnen, Ärzten oder Ernährungsfachkräften. OCR und offene Produktdaten können falsch oder unvollständig sein.


## Offene Registrierung

Version 2.2 nutzt offene Registrierung: Es wird kein Registrierungs-Code, kein geheimes Wort, kein Admin-Invite und keine Admin-Freischaltung benötigt. Neue Nutzer werden mit der Rolle `user`, Status `active` und ohne Admin-Rechte angelegt. Die bestehende Jarvis-User-Tabelle kann weiter genutzt werden.

Normale Sicherheitsregeln bleiben aktiv: Benutzername und E-Mail müssen eindeutig sein, gelöschte/gesperrte Accounts können sich nicht anmelden und Passwörter werden serverseitig verarbeitet.

## Version 2.2 Auth-Anpassung wie Rechnungszentrale

- Login-Anker ist jetzt `#auth`, passend zur Rechnungszentrale-Logik.
- Registrierung bleibt offen: kein geheimes Wort, kein Admin-Invite, keine Freischaltung.
- Neue Accounts werden immer als `role = user`, `status = active`, `admin = 0` angelegt.
- Der lokale Fake-Login wurde entfernt: Wenn der Server-Login fehlschlägt, wird kein lokaler User simuliert.
- Sicherheitsmaßnahmen ohne Registrierungsbegrenzung: Honeypot-Feld, Rate-Limit für Login/Registrierung, eindeutige E-Mail/Username, HttpOnly-Session-Cookie.
- Temporäre Rate-Limit-Dateien landen in `tmp/`; der Ordner enthält eine `.htaccess`-Sperre.

## Auth-Hotfix v2.3

Diese Version ist robuster für die bestehende Rechnungszentrale-ähnliche User-Schicht:

- `api/login.php` zeigt bei direktem Öffnen nun eine verständliche JSON-Statusmeldung statt nur `405 Method Not Allowed`.
- Login akzeptiert JSON und klassische Form-POSTs.
- Login-Feld akzeptiert `login`, `username` oder `email`.
- E-Mail-Abgleich ist case-insensitive.
- Session-Cookie wird auf den Projektpfad gesetzt.
- Nach Login werden zusätzliche Session-Keys für Jarvis-/Finance-Kompatibilität gesetzt.
- `api/auth_health.php` prüft DB-Verbindung, User-Tabelle, Spalten und aktive User, ohne Passwort-Hashes oder E-Mail-Daten auszugeben.

Diagnose nach Upload:

```text
https://jarvis-und-der-erdling.de/jarvis_product_erkenner/api/auth_health.php
```

Login-Seite:

```text
https://jarvis-und-der-erdling.de/jarvis_product_erkenner/#auth
```

## UX-Hotfix v2.4

- Nach erfolgreichem Login klappt der große `#auth`-Bereich automatisch ein, damit auf der Startseite mehr Platz bleibt.
- Ein kompaktes Account-HUD im Header zeigt Name und Modus (`Nutzerprofil aktiv` oder `Admin-Modus aktiv`).
- Abmelden ist direkt im Header möglich.
- Mobile Schnellnavigation unten ergänzt: Suche, Scan, Allergie, Treffer und Login/Profil.
- Mobile Touchflächen, Header, Cover, Suchchips und Panels wurden kompakter und besser bedienbar gemacht.
- Bei aktivem Login verweisen Login-Links automatisch auf das Allergieprofil statt erneut auf das Auth-Fenster.


## v3.0 Final Table View

Ergänzt wurde eine responsive Tabellenansicht für Produkte, Leads und Prüfstatus. Desktop nutzt ein HUD-Datenraster, Mobile nutzt Kartenlayout.

## v3.0.1 More Results + Magazin-/Testquellen

Diese Version basiert bewusst auf der guten v3.0 Final Table View und baut sie nicht zu v3.1 um. Ergänzt wurden:

- Produkt-Seed-Daten von 6 auf 36 Einträge erweitert.
- Recherche-Leads von 13 auf 33 Einträge erweitert.
- Quellenliste von 11 auf 22 Quellen erweitert.
- Neue Quellen-/Prüfsignale: Stiftung Warentest, ÖKO-TEST, Verbraucherzentralen, NDR, SWR/ARD, BR, MarkenDetektive, GS1 und BLtU.
- Grundpreislogik ergänzt: Ersparnis kann jetzt pro kg, Liter, Stück oder Waschladung angezeigt werden.
- Tabellenansicht zeigt mehr Produkt-/Lead-Treffer und bessere Preis-/Ersparnis-Texte.
- Einfacher Schnellzugriff auf Scan, Treffer, Prüfliste, Tabelle und Quellen.

Alle neuen Produktdaten sind weiterhin Seed-/Recherche-Daten und keine Tatsachenbehauptung. Vor Veröffentlichung müssen Verpackungsfoto, Barcode/EG-Nummer, Zutaten/Nährwerte, Preis und Quelle geprüft werden.
