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

119 lines
3.1 KiB
JavaScript

// Recruiters schema mapping - recruiter natural language support
import { createSchemaMapping } from "./base-mapping.js";
import fs from "node:fs";
const SCHEMA_PATH = "../smatchitObjectOdmdb/schema/recruiters.json";
let recruitersSchema = null;
try {
if (fs.existsSync(SCHEMA_PATH)) {
recruitersSchema = JSON.parse(fs.readFileSync(SCHEMA_PATH, "utf-8"));
}
} catch (error) {
console.warn(`Warning: Could not load recruiters schema: ${error.message}`);
}
export const recruitersMapping = createSchemaMapping(
recruitersSchema,
"recruiters"
);
// Additional recruiters-specific enhancements
if (recruitersMapping.available) {
const recruitersEnhancements = {
// Identity & Contact
"recruiter id": "alias",
"recruiter name": "alias",
"hr id": "alias",
"hiring manager": "alias",
// Contact Information
"contact email": "email",
"recruiter email": "email",
"hiring email": "email",
"hr email": "email",
"contact phone": "phone",
"recruiter phone": "phone",
telephone: "phone",
"phone number": "phone",
// Company Associations
companies: "sirets",
employers: "sirets",
clients: "sirets",
businesses: "sirets",
organizations: "sirets",
"company list": "sirets",
"employer list": "sirets",
// Professional Information
tips: "tipsadvice",
advice: "tipsadvice",
articles: "tipsadvice",
guidance: "tipsadvice",
recommendations: "tipsadvice",
"help articles": "tipsadvice",
// Activity & Dates
joined: "dt_create",
registration: "dt_create",
"sign up": "dt_create",
"account created": "dt_create",
"last updated": "dt_update",
"profile updated": "dt_update",
modified: "dt_update",
// Status & Activity
"active recruiter": "status",
"recruiter status": "status",
"hiring status": "status",
availability: "status",
// Job Management
"job postings": "jobads",
"job ads": "jobads",
postings: "jobads",
advertisements: "jobads",
vacancies: "jobads",
openings: "jobads",
// Recruitment Activity
candidates: "candidates",
applicants: "applicants",
seekers: "seekers",
prospects: "prospects",
"talent pool": "candidates",
// Performance & Metrics
placements: "placements",
hires: "hires",
"successful hires": "placements",
"recruitment success": "placements",
};
// Merge enhancements into synonyms
Object.entries(recruitersEnhancements).forEach(([synonym, fieldName]) => {
recruitersMapping.synonyms[synonym.toLowerCase()] = fieldName;
});
// Add recruiter-specific context
recruitersMapping.context = {
description:
"Recruiters create and manage job postings, recruit for companies (sirets), and manage the hiring process",
primaryActions: [
"create jobads",
"manage candidates",
"process applications",
"schedule interviews",
],
relationships: {
sirets: "Companies the recruiter works for",
jobads: "Job postings created by this recruiter",
candidates: "People being recruited",
seekers: "Job seekers in recruitment process",
},
};
}
export default recruitersMapping;