feat: add per-provider throttle backoff for metadata fetch

- detect HTTP 429 via fetchWithThrottle utility and throw ProviderThrottleError
- track per-provider cooldown windows with exponential backoff in ProviderThrottleTracker
- Google Books uses a conservative schedule (10m/30m/1h/2h/4h); others use default (2m/5m/10m/30m/1h)
- pipeline filters throttled providers before each book fetch
- orchestrator extends inter-book delay to 10-20s when any provider is throttled
This commit is contained in:
neon
2026-03-18 09:09:32 -06:00
parent d07b876b9c
commit c836eedca9
13 changed files with 137 additions and 16 deletions
@@ -5,7 +5,7 @@ defineProps<{ bookId: number }>()
</script>
<template>
<div class="flex flex-col my-2 -ml-2 min-h-[calc(100%-1.5rem)] overflow-hidden rounded-xl border border-border/70 bg-card/60">
<div class="flex flex-col my-2 min-h-[calc(100%-1.5rem)] overflow-hidden rounded-xl border border-border/70 bg-card/60">
<BookDetailHeader :book-id="bookId" />
<main class="flex-1 overflow-y-auto overflow-x-hidden px-6 py-6">
<slot />