258 lines
10 KiB
Python
Executable File
258 lines
10 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from app import app, initialize_database, db_path
|
|
from models import db, User, Thought, Comment, MindMapNode, ThoughtRelation, ThoughtRating, RelationType
|
|
from models import Category, UserMindmap, UserMindmapNode, MindmapNote
|
|
import os
|
|
|
|
def init_database():
|
|
"""Initialisiert die Datenbank mit Beispieldaten."""
|
|
with app.app_context():
|
|
# Datenbank löschen und neu erstellen
|
|
if os.path.exists(db_path):
|
|
os.remove(db_path)
|
|
|
|
# Stellen Sie sicher, dass das Verzeichnis existiert
|
|
os.makedirs(os.path.dirname(db_path), exist_ok=True)
|
|
|
|
db.create_all()
|
|
|
|
# Admin-Benutzer erstellen
|
|
admin = User(username='admin', email='admin@example.com', is_admin=True)
|
|
admin.set_password('admin')
|
|
db.session.add(admin)
|
|
|
|
# Beispiel-Benutzer erstellen
|
|
user = User(username='user', email='user@example.com')
|
|
user.set_password('user')
|
|
db.session.add(user)
|
|
|
|
# Commit, um IDs zu generieren
|
|
db.session.commit()
|
|
|
|
# Wissenschaftliche Kategorien erstellen
|
|
science = Category(name='Wissenschaft', description='Wissenschaftliche Erkenntnisse',
|
|
color_code='#4CAF50', icon='flask')
|
|
db.session.add(science)
|
|
|
|
philosophy = Category(name='Philosophie', description='Philosophische Theorien und Gedanken',
|
|
color_code='#9C27B0', icon='lightbulb')
|
|
db.session.add(philosophy)
|
|
|
|
technology = Category(name='Technologie', description='Technologische Entwicklungen',
|
|
color_code='#FF9800', icon='microchip')
|
|
db.session.add(technology)
|
|
|
|
db.session.commit()
|
|
|
|
# Wissenschaftliche Unterkategorien
|
|
physics = Category(name='Physik', description='Studium der Materie und Energie',
|
|
color_code='#81C784', icon='atom', parent_id=science.id)
|
|
biology = Category(name='Biologie', description='Studium lebender Organismen',
|
|
color_code='#66BB6A', icon='leaf', parent_id=science.id)
|
|
chemistry = Category(name='Chemie', description='Studium der Stoffe und ihrer Reaktionen',
|
|
color_code='#A5D6A7', icon='vial', parent_id=science.id)
|
|
|
|
db.session.add_all([physics, biology, chemistry])
|
|
|
|
# Technologie-Unterkategorien
|
|
informatics = Category(name='Informatik', description='Studium der Informationsverarbeitung',
|
|
color_code='#FFB74D', icon='laptop-code', parent_id=technology.id)
|
|
ai = Category(name='Künstliche Intelligenz', description='Entwicklung intelligenter Systeme',
|
|
color_code='#FFA726', icon='robot', parent_id=technology.id)
|
|
|
|
db.session.add_all([informatics, ai])
|
|
|
|
# Philosophie-Unterkategorien
|
|
ethics = Category(name='Ethik', description='Moralphilosophie und Wertesysteme',
|
|
color_code='#BA68C8', icon='balance-scale', parent_id=philosophy.id)
|
|
logic = Category(name='Logik', description='Studie der gültigen Schlussfolgerungen',
|
|
color_code='#AB47BC', icon='project-diagram', parent_id=philosophy.id)
|
|
|
|
db.session.add_all([ethics, logic])
|
|
|
|
db.session.commit()
|
|
|
|
# Knoten für die öffentliche Mindmap erstellen
|
|
nodes = {
|
|
'quantenmechanik': MindMapNode(
|
|
name='Quantenmechanik',
|
|
description='Physikalische Theorie zur Beschreibung der Materie auf atomarer Ebene',
|
|
color_code='#81C784',
|
|
category_id=physics.id,
|
|
created_by_id=admin.id
|
|
),
|
|
'relativitaetstheorie': MindMapNode(
|
|
name='Relativitätstheorie',
|
|
description='Einsteins Theorien zur Raumzeit und Gravitation',
|
|
color_code='#81C784',
|
|
category_id=physics.id,
|
|
created_by_id=admin.id
|
|
),
|
|
'genetik': MindMapNode(
|
|
name='Genetik',
|
|
description='Wissenschaft der Gene und Vererbung',
|
|
color_code='#66BB6A',
|
|
category_id=biology.id,
|
|
created_by_id=admin.id
|
|
),
|
|
'machine_learning': MindMapNode(
|
|
name='Machine Learning',
|
|
description='Algorithmen, die aus Daten lernen können',
|
|
color_code='#FFA726',
|
|
category_id=ai.id,
|
|
created_by_id=admin.id
|
|
),
|
|
'ki_ethik': MindMapNode(
|
|
name='KI-Ethik',
|
|
description='Moralische Implikationen künstlicher Intelligenz',
|
|
color_code='#BA68C8',
|
|
category_id=ethics.id,
|
|
created_by_id=user.id
|
|
)
|
|
}
|
|
|
|
for node in nodes.values():
|
|
db.session.add(node)
|
|
|
|
db.session.commit()
|
|
|
|
# Verknüpfungen zwischen Knoten herstellen (Hierarchie)
|
|
nodes['machine_learning'].parents.append(nodes['ki_ethik'])
|
|
db.session.commit()
|
|
|
|
# Gedanken erstellen
|
|
thoughts = [
|
|
{
|
|
'title': 'Künstliche Intelligenz und Bewusstsein',
|
|
'content': 'Die Frage nach maschinellem Bewusstsein ist fundamental für die KI-Ethik. Aktuelle KI-Systeme haben kein Bewusstsein, aber fortschrittliche KI könnte in Zukunft Eigenschaften entwickeln, die diesem nahekommen.',
|
|
'abstract': 'Eine Untersuchung der philosophischen Implikationen von KI-Bewusstsein.',
|
|
'keywords': 'KI, Bewusstsein, Ethik, Philosophie',
|
|
'branch': 'Philosophie',
|
|
'color_code': '#BA68C8',
|
|
'source_type': 'Markdown',
|
|
'user_id': user.id,
|
|
'node': nodes['ki_ethik']
|
|
},
|
|
{
|
|
'title': 'Quantenmechanik und Realität',
|
|
'content': 'Die Kopenhagener Deutung und ihre Auswirkungen auf unser Verständnis der Realität. Quantenmechanik stellt grundlegende Annahmen über Determinismus und Lokalität in Frage.',
|
|
'abstract': 'Eine Analyse verschiedener Interpretationen der Quantenmechanik.',
|
|
'keywords': 'Quantenmechanik, Physik, Realität',
|
|
'branch': 'Physik',
|
|
'color_code': '#81C784',
|
|
'source_type': 'PDF',
|
|
'user_id': admin.id,
|
|
'node': nodes['quantenmechanik']
|
|
},
|
|
{
|
|
'title': 'Deep Learning Fortschritte',
|
|
'content': 'Die neuesten Fortschritte im Deep Learning haben zu beeindruckenden Ergebnissen in Bereichen wie Computer Vision, Natural Language Processing und Reinforcement Learning geführt.',
|
|
'abstract': 'Überblick über aktuelle Deep Learning-Techniken und ihre Anwendungen.',
|
|
'keywords': 'Deep Learning, Neural Networks, AI',
|
|
'branch': 'Technologie',
|
|
'color_code': '#FFA726',
|
|
'source_type': 'Webpage',
|
|
'user_id': admin.id,
|
|
'node': nodes['machine_learning']
|
|
}
|
|
]
|
|
|
|
thought_objects = []
|
|
for t_data in thoughts:
|
|
node = t_data.pop('node')
|
|
thought = Thought(**t_data)
|
|
node.thoughts.append(thought)
|
|
thought_objects.append(thought)
|
|
db.session.add(thought)
|
|
|
|
db.session.commit()
|
|
|
|
# Beziehungen zwischen Gedanken
|
|
relation = ThoughtRelation(
|
|
source_id=thought_objects[0].id,
|
|
target_id=thought_objects[2].id,
|
|
relation_type=RelationType.INSPIRES,
|
|
created_by_id=user.id
|
|
)
|
|
db.session.add(relation)
|
|
|
|
# Bewertungen erstellen
|
|
rating1 = ThoughtRating(
|
|
thought_id=thought_objects[0].id,
|
|
user_id=admin.id,
|
|
relevance_score=5
|
|
)
|
|
rating2 = ThoughtRating(
|
|
thought_id=thought_objects[2].id,
|
|
user_id=user.id,
|
|
relevance_score=4
|
|
)
|
|
db.session.add_all([rating1, rating2])
|
|
|
|
# Kommentare erstellen
|
|
for thought in thought_objects:
|
|
comment = Comment(
|
|
content=f'Interessante Perspektive zu {thought.title}!',
|
|
thought_id=thought.id,
|
|
user_id=admin.id if thought.user_id != admin.id else user.id
|
|
)
|
|
db.session.add(comment)
|
|
|
|
# Benutzer-Mindmaps erstellen
|
|
user_mindmap = UserMindmap(
|
|
name='Meine KI-Forschung',
|
|
description='Meine persönliche Sammlung zu KI und Ethik',
|
|
user_id=user.id
|
|
)
|
|
db.session.add(user_mindmap)
|
|
db.session.commit()
|
|
|
|
# Knoten zur Benutzer-Mindmap hinzufügen
|
|
user_mindmap_nodes = [
|
|
UserMindmapNode(
|
|
user_mindmap_id=user_mindmap.id,
|
|
node_id=nodes['machine_learning'].id,
|
|
x_position=200,
|
|
y_position=300
|
|
),
|
|
UserMindmapNode(
|
|
user_mindmap_id=user_mindmap.id,
|
|
node_id=nodes['ki_ethik'].id,
|
|
x_position=500,
|
|
y_position=200
|
|
)
|
|
]
|
|
db.session.add_all(user_mindmap_nodes)
|
|
|
|
# Private Notizen
|
|
note = MindmapNote(
|
|
user_id=user.id,
|
|
mindmap_id=user_mindmap.id,
|
|
node_id=nodes['ki_ethik'].id,
|
|
content="Recherchiere mehr über aktuelle ethische Richtlinien für KI-Entwicklung!",
|
|
color_code="#FFF59D"
|
|
)
|
|
db.session.add(note)
|
|
|
|
# Gedanken zu Bookmarks hinzufügen
|
|
user.bookmarked_thoughts.append(thought_objects[0])
|
|
admin.bookmarked_thoughts.append(thought_objects[1])
|
|
|
|
# Finaler Commit
|
|
db.session.commit()
|
|
|
|
print("Datenbank wurde erfolgreich initialisiert!")
|
|
|
|
def init_db():
|
|
"""Alias für Kompatibilität mit älteren Scripts."""
|
|
init_database()
|
|
|
|
if __name__ == '__main__':
|
|
init_database()
|
|
print("Datenbank wurde erfolgreich initialisiert!")
|
|
print("Sie können die Anwendung jetzt mit 'python app.py' starten")
|
|
print("Anmelden mit:")
|
|
print(" Admin: username=admin, password=admin")
|
|
print(" User: username=user, password=user") |