import pandas as pd # Fungsi konversi dari import_data.py (yang sudah diperbaiki) 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'}, 'F1601': {0: 'Tidak sesuai', 1: 'Pekerjaan saya sekarang sudah sesuai dengan pendidikan saya'}, 'F1602': {0: 'Pekerjaan saya sudah sesuai', 1: 'Saya belum mendapatkan pekerjaan yang lebih sesuai'}, 'F1603': {0: 'Pekerjaan saya sudah sesuai', 1: 'Di pekerjaan ini saya memeroleh prospek karir yang baik'}, 'F1604': {0: 'Pekerjaan saya sudah sesuai', 1: 'Saya lebih suka bekerja di area pekerjaan yang tidak ada hubungannya dengan pendidikan saya'}, 'F1605': {0: 'Pekerjaan saya sudah sesuai', 1: 'Saya dipromosikan ke posisi yang kurang berhubungan dengan pendidikan saya dibanding posisi sebelumnya'}, 'F1606': {0: 'Pekerjaan saya sudah sesuai', 1: 'Saya dapat memeroleh pendapatan yang lebih tinggi di pekerjaan ini'}, 'F1607': {0: 'Pekerjaan saya sudah sesuai', 1: 'Pekerjaan saya saat ini lebih aman/terjamin/secure'}, 'F1608': {0: 'Pekerjaan saya sudah sesuai', 1: 'Pekerjaan saya saat ini lebih menarik'}, 'F1609': {0: 'Pekerjaan saya sudah sesuai', 1: 'Pekerjaan saya saat ini lebih memungkinkan saya mengambil pekerjaan'}, 'F1610': {0: 'Pekerjaan saya sudah sesuai', 1: 'Pekerjaan saya saat ini lokasinya lebih dekat dari rumah saya'}, 'F1611': {0: 'Pekerjaan saya sudah sesuai', 1: 'Pekerjaan saya saat ini dapat lebih menjamin kebutuhan keluarga saya'}, 'F1612': {0: 'Pekerjaan saya sudah sesuai', 1: 'Pada awal meniti karir ini, saya harus menerima pekerjaan yang tidak berhubungan dengan pendidikan saya'}, 'F1613': {0: 'Pekerjaan saya sudah sesuai', 1: 'Lainnya'}, } YA_TIDAK = {0: 'Tidak', 1: 'Ya'} def konversi_jawaban(field_code, nilai): if pd.isna(nilai) or nilai == '': return None if isinstance(nilai, str) and nilai.strip() in ['', 'nan', 'None']: return None original_nilai = nilai if isinstance(nilai, str): try: nilai = int(nilai) except ValueError: pass if isinstance(nilai, float): if nilai != int(nilai): return None nilai = int(nilai) nilai_key = int(nilai) if isinstance(nilai, (int, float)) else nilai # F1601-F1613 gunakan JAWABAN_MAPPING if field_code in ['F1601', 'F1602', 'F1603', 'F1604', 'F1605', 'F1606', 'F1607', 'F1608', 'F1609', 'F1610', 'F1611', 'F1612', 'F1613']: if field_code in JAWABAN_MAPPING: return JAWABAN_MAPPING[field_code].get(nilai_key) return YA_TIDAK.get(nilai_key) if isinstance(original_nilai, (int, float)): return original_nilai return original_nilai # TEST print("=" * 70) print("TEST F1601-F1613 (TEKS LENGKAP)") print("=" * 70) test_cases = [ ('F1601', 0, 'Tidak sesuai'), ('F1601', 1, 'Pekerjaan saya sekarang sudah sesuai'), ('F1602', 0, 'Pekerjaan saya sudah sesuai'), ('F1602', 1, 'Saya belum mendapatkan pekerjaan yang lebih sesuai'), ('F1603', 0, 'Pekerjaan saya sudah sesuai'), ('F1603', 1, 'Di pekerjaan ini saya memeroleh prospek karir yang baik'), ('F1604', 0, 'Pekerjaan saya sudah sesuai'), ('F1604', 1, 'Saya lebih suka bekerja di area pekerjaan yang tidak ada hubungannya'), ('F1613', 0, 'Pekerjaan saya sudah sesuai'), ('F1613', 1, 'Lainnya'), ] all_passed = True for field_code, nilai, expected_text in test_cases: result = konversi_jawaban(field_code, nilai) expected = expected_text.split('...')[0] # Ambil partial match is_correct = result and expected.lower() in result.lower() status = '[OK]' if is_correct else '[FAIL]' if not is_correct: all_passed = False print(f"{status} {field_code}={nilai}") print(f" Result: {result}") print() print("=" * 70) if all_passed: print("SEMUA TEST LULUS!") else: print("ADA TEST YANG GAGAL!") print("=" * 70)