mirror of
https://github.com/zyycn/codex-proxy-rs.git
synced 2026-11-06 08:06:19 +00:00
Scope timing projection barriers to filtered metric and diagnostic queries, preserving ordinary aggregate index and parallel plans. Refs #377 Co-authored-by: Zyy <zyycn@users.noreply.github.com> Co-authored-by: Codex <noreply@openai.com>
71 lines
6.0 KiB
SQL
71 lines
6.0 KiB
SQL
-- 通用观测投影允许列裁剪与并行规划,避免普通统计承担逐行计时投影的成本
|
|
-- 保留 LATERAL 的只读视图语义,重复计时计算由各聚合查询在筛选后约束
|
|
create or replace view model_request_observations as
|
|
select mr.*,
|
|
(mr.request_observation_json #>> '{request,configRevision}')::bigint as config_revision,
|
|
(mr.request_observation_json #>> '{request,protocol}') as protocol,
|
|
(mr.request_observation_json #>> '{request,endpoint}') as endpoint,
|
|
(mr.request_observation_json #>> '{account,name}') as provider_account_name_snapshot,
|
|
(mr.request_observation_json #>> '{account,email}') as provider_account_email_snapshot,
|
|
(mr.request_observation_json #>> '{account,authenticationKind}') as provider_account_authentication_kind_snapshot,
|
|
(mr.request_observation_json #>> '{routing,scope}') as routing_scope,
|
|
array(select jsonb_array_elements_text(mr.request_observation_json #> '{routing,groupRefs}')) as routing_group_refs,
|
|
(mr.request_observation_json #> '{routing,groupNamesSnapshot}') as routing_group_names_snapshot,
|
|
(mr.request_observation_json #>> '{error,providerErrorCode}') as provider_error_code,
|
|
(mr.request_observation_json #>> '{error,message}') as error_message,
|
|
(mr.request_observation_json #>> '{error,retryAfterMs}')::bigint as retry_after_ms,
|
|
(mr.request_observation_json #>> '{request,clientIp}')::inet as client_ip,
|
|
(mr.request_observation_json #>> '{request,userAgent}') as user_agent,
|
|
(mr.request_observation_json #>> '{request,reasoningEffort}') as reasoning_effort,
|
|
(mr.request_observation_json #>> '{request,reasoningPreset}') as reasoning_preset,
|
|
(mr.request_observation_json #>> '{request,subagentKind}') as subagent_kind,
|
|
(mr.request_observation_json #>> '{request,compact}')::boolean as compact,
|
|
measured.transport_decision_wait_ms as transport_decision_wait_ms,
|
|
measured.connect_ms as connect_ms,
|
|
measured.headers_ms as headers_ms,
|
|
measured.first_event_ms as first_event_ms,
|
|
measured.first_reasoning_ms as first_reasoning_ms,
|
|
measured.first_text_ms as first_text_ms,
|
|
measured.first_token_ms as first_token_ms,
|
|
measured.latency_ms as latency_ms,
|
|
measured.provider_processing_ms as provider_processing_ms,
|
|
measured.admission_decision_ms as admission_decision_ms,
|
|
measured.account_selection_wait_ms as account_selection_wait_ms,
|
|
measured.capacity_used_slots as capacity_used_slots,
|
|
measured.capacity_total_slots as capacity_total_slots,
|
|
(mr.request_observation_json #>> '{transport,httpVersion}') as http_version,
|
|
(mr.request_observation_json #>> '{transport,websocketPool}') as websocket_pool,
|
|
(mr.request_observation_json #>> '{transport,connection,id}') as upstream_connection_id,
|
|
(mr.request_observation_json #>> '{transport,connection,exitReason}') as upstream_connection_exit_reason,
|
|
(mr.request_observation_json #>> '{transport,connection,ageMs}')::bigint as upstream_connection_age_ms,
|
|
(mr.request_observation_json #>> '{transport,connection,idleMs}')::bigint as upstream_connection_idle_ms,
|
|
(mr.request_observation_json #>> '{response,responseModel}') as upstream_response_model,
|
|
(mr.request_observation_json #>> '{continuation,previousResponseIdHash}') as continuation_previous_response_id_hash,
|
|
(mr.request_observation_json #>> '{continuation,unavailableReason}') as continuation_unavailable_reason,
|
|
(mr.request_observation_json #>> '{recovery,retryDelayMs}')::bigint as recovery_retry_delay_ms,
|
|
(mr.request_observation_json #>> '{recovery,totalLatencyMs}')::bigint as recovery_total_latency_ms,
|
|
(mr.request_observation_json #>> '{timings,upstream,apiOverheadMs}')::double precision as upstream_api_overhead_ms,
|
|
(mr.request_observation_json #>> '{timings,upstream,engineMs}')::double precision as upstream_engine_ms,
|
|
(mr.request_observation_json #>> '{timings,upstream,engineIapiTtftMs}')::double precision as upstream_engine_iapi_ttft_ms,
|
|
(mr.request_observation_json #>> '{timings,upstream,engineServiceTtftMs}')::double precision as upstream_engine_service_ttft_ms,
|
|
(mr.request_observation_json #>> '{timings,upstream,engineIapiTbtMs}')::double precision as upstream_engine_iapi_tbt_ms,
|
|
(mr.request_observation_json #>> '{timings,upstream,engineServiceTbtMs}')::double precision as upstream_engine_service_tbt_ms,
|
|
measured.upstream_response_ms as upstream_response_ms
|
|
from model_requests mr
|
|
cross join lateral (
|
|
select (mr.request_observation_json #>> '{timings,local,transportDecisionWaitMs}')::bigint as transport_decision_wait_ms,
|
|
(mr.request_observation_json #>> '{timings,local,connectMs}')::bigint as connect_ms,
|
|
(mr.request_observation_json #>> '{timings,local,headersMs}')::bigint as headers_ms,
|
|
(mr.request_observation_json #>> '{timings,local,firstEventMs}')::bigint as first_event_ms,
|
|
(mr.request_observation_json #>> '{timings,local,firstReasoningMs}')::bigint as first_reasoning_ms,
|
|
(mr.request_observation_json #>> '{timings,local,firstTextMs}')::bigint as first_text_ms,
|
|
(mr.request_observation_json #>> '{timings,local,firstTokenMs}')::bigint as first_token_ms,
|
|
(mr.request_observation_json #>> '{timings,local,latencyMs}')::bigint as latency_ms,
|
|
(mr.request_observation_json #>> '{timings,upstream,processingMs}')::bigint as provider_processing_ms,
|
|
(mr.request_observation_json #>> '{scheduling,admissionDecisionMs}')::bigint as admission_decision_ms,
|
|
(mr.request_observation_json #>> '{scheduling,accountSelectionWaitMs}')::bigint as account_selection_wait_ms,
|
|
(mr.request_observation_json #>> '{scheduling,capacityUsedSlots}')::bigint as capacity_used_slots,
|
|
(mr.request_observation_json #>> '{scheduling,capacityTotalSlots}')::bigint as capacity_total_slots,
|
|
(mr.request_observation_json #>> '{timings,upstream,responseMs}')::bigint as upstream_response_ms
|
|
) measured;
|