diff --git a/server/src/services/company-skills.ts b/server/src/services/company-skills.ts index 75e9bd1b..4edbe908 100644 --- a/server/src/services/company-skills.ts +++ b/server/src/services/company-skills.ts @@ -2017,28 +2017,21 @@ export function companySkillService(db: Db) { } // Re-scan GitHub/sks_sh sources to pick up newly added skills - const existingSkills = acceptedSkills; - const sourceByLocator = new Map(); - for (const skill of existingSkills) { + const sourceLocators = new Set(); + for (const skill of acceptedSkills) { if (skill.sourceType !== "github" && skill.sourceType !== "skills_sh") continue; const locator = skill.sourceLocator ?? ""; - if (!locator) continue; - if (!sourceByLocator.has(locator)) sourceByLocator.set(locator, []); - sourceByLocator.get(locator)!.push(skill); + if (locator) sourceLocators.add(locator); } - for (const [sourceLocator, skillsAtSource] of sourceByLocator) { + for (const sourceLocator of sourceLocators) { try { const result = await readUrlSkillImports(companyId, sourceLocator, null); for (const nextSkill of result.skills) { - const existing = acceptedSkills.find((s) => s.slug === nextSkill.slug); - if (!existing) { - // New skill discovered — derive key and upsert - nextSkill.key = deriveCanonicalSkillKey(companyId, nextSkill); - const persisted = (await upsertImportedSkills(companyId, [nextSkill]))[0]; - if (persisted) { - imported.push(persisted); - upsertAcceptedSkill(persisted); - } + if (acceptedSkills.some((s) => s.slug === nextSkill.slug)) continue; + const persisted = (await upsertImportedSkills(companyId, [nextSkill]))[0]; + if (persisted) { + imported.push(persisted); + upsertAcceptedSkill(persisted); } } } catch {