perf: acortar lookback KPIs y unificar fallback Google warehouse
Quita el suelo de 700 días (basta desde ene-2025) y deja buildGoogleCardsFromDaily solo en ad-creatives-google. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -20,11 +20,9 @@ import { isAgencyRole, serviceHeaders, supabaseUrl, userRole } from '@/lib/agenc
|
|||||||
|
|
||||||
export const dynamic = 'force-dynamic';
|
export const dynamic = 'force-dynamic';
|
||||||
|
|
||||||
/** Enough history for YoY from Jan 2025 (inclusive). */
|
/** Enough history for YoY from Jan 2025 (inclusive). No artificial 700d floor. */
|
||||||
const AD_DAILY_LOOKBACK_DAYS = Math.max(
|
const AD_DAILY_LOOKBACK_DAYS =
|
||||||
700,
|
Math.ceil((Date.now() - Date.UTC(2025, 0, 1)) / 86400000) + 14;
|
||||||
Math.ceil((Date.now() - Date.UTC(2025, 0, 1)) / 86400000) + 14
|
|
||||||
);
|
|
||||||
const AD_DAILY_PAGE = 1000;
|
const AD_DAILY_PAGE = 1000;
|
||||||
|
|
||||||
async function fetchAdDaily(
|
async function fetchAdDaily(
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ function cardsFromDaily(
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Warehouse-only Google cards (fast path). */
|
/** Warehouse-only Google cards (fast path for creatives API). */
|
||||||
export function buildGoogleCardsFromDaily(
|
export function buildGoogleCardsFromDaily(
|
||||||
dailyRows: Parameters<typeof aggregateDailyByAd>[0],
|
dailyRows: Parameters<typeof aggregateDailyByAd>[0],
|
||||||
since: string,
|
since: string,
|
||||||
|
|||||||
@@ -851,38 +851,6 @@ async function fetchMetaCreativeCardsInner(
|
|||||||
return { ads: out };
|
return { ads: out };
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Google cards from ad_daily only (text fallback). */
|
|
||||||
export function buildGoogleCardsFromDaily(
|
|
||||||
dailyRows: Parameters<typeof aggregateDailyByAd>[0],
|
|
||||||
since: string,
|
|
||||||
until: string,
|
|
||||||
limit = 40
|
|
||||||
): AdCreativeCard[] {
|
|
||||||
return aggregateDailyByAd(dailyRows, 'google', since, until)
|
|
||||||
.slice(0, limit)
|
|
||||||
.map((agg) => ({
|
|
||||||
platform: 'google' as const,
|
|
||||||
adId: agg.adId,
|
|
||||||
adName: agg.adName,
|
|
||||||
campaignName: agg.campaignName,
|
|
||||||
spend: Math.round(agg.spend * 100) / 100,
|
|
||||||
impressions: agg.impressions,
|
|
||||||
clicks: agg.clicks,
|
|
||||||
conversions: agg.conversions,
|
|
||||||
cpl: agg.conversions > 0 ? agg.spend / agg.conversions : null,
|
|
||||||
mediaType: 'rsa',
|
|
||||||
thumbnailUrl: '',
|
|
||||||
imageUrl: '',
|
|
||||||
headline: agg.adName,
|
|
||||||
primaryText: agg.campaignName,
|
|
||||||
headlines: agg.adName ? [agg.adName] : [],
|
|
||||||
bodies: [],
|
|
||||||
descriptions: agg.campaignName ? [agg.campaignName] : [],
|
|
||||||
assets: [],
|
|
||||||
status: undefined,
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Account-level Meta clicks for the period:
|
* Account-level Meta clicks for the period:
|
||||||
* - clicks = todos (Ads Manager)
|
* - clicks = todos (Ads Manager)
|
||||||
|
|||||||
Reference in New Issue
Block a user