Files
duffyduckandClaude Opus 5 807b7ce541 BauDoc Bahn: Baustellen- und Dokumentenverwaltung für EIU-Projekte
Erstimport. Fachliche Grundlage ist die EIU-Ablagestruktur des Auftraggebers
(2-EIU-Ablagestruktur.xlsx): 1.106 Zeilen, aufbereitet zu 159 Ordnern und
944 Soll-Unterlagen mit Fachbereichsrelevanz, Aufbewahrungsfrist, Medium und
Übergabezeitpunkt.

Module
- Dokumentationsstand: Soll-Ist je Projekt, Fristen aus dem Übergabezeitpunkt
  und den Projektterminen, Ampel, CSV-Rückexport im Format der Ursprungsdatei
- Dokumentenmanagement mit Versionen, Freigabelauf, SHA-256-Prüfsummen
- Bautagebuch nach Ril 809.0301, nach Abschluss gesperrt
- Meldungen und Mängel (Behinderung, Bedenken, Mangel, AvL, Unfall)
- Verträge, Nachträge, Aufmaße, Stundenlohnzettel mit zeilenweiser Anerkennung
- Rechnungsprüfung: automatischer Abgleich gegen Vertrag, anerkanntes Aufmaß,
  bestätigte Stundenzettel und Vorrechnungen; getrennte Bescheinigung
  sachlich richtig / rechnerisch richtig / Zahlungsfreigabe
- Kommunikation mit Projektkanälen, Erwähnungen und E-Mail-Benachrichtigung
- Revisionssicheres Protokoll aller Vorgänge

Rechte
Rollen nach dem Vorgabeprozess Bauüberwachung (PL, BHV, BÜB, FBÜ,
kaufmännische Steuerung, Planung, Auftragnehmer, Prüfer, Betreiber), Zuordnung
je Projekt. Auftragnehmer sehen ausschließlich Daten der eigenen Firma; diese
Schranke hängt allein an der Rolle. Welche Bereiche ihnen überhaupt angezeigt
werden, entscheidet der Bauherr je Projekt über Schalter in den Einstellungen.

Betrieb
Docker Compose mit Anwendung, PostgreSQL und Mailpit. Keine Named Volumes –
alle persistenten Daten liegen als Bind-Mount unter data/ im Compose-
Verzeichnis, damit ein Backup ein Kopiervorgang bleibt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 13:05:09 +02:00

38 lines
1.1 KiB
Docker

FROM node:22-alpine AS base
RUN apk add --no-cache openssl tzdata
ENV TZ=Europe/Berlin
WORKDIR /app
# ---- Abhängigkeiten ----
FROM base AS deps
COPY package.json package-lock.json* ./
RUN npm install --no-audit --no-fund
# ---- Build ----
FROM base AS builder
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
RUN npx prisma generate && npm run build
# ---- Laufzeit ----
FROM base AS runner
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV STORAGE_DIR=/app/storage
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/prisma ./prisma
# Der Seed nutzt dieselbe Fachlogik wie die Anwendung (src/lib/projekte).
COPY --from=builder /app/src ./src
COPY --from=builder /app/tsconfig.json ./tsconfig.json
COPY --from=builder /app/package.json ./package.json
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/docker-entrypoint.sh && mkdir -p /app/storage
EXPOSE 3000
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["npm", "run", "start"]