# Nur die Web-App. Der Detector läuft auf dem Host, wo die Rechenleistung ist
# und wo die Kamera im selben Netz hängt — er gehört nicht in diesen Container.
FROM python:3.13-slim

WORKDIR /app

# gettext fuer 'compilemessages' weiter unten. Die .mo-Dateien sind
# Bauartefakte und liegen nicht im Repo; ohne diesen Schritt fiele die
# englische Fassung stillschweigend auf die deutschen Texte zurueck.
RUN apt-get update \
 && apt-get install -y --no-install-recommends gettext \
 && rm -rf /var/lib/apt/lists/*

COPY requirements-web.txt .
RUN pip install --no-cache-dir -r requirements-web.txt

COPY web/ ./
# Der Artenkatalog wird von 'seed_dex' importiert.
#
# 🔴 Hier stand bis zum 09.10.2026 nur species_de.py — und damit hat jede
# frisch aufgesetzte Instanz **44 Arten ohne Steckbriefe** bekommen statt der
# 148, die README und Oberfläche nennen. seed_dex meldete das sogar
# ("Keine Steckbriefe gefunden"), nur hat es nie jemand gelesen: Die laufende
# Instanz wurde beim Umzug 1:1 kopiert und nie aus diesem Image geseedet.
#
# 🔑 Deshalb kommen alle fünf Datenquellen mit, in derselben Reihenfolge, in
# der seed_dex sie sucht:
#   species_de.py       44 heimische Gartenvögel, dazu die Seltenheitsstufen
#   species_extra.py    der Rest auf 148
#   species_info.py     Steckbriefe
#   species_info_en.py  dieselben auf Englisch
#   profiles/           die ausführlichen Zusätze
#
# Nach wie vor NICHT der ganze Detector: Alles hier ist reine Stdlib
# (dataclasses), zusammen 280 KB. classify.py und Konsorten bräuchten numpy
# und LiteRT und haben in diesem Bild nichts verloren.
COPY detector/__init__.py \
     detector/species_de.py \
     detector/species_extra.py \
     detector/species_info.py \
     detector/species_info_en.py \
     /app/detector/
COPY detector/profiles/ /app/detector/profiles/

# Uebersetzungen binaer erzeugen. Zur Bauzeit, nicht beim Start: sie aendern
# sich nur mit dem Code.
RUN python manage.py compilemessages

COPY entrypoint.sh .
RUN chmod +x entrypoint.sh

EXPOSE 8000

CMD ["./entrypoint.sh"]
