- Adiciona check_in_at/duration_hours ao schema do tool CreateReservationIntent para que a IA capture o horário EXATO de chegada informado pelo cliente - Cria captain_notification_templates: label, content, timing_minutes, timing_direction (before/after), active, position - Implementa SendNotificationService com interpolação de variáveis (guest_name, check_in_time, check_out_time, suite_name, unit_name) - Implementa NotificationScannerJob (Sidekiq-cron a cada 5min) com janela de tolerância de ±5min e idempotência via metadata JSONB - API REST: /captain/units/:unit_id/notification_templates (CRUD) - Store Vuex captainNotificationTemplates + API client - UI: página de gestão de templates com editor inline e botão '+' - Configura rota captain_settings_notifications - i18n PT/EN para todas as strings novas - Rubocop e ESLint: zero offenses
97 lines
2.8 KiB
YAML
97 lines
2.8 KiB
YAML
# https://github.com/ondrejbartas/sidekiq-cron
|
|
# use https://crontab.guru/ to validate
|
|
# validations for this file exist in /spec/configs/schedule_spec.rb
|
|
|
|
# executed At 12:00 on every day-of-month.
|
|
internal_check_new_versions_job:
|
|
cron: '0 12 */1 * *'
|
|
class: 'Internal::CheckNewVersionsJob'
|
|
queue: scheduled_jobs
|
|
# # executed At every 5th minute..
|
|
trigger_scheduled_items_job:
|
|
cron: '*/5 * * * *'
|
|
class: 'TriggerScheduledItemsJob'
|
|
queue: scheduled_jobs
|
|
|
|
# executed every minute.
|
|
trigger_scheduled_messages_job:
|
|
cron: '* * * * *'
|
|
class: 'ScheduledMessages::TriggerScheduledMessagesJob'
|
|
queue: scheduled_jobs
|
|
|
|
# executed At every minute..
|
|
trigger_imap_email_inboxes_job:
|
|
cron: '*/1 * * * *'
|
|
class: 'Inboxes::FetchImapEmailInboxesJob'
|
|
queue: scheduled_jobs
|
|
|
|
# executed daily at 2230 UTC
|
|
# which is our lowest traffic time
|
|
remove_stale_contact_inboxes_job.rb:
|
|
cron: '30 22 * * *'
|
|
class: 'Internal::RemoveStaleContactInboxesJob'
|
|
queue: scheduled_jobs
|
|
|
|
# executed daily at 2230 UTC
|
|
# which is our lowest traffic time
|
|
remove_stale_redis_keys_job.rb:
|
|
cron: '30 22 * * *'
|
|
class: 'Internal::RemoveStaleRedisKeysJob'
|
|
queue: scheduled_jobs
|
|
|
|
# DISABLED: investigating if this job is the source of orphan conversations
|
|
# #executed daily at 0430 UTC
|
|
# # which will be IST 10:00 AM
|
|
# process_stale_contacts_job:
|
|
# cron: '30 04 * * *'
|
|
# class: 'Internal::ProcessStaleContactsJob'
|
|
# queue: housekeeping
|
|
|
|
# executed daily at 0100 UTC
|
|
# to delete accounts marked for deletion
|
|
delete_accounts_job:
|
|
cron: '0 1 * * *'
|
|
class: 'Internal::DeleteAccountsJob'
|
|
queue: scheduled_jobs
|
|
|
|
# executed every 15 minutes
|
|
# to assign unassigned conversations for all inboxes
|
|
bulk_auto_assignment_job:
|
|
cron: '*/15 * * * *'
|
|
class: 'Inboxes::BulkAutoAssignmentJob'
|
|
queue: scheduled_jobs
|
|
|
|
# executed every 10 minutes
|
|
# proactively checks pending PIX charges (Inter) while txid is still valid
|
|
captain_proactive_pix_polling_job:
|
|
cron: '*/10 * * * *'
|
|
class: 'Captain::Payments::ProactivePixPollingSchedulerJob'
|
|
queue: scheduled_jobs
|
|
|
|
# executed every 30 minutes for assignment_v2
|
|
periodic_assignment_job:
|
|
cron: '*/30 * * * *'
|
|
class: 'AutoAssignment::PeriodicAssignmentJob'
|
|
queue: scheduled_jobs
|
|
|
|
# executed daily at 2230 UTC
|
|
# removes old notifications (>1 month) and trims to 300 per user
|
|
remove_old_notification_job:
|
|
cron: '30 22 * * *'
|
|
class: 'Notification::RemoveOldNotificationJob'
|
|
queue: purgable
|
|
|
|
# executed every 12 hours
|
|
# to remove orphan conversations without contact
|
|
remove_orphan_conversations_job:
|
|
cron: '0 */12 * * *'
|
|
class: 'Internal::RemoveOrphanConversationsJob'
|
|
queue: housekeeping
|
|
|
|
# executed every 5 minutes
|
|
# scans reservations and sends configured notification templates (pre/post arrival)
|
|
captain_notification_scanner_job:
|
|
cron: '*/5 * * * *'
|
|
class: 'Captain::Notifications::NotificationScannerJob'
|
|
queue: scheduled_jobs
|