{"nodes": [{"id": "$graphify-root$_backend_scripts_backfill_attendance_py", "label": "backfill_attendance.py", "file_type": "code", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L1"}, {"id": "$graphify-root$_backend_scripts_backfill_attendance_resolve_token", "label": "resolve_token()", "file_type": "code", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L29", "_callable": true}, {"id": "$graphify-root$_backend_scripts_backfill_attendance_main", "label": "main()", "file_type": "code", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L45", "_callable": true}, {"id": "$graphify-root$_backend_scripts_backfill_attendance_main_refresher", "label": "_refresher()", "file_type": "code", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L59", "_callable": true}, {"id": "$graphify-root$_backend_scripts_backfill_attendance_rationale_2", "label": "Backfill data attendance dari tanggal awal sampai hari ini (sekali jalan).\u2026", "file_type": "rationale", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L2"}, {"id": "$graphify-root$_backend_scripts_backfill_attendance_rationale_30", "label": "Cari token TMS valid: scheduler user dulu, lalu fallback service account.", "file_type": "rationale", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L30"}], "edges": [{"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L14", "weight": 1.0, "_python_import_module": "sys", "_python_import_bindings": [["sys", "sys"]], "_python_import_module_binding": true}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L15", "weight": 1.0, "_python_import_module": "os", "_python_import_bindings": [["os", "os"]], "_python_import_module_binding": true}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L16", "weight": 1.0, "_python_import_module": "argparse", "_python_import_bindings": [["argparse", "argparse"]], "_python_import_module_binding": true}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L17", "weight": 1.0, "_python_import_module": "datetime", "_python_import_bindings": [["datetime", "datetime"], ["timedelta", "timedelta"]]}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "$graphify-root$_backend_app_db_session_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L21", "weight": 1.0, "_python_import_module": "app.db.session", "_python_import_bindings": [["SessionLocal", "SessionLocal"]], "target_file": "$graphify-root$/backend/app/db/session.py"}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "$graphify-root$_backend_app_db_models_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L22", "weight": 1.0, "_python_import_module": "app.db.models", "_python_import_bindings": [["AttendanceRecord", "AttendanceRecord"]], "target_file": "$graphify-root$/backend/app/db/models.py"}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "$graphify-root$_backend_app_services_auth_service_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L23", "weight": 1.0, "_python_import_module": "app.services.auth_service", "_python_import_bindings": [["get_decrypted_tms_token", "get_decrypted_tms_token"], ["auto_relogin", "auto_relogin"]], "target_file": "$graphify-root$/backend/app/services/auth_service.py"}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "$graphify-root$_backend_app_services_tms_api_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L24", "weight": 1.0, "_python_import_module": "app.services.tms_api", "_python_import_bindings": [["download_attendance", "download_attendance"]], "target_file": "$graphify-root$/backend/app/services/tms_api.py"}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "$graphify-root$_backend_app_jobs_scheduler_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L25", "weight": 1.0, "_python_import_module": "app.jobs.scheduler", "_python_import_bindings": [["_find_scheduler_user", "_find_scheduler_user"]], "target_file": "$graphify-root$/backend/app/jobs/scheduler.py"}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "$graphify-root$_backend_app_core_logging_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L26", "weight": 1.0, "_python_import_module": "app.core.logging", "_python_import_bindings": [["log_activity", "log_activity"], ["setup_logging", "setup_logging"]], "target_file": "$graphify-root$/backend/app/core/logging.py"}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "$graphify-root$_backend_scripts_backfill_attendance_resolve_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_py", "target": "$graphify-root$_backend_scripts_backfill_attendance_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_main", "target": "$graphify-root$_backend_scripts_backfill_attendance_main_refresher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_main", "target": "$graphify-root$_backend_scripts_backfill_attendance_resolve_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_main", "target": "$graphify-root$_backend_scripts_backfill_attendance_main_refresher", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_rationale_2", "target": "$graphify-root$_backend_scripts_backfill_attendance_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_backend_scripts_backfill_attendance_rationale_30", "target": "$graphify-root$_backend_scripts_backfill_attendance_resolve_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L30", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_resolve_token", "callee": "_find_scheduler_user", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L31", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_resolve_token", "callee": "get_decrypted_tms_token", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_resolve_token", "callee": "ensure_valid_service_token", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L42", "receiver": "service_account", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "ArgumentParser", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L46", "receiver": "argparse", "_python_receiver_shadowed": false}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "add_argument", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L47", "receiver": "parser", "_python_receiver_shadowed": true, "receiver_type": "ArgumentParser"}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "parse_args", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L48", "receiver": "parser", "_python_receiver_shadowed": true, "receiver_type": "ArgumentParser"}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "setup_logging", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "SessionLocal", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L52", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "date", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L62", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "strptime", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L62", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "date", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L63", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "now", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L63", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "timedelta", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L68", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "strftime", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L69", "receiver": "day", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "download_attendance", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L71", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L72", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "delete", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L77", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "filter", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L77", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "query", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L77", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "SessionLocal"}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "AttendanceRecord", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L77"}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "add", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L79", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "SessionLocal"}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "AttendanceRecord", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L79", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L80", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L81", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L82", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L84", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L85", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L86", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L87", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L88", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L89", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L90", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L91", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L92", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L93", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L94", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L95", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "get", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L96", "receiver": "r", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "commit", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L98", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "SessionLocal"}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "log_activity", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main", "callee": "close", "is_member_call": true, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L106", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "SessionLocal"}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main_refresher", "callee": "auto_relogin", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main_refresher", "callee": "db", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L60"}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main_refresher", "callee": "_find_scheduler_user", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main_refresher", "callee": "db", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L60"}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main_refresher", "callee": "_find_scheduler_user", "is_member_call": false, "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_backend_scripts_backfill_attendance_main_refresher", "callee": "db", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/scripts/backfill_attendance.py", "source_location": "L60"}], "_cached_target_files": ["$graphify-root$/backend/app/core/logging.py", "$graphify-root$/backend/app/db/models.py", "$graphify-root$/backend/app/db/session.py", "$graphify-root$/backend/app/jobs/scheduler.py", "$graphify-root$/backend/app/services/auth_service.py", "$graphify-root$/backend/app/services/tms_api.py"]}