Files
Poc-dashboard/schema-mappings/seekers-mapping.js
2025-10-15 11:28:10 +02:00

135 lines
4.0 KiB
JavaScript

// Seekers schema mapping - comprehensive natural language support
import { createSchemaMapping } from "./base-mapping.js";
import fs from "node:fs";
const SCHEMA_PATH = "../smatchitObjectOdmdb/schema/seekers.json";
let seekersSchema = null;
try {
if (fs.existsSync(SCHEMA_PATH)) {
seekersSchema = JSON.parse(fs.readFileSync(SCHEMA_PATH, "utf-8"));
}
} catch (error) {
console.warn(`Warning: Could not load seekers schema: ${error.message}`);
}
export const seekersMapping = createSchemaMapping(seekersSchema, "seekers");
// Additional seeker-specific enhancements
if (seekersMapping.available) {
// Add seeker-specific synonym enhancements
const seekerEnhancements = {
// Work & Career
"work experience": "seekworkingyear",
"career experience": "seekworkingyear",
"professional experience": "seekworkingyear",
"years working": "seekworkingyear",
"job experience": "seekjobtitleexperience",
"previous jobs": "seekjobtitleexperience",
"work history": "seekjobtitleexperience",
"positions held": "seekjobtitleexperience",
// Job Search Status
urgency: "seekstatus",
"how fast": "seekstatus",
"job urgency": "seekstatus",
"looking urgently": "seekstatus",
"need job quickly": "seekstatus",
// Compensation
"expected salary": "salaryexpectation",
"salary expectation": "salaryexpectation",
"desired salary": "salaryexpectation",
"target salary": "salaryexpectation",
"pay expectation": "salaryexpectation",
"wage expectation": "salaryexpectation",
// Location preferences
"work location": "seeklocation",
"job location": "seeklocation",
"where to work": "seeklocation",
"preferred location": "seeklocation",
"work geography": "seeklocation",
// Skills & Abilities
"technical skills": "skills",
"professional skills": "skills",
competencies: "skills",
abilities: "skills",
expertise: "skills",
languages: "languageskills",
"language abilities": "languageskills",
"linguistic skills": "languageskills",
// Personality & Profile
"personality type": "mbti",
"personality profile": "mbti",
"MBTI type": "mbti",
"psychological profile": "mbti",
// Job Preferences
"job type": "seekjobtype",
"employment type": "seekjobtype",
"contract type": "seekjobtype",
"work type": "seekjobtype",
// Availability & Schedule
"working hours": "preferedworkinghours",
"work schedule": "preferedworkinghours",
"preferred hours": "preferedworkinghours",
"schedule preference": "preferedworkinghours",
"not available": "notavailabletowork",
unavailable: "notavailabletowork",
"blocked times": "notavailabletowork",
// Job Search Activity
"job applications": "jobadapply",
"applied jobs": "jobadapply",
"applications sent": "jobadapply",
"bookmarked jobs": "jobadsaved",
"saved jobs": "jobadsaved",
"favorite jobs": "jobadsaved",
"job invitations": "jobadinvitedtoapply",
"invited to apply": "jobadinvitedtoapply",
// Education & Training
education: "educations",
degree: "educations",
qualifications: "educations",
diploma: "educations",
studies: "educations",
// Communication preferences
notifications: "notificationformatches",
alerts: "notificationformatches",
"email preferences": "emailactivityreportweekly",
newsletter: "emailnewsletter",
};
// Merge enhancements into synonyms
Object.entries(seekerEnhancements).forEach(([synonym, fieldName]) => {
seekersMapping.synonyms[synonym.toLowerCase()] = fieldName;
});
// Add status value mappings
seekersMapping.statusValues = {
seekstatus: {
urgent: "startasap",
urgently: "startasap",
asap: "startasap",
quickly: "startasap",
immediately: "startasap",
fast: "startasap",
"no rush": "norush",
"taking time": "norush",
leisurely: "norush",
"not urgent": "norush",
"not looking": "notlooking",
"not active": "notlooking",
inactive: "notlooking",
},
};
}
export default seekersMapping;