feat: watcher icin anti-ban interval ve jitter politikasini ekle
This commit is contained in:
@@ -121,6 +121,10 @@ export const WatcherPage = () => {
|
||||
() => watchers.find((watcher) => watcher.id === selectedWatcherId) ?? null,
|
||||
[selectedWatcherId, watchers]
|
||||
);
|
||||
const selectedTrackerDefinition = useMemo(
|
||||
() => watcherTrackers.find((entry) => entry.key === tracker) ?? null,
|
||||
[tracker, watcherTrackers]
|
||||
);
|
||||
|
||||
const load = async () => {
|
||||
const [trackersRes, categoriesRes, watchersRes, summaryRes, itemsRes] =
|
||||
@@ -229,6 +233,17 @@ export const WatcherPage = () => {
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (
|
||||
selectedTrackerDefinition &&
|
||||
intervalMinutes < selectedTrackerDefinition.minIntervalMinutes
|
||||
) {
|
||||
pushAlert({
|
||||
title: "Izleme araligi cok dusuk",
|
||||
description: `${selectedTrackerDefinition.label} icin minimum izleme araligi ${selectedTrackerDefinition.minIntervalMinutes} dakikadir.`,
|
||||
variant: "warn",
|
||||
});
|
||||
return;
|
||||
}
|
||||
setSaving(true);
|
||||
try {
|
||||
if (selectedWatcher) {
|
||||
@@ -629,6 +644,16 @@ export const WatcherPage = () => {
|
||||
</Select>
|
||||
</label>
|
||||
</div>
|
||||
{selectedTrackerDefinition ? (
|
||||
<div className="rounded-xl border border-amber-200 bg-amber-50/80 px-4 py-3 text-xs text-amber-900">
|
||||
<div className="font-semibold">
|
||||
{selectedTrackerDefinition.label} icin minimum izleme araligi: {selectedTrackerDefinition.minIntervalMinutes} dakika
|
||||
</div>
|
||||
<div className="mt-1 text-amber-800/90">
|
||||
Onerilen kullanim: {selectedTrackerDefinition.recommendedIntervalLabel}. Scheduler sabit bot paterni olusmaması icin calisma zamanina otomatik jitter ekler.
|
||||
</div>
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
<label className="block space-y-2">
|
||||
<span className="text-xs font-semibold uppercase tracking-[0.18em] text-slate-500">
|
||||
|
||||
@@ -85,6 +85,9 @@ export interface WatcherTracker {
|
||||
label: string;
|
||||
cliSiteKey: string;
|
||||
supportsRemoveBookmark: boolean;
|
||||
minIntervalMinutes: number;
|
||||
jitterSeconds: number;
|
||||
recommendedIntervalLabel: string;
|
||||
}
|
||||
|
||||
export interface Watcher {
|
||||
|
||||
Reference in New Issue
Block a user