70 lines
1.7 KiB
SQL

-- muse.db 初版:运行、事件、人审、卡片与向量 blob。
PRAGMA foreign_keys=ON;
CREATE TABLE IF NOT EXISTS schema_migrations (
version TEXT PRIMARY KEY,
applied_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS runs (
id TEXT PRIMARY KEY,
created_at TEXT NOT NULL,
kind TEXT NOT NULL,
input_json TEXT NOT NULL,
output_text TEXT NOT NULL,
meta_json TEXT NOT NULL,
skill_set_hash TEXT NOT NULL,
baseline_hash TEXT
);
CREATE TABLE IF NOT EXISTS events (
run_id TEXT NOT NULL,
seq INTEGER NOT NULL,
kind TEXT NOT NULL,
role TEXT,
tool_name TEXT,
payload_json TEXT NOT NULL,
created_at TEXT NOT NULL,
PRIMARY KEY (run_id, seq),
FOREIGN KEY (run_id) REFERENCES runs(id)
);
CREATE TABLE IF NOT EXISTS reviews (
id INTEGER PRIMARY KEY AUTOINCREMENT,
run_id TEXT NOT NULL,
target TEXT NOT NULL,
action TEXT NOT NULL,
reviewer TEXT NOT NULL,
reason TEXT,
created_at TEXT NOT NULL,
FOREIGN KEY (run_id) REFERENCES runs(id),
CHECK (action IN ('adopt', 'reject', 'revise')),
CHECK (target IN ('candidate', 'lesson', 'chapter')),
CHECK (length(reviewer) > 0)
);
CREATE TABLE IF NOT EXISTS revisions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
review_id INTEGER NOT NULL,
kind TEXT NOT NULL,
before_text TEXT NOT NULL,
after_text TEXT NOT NULL,
created_at TEXT NOT NULL,
FOREIGN KEY (review_id) REFERENCES reviews(id)
);
CREATE TABLE IF NOT EXISTS cards (
id TEXT PRIMARY KEY,
kind TEXT NOT NULL,
title TEXT,
payload_json TEXT NOT NULL,
embedding BLOB,
work_id INTEGER,
source_path TEXT,
content_hash TEXT,
created_at TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_cards_kind ON cards(kind);
CREATE INDEX IF NOT EXISTS idx_events_run ON events(run_id);