Files

85 lines
2.3 KiB
Markdown

# CIS Enhanced
Bessere Ansichten für das FH-Burgenland-CIS:
- **Studentenplan** - eigener oder fremder Plan (Matrikelnummer), Wochenansicht + Semesterübersicht, iCal/CSV-Export
- **Studiengangs-Pläne** - nach Studiengang, Studien-Semester und Verband (Vollzeit/Berufsbegleitend), inkl. Gruppen-Filter
- **Namenslisten** - je Studiengang/Semester/Verband mit Suche und CSV-Export
- **Fotos** - Fotowand je Verband + **Gesichtssuche**: eigenes Foto hochladen, die App findet die passenden Profile (lokaler SCRFD/MobileFaceNet, läuft ohne Internet-API)
- **Studiennummer-Decoder** - Matrikelnummer wird in Startsemester, Studiengang und Nummer zerlegt
## Lokal starten
```bash
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt # Windows
# venv/bin/pip install -r requirements.txt # Linux/Mac
.venv\Scripts\python run.py
```
Öffne http://127.0.0.1:8067
## Konfiguration
Zugangsdaten in `.env` eintragen (Vorlage: `.env.example`):
```
CIS_USER=<matrikelnummer>
CIS_PASSWORD=<passwort>
CIS_BASE_URL=https://cis.hochschule-burgenland.at/cis
OWN_UID=<eigene matrikelnummer>
```
`.env` wird nicht in das Docker-Image kopiert (`.dockerignore`), sondern zur Laufzeit übergeben.
### Datenverzeichnis `data/`
Das Gesichtsmatching lädt beim ersten Start die Modelle (~16 MB,
`insightface/buffalo_sc`) nach `data/models` und speichert Caches in
`data/` (Profilbilder, Person-IDs, Gesichtsembeddings). Alles wird
automatisch angelegt. Im Docker-Setup ist `data/` als Named Volume
(`cis-data`) gemountet, damit Modelle und Caches beim Rebuild erhalten
bleiben.
## Docker
```bash
# Image bauen
docker build -t cis-enhanced .
# Starten (Zugangsdaten aus .env)
docker run -d --name cis-enhanced --restart unless-stopped \
-p 8067:8067 --env-file .env cis-enhanced
# oder mit Compose
docker compose up -d --build
```
## Deploy (Caddy)
App auf Port 8067 starten (z.B. als systemd-Service, oder der Docker-Container
portet nach `127.0.0.1:8067`), Caddy davor:
```ini
deinedomain.at {
reverse_proxy 127.0.0.1:8067
}
```
systemd-Beispiel:
```ini
[Unit]
Description=CIS Enhanced
After=network.target
[Service]
WorkingDirectory=/pfad/zu/cis-enhanced
ExecStart=/pfad/zu/cis-enhanced/.venv/bin/python -m uvicorn app.main:app --host 127.0.0.1 --port 8067
Restart=always
User=www-data
[Install]
WantedBy=multi-user.target
```