""" Debug script untuk simulasi import tracer_responses """ import pandas as pd import sys sys.path.insert(0, r'c:\Users\syifa\TA-PROJEK\Backend') from app.routers.import_data import get_year_mapping, find_column, konversi_jawaban # Baca CSV df = pd.read_csv(r'c:\Users\syifa\TA-PROJEK\Data_Tracerstudy\Data_2019_Tracer_study.csv', sep=';', encoding='utf-8-sig') source_cols = list(df.columns) # Get year mapping tahun = '2019' tracer_mapping = get_year_mapping(tahun, source_cols) print('='*70) print(f'DEBUG IMPORT TAHUN {tahun}') print('='*70) # Print tracer_mapping yang sebenarnya digunakan print('\nTRACER MAPPING:') for key in ['email', 'nama_perusahaan', 'jumlah_perusahaan', 'jabatan']: if key in tracer_mapping: print(f" {key}: {tracer_mapping[key]}") else: print(f" {key}: NOT IN MAPPING (akan di-skip)") print() # Process baris pertama row = df.iloc[0] print(f'NIM: {row["NIM/Nomor Mahasiswa"]}') print(f'Nama: {row["Nama"]}') print() def get_val_debug(mapping_dict, key, default=None): cols = mapping_dict.get(key, []) col = find_column(source_cols, cols) if col and pd.notna(row.get(col)): val = row[col] if isinstance(val, (int, float)): return int(val) if val == int(val) else val return str(val).strip() return default print('='*70) print('SIMULASI BUILD TRACER_DATA') print('='*70) tracer_data = {} 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'] for field, cols in tracer_mapping.items(): val = get_val_debug(tracer_mapping, field) if val is None: print(f'SKIP {field}: val is None') continue # Skip invalid string values if isinstance(val, str) and val.strip() in ['', 'nan', 'None', '-', '_']: print(f'SKIP {field}: invalid string "{val}"') continue # Get field code from mapping field_code = None if cols: for col in cols: if str(col).upper().startswith('F'): field_code = str(col).upper() break # Convert value converted_val = konversi_jawaban(field_code, val) # Save to tracer_data if field in numeric_fields: try: tracer_data[field] = int(val) print(f'OK {field} (numeric): {val} -> {int(val)}') except (ValueError, TypeError) as e: print(f'SKIP {field}: cannot convert to int "{val}" - {e}') elif converted_val is not None: tracer_data[field] = converted_val print(f'OK {field}: {repr(val)} -> {repr(converted_val)}') else: print(f'SKIP {field}: converted_val is None') print() print('='*70) print('HASIL TRACER_DATA') print('='*70) for key in ['email', 'nama_perusahaan', 'jumlah_perusahaan', 'jabatan']: if key in tracer_data: print(f'{key}: {repr(tracer_data[key])}') else: print(f'{key}: NOT SAVED')