Files
adminandClaude Sonnet 5 364df378f0 KI-Feature 4.5.21: didaktischer Hintergrund je Stunde, nur auf Nachfrage
Neuer Endpunkt ai-backend/explain.php mit eigenem statischen Systemprompt
(Begründung des Phasenaufbaus, mögliche Stolpersteine, Differenzierungsideen).
Bewusst als separater Endpunkt statt Zusatzfeld in jeder plan.php-Antwort,
damit die Erklärung nur bei tatsächlicher Nutzung abgerechnet wird statt bei
jeder Planungsanfrage mitgeneriert zu werden.

Die Guthaben-Abrechnung (SELECT-FOR-UPDATE, Transaktions-Insert) wurde aus
plan.php nach ai_backend_call_and_charge in db.php ausgelagert, damit sie
nicht an zwei Stellen gepflegt werden muss. Kein neues DB-Schema nötig.

Im AiAssistDialog erscheint je Stunde ein Button "Didaktischen Hintergrund
erklären", der nach dem Laden durch den Text ersetzt wird.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 22:32:36 +02:00

29 lines
1.0 KiB
ApacheConf

# Sperrt alles, was kein öffentlicher Endpunkt ist. Nur login.php / status.php / plan.php /
# explain.php sollen von außen aufrufbar sein. Siehe README.md — noch robuster ist es,
# config.php/db.php/schema.sql/providers/ komplett außerhalb des Webroots abzulegen, falls das
# Hosting das erlaubt.
<FilesMatch "^(config(\.example)?\.php|db\.php)$">
Require all denied
</FilesMatch>
<Files "schema.sql">
Require all denied
</Files>
<FilesMatch "\.md$">
Require all denied
</FilesMatch>
RewriteEngine On
RewriteRule ^providers/ - [F,L]
RewriteRule ^scripts/ - [F,L]
# Viele Apache/PHP-FPM-Setups reichen den Authorization-Header standardmäßig NICHT an PHP durch
# (login.php funktioniert dann, aber jede Anfrage mit Bearer-Token danach schlägt fehl, weil der
# Header bei PHP leer ankommt). Diese Zeile erzwingt die Weiterleitung — zusammen mit dem
# Mehrquellen-Fallback in db.php (ai_backend_authorization_header) deckt das die gängigen
# Hosting-Varianten ab.
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%1]