Initialisierung Start
This commit is contained in:
85
CRM/app.py
Normal file
85
CRM/app.py
Normal file
@@ -0,0 +1,85 @@
|
||||
from flask import Flask, render_template
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from datetime import datetime
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///crm_dashboard.db'
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
app.config['SECRET_KEY'] = 'dein_sicherer_geheimer_schlüssel' # Ersetze für Produktionssicherheit
|
||||
|
||||
db = SQLAlchemy(app)
|
||||
|
||||
# Datenbankmodelle
|
||||
class User(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(100), nullable=False)
|
||||
|
||||
class Customer(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(100), nullable=False)
|
||||
email = db.Column(db.String(100), nullable=False)
|
||||
registered_date = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
status = db.Column(db.String(50), nullable=False)
|
||||
|
||||
class Activity(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
description = db.Column(db.String(200), nullable=False)
|
||||
timestamp = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
|
||||
# Initialisierung der Datenbank und Hinzufügen von Beispieldaten
|
||||
def initialize_database():
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
if not User.query.first():
|
||||
db.session.add(User(name="Admin User"))
|
||||
db.session.add_all([
|
||||
Customer(name="Max Mustermann", email="max@example.com", status="Aktiv"),
|
||||
Customer(name="Anna Müller", email="anna@example.com", status="Inaktiv")
|
||||
])
|
||||
db.session.add_all([
|
||||
Activity(description="Max Mustermann hat eine Bestellung abgeschlossen."),
|
||||
Activity(description="Anna Müller hat eine neue Anfrage erstellt.")
|
||||
])
|
||||
db.session.commit()
|
||||
|
||||
# Beispiel-Funktionen zur Berechnung von KPIs
|
||||
def calculate_total_revenue():
|
||||
return 123456.78 # Beispielwert, hier könnten Datenbankabfragen für reale Werte stehen
|
||||
|
||||
def get_new_customers_count():
|
||||
return Customer.query.filter(Customer.registered_date >= datetime.now().replace(day=1)).count()
|
||||
|
||||
def get_open_tickets_count():
|
||||
return 15 # Beispielwert, Ticket-System könnte integriert werden
|
||||
|
||||
def calculate_customer_satisfaction():
|
||||
return 89.7 # Beispielwert, tatsächliche Berechnungen wären abhängig von Kundendaten
|
||||
|
||||
@app.route("/")
|
||||
def dashboard():
|
||||
# Daten aus der Datenbank holen
|
||||
user = User.query.first() # Beispiel-Benutzer
|
||||
latest_customers = Customer.query.order_by(Customer.registered_date.desc()).limit(5).all()
|
||||
recent_activities = Activity.query.order_by(Activity.timestamp.desc()).all()
|
||||
|
||||
# KPI-Berechnungen
|
||||
total_revenue = calculate_total_revenue()
|
||||
new_customers = get_new_customers_count()
|
||||
open_tickets = get_open_tickets_count()
|
||||
customer_satisfaction = calculate_customer_satisfaction()
|
||||
|
||||
# Rendern des Templates und Übergabe der Daten
|
||||
return render_template(
|
||||
"dashboard.html",
|
||||
user=user,
|
||||
total_revenue=total_revenue,
|
||||
new_customers=new_customers,
|
||||
open_tickets=open_tickets,
|
||||
customer_satisfaction=customer_satisfaction,
|
||||
latest_customers=latest_customers,
|
||||
recent_activities=recent_activities
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
initialize_database() # Initialisiert die Datenbank beim ersten Start
|
||||
app.run(debug=False, host="0.0.0.0")
|
||||
Reference in New Issue
Block a user