This commit is contained in:
gsinghpal
2026-04-24 21:04:38 -04:00
parent 0eab4b4efb
commit 41d0908ade
4083 changed files with 1230780 additions and 287 deletions

View File

@@ -0,0 +1,134 @@
# Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai (2026-04-22)
## Corpus Check
- 18 files · ~7,163 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 97 nodes · 145 edges · 15 communities detected
- Extraction: 79% EXTRACTED · 21% INFERRED · 0% AMBIGUOUS · INFERRED: 31 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
## Community Hubs (Navigation)
- [[_COMMUNITY_Community 0|Community 0]]
- [[_COMMUNITY_Community 1|Community 1]]
- [[_COMMUNITY_Community 2|Community 2]]
- [[_COMMUNITY_Community 3|Community 3]]
- [[_COMMUNITY_Community 4|Community 4]]
- [[_COMMUNITY_Community 5|Community 5]]
- [[_COMMUNITY_Community 6|Community 6]]
- [[_COMMUNITY_Community 7|Community 7]]
- [[_COMMUNITY_Community 8|Community 8]]
- [[_COMMUNITY_Community 9|Community 9]]
- [[_COMMUNITY_Community 10|Community 10]]
- [[_COMMUNITY_Community 11|Community 11]]
- [[_COMMUNITY_Community 12|Community 12]]
- [[_COMMUNITY_Community 13|Community 13]]
- [[_COMMUNITY_Community 14|Community 14]]
## God Nodes (most connected - your core abstractions)
1. `FusionClockAIPortalChat` - 19 edges
2. `FusionClockAIService` - 14 edges
3. `FusionClockAIChat` - 14 edges
4. `run_analysis()` - 6 edges
5. `employee_chat()` - 5 edges
6. `my_coach_tip()` - 5 edges
7. `manager_chat()` - 4 edges
8. `HrEmployeeAI` - 3 edges
9. `ClockReportAI` - 3 edges
10. `FusionClockAIAPI` - 3 edges
## Surprising Connections (you probably didn't know these)
- None detected - all connections are within the same source files.
## Communities
### Community 0 - "Community 0"
Cohesion: 0.19
Nodes (1): FusionClockAIPortalChat
### Community 1 - "Community 1"
Cohesion: 0.17
Nodes (5): FusionClockAIAPI, manager_chat(), run_analysis(), smart_config(), FusionClockAIService
### Community 2 - "Community 2"
Cohesion: 0.16
Nodes (1): FusionClockAIChat
### Community 3 - "Community 3"
Cohesion: 0.22
Nodes (6): ClockCorrectionAI, HrEmployeeAI, employee_chat(), FusionClockPortalAI, my_coach_tip(), polish_reason()
### Community 4 - "Community 4"
Cohesion: 0.5
Nodes (1): ClockReportAI
### Community 5 - "Community 5"
Cohesion: 0.5
Nodes (2): FusionClockAIConversation, FusionClockAIMessage
### Community 6 - "Community 6"
Cohesion: 0.5
Nodes (2): FusionClockAICache, Cron: delete cache entries older than 24 hours.
### Community 7 - "Community 7"
Cohesion: 0.67
Nodes (1): HrAttendanceAI
### Community 8 - "Community 8"
Cohesion: 0.67
Nodes (1): FusionClockAIUsage
### Community 9 - "Community 9"
Cohesion: 1.0
Nodes (1): FusionClockAIPrompt
### Community 10 - "Community 10"
Cohesion: 1.0
Nodes (1): ResConfigSettings
### Community 11 - "Community 11"
Cohesion: 1.0
Nodes (0):
### Community 12 - "Community 12"
Cohesion: 1.0
Nodes (0):
### Community 13 - "Community 13"
Cohesion: 1.0
Nodes (0):
### Community 14 - "Community 14"
Cohesion: 1.0
Nodes (0):
## Knowledge Gaps
- **4 isolated node(s):** `FusionClockAIPrompt`, `FusionClockAIMessage`, `ResConfigSettings`, `Cron: delete cache entries older than 24 hours.`
These have ≤1 connection - possible missing edges or undocumented components.
- **Thin community `Community 9`** (2 nodes): `FusionClockAIPrompt`, `ai_prompt.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 10`** (2 nodes): `ResConfigSettings`, `res_config_settings.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 11`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 12`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 13`** (1 nodes): `__init__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
- **Thin community `Community 14`** (1 nodes): `__manifest__.py`
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `FusionClockAIService` connect `Community 1` to `Community 3`, `Community 4`?**
_High betweenness centrality (0.029) - this node is a cross-community bridge._
- **Why does `run_analysis()` connect `Community 1` to `Community 3`?**
_High betweenness centrality (0.026) - this node is a cross-community bridge._
- **Are the 4 inferred relationships involving `run_analysis()` (e.g. with `._build_team_context()` and `._get_system_prompt()`) actually correct?**
_`run_analysis()` has 4 INFERRED edges - model-reasoned connections that need verification._
- **Are the 3 inferred relationships involving `employee_chat()` (e.g. with `._build_employee_context()` and `._get_system_prompt()`) actually correct?**
_`employee_chat()` has 3 INFERRED edges - model-reasoned connections that need verification._
- **What connects `FusionClockAIPrompt`, `FusionClockAIMessage`, `ResConfigSettings` to the rest of the system?**
_4 weakly-connected nodes found - possible documentation gaps or missing edges._

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_controllers_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/controllers/__init__.py", "source_location": "L6", "weight": 1.0}], "raw_calls": []}

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_res_config_settings_py", "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": "res_config_settings_resconfigsettings", "label": "ResConfigSettings", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/res_config_settings.py", "source_location": "L8"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_res_config_settings_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/res_config_settings.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_res_config_settings_py", "target": "res_config_settings_resconfigsettings", "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}], "raw_calls": []}

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_manifest_py", "label": "__manifest__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/__manifest__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L7", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L8", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L9", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L10", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L11", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L12", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L13", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/__init__.py", "source_location": "L14", "weight": 1.0}], "raw_calls": []}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_conversation_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": "ai_conversation_fusionclockaiconversation", "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_compute_title", "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_fusionclockaimessage", "label": "FusionClockAIMessage", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L33"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_conversation_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_conversation_py", "target": "ai_conversation_fusionclockaiconversation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L8", "weight": 1.0}, {"source": "ai_conversation_fusionclockaiconversation", "target": "ai_conversation_fusionclockaiconversation_compute_title", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L23", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_conversation_py", "target": "ai_conversation_fusionclockaimessage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L33", "weight": 1.0}], "raw_calls": [{"caller_nid": "ai_conversation_fusionclockaiconversation_compute_title", "callee": "filtered", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L25"}, {"caller_nid": "ai_conversation_fusionclockaiconversation_compute_title", "callee": "len", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_conversation.py", "source_location": "L28"}]}

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_hr_attendance_ai_py", "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": "hr_attendance_ai_hrattendanceai", "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_ai_explain_incident", "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"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_hr_attendance_ai_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_hr_attendance_ai_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_hr_attendance_ai_py", "target": "hr_attendance_ai_hrattendanceai", "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}, {"source": "hr_attendance_ai_hrattendanceai", "target": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "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}], "raw_calls": [{"caller_nid": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L15"}, {"caller_nid": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L16"}, {"caller_nid": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L19"}, {"caller_nid": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "callee": "_get_system_prompt", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L20"}, {"caller_nid": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "callee": "chat_completion", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L36"}, {"caller_nid": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "callee": "write", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L43"}, {"caller_nid": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L43"}, {"caller_nid": "hr_attendance_ai_hrattendanceai_ai_explain_incident", "callee": "debug", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/hr_attendance_ai.py", "source_location": "L45"}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_report_ai_py", "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": "clock_report_ai_clockreportai", "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_action_generate_ai_narrative", "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_report", "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"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_report_ai_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_report_ai_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_report_ai_py", "target": "clock_report_ai_clockreportai", "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}, {"source": "clock_report_ai_clockreportai", "target": "clock_report_ai_clockreportai_action_generate_ai_narrative", "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}, {"source": "clock_report_ai_clockreportai", "target": "clock_report_ai_clockreportai_action_generate_report", "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}, {"source": "clock_report_ai_clockreportai_action_generate_report", "target": "clock_report_ai_clockreportai_action_generate_ai_narrative", "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}], "raw_calls": [{"caller_nid": "clock_report_ai_clockreportai_action_generate_ai_narrative", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L17"}, {"caller_nid": "clock_report_ai_clockreportai_action_generate_ai_narrative", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L18"}, {"caller_nid": "clock_report_ai_clockreportai_action_generate_ai_narrative", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L21"}, {"caller_nid": "clock_report_ai_clockreportai_action_generate_ai_narrative", "callee": "_build_payroll_context", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L23"}, {"caller_nid": "clock_report_ai_clockreportai_action_generate_ai_narrative", "callee": "_get_system_prompt", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L24"}, {"caller_nid": "clock_report_ai_clockreportai_action_generate_ai_narrative", "callee": "chat_completion", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L26"}, {"caller_nid": "clock_report_ai_clockreportai_action_generate_ai_narrative", "callee": "write", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L33"}, {"caller_nid": "clock_report_ai_clockreportai_action_generate_ai_narrative", "callee": "warning", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L35"}, {"caller_nid": "clock_report_ai_clockreportai_action_generate_report", "callee": "super", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_report_ai.py", "source_location": "L38"}]}

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_prompt_py", "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": "ai_prompt_fusionclockaiprompt", "label": "FusionClockAIPrompt", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_prompt.py", "source_location": "L8"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_prompt_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_prompt.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_prompt_py", "target": "ai_prompt_fusionclockaiprompt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_prompt.py", "source_location": "L8", "weight": 1.0}], "raw_calls": []}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_cache_py", "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": "ai_cache_fusionclockaicache", "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_gc_expired_cache", "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_rationale_20", "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"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_cache_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_cache_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_cache_py", "target": "ai_cache_fusionclockaicache", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L9", "weight": 1.0}, {"source": "ai_cache_fusionclockaicache", "target": "ai_cache_fusionclockaicache_gc_expired_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L19", "weight": 1.0}, {"source": "ai_cache_rationale_20", "target": "ai_cache_fusionclockaicache_gc_expired_cache", "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}], "raw_calls": [{"caller_nid": "ai_cache_fusionclockaicache_gc_expired_cache", "callee": "now", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L21"}, {"caller_nid": "ai_cache_fusionclockaicache_gc_expired_cache", "callee": "timedelta", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L21"}, {"caller_nid": "ai_cache_fusionclockaicache_gc_expired_cache", "callee": "unlink", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L22"}, {"caller_nid": "ai_cache_fusionclockaicache_gc_expired_cache", "callee": "search", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_cache.py", "source_location": "L22"}]}

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_correction_ai_py", "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": "clock_correction_ai_clockcorrectionai", "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_action_get_ai_advice", "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"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_correction_ai_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_correction_ai_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L6", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_correction_ai_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L7", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_clock_correction_ai_py", "target": "clock_correction_ai_clockcorrectionai", "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}, {"source": "clock_correction_ai_clockcorrectionai", "target": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "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}], "raw_calls": [{"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L18"}, {"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "get_param", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L19"}, {"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "sudo", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L22"}, {"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "_build_employee_context", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L25"}, {"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "today", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L26"}, {"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "timedelta", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L26"}, {"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "today", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L26"}, {"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "_get_system_prompt", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L39"}, {"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "chat_completion", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L41"}, {"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "write", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L48"}, {"caller_nid": "clock_correction_ai_clockcorrectionai_action_get_ai_advice", "callee": "warning", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/clock_correction_ai.py", "source_location": "L50"}]}

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_init_py", "target": "users_gurpreet_github_odoo_modules_fusion_clock_ai_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/__init__.py", "source_location": "L6", "weight": 1.0}], "raw_calls": []}

View File

@@ -0,0 +1 @@
{"nodes": [{"id": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_usage_py", "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": "ai_usage_fusionclockaiusage", "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_compute_total", "label": "._compute_total()", "file_type": "code", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_usage.py", "source_location": "L23"}], "edges": [{"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_usage_py", "target": "odoo", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_usage.py", "source_location": "L5", "weight": 1.0}, {"source": "users_gurpreet_github_odoo_modules_fusion_clock_ai_models_ai_usage_py", "target": "ai_usage_fusionclockaiusage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_usage.py", "source_location": "L8", "weight": 1.0}, {"source": "ai_usage_fusionclockaiusage", "target": "ai_usage_fusionclockaiusage_compute_total", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/gurpreet/Github/Odoo-Modules/fusion_clock_ai/models/ai_usage.py", "source_location": "L23", "weight": 1.0}], "raw_calls": []}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff