feat(admin): implement pregnancy and birth management features
Some checks failed
Deploy to production / deploy (push) Failing after 2m6s

- Added new admin functionalities to force pregnancy, clear pregnancy, and trigger birth for characters.
- Introduced corresponding routes and controller methods in adminRouter and adminController.
- Enhanced the FalukantCharacter model to include pregnancy-related fields.
- Created database migration for adding pregnancy columns to the character table.
- Updated frontend views and internationalization files to support new pregnancy and birth management features.
- Improved user feedback and error handling for these new actions.
This commit is contained in:
Torsten Schulz (local)
2026-03-30 13:44:43 +02:00
parent b2591da428
commit c52d4b60f9
18 changed files with 628 additions and 160 deletions

View File

@@ -1,35 +1,33 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
TARGET_DIR="${1:?Zielverzeichnis fehlt: ./update-frontend.sh <z. B. /opt/yourpart-green>}"
FRONTEND_TARGET="$TARGET_DIR/frontend"
TARGET_DIR="${1:?target dir required}"
FRONTEND_DIR="$TARGET_DIR/frontend"
CURRENT_LINK="/opt/yourpart"
CURRENT_FRONTEND="$CURRENT_LINK/frontend"
echo "=== YourPart Frontend Update ==="
echo "Ziel: $FRONTEND_TARGET"
echo "Ziel: $FRONTEND_DIR"
echo "NOTE: .env files will NOT be overwritten"
# 1. Zum Frontend-Verzeichnis wechseln
cd frontend
cd "$FRONTEND_DIR"
# 2. Berechtigungen für dist-Verzeichnis korrigieren (falls vorhanden)
if [ -d "dist" ]; then
echo "Korrigiere Berechtigungen für dist-Verzeichnis..."
sudo chown -R $USER:$USER dist/ 2>/dev/null || true
sudo -n chown -R "$USER:$USER" dist/ 2>/dev/null || true
fi
# 3. Alle generierten Verzeichnisse löschen
echo "Lösche alle generierten Verzeichnisse..."
rm -rf dist/
rm -rf node_modules/.vite/
rm -rf node_modules/.cache/
# 4. Verwende bestehende .env-Dateien im Zielverzeichnis für Build
# Kopiere temporär die bestehende .env vom Ziel, falls vorhanden
TEMP_ENV="/tmp/yourpart-frontend-env-$$"
if [ -f "$FRONTEND_TARGET/.env" ]; then
echo "Nutze bestehende .env-Datei vom Zielverzeichnis für Build..."
sudo cp "$FRONTEND_TARGET/.env" "$TEMP_ENV"
sudo chown $USER:$USER "$TEMP_ENV"
if [ -f "$CURRENT_FRONTEND/.env" ]; then
echo "Nutze bestehende .env-Datei vom Live-System für Build..."
cp "$CURRENT_FRONTEND/.env" "$TEMP_ENV"
cp "$TEMP_ENV" .env
elif [ -f .env.production ]; then
echo "Nutze .env.production für Build..."
@@ -39,84 +37,35 @@ elif [ -f .env.server ]; then
cp .env.server .env
fi
# 5. Frontend neu bauen VITE_* aus Environment übernehmen oder Defaults setzen
echo "Baue Frontend neu..."
export VITE_API_BASE_URL=${VITE_API_BASE_URL:-https://www.your-part.de}
# Standard: Daemon direkt auf Port 4551, nicht über Apache-Proxy
export VITE_DAEMON_SOCKET=${VITE_DAEMON_SOCKET:-wss://www.your-part.de:4551}
export VITE_CHAT_WS_URL=${VITE_CHAT_WS_URL:-wss://www.your-part.de:1235}
export VITE_API_BASE_URL="${VITE_API_BASE_URL:-https://www.your-part.de}"
export VITE_DAEMON_SOCKET="${VITE_DAEMON_SOCKET:-wss://www.your-part.de:4551}"
export VITE_CHAT_WS_URL="${VITE_CHAT_WS_URL:-wss://www.your-part.de:1235}"
echo "VITE_API_BASE_URL=$VITE_API_BASE_URL"
echo "VITE_DAEMON_SOCKET=$VITE_DAEMON_SOCKET"
echo "VITE_CHAT_WS_URL=$VITE_CHAT_WS_URL"
# 5a. Dependencies installieren
echo "Installiere Dependencies..."
npm install
if [ $? -ne 0 ]; then
echo "❌ npm install fehlgeschlagen!"
# Temporäre .env-Datei aufräumen
rm -f "$TEMP_ENV"
exit 1
fi
# 5b. Frontend neu bauen
echo "Baue Frontend..."
npm run build
if [ $? -ne 0 ]; then
echo "❌ Build fehlgeschlagen!"
# Temporäre .env-Datei aufräumen
rm -f "$TEMP_ENV"
exit 1
fi
echo "✅ Build erfolgreich!"
# Temporäre .env-Datei aufräumen
rm -f "$TEMP_ENV"
# 6. Zielverzeichnis erstellen (falls nicht vorhanden)
echo "Erstelle Zielverzeichnis..."
sudo mkdir -p "$FRONTEND_TARGET/dist"
# 7. Altes Frontend löschen (außer .env-Dateien)
echo "Lösche altes Frontend (außer .env-Dateien)..."
sudo find "$FRONTEND_TARGET/dist" -mindepth 1 -exec rm -rf {} + 2>/dev/null || true
# 8. Neues Frontend kopieren
echo "Kopiere neues Frontend..."
sudo cp -r dist/* "$FRONTEND_TARGET/dist/"
# 9. .env-Dateien NICHT überschreiben - bestehende beibehalten
if [ -f "$FRONTEND_TARGET/.env" ]; then
echo "✓ Bestehende .env-Datei wurde beibehalten (nicht überschrieben)"
if [ -f "$FRONTEND_DIR/.env" ]; then
echo "✓ Bestehende .env-Datei wurde beibehalten"
else
echo "⚠ Keine .env-Datei im Zielverzeichnis gefunden"
# Falls .env im Quellverzeichnis existiert, kopiere sie nur wenn sie im Ziel nicht existiert
if [ -f .env ]; then
echo "Kopiere .env-Datei (nur wenn nicht vorhanden)..."
sudo cp .env "$FRONTEND_TARGET/"
fi
fi
# 10. Berechtigungen setzen
echo "Setze Berechtigungen..."
sudo chown -R www-data:www-data "$FRONTEND_TARGET/dist"
if [ -f "$FRONTEND_TARGET/.env" ]; then
sudo chown www-data:www-data "$FRONTEND_TARGET/.env"
sudo chmod 644 "$FRONTEND_TARGET/.env"
sudo -n chown -R www-data:www-data "$FRONTEND_DIR/dist"
if [ -f "$FRONTEND_DIR/.env" ]; then
sudo -n chown www-data:www-data "$FRONTEND_DIR/.env"
sudo -n chmod 644 "$FRONTEND_DIR/.env"
fi
sudo chmod -R 755 "$FRONTEND_TARGET/dist"
sudo -n chmod -R 755 "$FRONTEND_DIR/dist"
# 11. Apache neu laden
echo "Lade Apache neu..."
sudo systemctl reload apache2
echo ""
echo "=== Frontend Update abgeschlossen! ==="
echo "✅ Frontend neu gebaut"
echo "✅ Frontend aktualisiert"
echo "✅ .env-Dateien wurden NICHT überschrieben"
echo "✅ Apache neu geladen"
echo ""
echo "=== Frontend Update abgeschlossen! ==="