# HTTV / click-TT HTTP-Seiten – Integration & Logging

Dieses Modul ermöglicht das Testen und Logging von HTTP-Aufrufen an die click-TT-Seiten verschiedener Tischtennis-Verbände (HTTV, RTTV, WTTV etc.).

## Zweck

- **Logging**: Jeder Aufruf wird in `http_page_fetch_log` protokolliert (URL, HTTP-Status, Response-Snippet, Fehler).
- **Strukturanalyse**: Die Logs helfen zu verstehen, wie die Seiten je nach Verband und Saison aufgebaut sind.
- **URL-Varianten**: Links können je nach Verein, Saison und Verband unterschiedlich sein.

## Verband → Domain

| Verband | Domain |
|---------|--------|
| HeTTV / HTTV | httv.click-tt.de |
| RTTV | rttv.click-tt.de |
| WTTV | wttv.click-tt.de |
| TTVNw | ttvnw.click-tt.de |
| BTTV | battv.click-tt.de |

## URL-Struktur (httv.click-tt.de)

### leaguePage – Ligenübersicht

```
https://httv.click-tt.de/cgi-bin/WebObjects/nuLigaTTDE.woa/wa/leaguePage?championship=HTTV+25%2F26
```

- `championship`: Saison/Championship, z.B.:
  - `HTTV 25/26` – Haupt-HTTV-Saison
  - `K43 25/26` – Bezirk Frankfurt
  - `K16 25/26` – Bezirk Werra-Meißner
  - `RL-OL West 25/26` – Regional-/Oberligen West

### regionMeetingFilter – Regionsspielplan

```
https://httv.click-tt.de/cgi-bin/WebObjects/nuLigaTTDE.woa/wa/regionMeetingFilter?championship=HTTV+25%2F26
```

### clubInfoDisplay – Vereinsinfo

```
https://httv.click-tt.de/cgi-bin/WebObjects/nuLigaTTDE.woa/wa/clubInfoDisplay?club=1060
```

- `club`: Vereins-ID in der click-TT-Datenbank

## UI-Seite

Unter **/clicktt** (nur für Admins) gibt es eine Vue-Seite, mit der du:

- Seitentyp wählen (Ligenübersicht, Vereinsinfo, Regionsspielplan oder direkte URL)
- Verband, Championship/Saison und ggf. Vereins-ID eingeben
- Die Seite im iframe laden und direkt bedienen (klicken, navigieren)

Alle Aufrufe werden in `http_page_fetch_log` protokolliert.

## API-Endpunkte

Die meisten Endpunkte erfordern Authentifizierung (Token). Der **Proxy** (`/api/clicktt/proxy`) ist ohne Auth nutzbar (für iframe-Einbettung).

### Ligenübersicht abrufen

```
GET /api/clicktt/league-page?association=HeTTV&championship=HTTV+25%2F26
```

### Vereinsinfo abrufen

```
GET /api/clicktt/club-info?association=HeTTV&clubId=1060
```

### Regionsspielplan abrufen

```
GET /api/clicktt/region-meetings?association=HeTTV&championship=HTTV+25%2F26
```

### Beliebige URL abrufen (nur click-tt.de / httv.de)

```
GET /api/clicktt/fetch?url=https%3A%2F%2Fhttv.click-tt.de%2Fcgi-bin%2F...
```

### Logs abrufen

```
GET /api/clicktt/logs?limit=50&fetchType=leaguePage&association=HeTTV
```

### URL-Info (Beispiele, Verband→Domain)

```
GET /api/clicktt/url-info
```

## Konfiguration (.env)

Für das Link-Rewriting (Folge-Klicks im iframe) wird die Backend-URL benötigt:

- **BACKEND_BASE_URL** – URL, unter der die API erreichbar ist (z.B. `https://tt-tagebuch.de`)
- **BASE_URL** – Fallback, falls BACKEND_BASE_URL nicht gesetzt ist

In Produktion mit Reverse-Proxy (Apache) reicht meist `BASE_URL=https://tt-tagebuch.de`. In der Entwicklung kann `BACKEND_BASE_URL=http://localhost:3005` nötig sein, wenn die API auf einem anderen Port als das Frontend läuft.

## Datenbank-Migration

```bash
mysql -u USER -p DATABASE < backend/migrations/create_http_page_fetch_log.sql
```

## Hinweis: mytischtennis.de vs. click-TT

Die **leaguePage** auf httv.click-tt.de zeigt eine Übersicht mit Links. Die eigentlichen **Tabellen und Spielpläne** verweisen auf **mytischtennis.de**:

```
https://www.mytischtennis.de/click-tt/HeTTV/25--26/ligen/Hessenliga_Gr._Süd-West/gruppe/496273/tabelle/gesamt
```

Diese mytischtennis.de-URLs werden bereits über den bestehenden MyTischtennis-URL-Parser und Auto-Fetch unterstützt. Die httv.click-tt.de-Seiten dienen vor allem der Navigation und der Ermittlung von Gruppen-IDs für verschiedene Bezirke/Saisonen.
