# para salvar os registros, investigar se usa campaign.inspect ou campaign.to_json # inspect não mostra links dos campos assinados do cloudfront # to_json mostra, mas o link vai expirar antes de usarmos numa eventual auditoria, então talvez nem valha a pena guardar isso

{

desc: "transaction.#{layer}.#{service}.#{action}", #pode ser o topic do rabbitmq tb!
layer: "creatives",
service: "campaigns",
action: "create",
timestamp: Time.zone.now,
transaction: {
  company: User.http_request_user.company.as_json || 'undefined',
  user: User.http_request_user.as_json || 'undefined',
  campaigns: [
    { ...campaign.as_json, changes: [] }
  ],
  errors: errors.messages,
  call_stack: Rails.backtrace_cleaner.clean(caller)
},
ops_metadata: {
  layer_url: ENV['SERVER_URL'] || 'undefined',
  server_ip: 'undefined',
  # CLOUD METADATA
  # https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
  cloud: {
    provider: 'AWS',
    region: ENV['AWS_REGION'] || 'undefined', #usar código dos provedores de cloud computing(AWS, Azure, etc...) mesmo
    machine_id: 'undefined',
  }
}

}

# SERVIÇOS E ACTIONS PARA LOGS DE ERRO service: [request_processing, automated_task] action: [uncaught_error]

#CREATIVES banners: *********************************************************************************************************#

create: # never used, banners arereated as part of campaign flow
  # pra facilitar gerar os gráficos iguais do analytics
  template_name
  category_name
  # pra facilitar gerar os gráficos iguais do analytics

  banner
  # Spreadsheet::FileReader::Xlsx.create_banner

*********************************************************************************************************#

send_to_rendering_queue: 
  sentData
  # task campaign_banner:api

*********************************************************************************************************#

receive_processed_creatives:
  banners
  # PostbacksController#create

*********************************************************************************************************#

accept:
  last_accepted_video
  # Video.log_acceptance

campaigns: *********************************************************************************************************#

create:
  campaign_after_action #(campaign.inspect)
  # Dashboard::CampaignsController#create

*********************************************************************************************************#

update:
  campaign_before_action
  campaignErrors
  campaign_after_action
  # Dashboard::CampaignsController#update

*********************************************************************************************************#

create_draft:
  draft_after_action
  spreadsheetLink # se tiver a campanha como string, não precisa do link pq já vai estar na campanha stringifada
  # Dashboard::DraftsController#create

*********************************************************************************************************#

validate_sheet:
  draft_after_action
  # task excel:validation

*********************************************************************************************************#

discard:
  campaign_before_action
  campaignErrors
  campaign_after_action
  # Dashboard::CampaignsController#update

*********************************************************************************************************#

update_name:
  campaign_before_action
  campaignErrors
  campaign_after_action
  # Dashboard::CampaignsController#update_name

*********************************************************************************************************#

delete: 
  campaign
  # Dashboard::CampaignsController#destroy
youtube_spreadsheet_download: # parece não existir mais esse método
  campaign
  spreadsheetLink # se tiver a campanha como string, não precisa do link pq já vai estar na campanha stringifada
  # Dashboard::CampaignsController#upload_youtube
campaign_spreadsheet_download: # parece não existir mais esse método
  campaign
  spreadsheetLink # se tiver a campanha como string, não precisa do link pq já vai estar na campanha stringifada
  # Dashboard::CampaignsController#campaign_download
banner_zip_download: 
  campaign
  # Dashboard::CampaignsController#zip_banner

# index: Dashboard::CampaignsController#index
# show: Dashboard::CampaignsController#show
# edit: Dashboard::CampaignsController#edit

# new: Dashboard::CampaignsController#new

########################################################################################################### db_change: # ideia desconsiderada, mudanças na BD são acrescentadas aos logs dos controllers e das tasks

toda vez que algo mudar na base, cria um log do serviço 'db', para auditoria
# ApplicationRecord

*********************************************************************************************************# errors:

error
# Creatives::Application
# example: https://gist.github.com/steve9001/1443408/3917792198d7f93b129c6009fcc9292ec4b7b664
# enviar alertas a cada erro!

gallery: *********************************************************************************************************#

filter:
  gallery_files:
  file_names:
  search_tags:

*********************************************************************************************************#

download:
  gallery_files:
    galleryFile1:
      galleryFile
      tagsIds
    galleryFile2:
      galleryFile
      tagsIds
    galleryFileEtc...
  # Dashboard::GalleryFilesController#download

*********************************************************************************************************#

create: 
  galleryFiles:
    galleryFile1:
      galleryFile
      tagsIds
    galleryFile2:
      galleryFile
      tagsIds
    galleryFileEtc...
  # Dashboard::GalleryFilesController#create

*********************************************************************************************************#

update:
    galleryFiles:
      galleryFile1:
        galleryFile
        tagsIds
      galleryFile2:
        galleryFile
        tagsIds
      galleryFileEtc...
  # Dashboard::GalleryFilesController#update

*********************************************************************************************************#

delete:
  galleryFiles:
    galleryFile1:
      galleryFile
      tagsIds
    galleryFile2:
      galleryFile
      tagsIds
    galleryFileEtc...
  # Dashboard::GalleryFilesController#destroy
# index: Dashboard::GalleryFilesController#index
# show: Dashboard::GalleryFilesController#show
# filter_files: Dashboard::GalleryFilesController#filter_files
# edit: Dashboard::GalleryFilesController#edit

facebook: *********************************************************************************************************#

update_accounts:
  facebook_before_action
  facebookP_after_action
  # lib/tasks/facebook.rake facebook:update_ad_account_status

*********************************************************************************************************#

upload_videos:
  adVideo
  adImage
  # lib/tasks/facebook.rake facebook:upload_videos

marketing_cloud: *********************************************************************************************************#

update:
  marketingCloud_before_action
  marketingCloud_after_action
  # Dashboard::Users::MarketingCloudsController#update

*********************************************************************************************************#

refresh_token:
  marketingCloud_before_action
  marketingCloud_after_action
  # lib/tasks/integration.rake

player: # vai deixar de existir!

send_videos:
  video_before_action
  video_after_action
  # lib/tasks/full_service.rake full_service:videos
create_analytics:
  analytic_before_action
  analytic_after_action
  # lib/tasks/full_service.rake full_service:analytics
send_report:
  analyticReport_before_action
  analyticReport_after_action
  emailContent #????????????
  # lib/tasks/full_service.rake full_service:results

template_collections: *********************************************************************************************************#

create:
  collection
  collectionErrors
  templates: 
    template1
    template2
    templateEtc
  # Admin::TemplateCollectionsController#create

*********************************************************************************************************#

update:
  collection
  collectionErrors
  templates: 
    template1
    template2
    templateEtc
  # Admin::TemplateCollectionsController#update

*********************************************************************************************************#

delete:
  collection
  # Admin::TemplateCollectionsController#destroy
  # Admin::CategoriesCollectionsController#destroy
# index: Dashboard::TemplatesController#index
# index_collections: Dashboard::TemplateCollectionsController#index
# paginate: Dashboard::TemplatesController#templates
# paginate_collections: Dashboard::TemplateCollectionsController#paginate
# index_collections: Admin::TemplateCollectionsController#index
# show_collection: Admin::TemplateCollectionsController#show
# new_collection: Admin::TemplateCollectionsController#new
# edit_collection: Admin::TemplateCollectionsController#edit
# show: Dashboard::TemplatesController#show

template_categories: *********************************************************************************************************#

create:
  category
  # Admin::CategoriesCollectionsController#create

*********************************************************************************************************#

update:
  category_before_action
  category_after_action
  # Admin::CategoriesCollectionsController#update

*********************************************************************************************************#

delete:
  category
  category
# index_category: Admin::CategoriesCollectionsController#index
# edit_category: Admin::CategoriesCollectionsController#edit
# edit_category: Admin::CategoriesCollectionsController#edit
# new_category: Admin::CategoriesCollectionsController#new

users_management: *********************************************************************************************************#

update:
  user_before_action
  user_after_action
  # Dashboard::UsersController#update

*********************************************************************************************************#

admin_update:
  user_before_action
  quota_before_action
  organization_before_action
  company_before_action

  user_after_action
  quota_after_action
  organization_after_action
  company_after_action
  # Dashboard::UsersController#update

*********************************************************************************************************#

upgrade:
  # REALMENTE É USADO AINDA???????
  # Dashboard::UsersController#upgrade

*********************************************************************************************************#

invite_user:
  invitedUser
  # Dashboard::UsersController#invite_user

*********************************************************************************************************#

email_link: 
  sentEmail # ????????
  # UserMailer.send_link

*********************************************************************************************************#

login_as_user:
  hijackedUser
  # Admin::UsersController#login_as_user

*********************************************************************************************************#

download_users_info:
  sem payload
  # Admin::UsersController#download_users_info

*********************************************************************************************************#

update_quota:
  quota
  # MultiUser::Quota.update && MultiUser::Quota.decrease

*********************************************************************************************************#

quota_renewal:
  quota_before_action
  quota_after_action
  # lib/tasks/renew_quotas.rake
# edit: Dashboard::UsersController#edit
# index: Admin::UsersController#index

videos: *********************************************************************************************************#

create:
  # pra facilitar gerar os gráficos iguais do analytics
  template_name
  category_name
  track_name
  videos: 
    galleryFile1Name
    galleryFileEtcName
  # pra facilitar gerar os gráficos iguais do analytics

  video
  # Dashboard::VideosController#create -> realmente é usado esse controller?
  # Spreadsheet::FileReader::Xlsx.create_video

*********************************************************************************************************#

update:
  video_before_action
  video_after_action
  # Dashboard::VideosController#update -> realmente é usado esse controller?

*********************************************************************************************************#

send_to_rendering_queue:
  sentData
  # lib/tasks/campaign.rake campaign:api

*********************************************************************************************************#

receive_processed_creatives:
  video_before_action
  video_after_action
  # PostbacksController#create

*********************************************************************************************************#

accept:
  last_accepted_video
  # Video.log_acceptance

youtube: *********************************************************************************************************#

create_youtube_upload:
  uploadSocial
  # Dashboard::YoutubeUploadsController#create

*********************************************************************************************************#

update_upload_social:
  uploadSocial_before_action
  uploadSocial_after_action
  # Dashboard::YoutubeUploadsController#update

*********************************************************************************************************#

validate_videos:
  video_before_action
  video_after_action
  # lib/tasks/youtube.rake videos_to_validation.each (linhas 34-56)

*********************************************************************************************************#

upload_videos:
  video_before_action
  video_after_action
  # lib/tasks/youtube.rake videos_to_validation.each (linhas 58-74)

zendesk_sessions: *********************************************************************************************************#

create_session:
  sem payload
  # ZendeskSessionsController#create

*********************************************************************************************************#

create_ticket:
  ticket
  # Dashboard::TicketsController#create

# MÁQUINAS # logs do nginx (apache) stdin, stdout

# AUTH # login(horários)

#API