{ "directed": false, "multigraph": false, "graph": {}, "nodes": [ { "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/__init__.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_init_py", "community": 11, "norm_label": "__init__.py" }, { "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/__manifest__.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_manifest_py", "community": 14, "norm_label": "__manifest__.py" }, { "label": "ai_service.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_service_py", "community": 1, "norm_label": "ai_service.py" }, { "label": "FusionClockAIService", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L21", "id": "ai_service_fusionclockaiservice", "community": 1, "norm_label": "fusionclockaiservice" }, { "label": "._get_client()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L29", "id": "ai_service_fusionclockaiservice_get_client", "community": 1, "norm_label": "._get_client()" }, { "label": "._get_model()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L38", "id": "ai_service_fusionclockaiservice_get_model", "community": 1, "norm_label": "._get_model()" }, { "label": "._get_max_tokens()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L42", "id": "ai_service_fusionclockaiservice_get_max_tokens", "community": 1, "norm_label": "._get_max_tokens()" }, { "label": "._check_budget()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L50", "id": "ai_service_fusionclockaiservice_check_budget", "community": 1, "norm_label": "._check_budget()" }, { "label": "._get_cache_key()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L74", "id": "ai_service_fusionclockaiservice_get_cache_key", "community": 1, "norm_label": "._get_cache_key()" }, { "label": "._check_cache()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L77", "id": "ai_service_fusionclockaiservice_check_cache", "community": 1, "norm_label": "._check_cache()" }, { "label": "._store_cache()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L87", "id": "ai_service_fusionclockaiservice_store_cache", "community": 1, "norm_label": "._store_cache()" }, { "label": "._log_usage()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L109", "id": "ai_service_fusionclockaiservice_log_usage", "community": 1, "norm_label": "._log_usage()" }, { "label": "._get_system_prompt()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L140", "id": "ai_service_fusionclockaiservice_get_system_prompt", "community": 3, "norm_label": "._get_system_prompt()" }, { "label": ".chat_completion()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L153", "id": "ai_service_fusionclockaiservice_chat_completion", "community": 1, "norm_label": ".chat_completion()" }, { "label": "._build_employee_context()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L186", "id": "ai_service_fusionclockaiservice_build_employee_context", "community": 3, "norm_label": "._build_employee_context()" }, { "label": "._build_team_context()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L252", "id": "ai_service_fusionclockaiservice_build_team_context", "community": 1, "norm_label": "._build_team_context()" }, { "label": "._build_payroll_context()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L302", "id": "ai_service_fusionclockaiservice_build_payroll_context", "community": 4, "norm_label": "._build_payroll_context()" }, { "label": "clock_correction_ai.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_correction_ai_py", "community": 3, "norm_label": "clock_correction_ai.py" }, { "label": "ClockCorrectionAI", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L12", "id": "clock_correction_ai_clockcorrectionai", "community": 3, "norm_label": "clockcorrectionai" }, { "label": ".action_get_ai_advice()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L17", "id": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "community": 3, "norm_label": ".action_get_ai_advice()" }, { "label": "hr_employee_ai.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_hr_employee_ai_py", "community": 3, "norm_label": "hr_employee_ai.py" }, { "label": "HrEmployeeAI", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L12", "id": "hr_employee_ai_hremployeeai", "community": 3, "norm_label": "hremployeeai" }, { "label": ".action_generate_ai_summary()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L19", "id": "hr_employee_ai_hremployeeai_action_generate_ai_summary", "community": 3, "norm_label": ".action_generate_ai_summary()" }, { "label": ".action_generate_coach_tip()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L41", "id": "hr_employee_ai_hremployeeai_action_generate_coach_tip", "community": 3, "norm_label": ".action_generate_coach_tip()" }, { "label": "ai_usage.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_usage.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_usage_py", "community": 8, "norm_label": "ai_usage.py" }, { "label": "FusionClockAIUsage", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_usage.py", "source_location": "L8", "id": "ai_usage_fusionclockaiusage", "community": 8, "norm_label": "fusionclockaiusage" }, { "label": "._compute_total()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_usage.py", "source_location": "L23", "id": "ai_usage_fusionclockaiusage_compute_total", "community": 8, "norm_label": "._compute_total()" }, { "label": "ai_prompt.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_prompt.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_prompt_py", "community": 9, "norm_label": "ai_prompt.py" }, { "label": "FusionClockAIPrompt", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_prompt.py", "source_location": "L8", "id": "ai_prompt_fusionclockaiprompt", "community": 9, "norm_label": "fusionclockaiprompt" }, { "label": "hr_attendance_ai.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_hr_attendance_ai_py", "community": 7, "norm_label": "hr_attendance_ai.py" }, { "label": "HrAttendanceAI", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L11", "id": "hr_attendance_ai_hrattendanceai", "community": 7, "norm_label": "hrattendanceai" }, { "label": "._ai_explain_incident()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L14", "id": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "community": 7, "norm_label": "._ai_explain_incident()" }, { "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "community": 12, "norm_label": "__init__.py" }, { "label": "ai_conversation.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_conversation_py", "community": 5, "norm_label": "ai_conversation.py" }, { "label": "FusionClockAIConversation", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L8", "id": "ai_conversation_fusionclockaiconversation", "community": 5, "norm_label": "fusionclockaiconversation" }, { "label": "._compute_title()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L23", "id": "ai_conversation_fusionclockaiconversation_compute_title", "community": 5, "norm_label": "._compute_title()" }, { "label": "FusionClockAIMessage", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L33", "id": "ai_conversation_fusionclockaimessage", "community": 5, "norm_label": "fusionclockaimessage" }, { "label": "clock_report_ai.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_report_ai_py", "community": 4, "norm_label": "clock_report_ai.py" }, { "label": "ClockReportAI", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L11", "id": "clock_report_ai_clockreportai", "community": 4, "norm_label": "clockreportai" }, { "label": ".action_generate_ai_narrative()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L16", "id": "clock_report_ai_clockreportai_action_generate_ai_narrative", "community": 4, "norm_label": ".action_generate_ai_narrative()" }, { "label": ".action_generate_report()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L37", "id": "clock_report_ai_clockreportai_action_generate_report", "community": 4, "norm_label": ".action_generate_report()" }, { "label": "res_config_settings.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/res_config_settings.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_res_config_settings_py", "community": 10, "norm_label": "res_config_settings.py" }, { "label": "ResConfigSettings", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/res_config_settings.py", "source_location": "L8", "id": "res_config_settings_resconfigsettings", "community": 10, "norm_label": "resconfigsettings" }, { "label": "ai_cache.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_cache_py", "community": 6, "norm_label": "ai_cache.py" }, { "label": "FusionClockAICache", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L9", "id": "ai_cache_fusionclockaicache", "community": 6, "norm_label": "fusionclockaicache" }, { "label": "._gc_expired_cache()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L19", "id": "ai_cache_fusionclockaicache_gc_expired_cache", "community": 6, "norm_label": "._gc_expired_cache()" }, { "label": "Cron: delete cache entries older than 24 hours.", "file_type": "rationale", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L20", "id": "ai_cache_rationale_20", "community": 6, "norm_label": "cron: delete cache entries older than 24 hours." }, { "label": "ai_chat_portal.js", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_static_src_js_ai_chat_portal_js", "community": 0, "norm_label": "ai_chat_portal.js" }, { "label": "FusionClockAIPortalChat", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L27", "id": "ai_chat_portal_fusionclockaiportalchat", "community": 0, "norm_label": "fusionclockaiportalchat" }, { "label": ".setup()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L30", "id": "ai_chat_portal_fusionclockaiportalchat_setup", "community": 0, "norm_label": ".setup()" }, { "label": ".destroy()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L41", "id": "ai_chat_portal_fusionclockaiportalchat_destroy", "community": 0, "norm_label": ".destroy()" }, { "label": "._buildDOM()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L51", "id": "ai_chat_portal_fusionclockaiportalchat_builddom", "community": 0, "norm_label": "._builddom()" }, { "label": "._panelHTML()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L73", "id": "ai_chat_portal_fusionclockaiportalchat_panelhtml", "community": 0, "norm_label": "._panelhtml()" }, { "label": "._createElement()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L116", "id": "ai_chat_portal_fusionclockaiportalchat_createelement", "community": 0, "norm_label": "._createelement()" }, { "label": "._bindEvents()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L127", "id": "ai_chat_portal_fusionclockaiportalchat_bindevents", "community": 0, "norm_label": "._bindevents()" }, { "label": "._togglePanel()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L168", "id": "ai_chat_portal_fusionclockaiportalchat_togglepanel", "community": 0, "norm_label": "._togglepanel()" }, { "label": "._openPanel()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L172", "id": "ai_chat_portal_fusionclockaiportalchat_openpanel", "community": 0, "norm_label": "._openpanel()" }, { "label": "._closePanel()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L183", "id": "ai_chat_portal_fusionclockaiportalchat_closepanel", "community": 0, "norm_label": "._closepanel()" }, { "label": "._appendMessage()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L197", "id": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "community": 0, "norm_label": "._appendmessage()" }, { "label": "._appendTyping()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L210", "id": "ai_chat_portal_fusionclockaiportalchat_appendtyping", "community": 0, "norm_label": "._appendtyping()" }, { "label": "._removeTyping()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L219", "id": "ai_chat_portal_fusionclockaiportalchat_removetyping", "community": 0, "norm_label": "._removetyping()" }, { "label": "._scrollToBottom()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L223", "id": "ai_chat_portal_fusionclockaiportalchat_scrolltobottom", "community": 0, "norm_label": "._scrolltobottom()" }, { "label": "._sendMessage()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L233", "id": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "community": 0, "norm_label": "._sendmessage()" }, { "label": "._onQuickAction()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L269", "id": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "community": 0, "norm_label": "._onquickaction()" }, { "label": "._openPolish()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L309", "id": "ai_chat_portal_fusionclockaiportalchat_openpolish", "community": 0, "norm_label": "._openpolish()" }, { "label": "._closePolish()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L315", "id": "ai_chat_portal_fusionclockaiportalchat_closepolish", "community": 0, "norm_label": "._closepolish()" }, { "label": "._sendPolish()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L319", "id": "ai_chat_portal_fusionclockaiportalchat_sendpolish", "community": 0, "norm_label": "._sendpolish()" }, { "label": "ai_chat_backend.js", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_static_src_js_ai_chat_backend_js", "community": 2, "norm_label": "ai_chat_backend.js" }, { "label": "FusionClockAIChat", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L28", "id": "ai_chat_backend_fusionclockaichat", "community": 2, "norm_label": "fusionclockaichat" }, { "label": ".setup()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L33", "id": "ai_chat_backend_fusionclockaichat_setup", "community": 2, "norm_label": ".setup()" }, { "label": ".suggestions()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L49", "id": "ai_chat_backend_fusionclockaichat_suggestions", "community": 2, "norm_label": ".suggestions()" }, { "label": ".tools()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L53", "id": "ai_chat_backend_fusionclockaichat_tools", "community": 2, "norm_label": ".tools()" }, { "label": ".hasMessages()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L57", "id": "ai_chat_backend_fusionclockaichat_hasmessages", "community": 2, "norm_label": ".hasmessages()" }, { "label": ".canSend()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L61", "id": "ai_chat_backend_fusionclockaichat_cansend", "community": 2, "norm_label": ".cansend()" }, { "label": ".switchTab()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L65", "id": "ai_chat_backend_fusionclockaichat_switchtab", "community": 2, "norm_label": ".switchtab()" }, { "label": ".newConversation()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L70", "id": "ai_chat_backend_fusionclockaichat_newconversation", "community": 2, "norm_label": ".newconversation()" }, { "label": ".onInput()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L76", "id": "ai_chat_backend_fusionclockaichat_oninput", "community": 2, "norm_label": ".oninput()" }, { "label": ".onKeydown()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L80", "id": "ai_chat_backend_fusionclockaichat_onkeydown", "community": 2, "norm_label": ".onkeydown()" }, { "label": ".onSuggestionClick()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L87", "id": "ai_chat_backend_fusionclockaichat_onsuggestionclick", "community": 2, "norm_label": ".onsuggestionclick()" }, { "label": "._scrollToBottom()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L92", "id": "ai_chat_backend_fusionclockaichat_scrolltobottom", "community": 2, "norm_label": "._scrolltobottom()" }, { "label": ".sendMessage()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L101", "id": "ai_chat_backend_fusionclockaichat_sendmessage", "community": 2, "norm_label": ".sendmessage()" }, { "label": ".runTool()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L132", "id": "ai_chat_backend_fusionclockaichat_runtool", "community": 2, "norm_label": ".runtool()" }, { "label": "ai_api.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "community": 1, "norm_label": "ai_api.py" }, { "label": "FusionClockAIAPI", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L15", "id": "ai_api_fusionclockaiapi", "community": 1, "norm_label": "fusionclockaiapi" }, { "label": "._get_employee()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L17", "id": "ai_api_fusionclockaiapi_get_employee", "community": 1, "norm_label": "._get_employee()" }, { "label": "manager_chat()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L23", "id": "ai_api_manager_chat", "community": 1, "norm_label": "manager_chat()" }, { "label": "run_analysis()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L93", "id": "ai_api_run_analysis", "community": 1, "norm_label": "run_analysis()" }, { "label": "._build_geofence_context()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L147", "id": "ai_api_fusionclockaiapi_build_geofence_context", "community": 1, "norm_label": "._build_geofence_context()" }, { "label": "smart_config()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L180", "id": "ai_api_smart_config", "community": 1, "norm_label": "smart_config()" }, { "label": "apply_config()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L202", "id": "ai_api_apply_config", "community": 1, "norm_label": "apply_config()" }, { "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/__init__.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_init_py", "community": 13, "norm_label": "__init__.py" }, { "label": "portal_ai.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L1", "id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_portal_ai_py", "community": 3, "norm_label": "portal_ai.py" }, { "label": "FusionClockPortalAI", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L13", "id": "portal_ai_fusionclockportalai", "community": 3, "norm_label": "fusionclockportalai" }, { "label": "._get_employee()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L15", "id": "portal_ai_fusionclockportalai_get_employee", "community": 3, "norm_label": "._get_employee()" }, { "label": "employee_chat()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L21", "id": "portal_ai_employee_chat", "community": 3, "norm_label": "employee_chat()" }, { "label": "polish_reason()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L83", "id": "portal_ai_polish_reason", "community": 3, "norm_label": "polish_reason()" }, { "label": "my_coach_tip()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L99", "id": "portal_ai_my_coach_tip", "community": 3, "norm_label": "my_coach_tip()" } ], "links": [ { "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/__init__.py", "source_location": "L6", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_init_py", "_tgt": "users_gurpreet_github_odoo_modules_fusion_clock_ai_init_py", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_init_py", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L21", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_service_py", "_tgt": "ai_service_fusionclockaiservice", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_service_py", "target": "ai_service_fusionclockaiservice", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L29", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_get_client", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_get_client", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L38", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_get_model", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_get_model", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L42", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_get_max_tokens", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_get_max_tokens", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L50", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_check_budget", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_check_budget", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L74", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_get_cache_key", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_get_cache_key", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L77", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_check_cache", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_check_cache", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L87", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_store_cache", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_store_cache", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L109", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_log_usage", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_log_usage", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L140", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_get_system_prompt", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L153", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_chat_completion", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L186", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_build_employee_context", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_build_employee_context", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L252", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_build_team_context", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_build_team_context", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L302", "weight": 1.0, "_src": "ai_service_fusionclockaiservice", "_tgt": "ai_service_fusionclockaiservice_build_payroll_context", "source": "ai_service_fusionclockaiservice", "target": "ai_service_fusionclockaiservice_build_payroll_context", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L159", "weight": 1.0, "_src": "ai_service_fusionclockaiservice_chat_completion", "_tgt": "ai_service_fusionclockaiservice_get_client", "source": "ai_service_fusionclockaiservice_get_client", "target": "ai_service_fusionclockaiservice_chat_completion", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L160", "weight": 1.0, "_src": "ai_service_fusionclockaiservice_chat_completion", "_tgt": "ai_service_fusionclockaiservice_get_model", "source": "ai_service_fusionclockaiservice_get_model", "target": "ai_service_fusionclockaiservice_chat_completion", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L161", "weight": 1.0, "_src": "ai_service_fusionclockaiservice_chat_completion", "_tgt": "ai_service_fusionclockaiservice_get_max_tokens", "source": "ai_service_fusionclockaiservice_get_max_tokens", "target": "ai_service_fusionclockaiservice_chat_completion", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L158", "weight": 1.0, "_src": "ai_service_fusionclockaiservice_chat_completion", "_tgt": "ai_service_fusionclockaiservice_check_budget", "source": "ai_service_fusionclockaiservice_check_budget", "target": "ai_service_fusionclockaiservice_chat_completion", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L129", "weight": 1.0, "_src": "ai_api_run_analysis", "_tgt": "ai_service_fusionclockaiservice_get_cache_key", "source": "ai_service_fusionclockaiservice_get_cache_key", "target": "ai_api_run_analysis" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L155", "weight": 1.0, "_src": "ai_service_fusionclockaiservice_chat_completion", "_tgt": "ai_service_fusionclockaiservice_check_cache", "source": "ai_service_fusionclockaiservice_check_cache", "target": "ai_service_fusionclockaiservice_chat_completion", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L178", "weight": 1.0, "_src": "ai_service_fusionclockaiservice_chat_completion", "_tgt": "ai_service_fusionclockaiservice_store_cache", "source": "ai_service_fusionclockaiservice_store_cache", "target": "ai_service_fusionclockaiservice_chat_completion", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_service.py", "source_location": "L175", "weight": 1.0, "_src": "ai_service_fusionclockaiservice_chat_completion", "_tgt": "ai_service_fusionclockaiservice_log_usage", "source": "ai_service_fusionclockaiservice_log_usage", "target": "ai_service_fusionclockaiservice_chat_completion", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L39", "weight": 1.0, "_src": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "clock_correction_ai_clockcorrectionai_action_get_ai_advice" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L25", "weight": 1.0, "_src": "hr_employee_ai_hremployeeai_action_generate_ai_summary", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "hr_employee_ai_hremployeeai_action_generate_ai_summary" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L47", "weight": 1.0, "_src": "hr_employee_ai_hremployeeai_action_generate_coach_tip", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "hr_employee_ai_hremployeeai_action_generate_coach_tip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L20", "weight": 1.0, "_src": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "hr_attendance_ai_hrattendanceai_ai_explain_incident" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L24", "weight": 1.0, "_src": "clock_report_ai_clockreportai_action_generate_ai_narrative", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "clock_report_ai_clockreportai_action_generate_ai_narrative" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L69", "weight": 1.0, "_src": "ai_api_manager_chat", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "ai_api_manager_chat" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L127", "weight": 1.0, "_src": "ai_api_run_analysis", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "ai_api_run_analysis" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L186", "weight": 1.0, "_src": "ai_api_smart_config", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "ai_api_smart_config" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L59", "weight": 1.0, "_src": "portal_ai_employee_chat", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "portal_ai_employee_chat" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L85", "weight": 1.0, "_src": "portal_ai_polish_reason", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "portal_ai_polish_reason" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L110", "weight": 1.0, "_src": "portal_ai_my_coach_tip", "_tgt": "ai_service_fusionclockaiservice_get_system_prompt", "source": "ai_service_fusionclockaiservice_get_system_prompt", "target": "portal_ai_my_coach_tip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L41", "weight": 1.0, "_src": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "clock_correction_ai_clockcorrectionai_action_get_ai_advice" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L27", "weight": 1.0, "_src": "hr_employee_ai_hremployeeai_action_generate_ai_summary", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "hr_employee_ai_hremployeeai_action_generate_ai_summary" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L49", "weight": 1.0, "_src": "hr_employee_ai_hremployeeai_action_generate_coach_tip", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "hr_employee_ai_hremployeeai_action_generate_coach_tip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L36", "weight": 1.0, "_src": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "hr_attendance_ai_hrattendanceai_ai_explain_incident" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L26", "weight": 1.0, "_src": "clock_report_ai_clockreportai_action_generate_ai_narrative", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "clock_report_ai_clockreportai_action_generate_ai_narrative" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L77", "weight": 1.0, "_src": "ai_api_manager_chat", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "ai_api_manager_chat" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L134", "weight": 1.0, "_src": "ai_api_run_analysis", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "ai_api_run_analysis" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L189", "weight": 1.0, "_src": "ai_api_smart_config", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "ai_api_smart_config" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L67", "weight": 1.0, "_src": "portal_ai_employee_chat", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "portal_ai_employee_chat" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L87", "weight": 1.0, "_src": "portal_ai_polish_reason", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "portal_ai_polish_reason" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L112", "weight": 1.0, "_src": "portal_ai_my_coach_tip", "_tgt": "ai_service_fusionclockaiservice_chat_completion", "source": "ai_service_fusionclockaiservice_chat_completion", "target": "portal_ai_my_coach_tip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L25", "weight": 1.0, "_src": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "_tgt": "ai_service_fusionclockaiservice_build_employee_context", "source": "ai_service_fusionclockaiservice_build_employee_context", "target": "clock_correction_ai_clockcorrectionai_action_get_ai_advice" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L22", "weight": 1.0, "_src": "hr_employee_ai_hremployeeai_action_generate_ai_summary", "_tgt": "ai_service_fusionclockaiservice_build_employee_context", "source": "ai_service_fusionclockaiservice_build_employee_context", "target": "hr_employee_ai_hremployeeai_action_generate_ai_summary" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L44", "weight": 1.0, "_src": "hr_employee_ai_hremployeeai_action_generate_coach_tip", "_tgt": "ai_service_fusionclockaiservice_build_employee_context", "source": "ai_service_fusionclockaiservice_build_employee_context", "target": "hr_employee_ai_hremployeeai_action_generate_coach_tip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L32", "weight": 1.0, "_src": "portal_ai_employee_chat", "_tgt": "ai_service_fusionclockaiservice_build_employee_context", "source": "ai_service_fusionclockaiservice_build_employee_context", "target": "portal_ai_employee_chat" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L105", "weight": 1.0, "_src": "portal_ai_my_coach_tip", "_tgt": "ai_service_fusionclockaiservice_build_employee_context", "source": "ai_service_fusionclockaiservice_build_employee_context", "target": "portal_ai_my_coach_tip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L46", "weight": 1.0, "_src": "ai_api_manager_chat", "_tgt": "ai_service_fusionclockaiservice_build_team_context", "source": "ai_service_fusionclockaiservice_build_team_context", "target": "ai_api_manager_chat" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L122", "weight": 1.0, "_src": "ai_api_run_analysis", "_tgt": "ai_service_fusionclockaiservice_build_team_context", "source": "ai_service_fusionclockaiservice_build_team_context", "target": "ai_api_run_analysis" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L23", "weight": 1.0, "_src": "clock_report_ai_clockreportai_action_generate_ai_narrative", "_tgt": "ai_service_fusionclockaiservice_build_payroll_context", "source": "ai_service_fusionclockaiservice_build_payroll_context", "target": "clock_report_ai_clockreportai_action_generate_ai_narrative" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L12", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_correction_ai_py", "_tgt": "clock_correction_ai_clockcorrectionai", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_correction_ai_py", "target": "clock_correction_ai_clockcorrectionai", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L17", "weight": 1.0, "_src": "clock_correction_ai_clockcorrectionai", "_tgt": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "source": "clock_correction_ai_clockcorrectionai", "target": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L12", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_hr_employee_ai_py", "_tgt": "hr_employee_ai_hremployeeai", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_hr_employee_ai_py", "target": "hr_employee_ai_hremployeeai", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L19", "weight": 1.0, "_src": "hr_employee_ai_hremployeeai", "_tgt": "hr_employee_ai_hremployeeai_action_generate_ai_summary", "source": "hr_employee_ai_hremployeeai", "target": "hr_employee_ai_hremployeeai_action_generate_ai_summary", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_employee_ai.py", "source_location": "L41", "weight": 1.0, "_src": "hr_employee_ai_hremployeeai", "_tgt": "hr_employee_ai_hremployeeai_action_generate_coach_tip", "source": "hr_employee_ai_hremployeeai", "target": "hr_employee_ai_hremployeeai_action_generate_coach_tip", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_usage.py", "source_location": "L8", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_usage_py", "_tgt": "ai_usage_fusionclockaiusage", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_usage_py", "target": "ai_usage_fusionclockaiusage", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_usage.py", "source_location": "L23", "weight": 1.0, "_src": "ai_usage_fusionclockaiusage", "_tgt": "ai_usage_fusionclockaiusage_compute_total", "source": "ai_usage_fusionclockaiusage", "target": "ai_usage_fusionclockaiusage_compute_total", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_prompt.py", "source_location": "L8", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_prompt_py", "_tgt": "ai_prompt_fusionclockaiprompt", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_prompt_py", "target": "ai_prompt_fusionclockaiprompt", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L11", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_hr_attendance_ai_py", "_tgt": "hr_attendance_ai_hrattendanceai", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_hr_attendance_ai_py", "target": "hr_attendance_ai_hrattendanceai", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L14", "weight": 1.0, "_src": "hr_attendance_ai_hrattendanceai", "_tgt": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "source": "hr_attendance_ai_hrattendanceai", "target": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "confidence_score": 1.0 }, { "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L14", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "_tgt": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L8", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_conversation_py", "_tgt": "ai_conversation_fusionclockaiconversation", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_conversation_py", "target": "ai_conversation_fusionclockaiconversation", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L33", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_conversation_py", "_tgt": "ai_conversation_fusionclockaimessage", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_conversation_py", "target": "ai_conversation_fusionclockaimessage", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L23", "weight": 1.0, "_src": "ai_conversation_fusionclockaiconversation", "_tgt": "ai_conversation_fusionclockaiconversation_compute_title", "source": "ai_conversation_fusionclockaiconversation", "target": "ai_conversation_fusionclockaiconversation_compute_title", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L11", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_report_ai_py", "_tgt": "clock_report_ai_clockreportai", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_report_ai_py", "target": "clock_report_ai_clockreportai", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L16", "weight": 1.0, "_src": "clock_report_ai_clockreportai", "_tgt": "clock_report_ai_clockreportai_action_generate_ai_narrative", "source": "clock_report_ai_clockreportai", "target": "clock_report_ai_clockreportai_action_generate_ai_narrative", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L37", "weight": 1.0, "_src": "clock_report_ai_clockreportai", "_tgt": "clock_report_ai_clockreportai_action_generate_report", "source": "clock_report_ai_clockreportai", "target": "clock_report_ai_clockreportai_action_generate_report", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L39", "weight": 1.0, "_src": "clock_report_ai_clockreportai_action_generate_report", "_tgt": "clock_report_ai_clockreportai_action_generate_ai_narrative", "source": "clock_report_ai_clockreportai_action_generate_ai_narrative", "target": "clock_report_ai_clockreportai_action_generate_report", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/res_config_settings.py", "source_location": "L8", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_res_config_settings_py", "_tgt": "res_config_settings_resconfigsettings", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_res_config_settings_py", "target": "res_config_settings_resconfigsettings", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L9", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_cache_py", "_tgt": "ai_cache_fusionclockaicache", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_cache_py", "target": "ai_cache_fusionclockaicache", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L19", "weight": 1.0, "_src": "ai_cache_fusionclockaicache", "_tgt": "ai_cache_fusionclockaicache_gc_expired_cache", "source": "ai_cache_fusionclockaicache", "target": "ai_cache_fusionclockaicache_gc_expired_cache", "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L20", "weight": 1.0, "_src": "ai_cache_rationale_20", "_tgt": "ai_cache_fusionclockaicache_gc_expired_cache", "source": "ai_cache_fusionclockaicache_gc_expired_cache", "target": "ai_cache_rationale_20", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L27", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_static_src_js_ai_chat_portal_js", "_tgt": "ai_chat_portal_fusionclockaiportalchat", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_static_src_js_ai_chat_portal_js", "target": "ai_chat_portal_fusionclockaiportalchat", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L30", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_setup", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_setup", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L41", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_destroy", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_destroy", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L51", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_builddom", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_builddom", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L73", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_panelhtml", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_panelhtml", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L116", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_createelement", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_createelement", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L127", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_bindevents", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_bindevents", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L168", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_togglepanel", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_togglepanel", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L172", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_openpanel", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_openpanel", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L183", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_closepanel", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_closepanel", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L197", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L210", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_appendtyping", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_appendtyping", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L219", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_removetyping", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_removetyping", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L223", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_scrolltobottom", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_scrolltobottom", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L233", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L269", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L309", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_openpolish", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_openpolish", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L315", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_closepolish", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_closepolish", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L319", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat", "_tgt": "ai_chat_portal_fusionclockaiportalchat_sendpolish", "source": "ai_chat_portal_fusionclockaiportalchat", "target": "ai_chat_portal_fusionclockaiportalchat_sendpolish", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L37", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_setup", "_tgt": "ai_chat_portal_fusionclockaiportalchat_builddom", "source": "ai_chat_portal_fusionclockaiportalchat_setup", "target": "ai_chat_portal_fusionclockaiportalchat_builddom", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L38", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_setup", "_tgt": "ai_chat_portal_fusionclockaiportalchat_bindevents", "source": "ai_chat_portal_fusionclockaiportalchat_setup", "target": "ai_chat_portal_fusionclockaiportalchat_bindevents", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L54", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_builddom", "_tgt": "ai_chat_portal_fusionclockaiportalchat_createelement", "source": "ai_chat_portal_fusionclockaiportalchat_builddom", "target": "ai_chat_portal_fusionclockaiportalchat_createelement", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L59", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_builddom", "_tgt": "ai_chat_portal_fusionclockaiportalchat_panelhtml", "source": "ai_chat_portal_fusionclockaiportalchat_builddom", "target": "ai_chat_portal_fusionclockaiportalchat_panelhtml", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L169", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_togglepanel", "_tgt": "ai_chat_portal_fusionclockaiportalchat_closepanel", "source": "ai_chat_portal_fusionclockaiportalchat_togglepanel", "target": "ai_chat_portal_fusionclockaiportalchat_closepanel", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L169", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_togglepanel", "_tgt": "ai_chat_portal_fusionclockaiportalchat_openpanel", "source": "ai_chat_portal_fusionclockaiportalchat_togglepanel", "target": "ai_chat_portal_fusionclockaiportalchat_openpanel", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L207", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "_tgt": "ai_chat_portal_fusionclockaiportalchat_scrolltobottom", "source": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "target": "ai_chat_portal_fusionclockaiportalchat_scrolltobottom", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L237", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "_tgt": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "source": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "target": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L279", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "_tgt": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "source": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "target": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L333", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_sendpolish", "_tgt": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "source": "ai_chat_portal_fusionclockaiportalchat_appendmessage", "target": "ai_chat_portal_fusionclockaiportalchat_sendpolish", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L215", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_appendtyping", "_tgt": "ai_chat_portal_fusionclockaiportalchat_scrolltobottom", "source": "ai_chat_portal_fusionclockaiportalchat_appendtyping", "target": "ai_chat_portal_fusionclockaiportalchat_scrolltobottom", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L242", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "_tgt": "ai_chat_portal_fusionclockaiportalchat_appendtyping", "source": "ai_chat_portal_fusionclockaiportalchat_appendtyping", "target": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L281", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "_tgt": "ai_chat_portal_fusionclockaiportalchat_appendtyping", "source": "ai_chat_portal_fusionclockaiportalchat_appendtyping", "target": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L249", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "_tgt": "ai_chat_portal_fusionclockaiportalchat_removetyping", "source": "ai_chat_portal_fusionclockaiportalchat_removetyping", "target": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L285", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "_tgt": "ai_chat_portal_fusionclockaiportalchat_removetyping", "source": "ai_chat_portal_fusionclockaiportalchat_removetyping", "target": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L274", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "_tgt": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "source": "ai_chat_portal_fusionclockaiportalchat_sendmessage", "target": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L301", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "_tgt": "ai_chat_portal_fusionclockaiportalchat_openpolish", "source": "ai_chat_portal_fusionclockaiportalchat_onquickaction", "target": "ai_chat_portal_fusionclockaiportalchat_openpolish", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_portal.js", "source_location": "L332", "weight": 1.0, "_src": "ai_chat_portal_fusionclockaiportalchat_sendpolish", "_tgt": "ai_chat_portal_fusionclockaiportalchat_closepolish", "source": "ai_chat_portal_fusionclockaiportalchat_closepolish", "target": "ai_chat_portal_fusionclockaiportalchat_sendpolish", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L28", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_static_src_js_ai_chat_backend_js", "_tgt": "ai_chat_backend_fusionclockaichat", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_static_src_js_ai_chat_backend_js", "target": "ai_chat_backend_fusionclockaichat", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L33", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_setup", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_setup", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L49", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_suggestions", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_suggestions", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L53", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_tools", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_tools", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L57", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_hasmessages", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_hasmessages", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L61", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_cansend", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_cansend", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L65", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_switchtab", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_switchtab", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L70", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_newconversation", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_newconversation", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L76", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_oninput", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_oninput", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L80", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_onkeydown", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_onkeydown", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L87", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_onsuggestionclick", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_onsuggestionclick", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L92", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_scrolltobottom", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_scrolltobottom", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L101", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_sendmessage", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_sendmessage", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L132", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat", "_tgt": "ai_chat_backend_fusionclockaichat_runtool", "source": "ai_chat_backend_fusionclockaichat", "target": "ai_chat_backend_fusionclockaichat_runtool", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L83", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat_onkeydown", "_tgt": "ai_chat_backend_fusionclockaichat_sendmessage", "source": "ai_chat_backend_fusionclockaichat_onkeydown", "target": "ai_chat_backend_fusionclockaichat_sendmessage", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L89", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat_onsuggestionclick", "_tgt": "ai_chat_backend_fusionclockaichat_sendmessage", "source": "ai_chat_backend_fusionclockaichat_onsuggestionclick", "target": "ai_chat_backend_fusionclockaichat_sendmessage", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/static/src/js/ai_chat_backend.js", "source_location": "L108", "weight": 1.0, "_src": "ai_chat_backend_fusionclockaichat_sendmessage", "_tgt": "ai_chat_backend_fusionclockaichat_scrolltobottom", "source": "ai_chat_backend_fusionclockaichat_scrolltobottom", "target": "ai_chat_backend_fusionclockaichat_sendmessage", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L15", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "_tgt": "ai_api_fusionclockaiapi", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "target": "ai_api_fusionclockaiapi", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L23", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "_tgt": "ai_api_manager_chat", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "target": "ai_api_manager_chat", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L93", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "_tgt": "ai_api_run_analysis", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "target": "ai_api_run_analysis", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L180", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "_tgt": "ai_api_smart_config", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "target": "ai_api_smart_config", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L202", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "_tgt": "ai_api_apply_config", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_ai_api_py", "target": "ai_api_apply_config", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L17", "weight": 1.0, "_src": "ai_api_fusionclockaiapi", "_tgt": "ai_api_fusionclockaiapi_get_employee", "source": "ai_api_fusionclockaiapi", "target": "ai_api_fusionclockaiapi_get_employee", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L147", "weight": 1.0, "_src": "ai_api_fusionclockaiapi", "_tgt": "ai_api_fusionclockaiapi_build_geofence_context", "source": "ai_api_fusionclockaiapi", "target": "ai_api_fusionclockaiapi_build_geofence_context", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/ai_api.py", "source_location": "L125", "weight": 1.0, "_src": "ai_api_run_analysis", "_tgt": "ai_api_fusionclockaiapi_build_geofence_context", "source": "ai_api_run_analysis", "target": "ai_api_fusionclockaiapi_build_geofence_context", "confidence_score": 1.0 }, { "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/__init__.py", "source_location": "L6", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_init_py", "_tgt": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_init_py", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_init_py", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L13", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_portal_ai_py", "_tgt": "portal_ai_fusionclockportalai", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_portal_ai_py", "target": "portal_ai_fusionclockportalai", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L21", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_portal_ai_py", "_tgt": "portal_ai_employee_chat", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_portal_ai_py", "target": "portal_ai_employee_chat", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L83", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_portal_ai_py", "_tgt": "portal_ai_polish_reason", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_portal_ai_py", "target": "portal_ai_polish_reason", "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L99", "weight": 1.0, "_src": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_portal_ai_py", "_tgt": "portal_ai_my_coach_tip", "source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_portal_ai_py", "target": "portal_ai_my_coach_tip", "confidence_score": 1.0 }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L15", "weight": 1.0, "_src": "portal_ai_fusionclockportalai", "_tgt": "portal_ai_fusionclockportalai_get_employee", "source": "portal_ai_fusionclockportalai", "target": "portal_ai_fusionclockportalai_get_employee", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L26", "weight": 1.0, "_src": "portal_ai_employee_chat", "_tgt": "portal_ai_fusionclockportalai_get_employee", "source": "portal_ai_fusionclockportalai_get_employee", "target": "portal_ai_employee_chat", "confidence_score": 1.0 }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/portal_ai.py", "source_location": "L100", "weight": 1.0, "_src": "portal_ai_my_coach_tip", "_tgt": "portal_ai_fusionclockportalai_get_employee", "source": "portal_ai_fusionclockportalai_get_employee", "target": "portal_ai_my_coach_tip", "confidence_score": 1.0 } ], "hyperedges": [] }