commit wip

This commit is contained in:
Joaquin Ossa 2025-02-22 12:42:20 +01:00
parent 9fa62e0bf2
commit 3f224d8fed
2 changed files with 154 additions and 265 deletions

View file

@ -31,7 +31,11 @@ with
from jsonb_array_elements(status_history_logs::jsonb) status_step from jsonb_array_elements(status_history_logs::jsonb) status_step
order by (status_step ->> 'CreatedDate')::timestamp desc order by (status_step ->> 'CreatedDate')::timestamp desc
limit 1 limit 1
) as last_status_at_utc ) as last_status_at_utc,
(
select count(*)
from jsonb_array_elements(host_user_claim_logs::jsonb) comment
) as claims_count
from stg_resolutions__incidents from stg_resolutions__incidents
), ),
damage_reported_items as ( damage_reported_items as (
@ -41,13 +45,16 @@ with
damage_report as ( damage_report as (
select select
id_incident, id_incident,
count(distinct item ->> 'Id') as number_damaged_items, -- Counting unique damaged items count(distinct item ->> 'Id') as number_damaged_items,
sum(
coalesce((corrective_measures ->> 'OriginalAmount')::numeric, 0)
) as original_value_amount_in_txn_currency,
sum( sum(
coalesce((corrective_measures ->> 'Amount')::numeric, 0) coalesce((corrective_measures ->> 'Amount')::numeric, 0)
) as asked_repair_amount, ) as asked_repair_amount_in_txn_currency,
sum( sum(
coalesce((corrective_measures ->> 'SettlementAmount')::numeric, 0) coalesce((corrective_measures ->> 'SettlementAmount')::numeric, 0)
) as accepted_amount ) as accepted_amount_in_txn_currency
from from
damage_reported_items, damage_reported_items,
jsonb_array_elements(item -> 'CorrectiveMeasures') as corrective_measures jsonb_array_elements(item -> 'CorrectiveMeasures') as corrective_measures
@ -62,10 +69,7 @@ select
current_status_name, current_status_name,
is_submission_complete, is_submission_complete,
current_agent_name, current_agent_name,
read_only_for_customers,
status_history_logs,
document_version, document_version,
task_execution_logs,
created_at_date, created_at_date,
created_date_date, created_date_date,
updated_at_date, updated_at_date,
@ -87,75 +91,11 @@ select
else null else null
end as resolution_time_in_hours, end as resolution_time_in_hours,
dr.number_damaged_items, dr.number_damaged_items,
dr.asked_repair_amount, dr.original_value_amount_in_txn_currency,
dr.accepted_amount, dr.asked_repair_amount_in_txn_currency,
dr.accepted_amount_in_txn_currency,
-- Host Details -- Resolutions calculator
id_user_host,
host_user_claim_logs,
host_account_name,
-- Host Contact Details
host_email,
host_last_name,
host_first_name,
host_phone_code,
host_phone_number,
host_phone_number_with_code,
-- Guest Details
id_user_guest,
guest_email,
guest_last_name,
guest_first_name,
guest_phone_code,
guest_phone_number,
guest_phone_number_with_code,
-- Guest Deposit Details
is_guest_deposit_retained,
is_guest_deposit_collected,
deposit_retained_amount_in_txn_currency,
deposit_retained_currency,
-- Guest Involvements
has_guest_contributed_to_cost,
has_host_taken_preventative_steps,
guest_contribution_amount_in_txn_currency,
guest_contribution_currency,
guest_contacted_about_damage,
guest_contacted_evidence_files,
guest_preventative_steps_details,
-- Accommodation Details
id_accommodation,
accommodation_url,
accommodation_name,
are_pets_allowed,
-- Booking Details
check_in_at_utc,
check_in_date_utc,
check_out_at_utc,
check_out_date_utc,
id_booking,
booking_status,
id_reservation,
booking_details,
number_of_guests,
booking_services,
booking_protection,
booking_platform_used,
booking_platform_reference,
-- Damage Report
before_damage_evidence,
original_invoice_evidence,
damage_incident_details,
has_confirmed_loss,
damage_report_items,
-- Calculator
protection_name, protection_name,
was_overriden, was_overriden,
waiver_or_deposit_name, waiver_or_deposit_name,
@ -169,6 +109,53 @@ select
calculated_guest_charge_currency, calculated_guest_charge_currency,
calculated_guest_charge_amount_in_usd calculated_guest_charge_amount_in_usd
-- Host Details
id_user_host,
lt.claims_count,
host_account_name,
-- Host Contact Details
host_email,
host_last_name,
host_first_name,
host_phone_code,
host_phone_number,
-- Guest Details
id_user_guest,
guest_email,
guest_last_name,
guest_first_name,
guest_phone_code,
guest_phone_number,
-- Guest Deposit Details
is_guest_deposit_retained,
is_guest_deposit_collected,
deposit_retained_amount_in_txn_currency,
deposit_retained_currency,
-- Guest Involvements
has_guest_contributed_to_cost,
has_host_taken_preventative_steps,
guest_contribution_amount_in_txn_currency,
guest_contribution_currency,
guest_contacted_about_damage,
-- Accommodation Details
id_accommodation,
accommodation_name,
-- Booking Details
check_in_at_utc,
check_in_date_utc,
check_out_at_utc,
check_out_date_utc,
id_booking,
booking_status,
id_reservation,
booking_protection
from stg_resolutions__incidents i from stg_resolutions__incidents i
left join logs_timeline lt on i.id_incident = lt.id_incident left join logs_timeline lt on i.id_incident = lt.id_incident
left join damage_report dr on i.id_incident = dr.id_incident left join damage_report dr on i.id_incident = dr.id_incident

View file

@ -2,23 +2,15 @@ version: 2
models: models:
- name: int_resolutions__incidents - name: int_resolutions__incidents
description: | description: ""
"Contains all incidents stored by the resolutions team in Cosmos DB.
This includes data about the incident, the user claiming the incident, the booking,
the accommodation, the host and the guest."
columns: columns:
- name: id_incident - name: id_incident
data_type: text data_type: text
description: "Unique identifier for the incident." description: "Unique identifier for the incident."
data_tests:
- unique
- not_null
- name: id_user - name: id_user
data_type: text data_type: text
description: "Id of the user who created the incident." description: "Id of the user who created the incident."
data_tests:
- not_null
- name: id_verification - name: id_verification
data_type: text data_type: text
@ -27,93 +19,142 @@ models:
- name: current_status_name - name: current_status_name
data_type: text data_type: text
description: "current status of the incident." description: "current status of the incident."
data_tests:
- not_null
- name: is_submission_complete - name: is_submission_complete
data_type: boolean data_type: boolean
description: "Flag to indicate if the submission is complete." description: "Flag to indicate if the submission is complete."
data_tests:
- not_null
- name: current_agent_name - name: current_agent_name
data_type: text data_type: text
description: "Name of the agent who is currently handling the incident." description: "Name of the agent who is currently handling the incident."
- name: read_only_for_customers
data_type: boolean
description: "Flag to indicate if the incident is read only for customers."
- name: status_history_logs
data_type: text
description: "Log of the status history."
- name: document_version - name: document_version
data_type: text data_type: text
description: "Reported document resCentre, Api, manual form" description: "Reported document resCentre, Api, manual form"
- name: task_execution_logs
data_type: text
description: ""
- name: created_at_date - name: created_at_date
data_type: timestamp without time zone data_type: timestamp without time zone
description: "Timestamp when the incident was created." description: "Timestamp when the incident was created."
data_tests:
- not_null
- name: created_date_date - name: created_date_date
data_type: date data_type: date
description: "Date when the incident was created." description: "Date when the incident was created."
data_tests:
- not_null
- name: updated_at_date - name: updated_at_date
data_type: timestamp without time zone data_type: timestamp without time zone
description: "Timestamp when the incident was last updated." description: "Timestamp when the incident was last updated."
data_tests:
- not_null
- name: updated_date_date - name: updated_date_date
data_type: date data_type: date
description: "Date when the incident was last updated." description: "Date when the incident was last updated."
data_tests:
- not_null - name: first_comment_at_utc
data_type: timestamp without time zone
description: ""
- name: last_comment_at_utc
data_type: timestamp without time zone
description: ""
- name: comment_count
data_type: bigint
description: ""
- name: first_status_at_utc
data_type: timestamp without time zone
description: ""
- name: last_status_at_utc
data_type: timestamp without time zone
description: ""
- name: resolution_time_in_hours
data_type: numeric
description: ""
- name: number_damaged_items
data_type: bigint
description: ""
- name: original_value_amount_in_txn_currency
data_type: numeric
description: ""
- name: asked_repair_amount_in_txn_currency
data_type: numeric
description: ""
- name: accepted_amount_in_txn_currency
data_type: numeric
description: ""
- name: protection_name
data_type: text
description: "Protection name."
- name: was_overriden
data_type: boolean
description: "Flag to indicate if the proposed settlement value from the calculator was overriden."
- name: waiver_or_deposit_name
data_type: text
description: "Waiver or deposit name."
- name: guest_verification_status
data_type: text
description: "Guest verification status for this booking."
- name: lower_protection_limit_usd
data_type: text
description: "Lower protection limit in USD."
- name: upper_protection_limit_usd
data_type: text
description: "Upper protection limit in USD."
- name: calculated_payout_amount_in_txn_currency
data_type: text
description: "Calculated payout amount in local currency."
- name: calculated_payout_currency
data_type: text
description: "Currency of the calculated payout amount."
- name: calculated_payout_amount_in_usd
data_type: text
description: "Calculated payout amount in USD."
- name: calculated_guest_charge_amount_in_txn_currency
data_type: text
description: "Calculated guest charge amount in local currency."
- name: calculated_guest_charge_currency
data_type: text
description: "Currency of the calculated guest charge amount."
- name: id_user_host - name: id_user_host
data_type: text data_type: text
description: "Unique Id that identifies the host. description: "Unique Id that identifies the host. Can be from SH or can be external from the client."
Can be from SH or can be external from the client."
data_tests:
- not_null
- name: host_user_claim_logs - name: claims_count
data_type: text data_type: bigint
description: "" description: ""
- name: host_account_name - name: host_account_name
data_type: text data_type: text
description: "Name of the host account." description: "Name of the host account."
data_tests:
- not_null
- name: host_email - name: host_email
data_type: text data_type: text
description: "Email of the host." description: "Email of the host."
data_tests:
- not_null
- name: host_last_name - name: host_last_name
data_type: text data_type: text
description: "Last name of the host." description: "Last name of the host."
data_tests:
- not_null
- name: host_first_name - name: host_first_name
data_type: text data_type: text
description: "First name of the host." description: "First name of the host."
data_tests:
- not_null
- name: host_phone_code - name: host_phone_code
data_type: text data_type: text
@ -123,33 +164,21 @@ models:
data_type: text data_type: text
description: "Phone number of the host." description: "Phone number of the host."
- name: host_phone_number_with_code
data_type: text
description: "Phone number of the host with the code."
- name: id_user_guest - name: id_user_guest
data_type: text data_type: text
description: "Superhog code that uniquely identifies a single guest." description: "Superhog code that uniquely identifies a single guest."
data_tests:
- not_null
- name: guest_email - name: guest_email
data_type: text data_type: text
description: "Email of the guest." description: "Email of the guest."
data_tests:
- not_null
- name: guest_last_name - name: guest_last_name
data_type: text data_type: text
description: "Last name of the guest." description: "Last name of the guest."
data_tests:
- not_null
- name: guest_first_name - name: guest_first_name
data_type: text data_type: text
description: "First name of the guest." description: "First name of the guest."
data_tests:
- not_null
- name: guest_phone_code - name: guest_phone_code
data_type: text data_type: text
@ -159,14 +188,9 @@ models:
data_type: text data_type: text
description: "Phone number of the guest." description: "Phone number of the guest."
- name: guest_phone_number_with_code
data_type: text
description: "Phone number of the guest with the code."
- name: is_guest_deposit_retained - name: is_guest_deposit_retained
data_type: boolean data_type: boolean
description: "In case a deposit has been collected from the guest, description: "In case a deposit has been collected from the guest, whether it has been retained or not."
whether it has been retained or not."
- name: is_guest_deposit_collected - name: is_guest_deposit_collected
data_type: boolean data_type: boolean
@ -182,18 +206,15 @@ models:
- name: has_guest_contributed_to_cost - name: has_guest_contributed_to_cost
data_type: boolean data_type: boolean
description: "If the guest has agreed to contribute to the cost when description: "If the guest has agreed to contribute to the cost when talking to the host"
talking to the host"
- name: has_host_taken_preventative_steps - name: has_host_taken_preventative_steps
data_type: boolean data_type: boolean
description: "If the host has taken any action to prevent the damage description: "If the host has taken any action to prevent the damage or further damage once identified"
or further damage once identified"
- name: guest_contribution_amount_in_txn_currency - name: guest_contribution_amount_in_txn_currency
data_type: text data_type: text
description: "Amount of the guest contribution, in case they did, description: "Amount of the guest contribution, in case they did, in local currency."
in local currency."
- name: guest_contribution_currency - name: guest_contribution_currency
data_type: text data_type: text
@ -203,83 +224,33 @@ models:
data_type: boolean data_type: boolean
description: "If the host has contacted the guest about the damage caused" description: "If the host has contacted the guest about the damage caused"
- name: guest_contacted_evidence_files
data_type: text
description: ""
- name: guest_preventative_steps_details
data_type: text
description: "Description of any action to prevent the damage or further
damage once identified"
- name: id_accommodation - name: id_accommodation
data_type: text data_type: text
description: "Superhog code that uniquely identifies a single accommodation." description: "Superhog code that uniquely identifies a single accommodation."
data_tests:
- not_null
- name: accommodation_url
data_type: text
description: "Accommodation URL from any distribution channel,
preferable direct website."
- name: accommodation_name - name: accommodation_name
data_type: text data_type: text
description: "Accommodation name." description: "Accommodation name."
- name: accommodation_address
data_type: text
description: "Address of the accommodation."
- name: are_pets_allowed
data_type: boolean
description: "Flag to indicate if pets are allowed in the accommodation."
- name: comment_logs
data_type: text
description: ""
- name: has_underlying_insurance
data_type: boolean
description: "If the property has underlying insurance"
- name: insurance_claim_submitted
data_type: boolean
description: "If an insurance claim has been submitted to an insurance company"
- name: insurance_evidence_files
data_type: text
description: ""
- name: check_in_at_utc - name: check_in_at_utc
data_type: timestamp without time zone data_type: timestamp without time zone
description: "Timestamp of the check-in date in UTC of the booking." description: "Timestamp of the check-in date in UTC of the booking."
data_tests:
- not_null
- name: check_in_date_utc - name: check_in_date_utc
data_type: date data_type: date
description: "Date of the check-in date in UTC of the booking." description: "Date of the check-in date in UTC of the booking."
data_tests:
- not_null
- name: check_out_at_utc - name: check_out_at_utc
data_type: timestamp without time zone data_type: timestamp without time zone
description: "Timestamp of the check-out date in UTC of the booking." description: "Timestamp of the check-out date in UTC of the booking."
data_tests:
- not_null
- name: check_out_date_utc - name: check_out_date_utc
data_type: date data_type: date
description: "Date of the check-out date in UTC of the booking." description: "Date of the check-out date in UTC of the booking."
data_tests:
- not_null
- name: id_booking - name: id_booking
data_type: text data_type: text
description: "Superhog unique booking ID" description: "Superhog unique booking ID"
data_tests:
- not_null
- name: booking_status - name: booking_status
data_type: text data_type: text
@ -289,75 +260,6 @@ models:
data_type: text data_type: text
description: "External unique ID" description: "External unique ID"
- name: booking_details
data_type: text
description: ""
- name: number_of_guests
data_type: text
description: "Number of guests in the booking."
- name: booking_services
data_type: text
description: "List of services included in the booking."
- name: booking_protection - name: booking_protection
data_type: text data_type: text
description: "" description: ""
- name: booking_platform_used
data_type: text
description: "The booking platform used"
- name: booking_platform_reference
data_type: text
description: ""
- name: agent_history
data_type: text
description: ""
- name: before_damage_evidence
data_type: text
description: ""
- name: original_invoice_evidence
data_type: text
description: ""
- name: damage_incident_details
data_type: text
description: "Description of what happened in general terms"
- name: has_confirmed_loss
data_type: boolean
description: "Confirmation that the information they have provided in
the report is true to the best of their knowledge."
- name: damage_report_items
data_type: text
description: "List of items that were damaged."
- name: third_party_claim_submitted
data_type: boolean
description: "If the host is seeking compensation from another platform"
- name: third_party_claim_from
data_type: text
description: "For example, Aircover from Airbnb."
- name: third_party_claim_amount_in_txn_currency
data_type: text
description: "Claim amount in local currency if the host is seeking
compensation from another platform."
- name: third_party_claim_currency
data_type: text
description: "Currency of the claim amount if the host is seeking
compensation from another platform."
- name: cosmos_db_timestamp_utc
data_type: timestamp
description: Internal Cosmos DB timestamp of the last record update.
data_tests:
- not_null