feat: Add curated expert occupations with local data sources
- Add curated occupations seed files (210 entries in zh/en) with specific domains - Add DBpedia occupations data (2164 entries) for external source option - Refactor expert_source_service to read from local JSON files - Improve keyword generation prompts to leverage expert domain context - Add architecture analysis documentation (ARCHITECTURE_ANALYSIS.md) - Fix expert source selection bug (proper handling of empty custom_experts) - Update frontend to support curated/dbpedia/wikidata expert sources Key changes: - backend/app/data/: Local occupation data files - backend/app/services/expert_source_service.py: Simplified local file reading - backend/app/prompts/expert_transformation_prompt.py: Better domain-aware prompts - Removed expert_cache.py (no longer needed with local files) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
216
backend/app/data/curated_occupations_en.json
Normal file
216
backend/app/data/curated_occupations_en.json
Normal file
@@ -0,0 +1,216 @@
|
||||
{
|
||||
"metadata": {
|
||||
"source": "curated",
|
||||
"language": "en",
|
||||
"created_at": "2025-12-04",
|
||||
"total_count": 210,
|
||||
"description": "Curated common professional occupations with specific domains"
|
||||
},
|
||||
"occupations": [
|
||||
{"name": "Surgeon", "domain": "Healthcare"},
|
||||
{"name": "Internist", "domain": "Healthcare"},
|
||||
{"name": "Dentist", "domain": "Healthcare"},
|
||||
{"name": "Ophthalmologist", "domain": "Healthcare"},
|
||||
{"name": "Psychiatrist", "domain": "Healthcare"},
|
||||
{"name": "Pediatrician", "domain": "Healthcare"},
|
||||
{"name": "Nurse", "domain": "Healthcare"},
|
||||
{"name": "Pharmacist", "domain": "Healthcare"},
|
||||
{"name": "Clinical Psychologist", "domain": "Healthcare"},
|
||||
{"name": "Physical Therapist", "domain": "Healthcare"},
|
||||
{"name": "Occupational Therapist", "domain": "Healthcare"},
|
||||
{"name": "Nutritionist", "domain": "Healthcare"},
|
||||
{"name": "Traditional Chinese Medicine Doctor", "domain": "Healthcare"},
|
||||
{"name": "Veterinarian", "domain": "Healthcare"},
|
||||
|
||||
{"name": "Software Engineer", "domain": "Information Technology"},
|
||||
{"name": "Frontend Developer", "domain": "Information Technology"},
|
||||
{"name": "Backend Developer", "domain": "Information Technology"},
|
||||
{"name": "Data Scientist", "domain": "Information Technology"},
|
||||
{"name": "Data Engineer", "domain": "Information Technology"},
|
||||
{"name": "Machine Learning Engineer", "domain": "Information Technology"},
|
||||
{"name": "Cybersecurity Engineer", "domain": "Information Technology"},
|
||||
{"name": "DevOps Engineer", "domain": "Information Technology"},
|
||||
{"name": "UI Designer", "domain": "Information Technology"},
|
||||
{"name": "UX Designer", "domain": "Information Technology"},
|
||||
{"name": "Product Manager", "domain": "Information Technology"},
|
||||
{"name": "Systems Analyst", "domain": "Information Technology"},
|
||||
{"name": "Network Engineer", "domain": "Information Technology"},
|
||||
{"name": "Cloud Architect", "domain": "Information Technology"},
|
||||
|
||||
{"name": "Accountant", "domain": "Finance & Business"},
|
||||
{"name": "Financial Analyst", "domain": "Finance & Business"},
|
||||
{"name": "Investment Manager", "domain": "Finance & Business"},
|
||||
{"name": "Risk Manager", "domain": "Finance & Business"},
|
||||
{"name": "Actuary", "domain": "Finance & Business"},
|
||||
{"name": "Bank Manager", "domain": "Finance & Business"},
|
||||
{"name": "Securities Analyst", "domain": "Finance & Business"},
|
||||
{"name": "Tax Consultant", "domain": "Finance & Business"},
|
||||
{"name": "Business Consultant", "domain": "Finance & Business"},
|
||||
{"name": "HR Manager", "domain": "Finance & Business"},
|
||||
{"name": "Marketing Manager", "domain": "Finance & Business"},
|
||||
{"name": "Sales Manager", "domain": "Finance & Business"},
|
||||
{"name": "Procurement Manager", "domain": "Finance & Business"},
|
||||
{"name": "Entrepreneur", "domain": "Finance & Business"},
|
||||
|
||||
{"name": "Lawyer", "domain": "Law & Policy"},
|
||||
{"name": "Judge", "domain": "Law & Policy"},
|
||||
{"name": "Prosecutor", "domain": "Law & Policy"},
|
||||
{"name": "Notary", "domain": "Law & Policy"},
|
||||
{"name": "Legal Counsel", "domain": "Law & Policy"},
|
||||
{"name": "IP Attorney", "domain": "Law & Policy"},
|
||||
{"name": "Policy Analyst", "domain": "Law & Policy"},
|
||||
{"name": "Diplomat", "domain": "Law & Policy"},
|
||||
{"name": "Civil Servant", "domain": "Law & Policy"},
|
||||
{"name": "Legislator", "domain": "Law & Policy"},
|
||||
{"name": "Mediator", "domain": "Law & Policy"},
|
||||
{"name": "Legal Scholar", "domain": "Law & Policy"},
|
||||
|
||||
{"name": "University Professor", "domain": "Education & Academia"},
|
||||
{"name": "High School Teacher", "domain": "Education & Academia"},
|
||||
{"name": "Middle School Teacher", "domain": "Education & Academia"},
|
||||
{"name": "Elementary School Teacher", "domain": "Education & Academia"},
|
||||
{"name": "Preschool Teacher", "domain": "Education & Academia"},
|
||||
{"name": "Special Education Teacher", "domain": "Education & Academia"},
|
||||
{"name": "Tutor", "domain": "Education & Academia"},
|
||||
{"name": "Researcher", "domain": "Education & Academia"},
|
||||
{"name": "Librarian", "domain": "Education & Academia"},
|
||||
{"name": "Education Administrator", "domain": "Education & Academia"},
|
||||
{"name": "Academic Editor", "domain": "Education & Academia"},
|
||||
{"name": "Education Consultant", "domain": "Education & Academia"},
|
||||
{"name": "Speech Therapist", "domain": "Education & Academia"},
|
||||
|
||||
{"name": "Painter", "domain": "Arts & Creativity"},
|
||||
{"name": "Sculptor", "domain": "Arts & Creativity"},
|
||||
{"name": "Musician", "domain": "Arts & Creativity"},
|
||||
{"name": "Composer", "domain": "Arts & Creativity"},
|
||||
{"name": "Conductor", "domain": "Arts & Creativity"},
|
||||
{"name": "Dancer", "domain": "Arts & Creativity"},
|
||||
{"name": "Actor", "domain": "Arts & Creativity"},
|
||||
{"name": "Film Director", "domain": "Arts & Creativity"},
|
||||
{"name": "Screenwriter", "domain": "Arts & Creativity"},
|
||||
{"name": "Photographer", "domain": "Arts & Creativity"},
|
||||
{"name": "Illustrator", "domain": "Arts & Creativity"},
|
||||
{"name": "Animator", "domain": "Arts & Creativity"},
|
||||
{"name": "Graphic Designer", "domain": "Arts & Creativity"},
|
||||
{"name": "Fashion Designer", "domain": "Arts & Creativity"},
|
||||
{"name": "Jewelry Designer", "domain": "Arts & Creativity"},
|
||||
|
||||
{"name": "Mechanical Engineer", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Electrical Engineer", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Electronics Engineer", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Chemical Engineer", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Materials Engineer", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Industrial Engineer", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Automation Engineer", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Quality Control Engineer", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Process Engineer", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "R&D Engineer", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Production Manager", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Factory Manager", "domain": "Engineering & Manufacturing"},
|
||||
{"name": "Technician", "domain": "Engineering & Manufacturing"},
|
||||
|
||||
{"name": "Architect", "domain": "Architecture & Space"},
|
||||
{"name": "Interior Designer", "domain": "Architecture & Space"},
|
||||
{"name": "Landscape Designer", "domain": "Architecture & Space"},
|
||||
{"name": "Urban Planner", "domain": "Architecture & Space"},
|
||||
{"name": "Structural Engineer", "domain": "Architecture & Space"},
|
||||
{"name": "Civil Engineer", "domain": "Architecture & Space"},
|
||||
{"name": "Construction Engineer", "domain": "Architecture & Space"},
|
||||
{"name": "Site Supervisor", "domain": "Architecture & Space"},
|
||||
{"name": "Surveyor", "domain": "Architecture & Space"},
|
||||
{"name": "Architectural Drafter", "domain": "Architecture & Space"},
|
||||
{"name": "Exhibition Designer", "domain": "Architecture & Space"},
|
||||
{"name": "Lighting Designer", "domain": "Architecture & Space"},
|
||||
|
||||
{"name": "Journalist", "domain": "Media & Communications"},
|
||||
{"name": "News Anchor", "domain": "Media & Communications"},
|
||||
{"name": "Editor", "domain": "Media & Communications"},
|
||||
{"name": "Copy Editor", "domain": "Media & Communications"},
|
||||
{"name": "Video Editor", "domain": "Media & Communications"},
|
||||
{"name": "PR Specialist", "domain": "Media & Communications"},
|
||||
{"name": "Advertising Planner", "domain": "Media & Communications"},
|
||||
{"name": "Social Media Manager", "domain": "Media & Communications"},
|
||||
{"name": "Content Creator", "domain": "Media & Communications"},
|
||||
{"name": "Podcast Host", "domain": "Media & Communications"},
|
||||
{"name": "Publisher", "domain": "Media & Communications"},
|
||||
{"name": "Translator", "domain": "Media & Communications"},
|
||||
{"name": "Interpreter", "domain": "Media & Communications"},
|
||||
|
||||
{"name": "Agronomist", "domain": "Agriculture & Environment"},
|
||||
{"name": "Horticulturist", "domain": "Agriculture & Environment"},
|
||||
{"name": "Livestock Specialist", "domain": "Agriculture & Environment"},
|
||||
{"name": "Aquaculture Specialist", "domain": "Agriculture & Environment"},
|
||||
{"name": "Environmental Engineer", "domain": "Agriculture & Environment"},
|
||||
{"name": "Ecologist", "domain": "Agriculture & Environment"},
|
||||
{"name": "Forest Ranger", "domain": "Agriculture & Environment"},
|
||||
{"name": "Meteorologist", "domain": "Agriculture & Environment"},
|
||||
{"name": "Geologist", "domain": "Agriculture & Environment"},
|
||||
{"name": "Environmental Inspector", "domain": "Agriculture & Environment"},
|
||||
{"name": "Sustainability Consultant", "domain": "Agriculture & Environment"},
|
||||
{"name": "Organic Farmer", "domain": "Agriculture & Environment"},
|
||||
|
||||
{"name": "Executive Chef", "domain": "Hospitality & Service"},
|
||||
{"name": "Pastry Chef", "domain": "Hospitality & Service"},
|
||||
{"name": "Bartender", "domain": "Hospitality & Service"},
|
||||
{"name": "Sommelier", "domain": "Hospitality & Service"},
|
||||
{"name": "Restaurant Manager", "domain": "Hospitality & Service"},
|
||||
{"name": "Hotel Manager", "domain": "Hospitality & Service"},
|
||||
{"name": "Travel Planner", "domain": "Hospitality & Service"},
|
||||
{"name": "Tour Guide", "domain": "Hospitality & Service"},
|
||||
{"name": "Barista", "domain": "Hospitality & Service"},
|
||||
{"name": "Food Critic", "domain": "Hospitality & Service"},
|
||||
{"name": "Wedding Planner", "domain": "Hospitality & Service"},
|
||||
{"name": "Event Planner", "domain": "Hospitality & Service"},
|
||||
|
||||
{"name": "Sports Coach", "domain": "Sports & Fitness"},
|
||||
{"name": "Personal Trainer", "domain": "Sports & Fitness"},
|
||||
{"name": "Yoga Instructor", "domain": "Sports & Fitness"},
|
||||
{"name": "Athletic Trainer", "domain": "Sports & Fitness"},
|
||||
{"name": "Physical Education Teacher", "domain": "Sports & Fitness"},
|
||||
{"name": "Sports Psychologist", "domain": "Sports & Fitness"},
|
||||
{"name": "Sports Nutritionist", "domain": "Sports & Fitness"},
|
||||
{"name": "Professional Athlete", "domain": "Sports & Fitness"},
|
||||
{"name": "Referee", "domain": "Sports & Fitness"},
|
||||
{"name": "Strength Coach", "domain": "Sports & Fitness"},
|
||||
{"name": "Sports Agent", "domain": "Sports & Fitness"},
|
||||
|
||||
{"name": "Social Worker", "domain": "Social Services"},
|
||||
{"name": "Counselor", "domain": "Social Services"},
|
||||
{"name": "Guidance Counselor", "domain": "Social Services"},
|
||||
{"name": "Volunteer Coordinator", "domain": "Social Services"},
|
||||
{"name": "Nonprofit Manager", "domain": "Social Services"},
|
||||
{"name": "Community Organizer", "domain": "Social Services"},
|
||||
{"name": "Elderly Care Worker", "domain": "Social Services"},
|
||||
{"name": "Youth Counselor", "domain": "Social Services"},
|
||||
{"name": "Family Therapist", "domain": "Social Services"},
|
||||
{"name": "Career Counselor", "domain": "Social Services"},
|
||||
{"name": "Addiction Counselor", "domain": "Social Services"},
|
||||
|
||||
{"name": "Pilot", "domain": "Transportation & Logistics"},
|
||||
{"name": "Ship Captain", "domain": "Transportation & Logistics"},
|
||||
{"name": "Train Operator", "domain": "Transportation & Logistics"},
|
||||
{"name": "Air Traffic Controller", "domain": "Transportation & Logistics"},
|
||||
{"name": "Logistics Manager", "domain": "Transportation & Logistics"},
|
||||
{"name": "Supply Chain Manager", "domain": "Transportation & Logistics"},
|
||||
{"name": "Warehouse Manager", "domain": "Transportation & Logistics"},
|
||||
{"name": "Customs Broker", "domain": "Transportation & Logistics"},
|
||||
{"name": "Traffic Engineer", "domain": "Transportation & Logistics"},
|
||||
{"name": "Port Authority Officer", "domain": "Transportation & Logistics"},
|
||||
|
||||
{"name": "Physicist", "domain": "Scientific Research"},
|
||||
{"name": "Chemist", "domain": "Scientific Research"},
|
||||
{"name": "Biologist", "domain": "Scientific Research"},
|
||||
{"name": "Astronomer", "domain": "Scientific Research"},
|
||||
{"name": "Mathematician", "domain": "Scientific Research"},
|
||||
{"name": "Statistician", "domain": "Scientific Research"},
|
||||
{"name": "Geneticist", "domain": "Scientific Research"},
|
||||
{"name": "Neuroscientist", "domain": "Scientific Research"},
|
||||
{"name": "Oceanographer", "domain": "Scientific Research"},
|
||||
{"name": "Archaeologist", "domain": "Scientific Research"},
|
||||
{"name": "Anthropologist", "domain": "Scientific Research"},
|
||||
{"name": "Sociologist", "domain": "Scientific Research"},
|
||||
{"name": "Economist", "domain": "Scientific Research"},
|
||||
{"name": "Historian", "domain": "Scientific Research"},
|
||||
{"name": "Philosopher", "domain": "Scientific Research"}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user