Files
GEOAgentArticleOptimizer/migrations/0004_llm_trace_observability.sql
2026-07-16 12:03:12 +08:00

49 lines
1.4 KiB
SQL

CREATE TABLE IF NOT EXISTS llm_trace_runs (
job_id TEXT PRIMARY KEY,
case_id TEXT,
status TEXT NOT NULL,
current_stage TEXT NOT NULL,
trace_completeness TEXT NOT NULL,
error_stage TEXT,
error_summary TEXT,
started_at TEXT NOT NULL,
finished_at TEXT,
updated_at TEXT NOT NULL,
FOREIGN KEY (job_id) REFERENCES article_jobs(id) ON DELETE CASCADE,
FOREIGN KEY (case_id) REFERENCES optimization_cases(id) ON DELETE SET NULL
);
CREATE TABLE IF NOT EXISTS llm_trace_calls (
call_id TEXT PRIMARY KEY,
job_id TEXT NOT NULL,
sequence INTEGER NOT NULL,
task TEXT NOT NULL,
workflow_stage TEXT NOT NULL,
rewrite_round INTEGER,
provider TEXT NOT NULL,
model TEXT NOT NULL,
status TEXT NOT NULL,
request_object_key TEXT,
response_object_key TEXT,
token_usage TEXT,
schema_name TEXT,
schema_valid INTEGER,
validation_issues TEXT NOT NULL DEFAULT '[]',
business_status TEXT,
duration_ms INTEGER,
started_at TEXT NOT NULL,
responded_at TEXT,
validated_at TEXT,
failed_at TEXT,
error_type TEXT,
error_summary TEXT,
UNIQUE (job_id, sequence),
FOREIGN KEY (job_id) REFERENCES llm_trace_runs(job_id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_llm_trace_runs_status_updated
ON llm_trace_runs(status, updated_at DESC);
CREATE INDEX IF NOT EXISTS idx_llm_trace_calls_job_sequence
ON llm_trace_calls(job_id, sequence);