706 lines
22 KiB
Python
706 lines
22 KiB
Python
"""
|
|
Mapping kolom untuk setiap tahun tracer study.
|
|
Ini adalah sumber kebenaran untuk mapping CSV -> database field.
|
|
"""
|
|
|
|
from typing import Optional
|
|
|
|
# ============================================
|
|
# YEAR CONFIGURATION
|
|
# Setiap tahun punya format kolom yang berbeda
|
|
# ============================================
|
|
|
|
YEAR_CONFIG = {
|
|
'2019': {
|
|
'description': 'Format lama - kode angka',
|
|
'skip_jumlah_perusahaan': True, # F1102 bukan jumlah_perusahaan
|
|
'has_email': True,
|
|
'email_col': 'Email',
|
|
'nama_col': 'Nama',
|
|
'tahun_col': 'Tahun Lulus',
|
|
'is_text_format': False, # Data dalam bentuk kode angka
|
|
},
|
|
'2020': {
|
|
'description': 'Format 2020',
|
|
'skip_jumlah_perusahaan': False,
|
|
'has_email': True,
|
|
'email_col': 'Email',
|
|
'nama_col': 'Nama',
|
|
'tahun_col': 'Tahun Lulus',
|
|
'is_text_format': False,
|
|
},
|
|
'2021': {
|
|
'description': 'Format 2021 - tidak ada kolom email',
|
|
'skip_jumlah_perusahaan': False,
|
|
'has_email': False,
|
|
'email_col': None,
|
|
'nama_col': 'Nama',
|
|
'tahun_col': 'Tahun Lulus',
|
|
'is_text_format': False,
|
|
},
|
|
'2022': {
|
|
'description': 'Format 2022 - ada emailmsmh',
|
|
'skip_jumlah_perusahaan': False,
|
|
'has_email': True,
|
|
'email_col': 'emailmsmh',
|
|
'nama_col': 'nmmhsmsmh',
|
|
'tahun_col': 'tahun_lulus',
|
|
'is_text_format': False,
|
|
},
|
|
'2023': {
|
|
'description': 'Format 2023 - ada emailmsmh',
|
|
'skip_jumlah_perusahaan': False,
|
|
'has_email': True,
|
|
'email_col': 'emailmsmh',
|
|
'nama_col': 'nmmhsmsmh',
|
|
'tahun_col': 'tahun_lulus',
|
|
'is_text_format': False,
|
|
},
|
|
'2024': {
|
|
'description': 'Format 2024 - data dalam format teks lengkap "KODE - TEKS"',
|
|
'skip_jumlah_perusahaan': False,
|
|
'has_email': True,
|
|
'email_col': '6. Alamat Email / emailmsmh',
|
|
'nama_col': '4. Nama Lengkap / nmmhsmsmh (Gunakan Huruf Besar)',
|
|
'tahun_col': '7. Tahun Lulus / tahun_lulus',
|
|
'nim_col': '3. NIM / nimhsmsmh (Gunakan Huruf Besar)',
|
|
'is_text_format': True, # Data SUDAH dalam format teks lengkap
|
|
},
|
|
'2025': {
|
|
'description': 'Format 2025 - sama dengan 2024',
|
|
'skip_jumlah_perusahaan': False,
|
|
'has_email': True,
|
|
'email_col': '6. Alamat Email / emailmsmh',
|
|
'nama_col': '4. Nama Lengkap / nmmhsmsmh (Gunakan Huruf Besar)',
|
|
'tahun_col': '7. Tahun Lulus / tahun_lulus',
|
|
'nim_col': '3. NIM / nimhsmsmh (Gunakan Huruf Besar)',
|
|
'is_text_format': True,
|
|
},
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - IDENTITAS
|
|
# ============================================
|
|
|
|
IDENTITAS_MAPPING = {
|
|
# Field database: [list kemungkinan nama kolom di CSV]
|
|
'nim': [
|
|
'NIM/Nomor Mahasiswa',
|
|
'NIM',
|
|
'nimhsmsmh',
|
|
'3. NIM / nimhsmsmh',
|
|
'3. NIM / nimhsmsmh (Gunakan Huruf Besar)',
|
|
'3. NIM / nimhsmsmh (Gunakan Huruf Besar) ',
|
|
],
|
|
'nama': [
|
|
'Nama',
|
|
'nmmhsmsmh',
|
|
'4. Nama Lengkap / nmmhsmsmh',
|
|
'4. Nama Lengkap / nmmhsmsmh (Gunakan Huruf Besar)',
|
|
],
|
|
'kode_prodi': [
|
|
'Kode Prodi',
|
|
'kdpstmsmh',
|
|
'2. Kode Program Studi / kdpstmsmh',
|
|
],
|
|
'kode_pt': [
|
|
'Kode PT',
|
|
'kdptimsmh',
|
|
'1. Kode Perguruan Tinggi / kdptimsmh',
|
|
],
|
|
'email': [
|
|
'Email',
|
|
'emailmsmh',
|
|
'6. Alamat Email / emailmsmh',
|
|
],
|
|
'tahun_lulus': [
|
|
'Tahun Lulus',
|
|
'tahun_lulus',
|
|
'7. Tahun Lulus / tahun_lulus',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - PEKERJAAN
|
|
# ============================================
|
|
|
|
PEKERJAAN_MAPPING = {
|
|
'status_saat_ini': [
|
|
'F8',
|
|
'f8',
|
|
'1. Jelaskan status Anda saat ini? f8',
|
|
],
|
|
'bulan_dapat_kerja': [
|
|
'F502',
|
|
'f502',
|
|
'2. Berapa bulan anda mendapatkan pekerjaan SEBELUM LULUS? f502',
|
|
'2. Dalam berapa bulan Anda mendapatkan pekerjaan pertama ? (f502)',
|
|
],
|
|
'dapet_kerja_6_bulan': [
|
|
'F504',
|
|
'f504',
|
|
'3. Apakah Anda telah mendapatkan pekerjaan <= 6 bulan / termasuk bekerja sebelum lulus? f504',
|
|
'3. Apakah Anda telah mendapatkan pekerjaan <= 6 bulan / termasuk bekerja sebelum lulus? f504',
|
|
],
|
|
'rata_pendapatan': [
|
|
'F505',
|
|
'f505',
|
|
'4. Berapa rata-rata pendapatan Anda per bulan ? f505',
|
|
'4. Berapa rata-rata pendapatan Anda per bulan? f505',
|
|
],
|
|
'bulan_dapat_kerja_setelah': [
|
|
'F506',
|
|
'f506',
|
|
'5. Berapa bulan Anda MENDAPATKAN PEKERJAAN SETELAH LULUS? f506',
|
|
],
|
|
'provinsi_kerja': [
|
|
'F5a1',
|
|
'f5a1',
|
|
'6. Dimana lokasi provinsi tempat Anda bekerja? f5a1',
|
|
'6. Ditahui lokasi provinsi tempat Anda bekerja? f5a1',
|
|
'6. Lokasi provinsi tempat Anda bekerja? f5a1',
|
|
],
|
|
'kab_kota_kerja': [
|
|
'F5a2',
|
|
'f5a2',
|
|
'7. Dimana lokasi kabupaten/kota tempat Anda bekerja? f5a2',
|
|
'7. Ditahui lokasi kabupaten/kota tempat Anda bekerja? f5a2',
|
|
'7. Lokasi kabupaten/kota tempat Anda bekerja? f5a2',
|
|
],
|
|
'jenis_perusahaan_full': [
|
|
'F1101',
|
|
'f1101',
|
|
'8. Apa jenis perusahaan/instansi/institusi tempat anda bekerja sekarang? f1101',
|
|
'8. Ditahui jenis perusahaan/instansi/institusi tempat anda bekerja sekarang? f1101',
|
|
'8. Jenis perusahaan/instansi tempat anda bekerja sekarang? f1101',
|
|
],
|
|
'jumlah_perusahaan': [
|
|
'F1102',
|
|
'f1102',
|
|
],
|
|
'nama_perusahaan': [
|
|
'F5b',
|
|
'f5b',
|
|
'9. Apa nama perusahaan/kantor tempat Anda bekerja? f5b',
|
|
'9. Ditahui nama perusahaan/kantor tempat Anda bekerja? f5b',
|
|
'9. Nama perusahaan/kantor tempat Anda bekerja? f5b',
|
|
],
|
|
'jabatan': [
|
|
'F5c',
|
|
'f5c',
|
|
'10. Bila Anda berwiraswasta, apa posisi/jabatan Anda saat ini ? f5c',
|
|
'10. Bilamana Anda berwiraswasta, apa posisi/jabatan Anda saat ini ? f5c',
|
|
],
|
|
'tingkatan_tempat_kerja': [
|
|
'F5d',
|
|
'f5d',
|
|
'11. Apa tingkatan tempat kerja Anda? f5d',
|
|
'11. Ditahui tingkatan tempat kerja Anda? f5d',
|
|
'11. Tingkatan tempat kerja Anda? f5d',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - STUDI LANJUT
|
|
# ============================================
|
|
|
|
STUDI_LANJUT_MAPPING = {
|
|
'sumber_biaya_studi': [
|
|
'F18a',
|
|
'f18a',
|
|
'12. Sumber biaya Studi Lanjut Anda? f18a',
|
|
],
|
|
'pt_studi_lanjut': [
|
|
'F18b',
|
|
'f18b',
|
|
'13. Nama Perguruan Tinggi Studi Lanjut Anda? f18b',
|
|
],
|
|
'prodi_studi_lanjut': [
|
|
'F18c',
|
|
'f18c',
|
|
'14. Nama Program Studi Studi Lanjut Anda? f18c',
|
|
],
|
|
'tanggal_masuk_studi': [
|
|
'F18d',
|
|
'f18d',
|
|
'15. Tanggal Masuk Awal Studi Lanjut Anda? f18d',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - KESESUAIAN
|
|
# ============================================
|
|
|
|
KESESUAIAN_MAPPING = {
|
|
'sumber_biaya_kuliah': [
|
|
'F1201',
|
|
'f1201',
|
|
'16. Sebutkan sumberdana dalam pembiayaan kuliah? (bukan ketika Studi Lanjut) f1201',
|
|
],
|
|
'keeratan_bidang_studi': [
|
|
'F14',
|
|
'f14',
|
|
'17. Seberapa erat hubungan bidang studi dengan pekerjaan Anda? f14',
|
|
],
|
|
'tingkat_pendidikan_tepat': [
|
|
'F15',
|
|
'f15',
|
|
'18. Tingkat pendidikan apa yang paling tepat/sesuai untuk pekerjaan anda saat ini? f15',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - KOMPETENSI (SAAT LULUS)
|
|
# ============================================
|
|
|
|
KOMPETENSI_LULUS_MAPPING = {
|
|
'etika_lulus_full': [
|
|
'F1761',
|
|
'f1761',
|
|
'19. Pada tingkat mana kompetensi ETIKA anda pada SAAT LULUS? f1761',
|
|
'19. Padatingkat mana kompetensi ETIKA anda pada SAAT LULUS? f1761',
|
|
'19. Kompetensi ETIKA SAAT LULUS? f1761',
|
|
],
|
|
'keahlian_lulus_full': [
|
|
'F1763',
|
|
'f1763',
|
|
'21. Pada tingkat mana kompetensi KEAHLIAN BERDASARKAN BIDANG ILMU anda kuasai pada SAAT LULUS? f1763',
|
|
'21. Padatingkat mana kompetensi KEAHLIAN BERDASARKAN BIDANG ILMU anda kuasai pada SAAT LULUS? f1763',
|
|
'21. Kompetensi KEAHLIAN BERDASARKAN BIDANG ILMU SAAT LULUS? f1763',
|
|
],
|
|
'bahasa_inggris_lulus_full': [
|
|
'F1765',
|
|
'f1765',
|
|
'23. Pada tingkat mana kompetensi BAHASA INGGRIS anda kuasai pada SAAT LULUS? f1765',
|
|
'23. Padatingkat mana kompetensi BAHASA INGGRIS anda kuasai pada SAAT LULUS? f1765',
|
|
'23. Kompetensi BAHASA INGGRIS SAAT LULUS? f1765',
|
|
],
|
|
'teknologi_informasi_lulus_full': [
|
|
'F1767',
|
|
'f1767',
|
|
'25. Pada tingkat mana kompetensi TEKNOLOGI INFORMASI anda kuasai pada SAAT LULUS? f1767',
|
|
'25. Padatingkat mana kompetensi TEKNOLOGI INFORMASI anda kuasai pada SAAT LULUS? f1767',
|
|
'25. Kompetensi TEKNOLOGI INFORMASI SAAT LULUS? f1767',
|
|
],
|
|
'komunikasi_lulus_full': [
|
|
'F1769',
|
|
'f1769',
|
|
'27. Pada tingkat mana kompetensi KOMUNIKASI anda kuasai pada SAAT LULUS? f1769',
|
|
'27. Padatingkat mana kompetensi KOMUNIKASI anda kuasai pada SAAT LULUS? f1769',
|
|
'27. Kompetensi KOMUNIKASI SAAT LULUS? f1769',
|
|
],
|
|
'kerja_sama_lulus_full': [
|
|
'F1771',
|
|
'f1771',
|
|
'29. Pada tingkat mana kompetensi KERJA SAMA TIM anda pada SAAT LULUS? f1771',
|
|
'29. Padatingkat mana kompetensi KERJA SAMA TIM anda pada SAAT LULUS? f1771',
|
|
'29. Kompetensi KERJA SAMA TIM SAAT LULUS? f1771',
|
|
],
|
|
'pengembangan_diri_lulus_full': [
|
|
'F1773',
|
|
'f1773',
|
|
'31. Pada tingkat mana kompetensi PENGEMBANGAN DIRI anda pada SAAT LULUS? f1773',
|
|
'31. Padatingkat mana kompetensi PENGEMBANGAN DIRI anda pada SAAT LULUS? f1773',
|
|
'31. Kompetensi PENGEMBANGAN DIRI SAAT LULUS? f1773',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - KOMPETENSI (SAAT INI)
|
|
# ============================================
|
|
|
|
KOMPETENSI_SAAT_INI_MAPPING = {
|
|
'etika_saat_ini': [
|
|
'F1762',
|
|
'f1762',
|
|
'20. Pada tingkat mana kompetensi ETIKA anda pada SAAT INI? f1762',
|
|
'20. Padatingkat mana kompetensi ETIKA anda pada SAAT INI? f1762',
|
|
'20. Kompetensi ETIKA SAAT INI? f1762',
|
|
],
|
|
'keahlian_saat_ini': [
|
|
'F1764',
|
|
'f1764',
|
|
'22. Pada tingkat mana kompetensi KEAHLIAN BERDASARKAN BIDANG ILMU anda kuasai pada SAAT INI? f1764',
|
|
'22. Padatingkat mana kompetensi KEAHLIAN BERDASARKAN BIDANG ILMU anda kuasai pada SAAT INI? f1764',
|
|
'22. Kompetensi KEAHLIAN BERDASARKAN BIDANG ILMU SAAT INI? f1764',
|
|
],
|
|
'bahasa_inggris_saat_ini': [
|
|
'F1766',
|
|
'f1766',
|
|
'24. Pada tingkat mana kompetensi BAHASA INGGRIS anda kuasai pada SAAT INI? f1766',
|
|
'24. Padatingkat mana kompetensi BAHASA INGGRIS anda kuasai pada SAAT INI? f1766',
|
|
'24. Kompetensi BAHASA INGGRIS SAAT INI? f1766',
|
|
],
|
|
'teknologi_informasi_saat_ini': [
|
|
'F1768',
|
|
'f1768',
|
|
'26. Pada tingkat mana kompetensi TEKNOLOGI INFORMASI anda kuasai pada SAAT INI? f1768',
|
|
'26. Padatingkat mana kompetensi TEKNOLOGI INFORMASI anda kuasai pada SAAT INI? f1768',
|
|
'26. Kompetensi TEKNOLOGI INFORMASI SAAT INI? f1768',
|
|
],
|
|
'komunikasi_saat_ini': [
|
|
'F1770',
|
|
'f1770',
|
|
'28. Pada tingkat mana kompetensi KOMUNIKASI anda kuasai pada SAAT INI? f1770',
|
|
'28. Padatingkat mana kompetensi KOMUNIKASI anda kuasai pada SAAT INI? f1769',
|
|
'28. Kompetensi KOMUNIKASI SAAT INI? f1770',
|
|
],
|
|
'kerja_sama_saat_ini': [
|
|
'F1772',
|
|
'f1772',
|
|
'30. Pada tingkat mana kompetensi KERJA SAMA TIM anda pada SAAT INI? f1772',
|
|
'30. Padatingkat mana kompetensi KERJA SAMA TIM anda pada SAAT INI? f1772',
|
|
'30. Kompetensi KERJA SAMA TIM SAAT INI? f1772',
|
|
],
|
|
'pengembangan_diri_saat_ini': [
|
|
'F1774',
|
|
'f1774',
|
|
'32. Pada tingkat mana kompetensi PENGEMBANGAN DIRI anda pada SAAT INI? f1774',
|
|
'32. Padatingkat mana kompetensi PENGEMBANGAN DIRI anda pada SAAT INI? f1774',
|
|
'32. Kompetensi PENGEMBANGAN DIRI SAAT INI? f1774',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - METODE PEMBELAJARAN
|
|
# ============================================
|
|
|
|
METODE_PEMBELAJARAN_MAPPING = {
|
|
'metode_perkuliahan': [
|
|
'F21',
|
|
'f21',
|
|
'33. Perkuliahan (f21)',
|
|
'33. Perkuliahan f21',
|
|
],
|
|
'metode_demonstrasi': [
|
|
'F22',
|
|
'f22',
|
|
'34. Demonstrasi (f22)',
|
|
'34. Demonstrasi f22',
|
|
],
|
|
'metode_proyek_riset': [
|
|
'F23',
|
|
'f23',
|
|
'35. Partisipasi dalam proyek riset (f23)',
|
|
'35. Partisipasi dalam proyek riset f23',
|
|
],
|
|
'metode_magang': [
|
|
'F24',
|
|
'f24',
|
|
'36. Magang (f24)',
|
|
'36. Magang f24',
|
|
],
|
|
'metode_praktikum': [
|
|
'F25',
|
|
'f25',
|
|
'37. Praktikum (f25)',
|
|
'37. Praktikum f25',
|
|
],
|
|
'metode_kerja_lapangan': [
|
|
'F26',
|
|
'f26',
|
|
'38. Kerja Lapangan (f26)',
|
|
'38. Kerja Lapangan f26',
|
|
],
|
|
'metode_diskusi': [
|
|
'F27',
|
|
'f27',
|
|
'39. Diskusi (f27)',
|
|
'39. Diskusi f27',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - WAKTU CARI KERJA
|
|
# ============================================
|
|
|
|
WAKTU_CARI_KERJA_MAPPING = {
|
|
'mulai_cari_kerja': [
|
|
'F301',
|
|
'f301',
|
|
'40. Kapan anda mulai mencari pekerjaan? f301',
|
|
],
|
|
'bulan_cari_sebelum_lulus': [
|
|
'F302',
|
|
'f302',
|
|
'41. Saya mencari pekerjaan, Kira-kira ....... bulan SEBELUM lulus (f302)',
|
|
],
|
|
'bulan_cari_setelah_wisuda': [
|
|
'F303',
|
|
'f303',
|
|
'42. Saya mencari pekerjaan, Kira-kira ....... bulan SETELAH wisuda (f303)',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - CARA CARI KERJA (Ya/Tidak)
|
|
# ============================================
|
|
|
|
CARA_CARI_KERJA_MAPPING = {
|
|
'cari_iklan': [
|
|
'F401',
|
|
'f401',
|
|
'43. Melalui iklan di koran/majalah, brosur ? (f401)',
|
|
],
|
|
'cari_melamar_tanpa_lowongan': [
|
|
'F402',
|
|
'f402',
|
|
'44. Melamar ke perusahaan tanpa mengetahui lowongan yang ada (f402)',
|
|
],
|
|
'cari_bursa_pameran': [
|
|
'F403',
|
|
'f403',
|
|
'45. Pergi ke bursa/pameran kerja (f403)',
|
|
],
|
|
'cari_internet': [
|
|
'F404',
|
|
'f404',
|
|
'46. Mencari lewat internet/iklan online/milis (f404)',
|
|
],
|
|
'cari_dihubungi_perusahaan': [
|
|
'F405',
|
|
'f405',
|
|
'47. Dihubungi oleh perusahaan (f405)',
|
|
],
|
|
'cari_kemenakertrans': [
|
|
'F406',
|
|
'f406',
|
|
'48. Menghubungi Kemenakertrans (f406)',
|
|
],
|
|
'cari_agen_tenaga_kerja': [
|
|
'F407',
|
|
'f407',
|
|
'49. Menghubungi agen tenaga kerja komersial/swasta (f407)',
|
|
],
|
|
'cari_pusat_karir': [
|
|
'F408',
|
|
'f408',
|
|
'50. Memperoleh informasi dari pusat/kantor pengembangan karir fakultas/universitas (f408)',
|
|
],
|
|
'cari_kantor_mahasiswa': [
|
|
'F409',
|
|
'f409',
|
|
'51. Menghubungi kantor kemahasiswaan/hubungan alumni (f409)',
|
|
],
|
|
'cari_jejaring': [
|
|
'F410',
|
|
'f410',
|
|
'52. Membangun jejaring (network) sejak masih kuliah (f410)',
|
|
],
|
|
'cari_relasi': [
|
|
'F411',
|
|
'f411',
|
|
'53. Melalui relasi (misalnya dosen, orang tua, saudara, teman, Ikatan Alumni dll.) (f411)',
|
|
],
|
|
'cari_bangun_usaha': [
|
|
'F412',
|
|
'f412',
|
|
'54. Membangun bisnis sendiri (f412)',
|
|
],
|
|
'cari_magang': [
|
|
'F413',
|
|
'f413',
|
|
'55. Melalui penempatan kerja atau magang (f413)',
|
|
],
|
|
'cari_tempat_kuliah': [
|
|
'F414',
|
|
'f414',
|
|
'56. Bekerja di tempat yang sama dengan tempat kerja semasa kuliah (f414)',
|
|
],
|
|
'cari_lainnya': [
|
|
'F415',
|
|
'f415',
|
|
'57. Lainnya (f415)',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - LAMARAN & KEAKTIFAN
|
|
# ============================================
|
|
|
|
LAMARAN_KEAKTIFAN_MAPPING = {
|
|
'jumlah_perusahaan_dilamar': [
|
|
'F6',
|
|
'f6',
|
|
'58. Berapa perusahaan/instansi/institusi yang sudah anda lamar (lewat surat atau e-mail) sebelum anda memperoleh pekerjaan pertama? f6',
|
|
],
|
|
'jumlah_perusahaan_merespons': [
|
|
'F7',
|
|
'f7',
|
|
'59. Berapa banyak perusahaan/instansi/institusi yang merespons lamaran Anda? f7',
|
|
],
|
|
'jumlah_perusahaan_wawancara': [
|
|
'F7a',
|
|
'f7a',
|
|
'60. Berapa banyak perusahaan/instansi/institusi yang mengundang anda untuk wawancara? f7a',
|
|
],
|
|
'aktif_cari_kerja_4_minggu': [
|
|
'F1001',
|
|
'f1001',
|
|
'61. Apakah Anda aktif mencari pekerjaan dalam 4 minggu terakhir? Pilihlah satu jawaban (f1001)',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# COLUMN MAPPING - KESESUAIAN PEKERJAAN
|
|
# ============================================
|
|
|
|
KESESUAIAN_PEKERJAAN_MAPPING = {
|
|
'kerja_tidak_sesuai_1': [
|
|
'F1601',
|
|
'f1601',
|
|
'62. Apakah pekerjaan anda saat ini tidak sesuai dengan pendidikan anda ? f1601',
|
|
],
|
|
'kerja_tidak_sesuai_2': [
|
|
'F1602',
|
|
'f1602',
|
|
'63. Apakah pekerjaan anda saat ini tidak sesuai dengan pendidikan anda ? f1602',
|
|
],
|
|
'alasan_tidak_sesuai_1': [
|
|
'F1603',
|
|
'f1603',
|
|
'64. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? f1603',
|
|
],
|
|
'alasan_tidak_sesuai_2': [
|
|
'F1604',
|
|
'f1604',
|
|
'65. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? f1604',
|
|
],
|
|
'alasan_tidak_sesuai_3': [
|
|
'F1605',
|
|
'f1605',
|
|
'66. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? f1605',
|
|
],
|
|
'alasan_tidak_sesuai_4': [
|
|
'F1606',
|
|
'f1606',
|
|
'67. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? f1606',
|
|
],
|
|
'alasan_tidak_sesuai_5': [
|
|
'F1607',
|
|
'f1607',
|
|
'68. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? f1607',
|
|
],
|
|
'alasan_tidak_sesuai_6': [
|
|
'F1608',
|
|
'f1608',
|
|
'69. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? f1608',
|
|
],
|
|
'alasan_tidak_sesuai_7': [
|
|
'F1609',
|
|
'f1609',
|
|
'70. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? f1609',
|
|
],
|
|
'alasan_tidak_sesuai_8': [
|
|
'F1610',
|
|
'f1610',
|
|
'71. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? f1610',
|
|
],
|
|
'alasan_tidak_sesuai_9': [
|
|
'F1611',
|
|
'f1611',
|
|
'72. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? f1611',
|
|
],
|
|
'alasan_tidak_sesuai_10': [
|
|
'F1612',
|
|
'f1612',
|
|
'73. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? f1612',
|
|
],
|
|
'alasan_tidak_sesuai_11': [
|
|
'F1613',
|
|
'f1613',
|
|
'74. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? Selain pilihan dijawaban soal diatas (f1613)',
|
|
],
|
|
'alasan_tidak_sesuai_lainnya': [
|
|
'F1614',
|
|
'f1614',
|
|
'75. Jika pekerjaan anda saat ini tidak sesuai dengan pendidikan anda, mengapa anda mengambilnya? Selain pilihan dijawaban soal diatas, Tuliskan (f1614)',
|
|
],
|
|
}
|
|
|
|
|
|
# ============================================
|
|
# ALL MAPPINGS COMBINED (untuk import)
|
|
# ============================================
|
|
|
|
# Combine all tracer response mappings
|
|
TRACER_MAPPING = {}
|
|
TRACER_MAPPING.update(PEKERJAAN_MAPPING)
|
|
TRACER_MAPPING.update(STUDI_LANJUT_MAPPING)
|
|
TRACER_MAPPING.update(KESESUAIAN_MAPPING)
|
|
TRACER_MAPPING.update(KOMPETENSI_LULUS_MAPPING)
|
|
TRACER_MAPPING.update(KOMPETENSI_SAAT_INI_MAPPING)
|
|
TRACER_MAPPING.update(METODE_PEMBELAJARAN_MAPPING)
|
|
TRACER_MAPPING.update(WAKTU_CARI_KERJA_MAPPING)
|
|
TRACER_MAPPING.update(CARA_CARI_KERJA_MAPPING)
|
|
TRACER_MAPPING.update(LAMARAN_KEAKTIFAN_MAPPING)
|
|
TRACER_MAPPING.update(KESESUAIAN_PEKERJAAN_MAPPING)
|
|
|
|
|
|
# ============================================
|
|
# NUMERIC FIELDS (harus jadi integer)
|
|
# ============================================
|
|
|
|
NUMERIC_FIELDS = [
|
|
'bulan_dapat_kerja',
|
|
'dapet_kerja_6_bulan',
|
|
'bulan_dapat_kerja_setelah',
|
|
'jumlah_perusahaan',
|
|
'bulan_cari_sebelum_lulus',
|
|
'bulan_cari_setelah_wisuda',
|
|
'jumlah_perusahaan_dilamar',
|
|
'jumlah_perusahaan_merespons',
|
|
'jumlah_perusahaan_wawancara',
|
|
]
|
|
|
|
|
|
# ============================================
|
|
# HELPER FUNCTIONS
|
|
# ============================================
|
|
|
|
def get_all_mappings():
|
|
"""Return semua mapping dalam satu dict"""
|
|
return {
|
|
'identitas': IDENTITAS_MAPPING,
|
|
'pekerjaan': PEKERJAAN_MAPPING,
|
|
'studi_lanjut': STUDI_LANJUT_MAPPING,
|
|
'kesesuaian': KESESUAIAN_MAPPING,
|
|
'kompetensi_lulus': KOMPETENSI_LULUS_MAPPING,
|
|
'kompetensi_saat_ini': KOMPETENSI_SAAT_INI_MAPPING,
|
|
'metode_pembelajaran': METODE_PEMBELAJARAN_MAPPING,
|
|
'waktu_cari_kerja': WAKTU_CARI_KERJA_MAPPING,
|
|
'cara_cari_kerja': CARA_CARI_KERJA_MAPPING,
|
|
'lamaran_keaktifan': LAMARAN_KEAKTIFAN_MAPPING,
|
|
'kesesuaian_pekerjaan': KESESUAIAN_PEKERJAAN_MAPPING,
|
|
'tracer': TRACER_MAPPING,
|
|
}
|
|
|
|
|
|
def get_field_code(db_field: str, mapping_dict: dict) -> Optional[str]:
|
|
"""
|
|
Extract kode field (misal 'F14') dari mapping.
|
|
|
|
Args:
|
|
db_field: Nama field di database (misal 'keeratan_bidang_studi')
|
|
mapping_dict: Dict mapping yang sesuai
|
|
|
|
Returns:
|
|
Kode field (misal 'F14') atau None
|
|
"""
|
|
cols = mapping_dict.get(db_field, [])
|
|
for col in cols:
|
|
if str(col).upper().startswith('F'):
|
|
return str(col).upper()
|
|
return None
|