import pandas as pd # Fungsi KONVERSI YANG SUDAH DIPERBAIKI def konversi_jawaban_fix(field_code, nilai): """Fungsi konversi yang sudah diperbaiki""" if pd.isna(nilai) or nilai == 0 or nilai == '': return None # Convert string number to int for lookup original_nilai = nilai if isinstance(nilai, str): try: nilai = int(nilai) except ValueError: pass # Keep as string if not a number # Convert ke int jika float if isinstance(nilai, float): if nilai != int(nilai): return None nilai = int(nilai) # Convert nilai ke key yang sesuai nilai_key = nilai if isinstance(nilai, (int, float)): nilai_key = int(nilai) JAWABAN_MAPPING = { 'F8': {1: 'Bekerja (full time/part time)', 2: 'Belum memungkinkan bekerja', 3: 'Wiraswasta', 4: 'Melanjutkan Pendidikan', 5: 'Tidak kerja tetapi sedang mencari kerja'}, 'F1101': {1: 'Instansi pemerintah', 2: 'Organisasi non-profit/Lembaga Swadaya Masyarakat', 3: 'Perusahaan swasta', 4: 'Wiraswasta/perusahaan sendiri', 5: 'Lainnya', 6: 'BUMN/BUMD', 7: 'Institusi/Organisasi Multilateral'}, 'F5c': {1: 'Founder', 2: 'Co-Founder', 3: 'Staff', 4: 'Freelance/Kerja Lepas'}, } KOMPETENSI_LEVEL = {1: 'Sangat Rendah', 2: 'Rendah', 3: 'Netral', 4: 'Tinggi', 5: 'Sangat Tinggi'} METODE_LEVEL = {1: 'Sangat Besar', 2: 'Besar', 3: 'Cukup Besar', 4: 'Kurang', 5: 'Tidak Sama Sekali'} YA_TIDAK = {0: 'Tidak', 1: 'Ya'} if field_code in ['F1761', 'F1762', 'F1763', 'F1764', 'F1765', 'F1766', 'F1767', 'F1768', 'F1769', 'F1770', 'F1771', 'F1772', 'F1773', 'F1774']: return KOMPETENSI_LEVEL.get(nilai_key) if field_code in ['F21', 'F22', 'F23', 'F24', 'F25', 'F26', 'F27']: return METODE_LEVEL.get(nilai_key) if field_code in ['F401', 'F402', 'F403', 'F404', 'F405', 'F406', 'F407', 'F408', 'F409', 'F410', 'F411', 'F412', 'F413', 'F414', 'F415', 'F416']: return YA_TIDAK.get(nilai_key) if field_code in ['F1603', 'F1604', 'F1605', 'F1606', 'F1607', 'F1608', 'F1609', 'F1610', 'F1611', 'F1612', 'F1613']: return YA_TIDAK.get(nilai_key) if field_code in JAWABAN_MAPPING: return JAWABAN_MAPPING[field_code].get(nilai_key) if isinstance(original_nilai, (int, float)): return original_nilai return original_nilai # TEST print('=== TEST FUNGSI KONVERSI YANG SUDAH DIPERBAIKI ===') print() test_cases = [ ('F8', '1', 'Status: Bekerja'), ('F8', '3', 'Status: Wiraswasta'), ('F1101', '3', 'Jenis: Perusahaan swasta'), ('F1101', '7', 'Jenis: Institusi/Organisasi Multilateral'), ('F5c', '3', 'Jabatan: Staff'), ('F5c', '1', 'Jabatan: Founder'), ('F5b', 'Al irsyad al islamiyyah jember', 'Nama Perusahaan (TEXT)'), ('F1761', 4, 'Kompetensi: Tinggi'), ('F401', '1', 'Cari kerja via internet: Ya'), ] all_passed = True for field_code, nilai, description in test_cases: result = konversi_jawaban_fix(field_code, nilai) status = '✓' if result is not None else '✗' print(f'{status} {description}') print(f' Input: {repr(nilai)} -> Output: {repr(result)}') if result is None: all_passed = False print() print('='*50) if all_passed: print('✅ SEMUA TEST LULUS!') else: print('❌ ADA TEST YANG GAGAL!')