"feat:enhance-podcast-topic-ai"

This commit is contained in:
ajaysi
2026-03-11 19:09:27 +05:30
parent e472861967
commit 01881bb405
51 changed files with 3627 additions and 218 deletions

View File

@@ -5,7 +5,11 @@ import { Warning as WarningIcon, Error as ErrorIcon, Info as InfoIcon, CheckCirc
import { billingService } from '../../services/billingService';
import { useAuth } from '@clerk/clerk-react';
import { getTasksNeedingIntervention, TaskNeedingIntervention } from '../../api/schedulerDashboard';
import { apiClient } from '../../api/client';
import {
apiClient,
isBackendCooldownActive,
logBackendCooldownSkipOnce,
} from '../../api/client';
interface Alert {
id: string;
@@ -102,6 +106,11 @@ const AlertsBadge: React.FC<AlertsBadgeProps> = ({ colorMode = 'light' }) => {
const fetchAlerts = async () => {
if (!userId || isPollingRef.current) return;
if (isBackendCooldownActive()) {
logBackendCooldownSkipOnce('AlertsBadge');
return;
}
try {
isPollingRef.current = true;
setLoading(true);
@@ -213,10 +222,10 @@ const AlertsBadge: React.FC<AlertsBadgeProps> = ({ colorMode = 'light' }) => {
fetchAlerts();
}, 1000);
// Poll every 60 seconds
// Poll every 5 minutes (300 seconds) instead of 1 minute to reduce API call frequency
intervalRef.current = setInterval(() => {
fetchAlerts();
}, 60000);
}, 300000);
return () => {
clearTimeout(timeoutId);

View File

@@ -4,7 +4,11 @@ import { useUser, useClerk } from '@clerk/clerk-react';
import { useSubscription } from '../../contexts/SubscriptionContext';
import SystemStatusIndicator from '../ContentPlanningDashboard/components/SystemStatusIndicator';
import UsageDashboard from './UsageDashboard';
import { apiClient } from '../../api/client';
import {
apiClient,
isBackendCooldownActive,
logBackendCooldownSkipOnce,
} from '../../api/client';
interface UserBadgeProps {
colorMode?: 'light' | 'dark';
@@ -27,6 +31,11 @@ const UserBadge: React.FC<UserBadgeProps> = ({ colorMode = 'light' }) => {
// Fetch system status for status bulb
useEffect(() => {
const fetchSystemStatus = async () => {
if (isBackendCooldownActive()) {
logBackendCooldownSkipOnce('UserBadge');
return;
}
try {
const response = await apiClient.get('/api/content-planning/monitoring/lightweight-stats');
const result = response.data;