Module: DailyFocus::Prompt

Extended by:
TimeOffPlannedWorkDayHelper
Defined in:
app/services/daily_focus/prompt.rb

Overview

Short user-facing prompts for tool-based Daily Focus (no pre-injected CRM dumps).

Class Method Summary collapse

Methods included from TimeOffPlannedWorkDayHelper

time_off_planned_work_day_summary

Class Method Details

.focus_date_for_conversation(conversation) ⇒ Object



8
9
10
11
12
13
14
15
# File 'app/services/daily_focus/prompt.rb', line 8

def self.focus_date_for_conversation(conversation)
  raw = conversation&.&.dig('daily_focus_date')
  return Date.current if raw.blank?

  Date.iso8601(raw.to_s)
rescue ArgumentError
  Date.current
end

.instructions_prefill(primary_employee:, covered_employees: [], date: Date.current) ⇒ Object



17
18
19
# File 'app/services/daily_focus/prompt.rb', line 17

def self.instructions_prefill(primary_employee:, covered_employees: [], date: Date.current)
  user_message(primary_employee: primary_employee, covered_employees: covered_employees, date: date)
end

.user_message(primary_employee:, covered_employees: [], date: Date.current) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/services/daily_focus/prompt.rb', line 21

def self.user_message(primary_employee:, covered_employees: [], date: Date.current)
  covered = Array(covered_employees).compact.uniq
  preload_planned_availability!([primary_employee, *covered], date)
  planned = planned_work_availability_section(
    primary_employee: primary_employee,
    covered_employees: covered,
    date: date
  )
  tz = TimezoneHints.prompt_section(primary_employee: primary_employee, covered_employees: covered)
  parts = [core_body(primary_employee, covered)]
  parts << planned if planned.present?
  parts << tz
  parts.join(' ')
end