TIF_E41253310/scripts/checks/check_2024_import.py

47 lines
2.0 KiB
Python

import sys
sys.path.append('Backend')
import pandas as pd
from app.parsers.mappings import (
IDENTITAS_MAPPING, PEKERJAAN_MAPPING, STUDI_LANJUT_MAPPING,
KESESUAIAN_MAPPING, KOMPETENSI_LULUS_MAPPING, KOMPETENSI_SAAT_INI_MAPPING,
METODE_PEMBELAJARAN_MAPPING, WAKTU_CARI_KERJA_MAPPING, CARA_CARI_KERJA_MAPPING,
LAMARAN_KEAKTIFAN_MAPPING, KESESUAIAN_PEKERJAAN_MAPPING, NUMERIC_FIELDS
)
from app.parsers.column_finder import find_column
from app.parsers.converters import parse_2024_value, parse_date, konversi_jawaban
df = pd.read_csv('Data_Tracerstudy/Data_2024_Tracer_study.csv', sep=';', encoding='utf-8-sig')
print(f'Total CSV rows: {len(df)}, columns: {len(df.columns)}')
all_mappings = {
'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,
}
mapped_cols = set()
for grp_name, grp in all_mappings.items():
print(f'\n=== {grp_name} ===')
for field, col_patterns in grp.items():
found = find_column(list(df.columns), col_patterns)
if found:
mapped_cols.add(found)
sample_val = df[found].dropna().iloc[0] if df[found].notna().any() else 'ALL_NAN'
parsed = parse_2024_value(sample_val) if sample_val != 'ALL_NAN' else None
print(f' {field} -> [OK] "{found}" (sample: {repr(sample_val)} -> {parsed})')
else:
print(f' {field} -> [MISSING] patterns: {col_patterns}')
unmapped = [c for c in df.columns if c not in mapped_cols]
print(f'\n=== UNMAPPED COLUMNS ({len(unmapped)}) ===')
for c in unmapped:
print(' -', c)