Expand AI auto comment rate limiting

This commit is contained in:
2026-04-07 15:55:04 +02:00
parent 9ca9233bf6
commit b5b44d1304
3 changed files with 812 additions and 214 deletions

View File

@@ -1146,11 +1146,69 @@
</div>
<div class="form-group">
<label class="form-label">Tageslimit pro Profil für den AI-Kommentar-Button</label>
<label class="form-label">
<input type="checkbox" id="aiAutoCommentRateLimitsEnabled" class="form-checkbox">
<span>Limitschutz für den AI-Kommentar-Button aktivieren</span>
</label>
<p class="form-help">
Gilt nur für die Aktion <code>AI - generiere automatisch einen passenden Kommentar</code> im Tracker. <code>0</code> bedeutet kein Limit.
Gilt nur für die Aktion <code>AI - generiere automatisch einen passenden Kommentar</code> im Tracker. Gezählt wird separat je Profil, die Regeln gelten aber für alle Profile gleich.
</p>
<div id="aiProfileCommentLimits"></div>
</div>
<div class="form-group">
<label for="aiRequestsPerMinute" class="form-label">Max. Aktionen pro Minute</label>
<input type="number" id="aiRequestsPerMinute" class="form-input" min="0" max="60" step="1">
<p class="form-help"><code>0</code> deaktiviert dieses Teillimit.</p>
</div>
<div class="form-group">
<label for="aiRequestsPerHour" class="form-label">Max. Aktionen pro Stunde</label>
<input type="number" id="aiRequestsPerHour" class="form-input" min="0" max="500" step="1">
<p class="form-help"><code>0</code> deaktiviert dieses Teillimit.</p>
</div>
<div class="form-group">
<label for="aiRequestsPerDay" class="form-label">Max. Aktionen pro Tag</label>
<input type="number" id="aiRequestsPerDay" class="form-input" min="0" max="5000" step="1">
<p class="form-help"><code>0</code> deaktiviert dieses Teillimit.</p>
</div>
<div class="form-group">
<label for="aiMinDelaySeconds" class="form-label">Mindestabstand zwischen Aktionen (Sekunden)</label>
<input type="number" id="aiMinDelaySeconds" class="form-input" min="0" max="3600" step="1">
<p class="form-help"><code>0</code> deaktiviert dieses Teillimit.</p>
</div>
<div class="form-group">
<label for="aiBurstLimit" class="form-label">Burst-Limit für kurze Spitzen</label>
<input type="number" id="aiBurstLimit" class="form-input" min="0" max="100" step="1">
<p class="form-help">Maximale Aktionen in 10 Minuten. <code>0</code> deaktiviert dieses Teillimit.</p>
</div>
<div class="form-group">
<label for="aiCooldownMinutes" class="form-label">Cooldown nach 429/403/Warnsignal (Minuten)</label>
<input type="number" id="aiCooldownMinutes" class="form-input" min="0" max="1440" step="1">
<p class="form-help"><code>0</code> deaktiviert den zusätzlichen Cooldown.</p>
</div>
<div class="form-group">
<label class="form-label">Aktivzeiten optional</label>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px;">
<div>
<label for="aiActiveHoursStart" class="form-label">Von</label>
<input type="time" id="aiActiveHoursStart" class="form-input">
</div>
<div>
<label for="aiActiveHoursEnd" class="form-label">Bis</label>
<input type="time" id="aiActiveHoursEnd" class="form-input">
</div>
</div>
<p class="form-help">Leer lassen für 24/7. Zeiten gelten täglich und dürfen über Mitternacht laufen.</p>
</div>
<div class="form-group">
<label class="form-label">Aktueller Status je Profil</label>
<div id="aiRateLimitProfileStatuses"></div>
</div>
<div class="form-actions">