fix(community-issues): scrapeTransceiverCompatIssues falls back to ports_config when no compat entries

This commit is contained in:
Rene Fichtmueller 2026-04-20 23:00:00 +02:00
parent 8cf19e9b78
commit ab059c2fd1

View File

@ -403,14 +403,29 @@ export async function findAndSeedDatasheetLinks(limit = 50): Promise<void> {
// Scrape transceiver-specific issues per switch (switch + transceiver combos) // Scrape transceiver-specific issues per switch (switch + transceiver combos)
// ───────────────────────────────────────────────────────────────────────────── // ─────────────────────────────────────────────────────────────────────────────
export async function scrapeTransceiverCompatIssues(switchLimit = 20): Promise<void> { export async function scrapeTransceiverCompatIssues(switchLimit = 20): Promise<void> {
// Get switches that have compatibility entries — search for their transceiver issues // Prefer switches with known compatibility entries; fall back to switches with port_config
const result = await pool.query<{ switch_model: string; form_factors: string[] }>( const result = await pool.query<{ switch_model: string; form_factors: string[] }>(
`SELECT sw.model AS switch_model, `SELECT sw.model AS switch_model,
ARRAY_AGG(DISTINCT t.form_factor) AS form_factors COALESCE(
ARRAY_AGG(DISTINCT t.form_factor) FILTER (WHERE t.form_factor IS NOT NULL),
-- Fall back: extract form factors from ports_config keys
ARRAY(SELECT DISTINCT
CASE
WHEN k LIKE '%QSFP-DD%' THEN 'QSFP-DD'
WHEN k LIKE '%QSFP28%' THEN 'QSFP28'
WHEN k LIKE '%QSFP%' THEN 'QSFP+'
WHEN k LIKE '%SFP28%' THEN 'SFP28'
WHEN k LIKE '%SFP%' THEN 'SFP+'
WHEN k LIKE '%OSFP%' THEN 'OSFP'
END
FROM jsonb_object_keys(sw.ports_config) AS k
WHERE sw.ports_config IS NOT NULL
)
) AS form_factors
FROM switches sw FROM switches sw
JOIN compatibility c ON c.switch_id = sw.id LEFT JOIN compatibility c ON c.switch_id = sw.id
JOIN transceivers t ON c.transceiver_id = t.id LEFT JOIN transceivers t ON c.transceiver_id = t.id
GROUP BY sw.model GROUP BY sw.model, sw.ports_config
ORDER BY COUNT(c.id) DESC ORDER BY COUNT(c.id) DESC
LIMIT $1`, LIMIT $1`,
[switchLimit], [switchLimit],