CREATE VIEW vwcopilotusagedata AS (
SELECT cu.keyid,
cu.conversationid,
cu.summaryid,
cu.usagedate,
cu.userid,
ud.name AS agent_name,
ud.username AS agent_username,
ud.email AS agent_email,
ud.department AS agent_department,
ud.managerid AS agent_manager_id,
ud.managername AS agent_manager_name,
ud.divisionid AS agent_division_id,
ud.divisionname AS agent_division_name,
cu.queueid,
qd.name AS queue_name,
qd.divisionid AS queue_division_id,
qd.divisionname AS queue_division_name,
cu.triggersourceid,
cu.triggersourcetype,
cu.triggersourceoutcome,
cu.summarygenerated AS summary_generated,
cu.presented AS summary_presented,
cu.copied AS summary_copied,
cu.wrapupcodesgenerated AS wrapup_codes_generated,
cu.wrapupcodesuggestionselected AS wrapup_suggestion_selected,
cu.language,
cu.mediatype AS media_type,
cu.messagetype AS message_type,
cu.editedfield AS edited_field,
cu.errortype AS error_type,
cu.summaryrating AS summary_rating,
cu.wrapupcoderating AS wrapup_code_rating,
cu.nconversationsummaries AS conversation_summaries_count,
cu.nconversationsummaryengagements AS summary_engagements_count,
cu.tconversationsummary AS summary_processing_time_ms,
round(((cu.tconversationsummary)::numeric / 1000.0), 2) AS summary_processing_time_seconds,
round(((cu.tconversationsummary)::numeric / 60000.0), 2) AS summary_processing_time_minutes,
CASE
WHEN (cu.summarygenerated = true) THEN 'Summary Generated'::text
WHEN (cu.errortype IS NOT NULL) THEN 'Generation Failed'::text
ELSE 'No Summary'::text
END AS summary_status,
CASE
WHEN ((cu.presented = true) AND (cu.copied = true)) THEN 'Presented & Copied'::text
WHEN (cu.presented = true) THEN 'Presented Only'::text
WHEN (cu.copied = true) THEN 'Copied Only'::text
ELSE 'Not Engaged'::text
END AS engagement_level,
CASE
WHEN ((cu.triggersourcetype)::text = 'PROGRAM'::text) THEN 'Automatic'::character varying
WHEN ((cu.triggersourcetype)::text = 'COPILOT'::text) THEN 'Manual'::character varying
ELSE cu.triggersourcetype
END AS trigger_type_description,
CASE
WHEN (cu.summaryrating >= 4) THEN 'High Quality'::text
WHEN (cu.summaryrating >= 3) THEN 'Good Quality'::text
WHEN (cu.summaryrating >= 2) THEN 'Fair Quality'::text
WHEN (cu.summaryrating = 1) THEN 'Poor Quality'::text
ELSE 'Not Rated'::text
END AS summary_quality_category,
CASE
WHEN (cu.tconversationsummary <= 5000) THEN 'Fast (≤5s)'::text
WHEN (cu.tconversationsummary <= 15000) THEN 'Normal (5-15s)'::text
WHEN (cu.tconversationsummary <= 30000) THEN 'Slow (15-30s)'::text
ELSE 'Very Slow (>30s)'::text
END AS processing_speed_category,
CASE
WHEN ((cu.errortype)::text = 'CONVERSATION_TOO_SHORT'::text) THEN 'Insufficient Content'::text
WHEN (cu.errortype IS NOT NULL) THEN 'Technical Error'::text
ELSE 'No Error'::text
END AS error_category,
cu.updated AS last_updated
FROM ((copilotusagedata cu
LEFT JOIN vwuserdetail ud ON (((cu.userid)::text = (ud.id)::text)))
LEFT JOIN vwqueuedetails qd ON (((cu.queueid)::text = (qd.id)::text)))
)