This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
breakpilot-pwa/backend/scripts/load_university_seeds.py
BreakPilot Dev 19855efacc
Some checks failed
Tests / Go Tests (push) Has been cancelled
Tests / Python Tests (push) Has been cancelled
Tests / Integration Tests (push) Has been cancelled
Tests / Go Lint (push) Has been cancelled
Tests / Python Lint (push) Has been cancelled
Tests / Security Scan (push) Has been cancelled
Tests / All Checks Passed (push) Has been cancelled
Security Scanning / Secret Scanning (push) Has been cancelled
Security Scanning / Dependency Vulnerability Scan (push) Has been cancelled
Security Scanning / Go Security Scan (push) Has been cancelled
Security Scanning / Python Security Scan (push) Has been cancelled
Security Scanning / Node.js Security Scan (push) Has been cancelled
Security Scanning / Docker Image Security (push) Has been cancelled
Security Scanning / Security Summary (push) Has been cancelled
CI/CD Pipeline / Go Tests (push) Has been cancelled
CI/CD Pipeline / Python Tests (push) Has been cancelled
CI/CD Pipeline / Website Tests (push) Has been cancelled
CI/CD Pipeline / Linting (push) Has been cancelled
CI/CD Pipeline / Security Scan (push) Has been cancelled
CI/CD Pipeline / Docker Build & Push (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / CI Summary (push) Has been cancelled
ci/woodpecker/manual/build-ci-image Pipeline was successful
ci/woodpecker/manual/main Pipeline failed
feat: BreakPilot PWA - Full codebase (clean push without large binaries)
All services: admin-v2, studio-v2, website, ai-compliance-sdk,
consent-service, klausur-service, voice-service, and infrastructure.
Large PDFs and compiled binaries excluded via .gitignore.
2026-02-11 13:25:58 +01:00

539 lines
32 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""
Load German Universities (Hochschulen) as EduSearch Seeds.
Based on the HRK (Hochschulrektorenkonferenz) database, Germany has approximately:
- 120 Universities (Universitäten)
- 220 Universities of Applied Sciences (Fachhochschulen/HAW)
- 50 Art/Music Academies
- 100+ Private Universities
This script loads a comprehensive list of German higher education institutions.
"""
import httpx
import asyncio
import os
API_BASE = os.environ.get("LLM_GATEWAY_URL", "http://localhost:8000")
# =============================================================================
# GERMAN UNIVERSITIES (UNIVERSITÄTEN) - Public
# =============================================================================
UNIVERSITAETEN = [
# ===== BADEN-WÜRTTEMBERG =====
{"url": "https://www.uni-freiburg.de", "name": "Albert-Ludwigs-Universität Freiburg", "state": "BW"},
{"url": "https://www.uni-heidelberg.de", "name": "Ruprecht-Karls-Universität Heidelberg", "state": "BW"},
{"url": "https://www.uni-konstanz.de", "name": "Universität Konstanz", "state": "BW"},
{"url": "https://www.uni-mannheim.de", "name": "Universität Mannheim", "state": "BW"},
{"url": "https://www.uni-stuttgart.de", "name": "Universität Stuttgart", "state": "BW"},
{"url": "https://www.kit.edu", "name": "Karlsruher Institut für Technologie (KIT)", "state": "BW"},
{"url": "https://www.uni-tuebingen.de", "name": "Eberhard Karls Universität Tübingen", "state": "BW"},
{"url": "https://www.uni-ulm.de", "name": "Universität Ulm", "state": "BW"},
{"url": "https://www.uni-hohenheim.de", "name": "Universität Hohenheim", "state": "BW"},
# ===== BAYERN =====
{"url": "https://www.lmu.de", "name": "Ludwig-Maximilians-Universität München", "state": "BY"},
{"url": "https://www.tum.de", "name": "Technische Universität München", "state": "BY"},
{"url": "https://www.fau.de", "name": "Friedrich-Alexander-Universität Erlangen-Nürnberg", "state": "BY"},
{"url": "https://www.uni-wuerzburg.de", "name": "Julius-Maximilians-Universität Würzburg", "state": "BY"},
{"url": "https://www.uni-regensburg.de", "name": "Universität Regensburg", "state": "BY"},
{"url": "https://www.uni-augsburg.de", "name": "Universität Augsburg", "state": "BY"},
{"url": "https://www.uni-bamberg.de", "name": "Otto-Friedrich-Universität Bamberg", "state": "BY"},
{"url": "https://www.uni-bayreuth.de", "name": "Universität Bayreuth", "state": "BY"},
{"url": "https://www.uni-passau.de", "name": "Universität Passau", "state": "BY"},
{"url": "https://www.ku.de", "name": "Katholische Universität Eichstätt-Ingolstadt", "state": "BY"},
# ===== BERLIN =====
{"url": "https://www.fu-berlin.de", "name": "Freie Universität Berlin", "state": "BE"},
{"url": "https://www.hu-berlin.de", "name": "Humboldt-Universität zu Berlin", "state": "BE"},
{"url": "https://www.tu-berlin.de", "name": "Technische Universität Berlin", "state": "BE"},
{"url": "https://www.charite.de", "name": "Charité Universitätsmedizin Berlin", "state": "BE"},
# ===== BRANDENBURG =====
{"url": "https://www.uni-potsdam.de", "name": "Universität Potsdam", "state": "BB"},
{"url": "https://www.b-tu.de", "name": "Brandenburgische Technische Universität Cottbus-Senftenberg", "state": "BB"},
{"url": "https://www.europa-uni.de", "name": "Europa-Universität Viadrina Frankfurt (Oder)", "state": "BB"},
# ===== BREMEN =====
{"url": "https://www.uni-bremen.de", "name": "Universität Bremen", "state": "HB"},
{"url": "https://www.jacobs-university.de", "name": "Jacobs University Bremen", "state": "HB"},
# ===== HAMBURG =====
{"url": "https://www.uni-hamburg.de", "name": "Universität Hamburg", "state": "HH"},
{"url": "https://www.tuhh.de", "name": "Technische Universität Hamburg", "state": "HH"},
{"url": "https://www.hsu-hh.de", "name": "Helmut-Schmidt-Universität Hamburg", "state": "HH"},
{"url": "https://www.hcu-hamburg.de", "name": "HafenCity Universität Hamburg", "state": "HH"},
# ===== HESSEN =====
{"url": "https://www.uni-frankfurt.de", "name": "Goethe-Universität Frankfurt am Main", "state": "HE"},
{"url": "https://www.tu-darmstadt.de", "name": "Technische Universität Darmstadt", "state": "HE"},
{"url": "https://www.uni-giessen.de", "name": "Justus-Liebig-Universität Gießen", "state": "HE"},
{"url": "https://www.uni-marburg.de", "name": "Philipps-Universität Marburg", "state": "HE"},
{"url": "https://www.uni-kassel.de", "name": "Universität Kassel", "state": "HE"},
# ===== MECKLENBURG-VORPOMMERN =====
{"url": "https://www.uni-rostock.de", "name": "Universität Rostock", "state": "MV"},
{"url": "https://www.uni-greifswald.de", "name": "Universität Greifswald", "state": "MV"},
# ===== NIEDERSACHSEN =====
{"url": "https://www.uni-goettingen.de", "name": "Georg-August-Universität Göttingen", "state": "NI"},
{"url": "https://www.uni-hannover.de", "name": "Leibniz Universität Hannover", "state": "NI"},
{"url": "https://www.tu-braunschweig.de", "name": "Technische Universität Braunschweig", "state": "NI"},
{"url": "https://www.tu-clausthal.de", "name": "Technische Universität Clausthal", "state": "NI"},
{"url": "https://www.uni-oldenburg.de", "name": "Carl von Ossietzky Universität Oldenburg", "state": "NI"},
{"url": "https://www.uni-osnabrueck.de", "name": "Universität Osnabrück", "state": "NI"},
{"url": "https://www.uni-hildesheim.de", "name": "Universität Hildesheim", "state": "NI"},
{"url": "https://www.leuphana.de", "name": "Leuphana Universität Lüneburg", "state": "NI"},
{"url": "https://www.uni-vechta.de", "name": "Universität Vechta", "state": "NI"},
{"url": "https://www.mh-hannover.de", "name": "Medizinische Hochschule Hannover", "state": "NI"},
{"url": "https://www.tiho-hannover.de", "name": "Stiftung Tierärztliche Hochschule Hannover", "state": "NI"},
# ===== NORDRHEIN-WESTFALEN =====
{"url": "https://www.uni-koeln.de", "name": "Universität zu Köln", "state": "NW"},
{"url": "https://www.uni-bonn.de", "name": "Rheinische Friedrich-Wilhelms-Universität Bonn", "state": "NW"},
{"url": "https://www.uni-muenster.de", "name": "Westfälische Wilhelms-Universität Münster", "state": "NW"},
{"url": "https://www.rwth-aachen.de", "name": "RWTH Aachen", "state": "NW"},
{"url": "https://www.tu-dortmund.de", "name": "Technische Universität Dortmund", "state": "NW"},
{"url": "https://www.ruhr-uni-bochum.de", "name": "Ruhr-Universität Bochum", "state": "NW"},
{"url": "https://www.uni-due.de", "name": "Universität Duisburg-Essen", "state": "NW"},
{"url": "https://www.hhu.de", "name": "Heinrich-Heine-Universität Düsseldorf", "state": "NW"},
{"url": "https://www.uni-bielefeld.de", "name": "Universität Bielefeld", "state": "NW"},
{"url": "https://www.uni-paderborn.de", "name": "Universität Paderborn", "state": "NW"},
{"url": "https://www.uni-siegen.de", "name": "Universität Siegen", "state": "NW"},
{"url": "https://www.uni-wuppertal.de", "name": "Bergische Universität Wuppertal", "state": "NW"},
{"url": "https://www.fernuni-hagen.de", "name": "FernUniversität in Hagen", "state": "NW"},
{"url": "https://www.dshs-koeln.de", "name": "Deutsche Sporthochschule Köln", "state": "NW"},
# ===== RHEINLAND-PFALZ =====
{"url": "https://www.uni-mainz.de", "name": "Johannes Gutenberg-Universität Mainz", "state": "RP"},
{"url": "https://www.uni-trier.de", "name": "Universität Trier", "state": "RP"},
{"url": "https://www.uni-koblenz.de", "name": "Universität Koblenz", "state": "RP"},
{"url": "https://rptu.de", "name": "RPTU Kaiserslautern-Landau", "state": "RP"},
# ===== SAARLAND =====
{"url": "https://www.uni-saarland.de", "name": "Universität des Saarlandes", "state": "SL"},
# ===== SACHSEN =====
{"url": "https://www.tu-dresden.de", "name": "Technische Universität Dresden", "state": "SN"},
{"url": "https://www.uni-leipzig.de", "name": "Universität Leipzig", "state": "SN"},
{"url": "https://www.tu-chemnitz.de", "name": "Technische Universität Chemnitz", "state": "SN"},
{"url": "https://tu-freiberg.de", "name": "TU Bergakademie Freiberg", "state": "SN"},
# ===== SACHSEN-ANHALT =====
{"url": "https://www.uni-halle.de", "name": "Martin-Luther-Universität Halle-Wittenberg", "state": "ST"},
{"url": "https://www.ovgu.de", "name": "Otto-von-Guericke-Universität Magdeburg", "state": "ST"},
# ===== SCHLESWIG-HOLSTEIN =====
{"url": "https://www.uni-kiel.de", "name": "Christian-Albrechts-Universität zu Kiel", "state": "SH"},
{"url": "https://www.uni-luebeck.de", "name": "Universität zu Lübeck", "state": "SH"},
{"url": "https://www.uni-flensburg.de", "name": "Europa-Universität Flensburg", "state": "SH"},
# ===== THÜRINGEN =====
{"url": "https://www.uni-jena.de", "name": "Friedrich-Schiller-Universität Jena", "state": "TH"},
{"url": "https://www.tu-ilmenau.de", "name": "Technische Universität Ilmenau", "state": "TH"},
{"url": "https://www.uni-weimar.de", "name": "Bauhaus-Universität Weimar", "state": "TH"},
{"url": "https://www.uni-erfurt.de", "name": "Universität Erfurt", "state": "TH"},
]
# =============================================================================
# FACHHOCHSCHULEN / HOCHSCHULEN FÜR ANGEWANDTE WISSENSCHAFTEN (HAW)
# =============================================================================
FACHHOCHSCHULEN = [
# ===== BADEN-WÜRTTEMBERG =====
{"url": "https://www.hs-aalen.de", "name": "Hochschule Aalen", "state": "BW"},
{"url": "https://www.hs-albsig.de", "name": "Hochschule Albstadt-Sigmaringen", "state": "BW"},
{"url": "https://www.hs-biberach.de", "name": "Hochschule Biberach", "state": "BW"},
{"url": "https://www.hs-esslingen.de", "name": "Hochschule Esslingen", "state": "BW"},
{"url": "https://www.hs-furtwangen.de", "name": "Hochschule Furtwangen", "state": "BW"},
{"url": "https://www.hs-heilbronn.de", "name": "Hochschule Heilbronn", "state": "BW"},
{"url": "https://www.hka.de", "name": "Hochschule Karlsruhe", "state": "BW"},
{"url": "https://www.hs-kehl.de", "name": "Hochschule Kehl", "state": "BW"},
{"url": "https://www.htwg-konstanz.de", "name": "HTWG Konstanz", "state": "BW"},
{"url": "https://www.hs-ludwigsburg.de", "name": "Hochschule Ludwigsburg", "state": "BW"},
{"url": "https://www.hs-mannheim.de", "name": "Hochschule Mannheim", "state": "BW"},
{"url": "https://www.hdm-stuttgart.de", "name": "Hochschule der Medien Stuttgart", "state": "BW"},
{"url": "https://www.hs-nueringen-geislingen.de", "name": "Hochschule für Wirtschaft und Umwelt Nürtingen-Geislingen", "state": "BW"},
{"url": "https://www.hs-offenburg.de", "name": "Hochschule Offenburg", "state": "BW"},
{"url": "https://www.hs-pforzheim.de", "name": "Hochschule Pforzheim", "state": "BW"},
{"url": "https://www.hs-ravensburg-weingarten.de", "name": "RWU Ravensburg-Weingarten", "state": "BW"},
{"url": "https://www.reutlingen-university.de", "name": "Hochschule Reutlingen", "state": "BW"},
{"url": "https://www.hs-rottenburg.de", "name": "Hochschule für Forstwirtschaft Rottenburg", "state": "BW"},
{"url": "https://www.hft-stuttgart.de", "name": "Hochschule für Technik Stuttgart", "state": "BW"},
{"url": "https://www.hs-ulm.de", "name": "Technische Hochschule Ulm", "state": "BW"},
{"url": "https://www.dhbw.de", "name": "Duale Hochschule Baden-Württemberg", "state": "BW"},
# ===== BAYERN =====
{"url": "https://www.hm.edu", "name": "Hochschule München", "state": "BY"},
{"url": "https://www.oth-regensburg.de", "name": "OTH Regensburg", "state": "BY"},
{"url": "https://www.th-nuernberg.de", "name": "Technische Hochschule Nürnberg", "state": "BY"},
{"url": "https://www.th-deg.de", "name": "Technische Hochschule Deggendorf", "state": "BY"},
{"url": "https://www.haw-landshut.de", "name": "Hochschule Landshut", "state": "BY"},
{"url": "https://www.hs-kempten.de", "name": "Hochschule Kempten", "state": "BY"},
{"url": "https://www.hs-coburg.de", "name": "Hochschule Coburg", "state": "BY"},
{"url": "https://www.hs-ansbach.de", "name": "Hochschule Ansbach", "state": "BY"},
{"url": "https://www.hs-augsburg.de", "name": "Hochschule Augsburg", "state": "BY"},
{"url": "https://www.th-ab.de", "name": "Technische Hochschule Aschaffenburg", "state": "BY"},
{"url": "https://www.oth-aw.de", "name": "OTH Amberg-Weiden", "state": "BY"},
{"url": "https://www.hswt.de", "name": "Hochschule Weihenstephan-Triesdorf", "state": "BY"},
{"url": "https://www.th-rosenheim.de", "name": "Technische Hochschule Rosenheim", "state": "BY"},
{"url": "https://www.fhws.de", "name": "Hochschule für angewandte Wissenschaften Würzburg-Schweinfurt", "state": "BY"},
{"url": "https://www.hs-neu-ulm.de", "name": "Hochschule Neu-Ulm", "state": "BY"},
{"url": "https://www.th-ingolstadt.de", "name": "Technische Hochschule Ingolstadt", "state": "BY"},
{"url": "https://www.iubh.de", "name": "IU Internationale Hochschule", "state": "BY"},
# ===== BERLIN =====
{"url": "https://www.htw-berlin.de", "name": "HTW Berlin", "state": "BE"},
{"url": "https://www.bht-berlin.de", "name": "Berliner Hochschule für Technik", "state": "BE"},
{"url": "https://www.hwr-berlin.de", "name": "HWR Berlin", "state": "BE"},
{"url": "https://www.ash-berlin.eu", "name": "Alice Salomon Hochschule Berlin", "state": "BE"},
{"url": "https://www.khb.hfm-berlin.de", "name": "Kunsthochschule Berlin-Weißensee", "state": "BE"},
{"url": "https://www.hfpv-berlin.de", "name": "HfPV - Hochschule für Polizei und öffentliche Verwaltung NRW", "state": "BE"},
# ===== BRANDENBURG =====
{"url": "https://www.th-wildau.de", "name": "Technische Hochschule Wildau", "state": "BB"},
{"url": "https://www.fh-potsdam.de", "name": "Fachhochschule Potsdam", "state": "BB"},
{"url": "https://www.th-brandenburg.de", "name": "Technische Hochschule Brandenburg", "state": "BB"},
{"url": "https://www.hnee.de", "name": "Hochschule für nachhaltige Entwicklung Eberswalde", "state": "BB"},
# ===== BREMEN =====
{"url": "https://www.hs-bremen.de", "name": "Hochschule Bremen", "state": "HB"},
{"url": "https://www.hs-bremerhaven.de", "name": "Hochschule Bremerhaven", "state": "HB"},
# ===== HAMBURG =====
{"url": "https://www.haw-hamburg.de", "name": "HAW Hamburg", "state": "HH"},
{"url": "https://www.fh-wedel.de", "name": "Fachhochschule Wedel", "state": "HH"},
# ===== HESSEN =====
{"url": "https://www.h-da.de", "name": "Hochschule Darmstadt", "state": "HE"},
{"url": "https://www.thm.de", "name": "Technische Hochschule Mittelhessen", "state": "HE"},
{"url": "https://www.frankfurt-university.de", "name": "Frankfurt University of Applied Sciences", "state": "HE"},
{"url": "https://www.hs-fulda.de", "name": "Hochschule Fulda", "state": "HE"},
{"url": "https://www.hs-rm.de", "name": "Hochschule RheinMain", "state": "HE"},
# ===== MECKLENBURG-VORPOMMERN =====
{"url": "https://www.hs-wismar.de", "name": "Hochschule Wismar", "state": "MV"},
{"url": "https://www.hs-nb.de", "name": "Hochschule Neubrandenburg", "state": "MV"},
{"url": "https://www.hs-stralsund.de", "name": "Hochschule Stralsund", "state": "MV"},
# ===== NIEDERSACHSEN =====
{"url": "https://www.hs-hannover.de", "name": "Hochschule Hannover", "state": "NI"},
{"url": "https://www.ostfalia.de", "name": "Ostfalia Hochschule", "state": "NI"},
{"url": "https://www.jade-hs.de", "name": "Jade Hochschule", "state": "NI"},
{"url": "https://www.hs-osnabrueck.de", "name": "Hochschule Osnabrück", "state": "NI"},
{"url": "https://www.hawk.de", "name": "HAWK Hildesheim/Holzminden/Göttingen", "state": "NI"},
{"url": "https://www.hs-emden-leer.de", "name": "Hochschule Emden/Leer", "state": "NI"},
# ===== NORDRHEIN-WESTFALEN =====
{"url": "https://www.th-koeln.de", "name": "TH Köln", "state": "NW"},
{"url": "https://www.fh-dortmund.de", "name": "Fachhochschule Dortmund", "state": "NW"},
{"url": "https://www.fh-aachen.de", "name": "FH Aachen", "state": "NW"},
{"url": "https://www.hs-duesseldorf.de", "name": "Hochschule Düsseldorf", "state": "NW"},
{"url": "https://www.hs-niederrhein.de", "name": "Hochschule Niederrhein", "state": "NW"},
{"url": "https://www.hs-bochum.de", "name": "Hochschule Bochum", "state": "NW"},
{"url": "https://www.hs-owl.de", "name": "Technische Hochschule Ostwestfalen-Lippe", "state": "NW"},
{"url": "https://www.w-hs.de", "name": "Westfälische Hochschule", "state": "NW"},
{"url": "https://www.fh-bielefeld.de", "name": "FH Bielefeld", "state": "NW"},
{"url": "https://www.hs-hamm-lippstadt.de", "name": "Hochschule Hamm-Lippstadt", "state": "NW"},
{"url": "https://www.fh-swf.de", "name": "Fachhochschule Südwestfalen", "state": "NW"},
{"url": "https://www.hsbi.de", "name": "Hochschule Bielefeld", "state": "NW"},
{"url": "https://www.hs-rhein-waal.de", "name": "Hochschule Rhein-Waal", "state": "NW"},
{"url": "https://www.hs-ruhrwest.de", "name": "Hochschule Ruhr West", "state": "NW"},
# ===== RHEINLAND-PFALZ =====
{"url": "https://www.hs-mainz.de", "name": "Hochschule Mainz", "state": "RP"},
{"url": "https://www.hs-koblenz.de", "name": "Hochschule Koblenz", "state": "RP"},
{"url": "https://www.hs-worms.de", "name": "Hochschule Worms", "state": "RP"},
{"url": "https://www.hs-trier.de", "name": "Hochschule Trier", "state": "RP"},
{"url": "https://www.hs-kaiserslautern.de", "name": "Hochschule Kaiserslautern", "state": "RP"},
{"url": "https://www.hs-lu.de", "name": "Hochschule für Wirtschaft und Gesellschaft Ludwigshafen", "state": "RP"},
{"url": "https://www.hs-bingen.de", "name": "Technische Hochschule Bingen", "state": "RP"},
# ===== SAARLAND =====
{"url": "https://www.htwsaar.de", "name": "htw saar", "state": "SL"},
# ===== SACHSEN =====
{"url": "https://www.htw-dresden.de", "name": "HTW Dresden", "state": "SN"},
{"url": "https://www.htwk-leipzig.de", "name": "HTWK Leipzig", "state": "SN"},
{"url": "https://www.hs-mittweida.de", "name": "Hochschule Mittweida", "state": "SN"},
{"url": "https://www.fh-zwickau.de", "name": "Westsächsische Hochschule Zwickau", "state": "SN"},
{"url": "https://www.hs-zittau-goerlitz.de", "name": "Hochschule Zittau/Görlitz", "state": "SN"},
# ===== SACHSEN-ANHALT =====
{"url": "https://www.hs-magdeburg.de", "name": "Hochschule Magdeburg-Stendal", "state": "ST"},
{"url": "https://www.hs-harz.de", "name": "Hochschule Harz", "state": "ST"},
{"url": "https://www.hs-merseburg.de", "name": "Hochschule Merseburg", "state": "ST"},
{"url": "https://www.hs-anhalt.de", "name": "Hochschule Anhalt", "state": "ST"},
# ===== SCHLESWIG-HOLSTEIN =====
{"url": "https://www.fh-kiel.de", "name": "Fachhochschule Kiel", "state": "SH"},
{"url": "https://www.fh-westkueste.de", "name": "Fachhochschule Westküste", "state": "SH"},
{"url": "https://www.th-luebeck.de", "name": "Technische Hochschule Lübeck", "state": "SH"},
{"url": "https://www.fh-flensburg.de", "name": "Hochschule Flensburg", "state": "SH"},
# ===== THÜRINGEN =====
{"url": "https://www.fh-erfurt.de", "name": "Fachhochschule Erfurt", "state": "TH"},
{"url": "https://www.eah-jena.de", "name": "Ernst-Abbe-Hochschule Jena", "state": "TH"},
{"url": "https://www.hs-schmalkalden.de", "name": "Hochschule Schmalkalden", "state": "TH"},
{"url": "https://www.hs-nordhausen.de", "name": "Hochschule Nordhausen", "state": "TH"},
]
# =============================================================================
# PÄDAGOGISCHE HOCHSCHULEN (nur Baden-Württemberg)
# =============================================================================
PAEDAGOGISCHE_HOCHSCHULEN = [
{"url": "https://www.ph-freiburg.de", "name": "Pädagogische Hochschule Freiburg", "state": "BW"},
{"url": "https://www.ph-heidelberg.de", "name": "Pädagogische Hochschule Heidelberg", "state": "BW"},
{"url": "https://www.ph-karlsruhe.de", "name": "Pädagogische Hochschule Karlsruhe", "state": "BW"},
{"url": "https://www.ph-ludwigsburg.de", "name": "Pädagogische Hochschule Ludwigsburg", "state": "BW"},
{"url": "https://www.ph-schwäbisch-gmünd.de", "name": "Pädagogische Hochschule Schwäbisch Gmünd", "state": "BW"},
{"url": "https://www.ph-weingarten.de", "name": "Pädagogische Hochschule Weingarten", "state": "BW"},
]
# =============================================================================
# KUNST- UND MUSIKHOCHSCHULEN
# =============================================================================
KUNSTHOCHSCHULEN = [
# ===== BADEN-WÜRTTEMBERG =====
{"url": "https://www.abk-stuttgart.de", "name": "Staatliche Akademie der Bildenden Künste Stuttgart", "state": "BW"},
{"url": "https://www.hfg-karlsruhe.de", "name": "Staatliche Hochschule für Gestaltung Karlsruhe", "state": "BW"},
{"url": "https://www.mh-freiburg.de", "name": "Hochschule für Musik Freiburg", "state": "BW"},
{"url": "https://www.hmdk-stuttgart.de", "name": "Hochschule für Musik und Darstellende Kunst Stuttgart", "state": "BW"},
{"url": "https://www.hfm-karlsruhe.de", "name": "Hochschule für Musik Karlsruhe", "state": "BW"},
{"url": "https://www.hfm-trossingen.de", "name": "Hochschule für Musik Trossingen", "state": "BW"},
{"url": "https://www.filmakademie.de", "name": "Filmakademie Baden-Württemberg", "state": "BW"},
{"url": "https://www.popakademie.de", "name": "Popakademie Baden-Württemberg", "state": "BW"},
# ===== BAYERN =====
{"url": "https://www.adbk.de", "name": "Akademie der Bildenden Künste München", "state": "BY"},
{"url": "https://www.adbk-nuernberg.de", "name": "Akademie der Bildenden Künste Nürnberg", "state": "BY"},
{"url": "https://www.hmtm.de", "name": "Hochschule für Musik und Theater München", "state": "BY"},
{"url": "https://www.hfm-wuerzburg.de", "name": "Hochschule für Musik Würzburg", "state": "BY"},
{"url": "https://www.hff-muenchen.de", "name": "Hochschule für Fernsehen und Film München", "state": "BY"},
# ===== BERLIN =====
{"url": "https://www.udk-berlin.de", "name": "Universität der Künste Berlin", "state": "BE"},
{"url": "https://www.hfm-berlin.de", "name": "Hochschule für Musik Hanns Eisler Berlin", "state": "BE"},
{"url": "https://www.dffb.de", "name": "Deutsche Film- und Fernsehakademie Berlin", "state": "BE"},
# ===== HAMBURG =====
{"url": "https://www.hfbk-hamburg.de", "name": "Hochschule für bildende Künste Hamburg", "state": "HH"},
{"url": "https://www.hfmt-hamburg.de", "name": "Hochschule für Musik und Theater Hamburg", "state": "HH"},
# ===== HESSEN =====
{"url": "https://www.hfg-offenbach.de", "name": "Hochschule für Gestaltung Offenbach", "state": "HE"},
{"url": "https://www.hfmdk-frankfurt.de", "name": "Hochschule für Musik und Darstellende Kunst Frankfurt", "state": "HE"},
# ===== NORDRHEIN-WESTFALEN =====
{"url": "https://www.kunstakademie-duesseldorf.de", "name": "Kunstakademie Düsseldorf", "state": "NW"},
{"url": "https://www.kunstakademie-muenster.de", "name": "Kunstakademie Münster", "state": "NW"},
{"url": "https://www.hfmt-koeln.de", "name": "Hochschule für Musik und Tanz Köln", "state": "NW"},
{"url": "https://www.folkwang-uni.de", "name": "Folkwang Universität der Künste", "state": "NW"},
{"url": "https://www.rsh-duesseldorf.de", "name": "Robert Schumann Hochschule Düsseldorf", "state": "NW"},
{"url": "https://www.hfm-detmold.de", "name": "Hochschule für Musik Detmold", "state": "NW"},
# ===== SACHSEN =====
{"url": "https://www.hfbk-dresden.de", "name": "Hochschule für Bildende Künste Dresden", "state": "SN"},
{"url": "https://www.hmt-leipzig.de", "name": "Hochschule für Musik und Theater Leipzig", "state": "SN"},
{"url": "https://www.hfmdd.de", "name": "Hochschule für Musik Carl Maria von Weber Dresden", "state": "SN"},
{"url": "https://www.palucca.eu", "name": "Palucca Hochschule für Tanz Dresden", "state": "SN"},
# Other states
{"url": "https://www.hfk-bremen.de", "name": "Hochschule für Künste Bremen", "state": "HB"},
{"url": "https://www.burg-halle.de", "name": "Burg Giebichenstein Kunsthochschule Halle", "state": "ST"},
{"url": "https://www.hmtm-hannover.de", "name": "Hochschule für Musik, Theater und Medien Hannover", "state": "NI"},
{"url": "https://www.hfk-bremen.de", "name": "Hochschule für Künste Bremen", "state": "HB"},
{"url": "https://www.muho-mannheim.de", "name": "Hochschule für Musik und Darstellende Kunst Mannheim", "state": "BW"},
{"url": "https://www.hfm-saar.de", "name": "Hochschule für Musik Saar", "state": "SL"},
{"url": "https://www.hfm-weimar.de", "name": "Hochschule für Musik Franz Liszt Weimar", "state": "TH"},
{"url": "https://www.mh-luebeck.de", "name": "Musikhochschule Lübeck", "state": "SH"},
{"url": "https://www.hmt-rostock.de", "name": "Hochschule für Musik und Theater Rostock", "state": "MV"},
]
# =============================================================================
# PRIVATE HOCHSCHULEN (Auswahl der wichtigsten)
# =============================================================================
PRIVATE_HOCHSCHULEN = [
{"url": "https://www.srh.de", "name": "SRH Hochschule", "state": "BW"},
{"url": "https://www.escp.eu", "name": "ESCP Business School Berlin", "state": "BE"},
{"url": "https://www.hertie-school.org", "name": "Hertie School", "state": "BE"},
{"url": "https://www.steinbeis-hochschule.de", "name": "Steinbeis Hochschule", "state": "BE"},
{"url": "https://www.code.berlin", "name": "CODE University of Applied Sciences", "state": "BE"},
{"url": "https://www.whu.edu", "name": "WHU Otto Beisheim School of Management", "state": "RP"},
{"url": "https://www.ebs.edu", "name": "EBS Universität", "state": "HE"},
{"url": "https://www.fom.de", "name": "FOM Hochschule", "state": "NW"},
{"url": "https://www.macromedia-fachhochschule.de", "name": "Hochschule Macromedia", "state": "BY"},
{"url": "https://www.ism.de", "name": "International School of Management", "state": "NW"},
{"url": "https://www.hhl.de", "name": "HHL Leipzig Graduate School of Management", "state": "SN"},
{"url": "https://www.fs.de", "name": "Frankfurt School of Finance & Management", "state": "HE"},
{"url": "https://www.bits-iserlohn.de", "name": "BiTS Hochschule", "state": "NW"},
{"url": "https://www.umit.at", "name": "UMIT - Private Universität für Gesundheitswissenschaften", "state": "BY"},
{"url": "https://www.bucerius-law-school.de", "name": "Bucerius Law School", "state": "HH"},
{"url": "https://www.akad.de", "name": "AKAD Hochschule Stuttgart", "state": "BW"},
{"url": "https://www.diploma.de", "name": "DIPLOMA Hochschule", "state": "HE"},
{"url": "https://www.apollon-hochschule.de", "name": "APOLLON Hochschule", "state": "HB"},
{"url": "https://www.euro-fh.de", "name": "Euro-FH Hamburg", "state": "HH"},
{"url": "https://www.wings.de", "name": "WINGS Fernstudium", "state": "MV"},
]
def generate_seed(uni: dict, category: str, source_type: str, trust_boost: float) -> dict:
"""Generate a seed entry from university data."""
return {
"url": uni["url"],
"name": uni["name"],
"description": f"Deutsche Hochschule - {uni['name']}",
"category_name": category, # API expects category_name, not category
"trust_boost": trust_boost,
"source_type": source_type,
"scope": "STATE",
"state": uni.get("state", "")
}
def get_all_university_seeds() -> list:
"""Get all university seeds formatted for API."""
seeds = []
# Universitäten - höchster Trust
for uni in UNIVERSITAETEN:
seeds.append(generate_seed(uni, "universities", "UNI", 0.90))
# Fachhochschulen
for uni in FACHHOCHSCHULEN:
seeds.append(generate_seed(uni, "universities", "FH", 0.85))
# Pädagogische Hochschulen - sehr relevant für Bildung
for uni in PAEDAGOGISCHE_HOCHSCHULEN:
seeds.append(generate_seed(uni, "universities", "PH", 0.92))
# Kunst- und Musikhochschulen
for uni in KUNSTHOCHSCHULEN:
seeds.append(generate_seed(uni, "universities", "KUNST", 0.80))
# Private Hochschulen
for uni in PRIVATE_HOCHSCHULEN:
seeds.append(generate_seed(uni, "universities", "PRIVATE", 0.75))
return seeds
async def load_university_seeds():
"""Load university seeds via bulk import API."""
seeds = get_all_university_seeds()
print(f"Loading {len(seeds)} university seeds into {API_BASE}...")
print(f"\nBreakdown:")
print(f" - Universitäten: {len(UNIVERSITAETEN)}")
print(f" - Fachhochschulen: {len(FACHHOCHSCHULEN)}")
print(f" - Pädagogische Hochschulen: {len(PAEDAGOGISCHE_HOCHSCHULEN)}")
print(f" - Kunst-/Musikhochschulen: {len(KUNSTHOCHSCHULEN)}")
print(f" - Private Hochschulen: {len(PRIVATE_HOCHSCHULEN)}")
print(f" - TOTAL: {len(seeds)}")
# Count by state
by_state = {}
for seed in seeds:
state = seed.get("state", "unknown")
by_state[state] = by_state.get(state, 0) + 1
print(f"\nBy state:")
for state, count in sorted(by_state.items()):
print(f" - {state}: {count}")
try:
async with httpx.AsyncClient(timeout=120.0) as client:
# Check API health first
try:
health_response = await client.get(f"{API_BASE}/health")
if health_response.status_code != 200:
print(f"WARNING: Health check returned {health_response.status_code}")
except httpx.ConnectError:
print(f"ERROR: Cannot connect to API at {API_BASE}")
print("Make sure the backend service is running:")
print(" docker compose up -d backend")
return False
# Import seeds in batches to avoid timeout
batch_size = 100
total_imported = 0
total_skipped = 0
all_errors = []
for i in range(0, len(seeds), batch_size):
batch = seeds[i:i + batch_size]
print(f"\nImporting batch {i // batch_size + 1} ({len(batch)} seeds)...")
response = await client.post(
f"{API_BASE}/v1/edu-search/seeds/bulk-import",
json={"seeds": batch}
)
if response.status_code == 200:
result = response.json()
imported = result.get('imported', 0)
skipped = result.get('skipped', 0)
errors = result.get('errors', [])
total_imported += imported
total_skipped += skipped
all_errors.extend(errors)
print(f" Imported: {imported}, Skipped: {skipped}")
else:
print(f" ERROR: Batch failed with status {response.status_code}")
try:
error_detail = response.json()
print(f" Detail: {error_detail.get('detail', response.text[:200])}")
except Exception:
print(f" Response: {response.text[:200]}")
print(f"\n{'='*50}")
print(f"TOTAL RESULTS:")
print(f" Imported: {total_imported}")
print(f" Skipped (duplicates): {total_skipped}")
if all_errors:
print(f" Errors: {len(all_errors)}")
for err in all_errors[:10]:
print(f" - {err}")
if len(all_errors) > 10:
print(f" ... and {len(all_errors) - 10} more")
# Get stats
print("\nFetching statistics...")
stats_response = await client.get(f"{API_BASE}/v1/edu-search/stats")
if stats_response.status_code == 200:
stats = stats_response.json()
print(f"\nDatabase Statistics:")
print(f" Total seeds: {stats.get('total_seeds', 0)}")
print(f" Enabled seeds: {stats.get('enabled_seeds', 0)}")
print("\nDone!")
return True
except httpx.ConnectError as e:
print(f"\nERROR: Connection failed - {e}")
return False
except httpx.TimeoutException:
print(f"\nERROR: Request timed out")
return False
except Exception as e:
print(f"\nERROR: Unexpected error - {e}")
import traceback
traceback.print_exc()
return False
if __name__ == "__main__":
import sys
print("="*60)
print("German University Seeds Loader")
print("="*60)
success = asyncio.run(load_university_seeds())
sys.exit(0 if success else 1)