Spaces:
Sleeping
Sleeping
File size: 2,043 Bytes
1906404 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | import { analyzeATS } from '../services/aiService.js';
import { saveATSReport, getUserATSReports } from '../services/firebaseService.js';
import pdf from 'pdf-parse/lib/pdf-parse.js';
/**
* POST /api/ats/check
* Accepts resume file + job description, analyzes with AI, stores result.
* Can receive either a file upload (multipart) or resumeText in body.
*/
export async function checkATS(req, res) {
try {
let resumeText = req.body.resumeText || req.body.resume_text || '';
const jobDescription = req.body.job_description || req.body.jobDescription || '';
const action = req.body.action || 'score';
// If a file was uploaded, extract text from it
if (req.file && !resumeText) {
try {
const pdfData = await pdf(req.file.buffer);
resumeText = pdfData.text;
} catch (pdfError) {
console.error('PDF parse error:', pdfError);
return res.status(400).json({ error: 'Failed to parse PDF file.' });
}
}
if (!resumeText) {
return res.status(400).json({ error: 'Resume text or file is required.' });
}
if (!jobDescription) {
return res.status(400).json({ error: 'Job description is required.' });
}
const result = await analyzeATS(resumeText, jobDescription, action);
// Save to Firestore
const reportId = await saveATSReport(req.user.uid, {
score: result.score,
suggestions: result.suggestions || result.missingKeywords || [],
result,
action,
});
res.json({ reportId, result });
} catch (error) {
console.error('ATS check error:', error);
res.status(500).json({ error: 'Failed to analyze resume.' });
}
}
/**
* GET /api/ats/history
* Returns all ATS reports for the authenticated user.
*/
export async function getATSHistory(req, res) {
try {
const reports = await getUserATSReports(req.user.uid);
res.json({ reports });
} catch (error) {
console.error('Get ATS history error:', error);
res.status(500).json({ error: 'Failed to fetch ATS history.' });
}
}
|