"feat: Update project structure documentation and add health route"

This commit is contained in:
Till Tomczak 2025-05-23 08:34:22 +02:00
parent 359cb4a219
commit 57d4d9c4e4
4 changed files with 90 additions and 101 deletions

View File

@ -1,5 +1,6 @@
from flask import Flask, request, jsonify, g, redirect, url_for, session as flask_session, render_template, flash, send_from_directory
from werkzeug.security import generate_password_hash, check_password_hash
from flask_cors import CORS
import secrets # Für bessere Salt-Generierung
from functools import wraps
import jwt
@ -40,6 +41,14 @@ def create_app(config_name=None):
"""
app = Flask(__name__)
# CORS-Konfiguration für Frontend-Server
cors_origins = os.environ.get('CORS_ORIGINS', 'http://localhost:3000').split(',')
CORS(app,
origins=cors_origins,
supports_credentials=True,
allow_headers=['Content-Type', 'Authorization', 'X-Requested-With'],
methods=['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'])
# Bestimme Konfiguration
if config_name is None:
config_name = os.environ.get('FLASK_ENV', 'development')
@ -86,6 +95,14 @@ def create_app(config_name=None):
# Initialisierung - wird später durch create_app ersetzt
app = Flask(__name__)
# CORS-Konfiguration für Frontend-Server (Legacy)
cors_origins = os.environ.get('CORS_ORIGINS', 'http://localhost:3000').split(',')
CORS(app,
origins=cors_origins,
supports_credentials=True,
allow_headers=['Content-Type', 'Authorization', 'X-Requested-With'],
methods=['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'])
# Initialisiere Netzwerkkonfiguration
network_config = NetworkConfig(app)
@ -1705,7 +1722,30 @@ def job_status(job_id):
@app.route('/api/test', methods=['GET'])
def test():
return jsonify({'message': 'MYP Backend API funktioniert!'})
return jsonify({'message': 'API funktioniert!', 'status': 'success'})
@app.route('/health', methods=['GET'])
def health_check():
"""Health Check Endpoint für Backend-Server"""
try:
# Prüfe Datenbankverbindung
db = get_db()
db.execute('SELECT 1').fetchone()
return jsonify({
'status': 'healthy',
'service': 'myp-backend',
'timestamp': datetime.datetime.utcnow().isoformat() + 'Z',
'version': '1.0.0',
'database': 'connected'
}), 200
except Exception as e:
return jsonify({
'status': 'unhealthy',
'service': 'myp-backend',
'timestamp': datetime.datetime.utcnow().isoformat() + 'Z',
'error': str(e)
}), 503
@app.route('/api/create-initial-admin', methods=['POST'])
def create_initial_admin():

View File

@ -0,0 +1,49 @@
import { NextRequest, NextResponse } from 'next/server';
/**
* Health Check Endpoint für Frontend-Server
* GET /health
*/
export async function GET(request: NextRequest) {
try {
// Prüfe Backend-Verbindung
const backendUrl = process.env.BACKEND_API_URL || 'http://localhost:5000';
let backendStatus = 'unknown';
try {
// AbortController für Timeout verwenden
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 5000);
const backendResponse = await fetch(`${backendUrl}/health`, {
method: 'GET',
signal: controller.signal,
});
clearTimeout(timeoutId);
backendStatus = backendResponse.ok ? 'connected' : 'error';
} catch {
backendStatus = 'disconnected';
}
return NextResponse.json({
status: 'healthy',
service: 'myp-frontend',
timestamp: new Date().toISOString(),
version: '1.0.0',
backend: {
url: backendUrl,
status: backendStatus
},
environment: process.env.NODE_ENV || 'development'
}, { status: 200 });
} catch (error) {
return NextResponse.json({
status: 'unhealthy',
service: 'myp-frontend',
timestamp: new Date().toISOString(),
error: error instanceof Error ? error.message : 'Unknown error'
}, { status: 503 });
}
}

100
start.ps1
View File

@ -1,100 +0,0 @@
# 🚀 MYP - Manage your Printer (Hauptstartskript)
# Weiterleitung an das optimierte Infrastructure-Startskript
param(
[Parameter(Position=0)]
[ValidateSet("dev", "prod", "test", "development", "production")]
[string]$Environment = "dev",
[switch]$Help,
[switch]$Version,
[switch]$Clean
)
# Farbdefinitionen für bessere Ausgabe
$Colors = @{
Info = "Cyan"
Success = "Green"
Warning = "Yellow"
Error = "Red"
Header = "Magenta"
}
function Write-ColorOutput {
param([string]$Message, [string]$Color = "White")
Write-Host $Message -ForegroundColor $Colors[$Color]
}
# Header anzeigen
Write-ColorOutput "MYP - Manage your Printer" "Header"
Write-ColorOutput "=======================================" "Header"
# Hilfe anzeigen
if ($Help) {
Write-ColorOutput "`nVerwendung:" "Info"
Write-ColorOutput " .\start.ps1 [Environment] [Optionen]" "White"
Write-ColorOutput "`nVerfügbare Umgebungen:" "Info"
Write-ColorOutput " dev, development - Entwicklungsumgebung (Standard)" "White"
Write-ColorOutput " prod, production - Produktionsumgebung" "White"
Write-ColorOutput " test - Testumgebung" "White"
Write-ColorOutput "`nOptionen:" "Info"
Write-ColorOutput " -Help - Diese Hilfe anzeigen" "White"
Write-ColorOutput " -Version - Versionsinformationen anzeigen" "White"
Write-ColorOutput " -Clean - System vor Start bereinigen" "White"
Write-ColorOutput "`nBeispiele:" "Info"
Write-ColorOutput " .\start.ps1 # Entwicklungsumgebung starten" "White"
Write-ColorOutput " .\start.ps1 prod # Produktionsumgebung starten" "White"
Write-ColorOutput " .\start.ps1 dev -Clean # Mit Bereinigung starten" "White"
exit 0
}
# Version anzeigen
if ($Version) {
Write-ColorOutput "`nSysteminformationen:" "Info"
Write-ColorOutput " MYP Version: 2.0.0" "White"
Write-ColorOutput " PowerShell: $($PSVersionTable.PSVersion)" "White"
Write-ColorOutput " OS: $($PSVersionTable.OS)" "White"
Write-ColorOutput " Architektur: $env:PROCESSOR_ARCHITECTURE" "White"
exit 0
}
# Bereinigung falls gewünscht
if ($Clean) {
Write-ColorOutput "`nSystem wird bereinigt..." "Warning"
& ".\infrastructure\scripts\cleanup.ps1" -Force
if ($LASTEXITCODE -ne 0) {
Write-ColorOutput "Bereinigung fehlgeschlagen!" "Error"
exit 1
}
Write-ColorOutput "System erfolgreich bereinigt!" "Success"
}
# Prüfe ob Infrastructure-Skript existiert
$InfraScript = ".\infrastructure\scripts\start.ps1"
if (-not (Test-Path $InfraScript)) {
Write-ColorOutput "`nInfrastructure-Startskript nicht gefunden: $InfraScript" "Error"
Write-ColorOutput " Bitte stellen Sie sicher, dass die Projektstruktur vollständig ist." "Error"
exit 1
}
# Weiterleitung an Infrastructure-Skript
Write-ColorOutput "`nWeiterleitung an Infrastructure-Startskript..." "Info"
Write-ColorOutput " Umgebung: $Environment" "White"
try {
& $InfraScript $Environment
$ExitCode = $LASTEXITCODE
if ($ExitCode -eq 0) {
Write-ColorOutput "`nMYP erfolgreich gestartet!" "Success"
Write-ColorOutput " Zugriff über: http://localhost" "Info"
} else {
Write-ColorOutput "`nStart fehlgeschlagen (Exit Code: $ExitCode)" "Error"
}
exit $ExitCode
} catch {
Write-ColorOutput "`nUnerwarteter Fehler beim Start:" "Error"
Write-ColorOutput " $($_.Exception.Message)" "Error"
exit 1
}