Restructure omni services and add Chatwoot research snapshot

This commit is contained in:
Ruslan Bakiev
2026-02-21 11:11:27 +07:00
parent edea7a0034
commit b73babbbf6
7732 changed files with 978203 additions and 32 deletions

View File

@@ -0,0 +1,42 @@
json.id article.id
json.category_id article.category_id
json.title article.title
json.content article.content
json.description article.description
json.status article.status
json.position article.position
json.account_id article.account_id
json.last_updated_at article.updated_at
json.slug article.slug
if article.portal.present?
json.portal do
json.partial! 'public/api/v1/models/hc/portal', formats: [:json], portal: article.portal
end
end
if article.category.present?
json.category do
json.id article.category.id
json.slug article.category.slug
json.locale article.category.locale
end
end
json.views article.views
if article.author.present?
json.author do
json.partial! 'public/api/v1/models/hc/author', formats: [:json], resource: article.author
end
end
json.associated_articles do
if article.associated_articles.any?
json.array! article.associated_articles.each do |associated_article|
json.partial! 'public/api/v1/models/hc/associated_article', formats: [:json], article: associated_article
end
end
end
json.link "hc/#{article.portal.slug}/articles/#{article.slug}"

View File

@@ -0,0 +1,5 @@
json.name category.name
json.slug category.slug
json.locale category.locale
json.description category.description
json.position category.position

View File

@@ -0,0 +1,9 @@
json.name category.name
json.slug category.slug
json.locale category.locale
json.description category.description
json.position category.position
json.meta do
json.articles_count category.articles.published.size
end

View File

@@ -0,0 +1,4 @@
json.id resource.id
json.name resource.name
json.email resource.email
json.phone_number resource.phone_number

View File

@@ -0,0 +1,12 @@
json.id resource.display_id
json.uuid resource.uuid
json.inbox_id resource.inbox_id
json.contact_last_seen_at resource.contact_last_seen_at.to_i
json.status resource.status
json.agent_last_seen_at resource.agent_last_seen_at.to_i
json.messages do
json.array! resource.messages.chat do |message|
json.partial! 'public/api/v1/models/message', formats: [:json], resource: message
end
end
json.contact resource.contact

View File

@@ -0,0 +1,9 @@
json.id resource.id
json.csat_survey_response resource.csat_survey_response
json.display_type resource.inbox.csat_config.try(:[], 'display_type') || 'emoji'
json.content resource.inbox.csat_config.try(:[], 'message')
json.inbox_avatar_url resource.inbox.avatar_url
json.inbox_name resource.inbox.name
json.locale resource.account.locale
json.conversation_id resource.conversation_id
json.created_at resource.created_at

View File

@@ -0,0 +1,6 @@
json.name resource.name
json.timezone resource.timezone
json.working_hours resource.weekly_schedule
json.working_hours_enabled resource.working_hours_enabled
json.csat_survey_enabled resource.csat_survey_enabled
json.greeting_enabled resource.greeting_enabled

View File

@@ -0,0 +1,9 @@
json.id resource.id
json.content resource.content
json.message_type resource.message_type_before_type_cast
json.content_type resource.content_type
json.content_attributes resource.content_attributes
json.created_at resource.created_at.to_i
json.conversation_id resource.conversation.display_id
json.attachments resource.attachments.map(&:push_event_data) if resource.attachments.present?
json.sender resource.sender.push_event_data if resource.sender

View File

@@ -0,0 +1,15 @@
json.id article.id
json.category_id article.category_id
json.title article.title
json.content article.content
json.description article.description
json.status article.status
json.account_id article.account_id
json.last_updated_at article.updated_at
json.views article.views
if article.author.present?
json.author do
json.partial! 'public/api/v1/models/hc/author', formats: [:json], resource: article.author
end
end

View File

@@ -0,0 +1,3 @@
json.available_name resource.available_name
json.name resource.name
json.thumbnail resource.avatar_url

View File

@@ -0,0 +1,22 @@
json.custom_domain portal.custom_domain
json.header_text portal.header_text
json.homepage_link portal.homepage_link
json.name portal.name
json.page_title portal.page_title
json.slug portal.slug
json.categories do
if portal.categories.any?
json.array! portal.categories.each do |category|
json.partial! 'public/api/v1/models/category', formats: [:json], category: category
end
end
end
json.logo portal.file_base_data if portal.logo.present?
json.meta do
json.articles_count portal.articles.published.size
json.categories_count portal.categories.size
json.default_locale portal.default_locale
end