Files
gsinghpal 41d0908ade changes
2026-04-24 21:04:38 -04:00

15 KiB

Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_clock (2026-04-22)

Corpus Check

  • 25 files · ~19,294 words
  • Verdict: corpus is large enough that graph structure adds value.

Summary

  • 300 nodes · 466 edges · 40 communities detected
  • Extraction: 86% EXTRACTED · 14% INFERRED · 0% AMBIGUOUS · INFERRED: 66 edges (avg confidence: 0.77)
  • Token cost: 0 input · 0 output

Community Hubs (Navigation)

God Nodes (most connected - your core abstractions)

  1. FusionClockPortal - 33 edges
  2. get_local_today() - 18 edges
  3. FusionClockPortalFAB - 17 edges
  4. FusionClockAPI - 17 edges
  5. create() - 16 edges
  6. FusionClockLocationMap - 16 edges
  7. FusionClockFAB - 16 edges
  8. get_local_day_boundaries() - 14 edges
  9. FusionClockPlacesAutocomplete - 10 edges
  10. clock_action() - 10 edges

Surprising Connections (you probably didn't know these)

  • _cron_generate_period_reports() --calls--> create() [INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_clock/models/clock_report.py → /Users/gurpreet/Github/Odoo-Modules/fusion_clock/models/clock_leave_request.py
  • action_generate_historical_reports() --calls--> create() [INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_clock/models/clock_report.py → /Users/gurpreet/Github/Odoo-Modules/fusion_clock/models/clock_leave_request.py
  • request_leave() --calls--> create() [INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_clock/controllers/clock_api.py → /Users/gurpreet/Github/Odoo-Modules/fusion_clock/models/clock_leave_request.py
  • request_correction() --calls--> create() [INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_clock/controllers/clock_api.py → /Users/gurpreet/Github/Odoo-Modules/fusion_clock/models/clock_leave_request.py
  • _compute_totals() --calls--> _resolve_tz() [INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_clock/models/clock_report.py → /Users/gurpreet/Github/Odoo-Modules/fusion_clock/models/tz_utils.py

Communities

Community 0 - "Community 0"

Cohesion: 0.13 Nodes (1): FusionClockPortal

Community 1 - "Community 1"

Cohesion: 0.09 Nodes (21): dashboard_data(), FusionClockAPI, get_locations(), haversine_distance(), Get scheduled clock-in and clock-out datetime using employee shift., Apply automatic break deduction if configured., Create an activity log entry., Calculate the great-circle distance between two points on Earth (in meters). (+13 more)

Community 2 - "Community 2"

Cohesion: 0.11 Nodes (23): clock_action(), Check if a penalty should be created and deduct minutes., create(), _compute_overtime_hours(), _cron_fusion_auto_clock_out(), _cron_fusion_check_absences(), _cron_fusion_employee_reminders(), _cron_fusion_weekly_summary() (+15 more)

Community 3 - "Community 3"

Cohesion: 0.12 Nodes (20): get_status(), _compute_totals(), CustomerPortal, FusionClockPortal, portal_clock(), portal_report_download(), portal_reports(), portal_timesheets() (+12 more)

Community 4 - "Community 4"

Cohesion: 0.14 Nodes (11): action_generate_historical_reports(), _calculate_current_period(), _cron_generate_period_reports(), FusionClockReport, Generate the PDF report for this record., Reset the report back to draft so the user can make changes., Send the report via email., Link attendance and leave records for the period and employee. (+3 more)

Community 5 - "Community 5"

Cohesion: 0.25 Nodes (1): FusionClockPortalFAB

Community 6 - "Community 6"

Cohesion: 0.17 Nodes (1): FusionClockLocationMap

Community 7 - "Community 7"

Cohesion: 0.18 Nodes (1): FusionClockFAB

Community 8 - "Community 8"

Cohesion: 0.15 Nodes (5): FusionClockLocation, Check if a client IP matches this location's whitelist. Returns True if, Detect the IP the Odoo server sees from your browser and add it., Geocode the address to get lat/lng using Google Geocoding API. Falls bac, Open attendance records for this location.

Community 9 - "Community 9"

Cohesion: 0.23 Nodes (6): create(), FusionClockCorrection, Reject the correction request., Schedule a mail.activity for the office user., Log the correction event., Approve the correction and update the attendance record.

Community 10 - "Community 10"

Cohesion: 0.25 Nodes (1): FusionClockPlacesAutocomplete

Community 11 - "Community 11"

Cohesion: 0.27 Nodes (1): FusionClockKiosk

Community 12 - "Community 12"

Cohesion: 0.22 Nodes (4): FusionClockLeaveRequest, Log the leave request in the activity log., Mark the leave request as reviewed by the office user., Schedule a mail.activity for the office user.

Community 13 - "Community 13"

Cohesion: 0.25 Nodes (1): FusionClockDashboard

Community 14 - "Community 14"

Cohesion: 0.5 Nodes (1): FusionClockActivityLog

Community 15 - "Community 15"

Cohesion: 0.5 Nodes (1): FusionClockShift

Community 16 - "Community 16"

Cohesion: 0.5 Nodes (1): FusionClockPenalty

Community 17 - "Community 17"

Cohesion: 0.5 Nodes (1): ResConfigSettings

Community 18 - "Community 18"

Cohesion: 1.0 Nodes (0):

Community 19 - "Community 19"

Cohesion: 1.0 Nodes (0):

Community 20 - "Community 20"

Cohesion: 1.0 Nodes (0):

Community 21 - "Community 21"

Cohesion: 1.0 Nodes (0):

Community 22 - "Community 22"

Cohesion: 1.0 Nodes (1): Cron: Generate reports when a pay period ends.

Community 23 - "Community 23"

Cohesion: 1.0 Nodes (1): Calculate the period start/end dates based on schedule type.

Community 24 - "Community 24"

Cohesion: 1.0 Nodes (1): Generate reports for all past pay periods from historical attendance data.

Community 25 - "Community 25"

Cohesion: 1.0 Nodes (1): Return the scheduled work hours for this shift (excluding break).

Community 26 - "Community 26"

Cohesion: 1.0 Nodes (1): Cron job: auto clock-out employees after shift + grace period.

Community 27 - "Community 27"

Cohesion: 1.0 Nodes (1): Cron job: check for absent employees (no attendance on workday).

Community 28 - "Community 28"

Cohesion: 1.0 Nodes (1): Cron job: send clock-in/out reminders to employees.

Community 29 - "Community 29"

Cohesion: 1.0 Nodes (1): Cron job: send weekly summary email to employees (Monday 8 AM).

Community 30 - "Community 30"

Cohesion: 1.0 Nodes (1): Create a mail.activity for the office user.

Community 31 - "Community 31"

Cohesion: 1.0 Nodes (1): Send a notification to an employee via internal note.

Community 32 - "Community 32"

Cohesion: 1.0 Nodes (1): Main clock-in/out portal page.

Community 33 - "Community 33"

Cohesion: 1.0 Nodes (1): Read-only timesheet view.

Community 34 - "Community 34"

Cohesion: 1.0 Nodes (1): View and download attendance reports.

Community 35 - "Community 35"

Cohesion: 1.0 Nodes (1): Download a specific report PDF.

Community 36 - "Community 36"

Cohesion: 1.0 Nodes (1): Submit a reason for missed clock-out.

Community 37 - "Community 37"

Cohesion: 1.0 Nodes (1): Submit a leave request from the portal.

Community 38 - "Community 38"

Cohesion: 1.0 Nodes (1): Submit a timesheet correction request from the portal.

Community 39 - "Community 39"

Cohesion: 1.0 Nodes (1): Return dashboard data for managers.

Knowledge Gaps

  • 65 isolated node(s): Approve the correction and update the attendance record., Reject the correction request., Schedule a mail.activity for the office user., Log the correction event., Schedule a mail.activity for the office user. (+60 more) These have ≤1 connection - possible missing edges or undocumented components.
  • Thin community Community 18 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 19 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 20 (1 nodes): __init__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 21 (1 nodes): __manifest__.py Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 22 (1 nodes): Cron: Generate reports when a pay period ends. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 23 (1 nodes): Calculate the period start/end dates based on schedule type. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 24 (1 nodes): Generate reports for all past pay periods from historical attendance data. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 25 (1 nodes): Return the scheduled work hours for this shift (excluding break). Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 26 (1 nodes): Cron job: auto clock-out employees after shift + grace period. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 27 (1 nodes): Cron job: check for absent employees (no attendance on workday). Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 28 (1 nodes): Cron job: send clock-in/out reminders to employees. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 29 (1 nodes): Cron job: send weekly summary email to employees (Monday 8 AM). Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 30 (1 nodes): Create a mail.activity for the office user. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 31 (1 nodes): Send a notification to an employee via internal note. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 32 (1 nodes): Main clock-in/out portal page. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 33 (1 nodes): Read-only timesheet view. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 34 (1 nodes): View and download attendance reports. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 35 (1 nodes): Download a specific report PDF. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 36 (1 nodes): Submit a reason for missed clock-out. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 37 (1 nodes): Submit a leave request from the portal. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 38 (1 nodes): Submit a timesheet correction request from the portal. Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Community 39 (1 nodes): Return dashboard data for managers. 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 get_local_today() connect Community 2 to Community 1, Community 3, Community 4? High betweenness centrality (0.057) - this node is a cross-community bridge.
  • Why does create() connect Community 2 to Community 1, Community 12, Community 4? High betweenness centrality (0.049) - this node is a cross-community bridge.
  • Why does clock_action() connect Community 2 to Community 1? High betweenness centrality (0.039) - this node is a cross-community bridge.
  • Are the 15 inferred relationships involving get_local_today() (e.g. with _cron_generate_period_reports() and action_generate_historical_reports()) actually correct? get_local_today() has 15 INFERRED edges - model-reasoned connections that need verification.
  • Are the 7 inferred relationships involving FusionClockAPI (e.g. with FusionClockKiosk and Kiosk mode controller for shared-device clock-in/out.) actually correct? FusionClockAPI has 7 INFERRED edges - model-reasoned connections that need verification.
  • Are the 13 inferred relationships involving create() (e.g. with ._send_report_email() and .action_export_csv()) actually correct? create() has 13 INFERRED edges - model-reasoned connections that need verification.
  • What connects Approve the correction and update the attendance record., Reject the correction request., Schedule a mail.activity for the office user. to the rest of the system? 65 weakly-connected nodes found - possible documentation gaps or missing edges.