import type { KeywordResearchRow } from "@/types/keywords"; import type { ResearchKeywordsInput } from "@/types/schemas/keywords"; const MONTHLY_SEARCHES = [ { year: 2025, month: 4, searchVolume: 1200 }, { year: 2025, month: 5, searchVolume: 1600 }, { year: 2025, month: 6, searchVolume: 2400 }, { year: 2025, month: 7, searchVolume: 3200 }, { year: 2025, month: 8, searchVolume: 4200 }, { year: 2025, month: 9, searchVolume: 3600 }, { year: 2025, month: 10, searchVolume: 3000 }, { year: 2025, month: 11, searchVolume: 2600 }, { year: 2025, month: 12, searchVolume: 2200 }, { year: 2026, month: 1, searchVolume: 2100 }, { year: 2026, month: 2, searchVolume: 2300 }, { year: 2026, month: 3, searchVolume: 2800 }, ]; function makeRow( keyword: string, index: number, overrides: Partial = {}, ): KeywordResearchRow { return { keyword, searchVolume: 20_000 - index * 750, trend: MONTHLY_SEARCHES, keywordDifficulty: 40 + (index % 40), cpc: Number((1.25 + index * 0.15).toFixed(2)), competition: Number((0.05 + (index % 10) * 0.04).toFixed(2)), intent: index % 3 === 0 ? "commercial" : "informational", ...overrides, }; } export function getKeywordResearchFixture(data: ResearchKeywordsInput) { const seedKeyword = data.keywords[0] ?? "keyword research"; const rows = [ makeRow(seedKeyword, 0, { searchVolume: 288_431, keywordDifficulty: 78, cpc: 11.93, competition: 0.07, intent: "informational", }), makeRow(`${seedKeyword} tools`, 1), makeRow(`${seedKeyword} software`, 2), makeRow(`${seedKeyword} checklist`, 3), makeRow(`${seedKeyword} template`, 4), makeRow(`${seedKeyword} examples`, 5), makeRow(`${seedKeyword} guide`, 6), makeRow(`${seedKeyword} strategy`, 7), makeRow(`${seedKeyword} platform`, 8), makeRow(`${seedKeyword} generator`, 9), ]; return { rows, source: "related" as const, usedFallback: false, diagnostics: { requestedMode: data.mode, threshold: 3, sourceAttempts: [ { source: "related" as const, rowCount: rows.length, nonSeedCount: rows.length - 1, }, ], }, }; }