iachat/app/controllers/api/v1/tracking_controller.rb
Rodrigo Borba 118f52e239 feat: lead attribution tracking - landing page origin detection
- Cria modelo LeadClick para registrar cliques das landing pages
- Cria modelo LandingHost para mapear hostname → inbox_id
- Endpoint público POST /track/click para receber eventos de clique
- Leads::AttributionMatcherService para correlacionar clique com conversa
- Integração com IncomingMessageWuzapiService para atribuição automática
- API REST para gerenciar LandingHosts por inbox (index/create/destroy)
- UI: nova aba 'Landing Pages' nas configurações da caixa de entrada
- Dashboard API client dedicado (landingHosts.js)
- RuboCop: refatora shift_signature_name, TrackingController, AttributionMatcherService e WuzapiService
2026-03-02 14:40:35 -03:00

29 lines
733 B
Ruby

class Api::V1::TrackingController < ActionController::API
def click
LeadClick.create!(click_params)
head :no_content
rescue StandardError => e
Rails.logger.error("Error processing tracking click: #{e.message}")
head :no_content
end
private
def resolved_inbox_id
LandingHost.find_by(hostname: params[:hostname].to_s.strip, active: true)&.inbox_id
end
def click_params
{
inbox_id: resolved_inbox_id,
ip: params[:ip].presence || request.remote_ip,
user_agent: request.user_agent || params[:user_agent],
hostname: params[:hostname].to_s.strip,
source: params[:source],
campanha: params[:campanha],
lp: params[:lp],
status: :clicked
}
end
end