Merge pull request #130 from fazer-ai/gabrieljablonski/chore-docker-compose-coolify
chore(zapi): update banner on create inbox screen, and docker-compose.coolify.yml
This commit is contained in:
commit
be18159b00
@ -23,7 +23,7 @@ Metrics/MethodLength:
|
|||||||
- 'enterprise/lib/captain/agent.rb'
|
- 'enterprise/lib/captain/agent.rb'
|
||||||
|
|
||||||
RSpec/ExampleLength:
|
RSpec/ExampleLength:
|
||||||
Max: 25
|
Max: 50
|
||||||
|
|
||||||
Style/Documentation:
|
Style/Documentation:
|
||||||
Enabled: false
|
Enabled: false
|
||||||
|
|||||||
@ -1,14 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<svg fill="#ef4444" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352.2 352.2">
|
|
||||||
<path d="M348.232,100.282c-13.464-32.436-35.496-60.588-45.9-94.86c-1.836-5.508-11.016-7.956-13.464-1.836
|
|
||||||
c-14.688,34.272-36.72,65.484-47.124,101.592c-1.836,6.732,7.344,13.464,12.24,7.344c7.344-9.18,15.912-16.524,24.479-25.092
|
|
||||||
c-1.224,52.632,0,105.264-9.18,157.284c-4.896,28.152-11.628,59.977-31.824,81.396c-24.479,25.704-55.08,2.448-68.544-21.42
|
|
||||||
c-11.628-20.809-31.823-110.772-72.215-79.561c-23.868,18.36-29.988,43.452-37.332,70.992c-1.836,7.956-4.896,15.3-8.568,22.032
|
|
||||||
c-14.076,26.316-32.436-16.524-33.048-26.928c-1.224-20.809,4.896-42.229,9.792-62.424c1.836-6.12-7.344-8.568-9.792-2.448
|
|
||||||
c-11.016,28.764-26.316,77.724,0,102.815c23.256,21.42,42.84,7.345,52.02-17.748c6.12-16.523,29.376-108.323,56.304-65.483
|
|
||||||
c17.748,28.151,22.644,61.812,44.064,88.128c15.3,18.359,42.84,22.644,64.26,13.464c25.704-11.628,36.72-45.9,43.452-70.38
|
|
||||||
c16.523-61.2,16.523-127.296,14.688-190.332c14.688,9.792,31.212,18.972,47.736,25.092
|
|
||||||
C347.008,113.746,350.681,105.178,348.232,100.282z M268.672,78.25c7.956-17.136,17.748-34.272,26.316-51.408
|
|
||||||
c9.18,21.42,20.808,40.392,31.824,61.2c-12.853-7.956-25.092-17.136-39.168-18.972c-3.061-0.612-5.509,1.224-6.732,3.672
|
|
||||||
C276.628,73.354,272.345,75.19,268.672,78.25z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.3 KiB |
9
app/javascript/dashboard/assets/images/curved-arrow.svg
Normal file
9
app/javascript/dashboard/assets/images/curved-arrow.svg
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<svg fill="#2781F6"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 302.816 302.816">
|
||||||
|
<path d="M298.423,152.996c-5.857-5.858-15.354-5.858-21.213,0l-35.137,35.136
|
||||||
|
c-5.871-59.78-50.15-111.403-112.001-123.706c-45.526-9.055-92.479,5.005-125.596,37.612c-5.903,5.813-5.977,15.31-0.165,21.213
|
||||||
|
c5.813,5.903,15.31,5.977,21.212,0.164c26.029-25.628,62.923-36.679,98.695-29.565c48.865,9.72,83.772,50.677,88.07,97.978
|
||||||
|
l-38.835-38.835c-5.857-5.857-15.355-5.858-21.213,0.001c-5.858,5.858-5.858,15.355,0,21.213l62.485,62.485
|
||||||
|
c2.929,2.929,6.768,4.393,10.606,4.393s7.678-1.464,10.607-4.393l62.483-62.482C304.281,168.352,304.281,158.854,298.423,152.996z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 691 B |
@ -124,9 +124,9 @@ const handleManualLinkClick = () => {
|
|||||||
class="mt-6 relative overflow-visible"
|
class="mt-6 relative overflow-visible"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
src="~dashboard/assets/images/curved-arrow-red.svg"
|
src="~dashboard/assets/images/curved-arrow.svg"
|
||||||
alt=""
|
alt=""
|
||||||
class="absolute -top-12 right-4 w-20 h-20 pointer-events-none z-10"
|
class="absolute -top-12 right-0 w-20 h-20 pointer-events-none z-10 scale-y-[-1] -rotate-45"
|
||||||
/>
|
/>
|
||||||
<PromoBanner
|
<PromoBanner
|
||||||
:title="
|
:title="
|
||||||
|
|||||||
@ -14,8 +14,8 @@ services:
|
|||||||
- RAILS_ENV=production
|
- RAILS_ENV=production
|
||||||
- INSTALLATION_ENV=docker
|
- INSTALLATION_ENV=docker
|
||||||
- DEFAULT_LOCALE=pt_BR
|
- DEFAULT_LOCALE=pt_BR
|
||||||
- FRONTEND_URL=${FRONTEND_URL}
|
- FRONTEND_URL=${SERVICE_URL_RAILS}
|
||||||
- INTERNAL_HOST_URL=${INTERNAL_HOST_URL}
|
- INTERNAL_HOST_URL=http://rails:3000
|
||||||
- POSTGRES_HOST=postgres
|
- POSTGRES_HOST=postgres
|
||||||
- POSTGRES_PORT=5432
|
- POSTGRES_PORT=5432
|
||||||
- POSTGRES_USERNAME=${SERVICE_USER_POSTGRES}
|
- POSTGRES_USERNAME=${SERVICE_USER_POSTGRES}
|
||||||
@ -68,8 +68,8 @@ services:
|
|||||||
- RAILS_ENV=production
|
- RAILS_ENV=production
|
||||||
- INSTALLATION_ENV=docker
|
- INSTALLATION_ENV=docker
|
||||||
- DEFAULT_LOCALE=pt_BR
|
- DEFAULT_LOCALE=pt_BR
|
||||||
- FRONTEND_URL=${FRONTEND_URL}
|
- FRONTEND_URL=${SERVICE_URL_RAILS}
|
||||||
- INTERNAL_HOST_URL=${INTERNAL_HOST_URL}
|
- INTERNAL_HOST_URL=http://rails:3000
|
||||||
- POSTGRES_HOST=postgres
|
- POSTGRES_HOST=postgres
|
||||||
- POSTGRES_PORT=5432
|
- POSTGRES_PORT=5432
|
||||||
- POSTGRES_USERNAME=${SERVICE_USER_POSTGRES}
|
- POSTGRES_USERNAME=${SERVICE_USER_POSTGRES}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ RSpec.describe Api::V2::Accounts::ReportsController, type: :request do
|
|||||||
context 'when authenticated and authorized' do
|
context 'when authenticated and authorized' do
|
||||||
before do
|
before do
|
||||||
# Create conversations across 24 hours at different times
|
# Create conversations across 24 hours at different times
|
||||||
base_time = Time.utc(2024, 1, 15, 0, 0) # Start at midnight UTC
|
base_time = Time.utc(2024, 1, 14, 23, 0) # Start at 23:00 to span 2 days
|
||||||
|
|
||||||
# Create conversations every 4 hours across 24 hours
|
# Create conversations every 4 hours across 24 hours
|
||||||
6.times do |i|
|
6.times do |i|
|
||||||
@ -23,36 +23,38 @@ RSpec.describe Api::V2::Accounts::ReportsController, type: :request do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'timezone_offset affects data grouping and timestamps correctly' do
|
it 'timezone_offset affects data grouping and timestamps correctly' do
|
||||||
Time.use_zone('UTC') do
|
travel_to Time.utc(2024, 1, 15, 12, 0) do
|
||||||
base_time = Time.utc(2024, 1, 15, 0, 0)
|
Time.use_zone('UTC') do
|
||||||
base_params = {
|
base_time = Time.utc(2024, 1, 14, 23, 0) # Start at 23:00 to span 2 days
|
||||||
metric: 'conversations_count',
|
base_params = {
|
||||||
type: 'account',
|
metric: 'conversations_count',
|
||||||
since: (base_time - 1.day).to_i.to_s,
|
type: 'account',
|
||||||
until: (base_time + 2.days).to_i.to_s,
|
since: (base_time - 1.day).to_i.to_s,
|
||||||
group_by: 'day'
|
until: (base_time + 2.days).to_i.to_s,
|
||||||
}
|
group_by: 'day'
|
||||||
|
}
|
||||||
|
|
||||||
responses = [0, -8, 9].map do |offset|
|
responses = [0, -8, 9].map do |offset|
|
||||||
get "/api/v2/accounts/#{account.id}/reports",
|
get "/api/v2/accounts/#{account.id}/reports",
|
||||||
params: base_params.merge(timezone_offset: offset),
|
params: base_params.merge(timezone_offset: offset),
|
||||||
headers: admin.create_new_auth_token, as: :json
|
headers: admin.create_new_auth_token, as: :json
|
||||||
response.parsed_body
|
response.parsed_body
|
||||||
|
end
|
||||||
|
|
||||||
|
data_entries = responses.map { |r| r.select { |e| e['value'] > 0 } }
|
||||||
|
totals = responses.map { |r| r.sum { |e| e['value'] } }
|
||||||
|
timestamps = responses.map { |r| r.map { |e| e['timestamp'] } }
|
||||||
|
|
||||||
|
# Data conservation and redistribution
|
||||||
|
expect(totals.uniq).to eq([6])
|
||||||
|
expect(data_entries[0].map { |e| e['value'] }).to eq([1, 5])
|
||||||
|
expect(data_entries[1].map { |e| e['value'] }).to eq([3, 3])
|
||||||
|
expect(data_entries[2].map { |e| e['value'] }).to eq([4, 2])
|
||||||
|
|
||||||
|
# Timestamp differences
|
||||||
|
expect(timestamps.uniq.size).to eq(3)
|
||||||
|
timestamps[0].zip(timestamps[1]).each { |utc, pst| expect(utc - pst).to eq(-28_800) }
|
||||||
end
|
end
|
||||||
|
|
||||||
data_entries = responses.map { |r| r.select { |e| e['value'] > 0 } }
|
|
||||||
totals = responses.map { |r| r.sum { |e| e['value'] } }
|
|
||||||
timestamps = responses.map { |r| r.map { |e| e['timestamp'] } }
|
|
||||||
|
|
||||||
# Data conservation and redistribution
|
|
||||||
expect(totals.uniq).to eq([6])
|
|
||||||
expect(data_entries[0].map { |e| e['value'] }).to eq([1, 5])
|
|
||||||
expect(data_entries[1].map { |e| e['value'] }).to eq([3, 3])
|
|
||||||
expect(data_entries[2].map { |e| e['value'] }).to eq([4, 2])
|
|
||||||
|
|
||||||
# Timestamp differences
|
|
||||||
expect(timestamps.uniq.size).to eq(3)
|
|
||||||
timestamps[0].zip(timestamps[1]).each { |utc, pst| expect(utc - pst).to eq(-28_800) }
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user