{"nodes": [{"id": "$graphify-root$_backend_app_db_models_py", "label": "models.py", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L1"}, {"id": "$graphify-root$_backend_app_db_models_systemlog", "label": "SystemLog", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L7", "_callable": true, "_callable_class": true}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/backend/app/db/models.py"}, {"id": "$graphify-root$_backend_app_db_models_user", "label": "User", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L19", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_usertoken", "label": "UserToken", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L32", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_tmscreds", "label": "TmsCreds", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L42", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_serviceaccount", "label": "ServiceAccount", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L54", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_jobhistory", "label": "JobHistory", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L73", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_report", "label": "Report", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L87", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_schedulerconfig", "label": "SchedulerConfig", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L98", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_auditlog", "label": "AuditLog", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L107", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_savedquery", "label": "SavedQuery", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L117", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_shipmentstate", "label": "ShipmentState", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L135", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_attendancestate", "label": "AttendanceState", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L150", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_gantungan", "label": "Gantungan", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L160", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_ehcexception", "label": "EhcException", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L182", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_driver", "label": "Driver", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L226", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_seller", "label": "Seller", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L233", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_shipment", "label": "Shipment", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L243", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_tmsreturn", "label": "TmsReturn", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L300", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_attendancerecord", "label": "AttendanceRecord", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L333", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_employee", "label": "Employee", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L359", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_linehaultrip", "label": "LinehaulTrip", "file_type": "code", "source_file": "backend/app/db/models.py", "source_location": "L377", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_db_models_rationale_8", "label": "Log sistem (structlog) \u2014 ditampilkan di frontend live log.", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L8"}, {"id": "$graphify-root$_backend_app_db_models_rationale_43", "label": "TMS credentials terenkripsi \u2014 untuk auto re-login saat token expired. Hanya\u2026", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L43"}, {"id": "$graphify-root$_backend_app_db_models_rationale_55", "label": "Service account per hub \u2014 kredensial TMS untuk menjalankan job (Opsi A). User\u2026", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L55"}, {"id": "$graphify-root$_backend_app_db_models_rationale_118", "label": "User-saved SQL queries for future reference.", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L118"}, {"id": "$graphify-root$_backend_app_db_models_rationale_136", "label": "State tracking per shipment (global, lintas tanggal). Menyimpan waktu pertama\u2026", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L136"}, {"id": "$graphify-root$_backend_app_db_models_rationale_151", "label": "State tracking attendance (pengganti attendance_state.json).", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L151"}, {"id": "$graphify-root$_backend_app_db_models_rationale_161", "label": "Data stuck scanned (gantungan) \u2014 dipakai Ops Monitoring. Diperbarui oleh job\u2026", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L161"}, {"id": "$graphify-root$_backend_app_db_models_rationale_183", "label": "EHC exception data (dari endpoint tokgistic /ehc/v1/ui/ehc/search). Diperbarui\u2026", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L183"}, {"id": "$graphify-root$_backend_app_db_models_rationale_227", "label": "Master data driver (dari Driver.csv)", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L227"}, {"id": "$graphify-root$_backend_app_db_models_rationale_234", "label": "Master data seller (dari Seller.csv)", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L234"}, {"id": "$graphify-root$_backend_app_db_models_rationale_244", "label": "TMS shipment data (hasil download + enrich)", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L244"}, {"id": "$graphify-root$_backend_app_db_models_rationale_301", "label": "TMS Return data (hasil download)", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L301"}, {"id": "$graphify-root$_backend_app_db_models_rationale_334", "label": "Attendance data (hasil download) \u2014 kolom proper (bukan JSON).", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L334"}, {"id": "$graphify-root$_backend_app_db_models_rationale_360", "label": "Employee hub dari /dw/v1/dw (Operator + Rider Last Mile).", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L360"}, {"id": "$graphify-root$_backend_app_db_models_rationale_378", "label": "Linehaul data (hasil download)", "file_type": "rationale", "source_file": "backend/app/db/models.py", "source_location": "L378"}], "edges": [{"source": "$graphify-root$_backend_app_db_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L1", "weight": 1.0, "_python_import_module": "sqlalchemy", "_python_import_bindings": [["Column", "Column"], ["String", "String"], ["DateTime", "DateTime"], ["Integer", "Integer"], ["ForeignKey", "ForeignKey"], ["Text", "Text"], ["Boolean", "Boolean"], ["Index", "Index"], ["JSON", "JSON"], ["BigInteger", "BigInteger"]]}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L2", "weight": 1.0, "_python_import_module": "datetime", "_python_import_bindings": [["datetime", "datetime"]]}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_session_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L4", "weight": 1.0, "_python_import_module": "app.db.session", "_python_import_bindings": [["Base", "Base"]], "target_file": "$graphify-root$/backend/app/db/session.py"}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_systemlog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_systemlog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_user", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_usertoken", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_usertoken", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_tmscreds", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_tmscreds", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_serviceaccount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_serviceaccount", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_jobhistory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_jobhistory", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_report", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_report", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_schedulerconfig", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_schedulerconfig", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_auditlog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_auditlog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_savedquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_savedquery", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_shipmentstate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_shipmentstate", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_attendancestate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_attendancestate", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_gantungan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L160", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_gantungan", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L160", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_ehcexception", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_ehcexception", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L226", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_driver", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L226", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_seller", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L233", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_seller", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L233", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_shipment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L243", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_shipment", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L243", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_tmsreturn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L300", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_tmsreturn", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L300", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_attendancerecord", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L333", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_attendancerecord", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L333", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_employee", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L359", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_employee", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L359", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_py", "target": "$graphify-root$_backend_app_db_models_linehaultrip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L377", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_linehaultrip", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L377", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_8", "target": "$graphify-root$_backend_app_db_models_systemlog", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_43", "target": "$graphify-root$_backend_app_db_models_tmscreds", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_55", "target": "$graphify-root$_backend_app_db_models_serviceaccount", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_118", "target": "$graphify-root$_backend_app_db_models_savedquery", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_136", "target": "$graphify-root$_backend_app_db_models_shipmentstate", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_151", "target": "$graphify-root$_backend_app_db_models_attendancestate", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_161", "target": "$graphify-root$_backend_app_db_models_gantungan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_183", "target": "$graphify-root$_backend_app_db_models_ehcexception", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L183", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_227", "target": "$graphify-root$_backend_app_db_models_driver", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L227", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_234", "target": "$graphify-root$_backend_app_db_models_seller", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L234", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_244", "target": "$graphify-root$_backend_app_db_models_shipment", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_301", "target": "$graphify-root$_backend_app_db_models_tmsreturn", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_334", "target": "$graphify-root$_backend_app_db_models_attendancerecord", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L334", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_360", "target": "$graphify-root$_backend_app_db_models_employee", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L360", "weight": 1.0}, {"source": "$graphify-root$_backend_app_db_models_rationale_378", "target": "$graphify-root$_backend_app_db_models_linehaultrip", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/db/models.py", "source_location": "L378", "weight": 1.0}], "raw_calls": [], "_cached_target_files": ["$graphify-root$/backend/app/db/session.py"]}