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>
29 lines
1.0 KiB
ApacheConf
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]
|