feat: sync full-stack Docker runtime and UI
This commit is contained in:
+33
-2
@@ -76,6 +76,9 @@ class PostgresAuditStore(BaseAuditStore):
|
||||
estimated_cost NUMERIC(18, 8) NOT NULL DEFAULT 0,
|
||||
actual_output_chars INTEGER NOT NULL DEFAULT 0,
|
||||
actual_cost NUMERIC(18, 8) NOT NULL DEFAULT 0,
|
||||
queue_ms INTEGER NOT NULL DEFAULT 0,
|
||||
run_ms INTEGER NOT NULL DEFAULT 0,
|
||||
total_ms INTEGER NOT NULL DEFAULT 0,
|
||||
status TEXT NOT NULL,
|
||||
error_code TEXT NOT NULL DEFAULT '',
|
||||
started_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
@@ -84,6 +87,15 @@ class PostgresAuditStore(BaseAuditStore):
|
||||
)
|
||||
"""
|
||||
)
|
||||
cur.execute(
|
||||
"ALTER TABLE llm_call_audit ADD COLUMN IF NOT EXISTS queue_ms INTEGER NOT NULL DEFAULT 0"
|
||||
)
|
||||
cur.execute(
|
||||
"ALTER TABLE llm_call_audit ADD COLUMN IF NOT EXISTS run_ms INTEGER NOT NULL DEFAULT 0"
|
||||
)
|
||||
cur.execute(
|
||||
"ALTER TABLE llm_call_audit ADD COLUMN IF NOT EXISTS total_ms INTEGER NOT NULL DEFAULT 0"
|
||||
)
|
||||
cur.execute(
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS risk_events (
|
||||
@@ -112,6 +124,21 @@ class PostgresAuditStore(BaseAuditStore):
|
||||
)
|
||||
"""
|
||||
)
|
||||
cur.execute(
|
||||
"CREATE INDEX IF NOT EXISTS idx_api_request_audit_request_id ON api_request_audit (request_id)"
|
||||
)
|
||||
cur.execute(
|
||||
"CREATE INDEX IF NOT EXISTS idx_api_request_audit_route_created_at ON api_request_audit (route, created_at DESC)"
|
||||
)
|
||||
cur.execute(
|
||||
"CREATE INDEX IF NOT EXISTS idx_llm_call_audit_request_id ON llm_call_audit (request_id)"
|
||||
)
|
||||
cur.execute(
|
||||
"CREATE INDEX IF NOT EXISTS idx_llm_call_audit_job_type_started_at ON llm_call_audit (job_type, started_at DESC)"
|
||||
)
|
||||
cur.execute(
|
||||
"CREATE INDEX IF NOT EXISTS idx_llm_call_audit_model_started_at ON llm_call_audit (model, started_at DESC)"
|
||||
)
|
||||
self._initialized = True
|
||||
|
||||
def record_api_request(self, payload: dict[str, Any]) -> None:
|
||||
@@ -152,9 +179,10 @@ class PostgresAuditStore(BaseAuditStore):
|
||||
INSERT INTO llm_call_audit (
|
||||
request_id, session_hash, ip_hash, job_type, model,
|
||||
estimated_input_tokens, max_output_tokens, estimated_cost,
|
||||
actual_output_chars, actual_cost, status, error_code, metadata_json
|
||||
actual_output_chars, actual_cost, queue_ms, run_ms, total_ms,
|
||||
status, error_code, metadata_json
|
||||
)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s::jsonb)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s::jsonb)
|
||||
""",
|
||||
(
|
||||
payload["request_id"],
|
||||
@@ -167,6 +195,9 @@ class PostgresAuditStore(BaseAuditStore):
|
||||
float(payload.get("estimated_cost", 0.0)),
|
||||
int(payload.get("actual_output_chars", 0)),
|
||||
float(payload.get("actual_cost", 0.0)),
|
||||
int(payload.get("queue_ms", 0)),
|
||||
int(payload.get("run_ms", 0)),
|
||||
int(payload.get("total_ms", 0)),
|
||||
payload["status"],
|
||||
payload.get("error_code", ""),
|
||||
json.dumps(metadata, ensure_ascii=False),
|
||||
|
||||
Reference in New Issue
Block a user