TIF_E41253310/archive/debug_tracer_detailed.py

95 lines
2.8 KiB
Python

import pandas as pd
import sys
sys.path.insert(0, r'c:\Users\syifa\TA-PROJEK\Backend')
# Import fungsi dari import_data.py
from app.routers.import_data import get_year_mapping, find_column, konversi_jawaban
# Baca CSV 2019
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 mapping
tracer_mapping = get_year_mapping('2019', source_cols)
# Baris pertama
row = df.iloc[0]
def get_val(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
# Simulasi build tracer_data
print('=== SIMULASI BUILD TRACER_DATA ===')
print()
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']
# Focus on these fields
target_fields = ['nama_perusahaan', 'jabatan', 'jenis_perusahaan_full', 'status_saat_ini']
for field, cols in tracer_mapping.items():
if field not in target_fields:
continue
print(f'Processing: {field}')
print(f' cols: {cols}')
val = get_val(tracer_mapping, field)
print(f' val dari get_val: {repr(val)}')
if val is None:
print(f' -> SKIP: val is None')
print()
continue
if isinstance(val, str) and val.strip() in ['', 'nan', 'None', '-', '_']:
print(f' -> SKIP: invalid string "{val}"')
print()
continue
# Get field code
field_code = None
if cols:
for col in cols:
if str(col).upper().startswith('F'):
field_code = str(col).upper()
break
print(f' field_code: {field_code}')
# Convert
converted_val = konversi_jawaban(field_code, val)
print(f' converted_val: {repr(converted_val)}')
# Save
if field in numeric_fields:
try:
tracer_data[field] = int(val)
print(f' -> SAVED as numeric: {int(val)}')
except (ValueError, TypeError) as e:
print(f' -> SKIP: cannot convert to int - {e}')
elif converted_val is not None:
tracer_data[field] = converted_val
print(f' -> SAVED: {repr(converted_val)}')
else:
print(f' -> SKIP: converted_val is None')
print()
print('=== HASIL AKHIR ===')
for field in target_fields:
if field in tracer_data:
print(f'{field}: {repr(tracer_data[field])}')
else:
print(f'{field}: NOT SAVED')