@@ -73,241 +73,97 @@ const CAREER_LIBRARY = {
7373 ] ,
7474 Finance : [
7575 'Financial Analyst' , 'Accountant' , 'Auditor' , 'Tax Specialist' ,
76- 'Investment Analyst' , 'Risk Analyst' , 'Treasury Specialist' , 'Controller' ,
77- 'Credit Analyst' , 'Insurance Specialist' , 'Financial Planner' , 'Wealth Manager' ,
78- 'Investment Banker' , 'Equity Research Analyst' , ' Actuary' , 'Risk Manager '
76+ 'Investment Analyst' , 'Risk Analyst' , 'Treasury Specialist' ,
77+ 'Credit Analyst' , 'Insurance Specialist' , 'Financial Planner' ,
78+ 'Investment Banker' , 'Actuary'
7979 ] ,
8080 Education : [
81- 'Giáo viên Toán' , 'Giáo viên Văn' , 'Giáo viên Tiếng Anh' , 'Giáo viên Lịch sử' , 'Giáo viên Địa lý' , 'Giáo viên Sinh học' , 'Giáo viên Hóa học' , 'Giáo viên Vật lý' , 'Giáo viên Tin học' , 'Giáo viên Giáo dục công dân' , 'Giáo viên Nghệ thuật' , 'Giáo viên Âm nhạc' , 'Giáo viên Thể dục' , 'Giáo viên Kỹ năng sống' , 'Giảng viên Đại học' , 'Giảng viên Cao đẳng' , 'Giảng viên Trung cấp' , 'Giáo viên Giáo dục đặc biệt' , 'Giáo viên Giáo dục quốc tế' , 'Giáo viên Giáo dục hướng nghiệp'
81+ 'Giáo viên Tiểu học' ,
82+ 'Giáo viên Trung học cơ sở' ,
83+ 'Giáo viên Trung học phổ thông' ,
84+ 'Giảng viên Đại học / Cao đẳng' ,
85+ 'Giáo viên Đào tạo nghề' ,
86+ 'Giáo viên Giáo dục đặc biệt' ,
87+ 'Gia sư / Giáo viên kèm'
8288 ] ,
8389 Healthcare : [
84- 'Nurse ' , 'Pharmacist ' , 'Lab Technician ' , 'Medical Assistant ' ,
85- 'Physiotherapist' , 'Radiology Technician' , 'Dentist Assistant ', 'Public Health Officer ' ,
86- 'Doctor' , 'Dentist' , 'Clinical Psychologist' , 'Occupational Therapist ', 'Nutritionist ' ,
87- 'Health Informatics Specialist ' , 'Medical Sales Representative' , 'Healthcare Administrator '
90+ 'Bác sĩ ' , 'Y tá / Điều dưỡng ' , 'Dược sĩ ' , 'Nha sĩ ' ,
91+ 'Kỹ thuật viên Y tế ' , 'Nhân viên Chăm sóc sức khỏe ' ,
92+ 'Nhà Tâm lý học Lâm sàng ' , 'Vật lý trị liệu ' ,
93+ 'Chuyên viên Dinh dưỡng ' , 'Quản lý Y tế '
8894 ] ,
8995 Engineering : [
90- 'Civil Engineer' , 'Mechanical Engineer' , 'Electrical Engineer' , 'Industrial Engineer' ,
91- 'Automation Engineer' , 'Robotics Engineer' , 'Environmental Engineer' , 'Architect' ,
92- 'Chemical Engineer' , 'Aerospace Engineer' , 'Biomedical Engineer' , 'Quality Engineer' ,
93- 'Process Engineer' , 'Mechatronics Engineer' , 'Energy Engineer' , 'Materials Engineer'
96+ 'Kỹ sư Xây dựng' , 'Kỹ sư Cơ khí' , 'Kỹ sư Điện' , 'Kỹ sư Công nghiệp' ,
97+ 'Kỹ sư Tự động hóa' , 'Kiến trúc sư' , 'Kỹ sư Hóa học' ,
98+ 'Kỹ sư Môi trường' , 'Kỹ sư Năng lượng'
9499 ] ,
95100 Legal : [
96- 'Legal Assistant ' , 'Paralegal' , 'Compliance Officer ', 'Legal Consultant ' ,
97- 'Lawyer' , 'Legal Advisor' , 'Contract Manager' , 'IP Specialist' , 'Compliance Manager '
101+ 'Luật sư ' , 'Trợ lý Pháp lý ' , 'Chuyên viên Tuân thủ ' ,
102+ 'Tư vấn Pháp lý' , 'Chuyên viên Hợp đồng '
98103 ] ,
99104 Hospitality : [
100- 'Hotel Manager' , 'Tour Guide' , 'Chef' , 'Restaurant Manager' ,
101- 'Travel Consultant' , 'Event Coordinator' , 'Resort Manager' , 'Event Manager' ,
102- 'Bartender' , 'Barista' , 'Sommelier'
105+ 'Quản lý Khách sạn' , 'Hướng dẫn viên Du lịch' , 'Đầu bếp' ,
106+ 'Quản lý Nhà hàng' , 'Tư vấn Du lịch' , 'Điều phối Sự kiện'
103107 ] ,
104108 Logistics : [
105- 'Supply Chain Analyst' , 'Logistics Coordinator ', 'Warehouse Manager' , 'Operations Planner ',
106- 'Customs Specialist ' , 'Demand Planner' , 'Fleet Supervisor ', 'Import Export Coordinator '
109+ 'Chuyên viên Chuỗi cung ứng ' , 'Điều phối Logistics ' ,
110+ 'Quản lý Kho ' , 'Chuyên viên Hải quan ' , 'Quản lý Vận tải '
107111 ] ,
108112 Media : [
109- 'Journalist' , 'Video Editor' , 'Photographer' , 'Media Producer' ,
110- 'Content Strategist' , 'Podcast Producer' , 'Animator' , 'Scriptwriter' ,
111- 'Social Media Producer' , 'Sound Designer' , 'Media Planner' ,
112- 'Editor' , 'Reporter' , 'TV Host' , 'Director' , 'Cameraman' , 'PR Specialist' , 'Advertising Specialist' ,
113- 'Program Producer' , 'Video Producer' , 'Audio Producer' , 'Image Producer' , 'Press Producer' , 'Film Producer' ,
114- 'Game Producer' , 'Animation Producer' , 'Interactive Producer' , 'Brand Producer'
113+ 'Nhà báo' , 'Biên tập viên Video' , 'Nhiếp ảnh gia' ,
114+ 'Nhà sản xuất Truyền thông' , 'Chuyên gia Nội dung' ,
115+ 'Nhà sản xuất Podcast' , 'Họa sĩ Hoạt hình' , 'Biên kịch' ,
116+ 'Chuyên gia PR' , 'Quản lý Truyền thông Xã hội'
115117 ] ,
116118 Government : [
117- 'Policy Analyst' , 'Public Relations Officer ', 'Civil Servant ' ,
118- 'Diplomat' , 'Urban Planner ', 'Regulatory Affairs Specialist' , 'Public Policy Advisor '
119+ 'Chuyên viên Chính sách ' , 'Công chức ' ,
120+ 'Nhà Ngoại giao ' , 'Quy hoạch Đô thị '
119121 ] ,
120122 Science : [
121- 'Research Assistant' , 'Lab Researcher' , 'Biologist' , 'Chemist' ,
122- 'Physicist' , 'Environmental Scientist' , 'Food Scientist' , 'Biochemist' ,
123- 'Geneticist' , 'Geologist' , 'Meteorologist' , 'Epidemiologist' , 'Microbiologist'
123+ 'Nhà Nghiên cứu Khoa học' ,
124+ 'Kỹ thuật viên Phòng thí nghiệm' ,
125+ 'Nhà Khoa học Môi trường' ,
126+ 'Nhà Khoa học Thực phẩm'
124127 ] ,
125128 Trades : [
126- 'Electrician' , 'Mechanic' , 'Plumber' , 'Carpenter' ,
127- 'Welder' , 'Technician' , 'HVAC Technician' , 'Painter' ,
128- 'Machinist' , 'Auto Technician'
129+ 'Thợ Điện' , 'Thợ Cơ khí' , 'Thợ Sửa ống nước' , 'Thợ Mộc' ,
130+ 'Thợ Hàn' , 'Kỹ thuật viên' , 'Thợ Sơn'
129131 ] ,
130132 Agriculture : [
131- 'Agronomist' , 'Farm Manager ', 'Food Technologist' , 'Veterinary Assistant ',
132- 'Aquaculture Specialist' , 'Greenhouse Technician ', 'Soil Scientist ' ,
133- 'Food Safety Specialist' , 'Agricultural Engineer' , 'Agribusiness Specialist '
133+ 'Kỹ sư Nông nghiệp ' , 'Quản lý Trang trại ' ,
134+ 'Chuyên gia Công nghệ Thực phẩm ' , 'Trợ lý Thú y ' ,
135+ 'Chuyên viên An toàn Thực phẩm '
134136 ] ,
135137 RealEstate : [
136- 'Real Estate Agent' , 'Property Manager ', 'Real Estate Analyst' , 'Leasing Consultant ',
137- 'Property Valuer ' , 'Real Estate Broker '
138+ 'Môi giới Bất động sản ' , 'Quản lý Tài sản ' ,
139+ 'Chuyên viên Phân tích Bất động sản ' , 'Tư vấn Cho thuê '
138140 ] ,
139141 Retail : [
140- 'Retail Manager' , 'Merchandiser' , 'Store Supervisor' , 'Inventory Specialist ',
141- 'Category Manager ' , 'Buyer ' , 'E-commerce Merchandiser '
142+ 'Quản lý Bán lẻ' , 'Chuyên viên Hàng hóa ' ,
143+ 'Giám sát Cửa hàng ' , 'Quản lý Tồn kho ' , 'Quản lý Thương mại điện tử '
142144 ] ,
143145 Beauty : [
144- 'Makeup Artist' , 'Hair Stylist ', 'Skincare Specialist' , 'Spa Therapist ',
145- 'Nail Technician' , 'Cosmetologist' , 'Esthetician '
146+ 'Chuyên viên Trang điểm ' , 'Nhà Tạo mẫu Tóc ' ,
147+ 'Chuyên gia Chăm sóc Da' , 'Nhân viên Spa '
146148 ] ,
147149 Sports : [
148- 'Coach' , 'Fitness Trainer ', 'Sports Analyst' , 'Physiotherapist (Sports) ',
149- 'Sports Physiologist' , 'Strength Coach ', 'Sports Nutritionist '
150+ 'Huấn luyện viên ' , 'Chuyên gia Thể dục ' ,
151+ 'Chuyên viên Phân tích Thể thao ' , 'Chuyền gia Dinh dưỡng Thể thao '
150152 ] ,
151153 Transportation : [
152- 'Logistics Driver' , 'Fleet Manager ', 'Transport Planner' , 'Pilot Assistant ',
153- 'Air Traffic Controller' , 'Flight Dispatcher ', 'Maritime Officer' , 'Rail Operations Manager '
154+ 'Quản lý Vận tải ' , 'Chuyên gia Quy hoạch Giao thông ' ,
155+ 'Kiểm soát viên Không lưu ' , 'Nhân viên Điều hành Bay '
154156 ] ,
155157 Construction : [
156- 'Construction Manager' , 'Site Engineer ', 'Surveyor' , 'Safety Officer ',
157- 'Quantity Surveyor ' , 'Structural Engineer ' , 'Construction Planner '
158+ 'Quản lý Xây dựng ' , 'Kỹ sư Công trường ' ,
159+ 'Khảo sát viên ' , 'Chuyên viên An toàn Xây dựng ' , 'Kỹ sư Kết cấu '
158160 ]
159161} ;
160162
161- const SPECIALIZED_BLUEPRINTS = [
162- {
163- category : 'Technology' ,
164- domains : [
165- 'Web' , 'Mobile' , 'Cloud' , 'DevOps' , 'Security' , 'AI' , 'Machine Learning' ,
166- 'Data' , 'Embedded Systems' , 'Robotics' , 'IoT' , 'Blockchain' , 'AR/VR' ,
167- 'Game' , 'Platform' , 'Infrastructure' , 'Network' , 'Automation' , 'QA' ,
168- 'Computer Vision' , 'NLP'
169- ] ,
170- roles : [ 'Engineer' , 'Developer' , 'Architect' , 'Analyst' , 'Specialist' , 'Researcher' , 'Scientist' ]
171- } ,
172- {
173- category : 'Engineering' ,
174- domains : [
175- 'Mechanical' , 'Electrical' , 'Electronics' , 'Automation' , 'Robotics' ,
176- 'Mechatronics' , 'Civil' , 'Structural' , 'Geotechnical' , 'HVAC' ,
177- 'Industrial' , 'Chemical' , 'Materials' , 'Aerospace' , 'Marine' ,
178- 'Biomedical' , 'Energy Systems' , 'Power Systems' , 'Control Systems' , 'Optical'
179- ] ,
180- roles : [ 'Engineer' , 'Technician' , 'Consultant' , 'Manager' , 'Inspector' , 'Planner' ]
181- } ,
182- {
183- category : 'Science' ,
184- domains : [
185- 'Physics' , 'Chemistry' , 'Biology' , 'Biochemistry' , 'Genetics' , 'Microbiology' ,
186- 'Neuroscience' , 'Environmental Science' , 'Food Science' , 'Materials Science' ,
187- 'Geology' , 'Meteorology' , 'Oceanography' , 'Astronomy' , 'Pharmacology' ,
188- 'Nanotechnology' , 'Biotechnology' , 'Quantum Science' , 'Ecology' , 'Zoology'
189- ] ,
190- roles : [ 'Scientist' , 'Researcher' , 'Analyst' , 'Lab Technician' , 'Associate' ]
191- } ,
192- {
193- category : 'Education' ,
194- domains : [
195- 'Math' , 'Physics' , 'Chemistry' , 'Biology' , 'Computer Science' , 'English' ,
196- 'Literature' , 'History' , 'Geography' , 'Economics' , 'Business' , 'Marketing' ,
197- 'Design' , 'Art' , 'Music' , 'Psychology' , 'Data Science' , 'AI' , 'Robotics' ,
198- 'Electronics' , 'Automation' , 'Finance' , 'Law' , 'Healthcare' , 'Philosophy'
199- ] ,
200- roles : [ 'Teacher' , 'Lecturer' , 'Professor' , 'Tutor' , 'Curriculum Designer' , 'Instructor' ]
201- } ,
202- {
203- category : 'Healthcare' ,
204- domains : [
205- 'Cardiology' , 'Oncology' , 'Pediatrics' , 'Neurology' , 'Radiology' , 'Dermatology' ,
206- 'Orthopedics' , 'Pharmacy' , 'Dentistry' , 'Mental Health' , 'Rehabilitation' ,
207- 'Nutrition' , 'Public Health' , 'Clinical Lab' , 'Emergency' , 'Anesthesia' ,
208- 'Ophthalmology' , 'Pathology'
209- ] ,
210- roles : [ 'Specialist' , 'Nurse' , 'Technician' , 'Therapist' , 'Researcher' , 'Assistant' ]
211- } ,
212- {
213- category : 'Business' ,
214- domains : [
215- 'Strategy' , 'Operations' , 'HR' , 'Supply Chain' , 'Retail' , 'E-commerce' ,
216- 'Product' , 'Project' , 'Procurement' , 'Risk' , 'Compliance' , 'Customer Success' ,
217- 'Business Development' , 'Sales' , 'Partnerships' , 'Analytics' , 'Consulting'
218- ] ,
219- roles : [ 'Manager' , 'Analyst' , 'Consultant' , 'Specialist' , 'Director' , 'Coordinator' ]
220- } ,
221- {
222- category : 'Marketing' ,
223- domains : [
224- 'Brand' , 'Growth' , 'Performance' , 'Content' , 'SEO' , 'Social Media' ,
225- 'CRM' , 'PR' , 'Market Research' , 'Community' , 'Influencer' , 'Product Marketing'
226- ] ,
227- roles : [ 'Specialist' , 'Manager' , 'Analyst' , 'Strategist' , 'Lead' ]
228- } ,
229- {
230- category : 'Finance' ,
231- domains : [
232- 'Accounting' , 'Audit' , 'Tax' , 'Corporate Finance' , 'Investment' , 'Risk' ,
233- 'Insurance' , 'Treasury' , 'Banking' , 'FinTech' , 'Wealth' , 'Credit'
234- ] ,
235- roles : [ 'Analyst' , 'Manager' , 'Advisor' , 'Specialist' , 'Controller' ]
236- } ,
237- {
238- category : 'Legal' ,
239- domains : [
240- 'Corporate' , 'IP' , 'Compliance' , 'Tax' , 'Labor' , 'International' ,
241- 'Data Privacy' , 'Regulatory' , 'Contracts' , 'Real Estate'
242- ] ,
243- roles : [ 'Lawyer' , 'Advisor' , 'Specialist' , 'Counsel' , 'Analyst' ]
244- } ,
245- {
246- category : 'Media' ,
247- domains : [
248- 'Video' , 'Film' , 'Animation' , 'Audio' , 'Journalism' , 'Podcast' ,
249- 'Photography' , 'Broadcast' , 'Digital Media' , 'Gaming' , 'Sports Media'
250- ] ,
251- roles : [ 'Producer' , 'Editor' , 'Designer' , 'Reporter' , 'Director' , 'Strategist' ]
252- } ,
253- {
254- category : 'Logistics' ,
255- domains : [
256- 'Transportation' , 'Warehouse' , 'Inventory' , 'Import/Export' , 'Fleet' ,
257- 'Last-mile' , 'Cold Chain' , 'Distribution' , 'Demand Planning'
258- ] ,
259- roles : [ 'Manager' , 'Planner' , 'Coordinator' , 'Analyst' , 'Supervisor' ]
260- } ,
261- {
262- category : 'Construction' ,
263- domains : [
264- 'Structural' , 'MEP' , 'Civil' , 'Geotechnical' , 'HVAC' , 'Safety' ,
265- 'Project' , 'Site' , 'Quality'
266- ] ,
267- roles : [ 'Engineer' , 'Manager' , 'Supervisor' , 'Planner' , 'Inspector' ]
268- } ,
269- {
270- category : 'Agriculture' ,
271- domains : [
272- 'Crop' , 'Livestock' , 'Aquaculture' , 'AgriTech' , 'Soil' , 'Food Safety' ,
273- 'Supply Chain' , 'Greenhouse' , 'Seed' , 'Irrigation'
274- ] ,
275- roles : [ 'Specialist' , 'Engineer' , 'Technician' , 'Manager' , 'Consultant' ]
276- } ,
277- {
278- category : 'Energy' ,
279- domains : [
280- 'Renewable' , 'Solar' , 'Wind' , 'Hydro' , 'Grid' , 'Battery' ,
281- 'Oil & Gas' , 'Nuclear' , 'Energy Storage' , 'Power Generation'
282- ] ,
283- roles : [ 'Engineer' , 'Analyst' , 'Technician' , 'Consultant' , 'Manager' ]
284- } ,
285- {
286- category : 'Research' ,
287- domains : [
288- 'AI Safety' , 'Quantum Computing' , 'Robotics' , 'Materials' , 'Biotech' ,
289- 'Energy Systems' , 'Climate' , 'Neuroscience' , 'Social Science' , 'Economics' ,
290- 'Education' , 'Healthcare' , 'Behavioral Science'
291- ] ,
292- roles : [ 'Researcher' , 'Scientist' , 'Fellow' , 'Associate' , 'Lab Director' ]
293- }
294- ] ;
295-
296- function generateSpecializedCareers ( ) {
297- const items = [ ] ;
298- for ( const group of SPECIALIZED_BLUEPRINTS ) {
299- for ( const domain of group . domains ) {
300- for ( const role of group . roles ) {
301- items . push ( {
302- name : `${ domain } ${ role } ` . replace ( / \s + / g, ' ' ) . trim ( ) ,
303- category : group . category
304- } ) ;
305- }
306- }
307- }
308- return items ;
309- }
310-
163+ /**
164+ * Build career records from CAREER_LIBRARY only
165+ * Simplified to keep only general careers (~250 total)
166+ */
311167function buildCareerRecords ( ) {
312168 const records = [ ] ;
313169 const seen = new Set ( ) ;
@@ -320,35 +176,19 @@ function buildCareerRecords() {
320176 name,
321177 category,
322178 required_skills : CATEGORY_SKILLS [ category ] || [ 'communication' , 'analysis' ] ,
323- salary_range : "Thoa thuan " ,
179+ salary_range : "Thỏa thuận " ,
324180 job_outlook : "good" ,
325- description : `${ name } thuoc nhom ${ category } `
181+ description : `${ name } thuộc nhóm ${ category } `
326182 } ) ;
327183 }
328184
185+ // Only use CAREER_LIBRARY - no specialized blueprints
329186 for ( const [ category , names ] of Object . entries ( CAREER_LIBRARY ) ) {
330187 for ( const name of names ) {
331188 pushRecord ( name , category ) ;
332189 }
333190 }
334191
335- const specialized = generateSpecializedCareers ( ) ;
336- for ( const item of specialized ) {
337- pushRecord ( item . name , item . category ) ;
338- }
339-
340- if ( records . length < 1000 ) {
341- const levels = [ 'Junior' , 'Senior' , 'Lead' , 'Principal' ] ;
342- const snapshot = [ ...records ] ;
343- let idx = 0 ;
344- while ( records . length < 1000 && idx < snapshot . length * levels . length ) {
345- const base = snapshot [ idx % snapshot . length ] ;
346- const level = levels [ idx % levels . length ] ;
347- pushRecord ( `${ level } ${ base . name } ` , base . category ) ;
348- idx += 1 ;
349- }
350- }
351-
352192 return records ;
353193}
354194
0 commit comments