mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-03 01:40:21 +08:00
266 lines
9.3 KiB
SQL
266 lines
9.3 KiB
SQL
CREATE TABLE IF NOT EXISTS "usage" (
|
|
request_id TEXT PRIMARY KEY,
|
|
id TEXT,
|
|
user_id TEXT,
|
|
api_key_id TEXT,
|
|
provider_name TEXT NOT NULL DEFAULT 'unknown',
|
|
model TEXT NOT NULL DEFAULT 'unknown',
|
|
target_model TEXT,
|
|
provider_id TEXT,
|
|
provider_endpoint_id TEXT,
|
|
provider_api_key_id TEXT,
|
|
request_type TEXT,
|
|
api_format TEXT,
|
|
api_family TEXT,
|
|
endpoint_kind TEXT,
|
|
endpoint_api_format TEXT,
|
|
provider_api_family TEXT,
|
|
provider_endpoint_kind TEXT,
|
|
has_format_conversion INTEGER NOT NULL DEFAULT 0,
|
|
is_stream INTEGER NOT NULL DEFAULT 0,
|
|
upstream_is_stream INTEGER,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_creation_input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_creation_ephemeral_5m_input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_creation_ephemeral_1h_input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_read_input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_creation_cost_usd REAL NOT NULL DEFAULT 0,
|
|
cache_read_cost_usd REAL NOT NULL DEFAULT 0,
|
|
output_price_per_1m REAL,
|
|
status_code INTEGER,
|
|
error_message TEXT,
|
|
error_category TEXT,
|
|
response_time_ms INTEGER,
|
|
first_byte_time_ms INTEGER,
|
|
wallet_id TEXT,
|
|
status TEXT NOT NULL DEFAULT 'completed',
|
|
billing_status TEXT NOT NULL DEFAULT 'pending',
|
|
total_cost_usd REAL NOT NULL DEFAULT 0,
|
|
actual_total_cost_usd REAL NOT NULL DEFAULT 0,
|
|
request_metadata TEXT,
|
|
candidate_id TEXT,
|
|
candidate_index INTEGER,
|
|
key_name TEXT,
|
|
planner_kind TEXT,
|
|
route_family TEXT,
|
|
route_kind TEXT,
|
|
execution_path TEXT,
|
|
local_execution_runtime_miss_reason TEXT,
|
|
wallet_balance_before REAL,
|
|
wallet_balance_after REAL,
|
|
wallet_recharge_balance_before REAL,
|
|
wallet_recharge_balance_after REAL,
|
|
wallet_gift_balance_before REAL,
|
|
wallet_gift_balance_after REAL,
|
|
finalized_at INTEGER,
|
|
created_at_unix_ms INTEGER NOT NULL DEFAULT 0,
|
|
updated_at_unix_secs INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX IF NOT EXISTS usage_api_key_id_idx ON "usage" (api_key_id);
|
|
CREATE INDEX IF NOT EXISTS usage_billing_status_idx ON "usage" (billing_status);
|
|
CREATE INDEX IF NOT EXISTS usage_created_at_idx ON "usage" (created_at_unix_ms);
|
|
CREATE INDEX IF NOT EXISTS usage_provider_api_key_id_idx ON "usage" (provider_api_key_id);
|
|
CREATE INDEX IF NOT EXISTS usage_provider_id_idx ON "usage" (provider_id);
|
|
CREATE INDEX IF NOT EXISTS usage_request_id_idx ON "usage" (request_id);
|
|
CREATE INDEX IF NOT EXISTS usage_user_id_idx ON "usage" (user_id);
|
|
CREATE INDEX IF NOT EXISTS usage_wallet_id_idx ON "usage" (wallet_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS usage_settlement_snapshots (
|
|
request_id TEXT PRIMARY KEY,
|
|
billing_status TEXT NOT NULL,
|
|
wallet_id TEXT,
|
|
wallet_balance_before REAL,
|
|
wallet_balance_after REAL,
|
|
wallet_recharge_balance_before REAL,
|
|
wallet_recharge_balance_after REAL,
|
|
wallet_gift_balance_before REAL,
|
|
wallet_gift_balance_after REAL,
|
|
provider_monthly_used_usd REAL,
|
|
finalized_at INTEGER,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL
|
|
);
|
|
CREATE INDEX IF NOT EXISTS usage_settlement_snapshots_billing_status_idx
|
|
ON usage_settlement_snapshots (billing_status);
|
|
CREATE INDEX IF NOT EXISTS usage_settlement_snapshots_wallet_id_idx
|
|
ON usage_settlement_snapshots (wallet_id);
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_hourly (
|
|
id TEXT PRIMARY KEY,
|
|
hour_utc INTEGER NOT NULL UNIQUE,
|
|
total_requests INTEGER NOT NULL DEFAULT 0,
|
|
success_requests INTEGER NOT NULL DEFAULT 0,
|
|
error_requests INTEGER NOT NULL DEFAULT 0,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_creation_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_read_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_cost REAL NOT NULL DEFAULT 0,
|
|
actual_total_cost REAL NOT NULL DEFAULT 0,
|
|
avg_response_time_ms REAL NOT NULL DEFAULT 0,
|
|
is_complete INTEGER NOT NULL DEFAULT 0,
|
|
aggregated_at INTEGER,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_hourly_user (
|
|
id TEXT PRIMARY KEY,
|
|
hour_utc INTEGER NOT NULL,
|
|
user_id TEXT NOT NULL,
|
|
total_requests INTEGER NOT NULL DEFAULT 0,
|
|
success_requests INTEGER NOT NULL DEFAULT 0,
|
|
error_requests INTEGER NOT NULL DEFAULT 0,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_cost REAL NOT NULL DEFAULT 0,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
UNIQUE (hour_utc, user_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_hourly_user_model (
|
|
id TEXT PRIMARY KEY,
|
|
hour_utc INTEGER NOT NULL,
|
|
user_id TEXT NOT NULL,
|
|
model TEXT NOT NULL,
|
|
total_requests INTEGER NOT NULL DEFAULT 0,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_cost REAL NOT NULL DEFAULT 0,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
UNIQUE (hour_utc, user_id, model)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_hourly_model (
|
|
id TEXT PRIMARY KEY,
|
|
hour_utc INTEGER NOT NULL,
|
|
model TEXT NOT NULL,
|
|
total_requests INTEGER NOT NULL DEFAULT 0,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_cost REAL NOT NULL DEFAULT 0,
|
|
avg_response_time_ms REAL NOT NULL DEFAULT 0,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
UNIQUE (hour_utc, model)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_hourly_provider (
|
|
id TEXT PRIMARY KEY,
|
|
hour_utc INTEGER NOT NULL,
|
|
provider_name TEXT NOT NULL,
|
|
total_requests INTEGER NOT NULL DEFAULT 0,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_cost REAL NOT NULL DEFAULT 0,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
UNIQUE (hour_utc, provider_name)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_daily (
|
|
id TEXT PRIMARY KEY,
|
|
"date" INTEGER NOT NULL UNIQUE,
|
|
total_requests INTEGER NOT NULL DEFAULT 0,
|
|
success_requests INTEGER NOT NULL DEFAULT 0,
|
|
error_requests INTEGER NOT NULL DEFAULT 0,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_creation_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_read_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_cost REAL NOT NULL DEFAULT 0,
|
|
actual_total_cost REAL NOT NULL DEFAULT 0,
|
|
avg_response_time_ms REAL NOT NULL DEFAULT 0,
|
|
fallback_count INTEGER NOT NULL DEFAULT 0,
|
|
unique_models INTEGER NOT NULL DEFAULT 0,
|
|
unique_providers INTEGER NOT NULL DEFAULT 0,
|
|
is_complete INTEGER NOT NULL DEFAULT 0,
|
|
aggregated_at INTEGER,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_daily_model (
|
|
id TEXT PRIMARY KEY,
|
|
"date" INTEGER NOT NULL,
|
|
model TEXT NOT NULL,
|
|
total_requests INTEGER NOT NULL DEFAULT 0,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_creation_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_read_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_cost REAL NOT NULL DEFAULT 0,
|
|
avg_response_time_ms REAL NOT NULL DEFAULT 0,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
UNIQUE ("date", model)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_daily_provider (
|
|
id TEXT PRIMARY KEY,
|
|
"date" INTEGER NOT NULL,
|
|
provider_name TEXT NOT NULL,
|
|
total_requests INTEGER NOT NULL DEFAULT 0,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_creation_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_read_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_cost REAL NOT NULL DEFAULT 0,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
UNIQUE ("date", provider_name)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_daily_api_key (
|
|
id TEXT PRIMARY KEY,
|
|
api_key_id TEXT NOT NULL,
|
|
"date" INTEGER NOT NULL,
|
|
total_requests INTEGER NOT NULL DEFAULT 0,
|
|
success_requests INTEGER NOT NULL DEFAULT 0,
|
|
error_requests INTEGER NOT NULL DEFAULT 0,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_creation_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_read_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_cost REAL NOT NULL DEFAULT 0,
|
|
api_key_name TEXT,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
UNIQUE ("date", api_key_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_daily_error (
|
|
id TEXT PRIMARY KEY,
|
|
"date" INTEGER NOT NULL,
|
|
error_category TEXT NOT NULL,
|
|
provider_name TEXT,
|
|
model TEXT,
|
|
count INTEGER NOT NULL DEFAULT 0,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
UNIQUE ("date", error_category, provider_name, model)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS stats_user_daily (
|
|
id TEXT PRIMARY KEY,
|
|
user_id TEXT NOT NULL,
|
|
"date" INTEGER NOT NULL,
|
|
total_requests INTEGER NOT NULL DEFAULT 0,
|
|
success_requests INTEGER NOT NULL DEFAULT 0,
|
|
error_requests INTEGER NOT NULL DEFAULT 0,
|
|
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_creation_tokens INTEGER NOT NULL DEFAULT 0,
|
|
cache_read_tokens INTEGER NOT NULL DEFAULT 0,
|
|
total_cost REAL NOT NULL DEFAULT 0,
|
|
username TEXT,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
UNIQUE ("date", user_id)
|
|
);
|