score jobs after manual import

This commit is contained in:
DaKheera47 2026-01-19 19:11:43 +00:00
parent 724257671e
commit b6fa1fd5ee

View File

@ -12,6 +12,7 @@ import { runPipeline, processJob, summarizeJob, generateFinalPdf, getPipelineSta
import { createNotionEntry } from '../services/notion.js'; import { createNotionEntry } from '../services/notion.js';
import { fetchUkVisaJobsPage } from '../services/ukvisajobs.js'; import { fetchUkVisaJobsPage } from '../services/ukvisajobs.js';
import { inferManualJobDetails } from '../services/manualJob.js'; import { inferManualJobDetails } from '../services/manualJob.js';
import { scoreJobSuitability } from '../services/scorer.js';
import { clearDatabase } from '../db/clear.js'; import { clearDatabase } from '../db/clear.js';
import { import {
extractProjectsFromProfile, extractProjectsFromProfile,
@ -469,7 +470,7 @@ apiRouter.patch('/settings', async (req: Request, res: Response) => {
if (resumeProjects === null) { if (resumeProjects === null) {
await settingsRepo.setSetting('resumeProjects', null); await settingsRepo.setSetting('resumeProjects', null);
} else { } else {
const profile = await loadResumeProfile(); const profile = (await loadResumeProfile()) as Record<string, unknown>;
const { catalog } = extractProjectsFromProfile(profile); const { catalog } = extractProjectsFromProfile(profile);
const allowed = new Set(catalog.map((p) => p.id)); const allowed = new Set(catalog.map((p) => p.id));
const normalized = normalizeResumeProjectsSettings(resumeProjects, allowed); const normalized = normalizeResumeProjectsSettings(resumeProjects, allowed);
@ -838,6 +839,20 @@ apiRouter.post('/manual-jobs/import', async (req: Request, res: Response) => {
starting: cleanOptional(job.starting) ?? undefined, starting: cleanOptional(job.starting) ?? undefined,
}); });
// Score asynchronously so the import returns immediately.
(async () => {
try {
const profile = (await loadResumeProfile()) as Record<string, unknown>;
const { score, reason } = await scoreJobSuitability(createdJob, profile);
await jobsRepo.updateJob(createdJob.id, {
suitabilityScore: score,
suitabilityReason: reason,
});
} catch (error) {
console.warn('Manual job scoring failed:', error);
}
})();
res.json({ success: true, data: createdJob }); res.json({ success: true, data: createdJob });
} catch (error) { } catch (error) {
if (error instanceof z.ZodError) { if (error instanceof z.ZodError) {