Files
tutor-service/internal/db/migrations/001_init.sql

107 lines
3.1 KiB
MySQL
Raw Normal View History

-- Tutor Platform Initial Schema
CREATE TABLE IF NOT EXISTS interview_sessions (
id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
target_role TEXT NOT NULL,
stack JSONB NOT NULL DEFAULT '[]',
interview_timeline TEXT NOT NULL,
questions JSONB NOT NULL DEFAULT '[]',
answers JSONB NOT NULL DEFAULT '[]',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS learner_profiles (
user_id TEXT PRIMARY KEY,
target_role TEXT NOT NULL,
stack JSONB NOT NULL DEFAULT '[]',
interview_timeline TEXT NOT NULL,
preferences JSONB NOT NULL DEFAULT '{}',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS learner_mastery (
user_id TEXT NOT NULL,
concept_id TEXT NOT NULL,
concept_label TEXT NOT NULL,
state TEXT NOT NULL DEFAULT 'unknown',
evidence JSONB NOT NULL DEFAULT '[]',
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
PRIMARY KEY (user_id, concept_id)
);
CREATE TABLE IF NOT EXISTS learner_misconceptions (
id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
concept JSONB NOT NULL DEFAULT '{}',
description TEXT NOT NULL,
evidence JSONB NOT NULL DEFAULT '[]',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS learner_interventions (
id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
kind TEXT NOT NULL,
reason TEXT NOT NULL,
concept JSONB NOT NULL DEFAULT '{}',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS learner_review_schedules (
id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
concept JSONB NOT NULL DEFAULT '{}',
due_at TIMESTAMPTZ NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS ontology_materials (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
source_type TEXT NOT NULL,
body TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS ontology_concepts (
id TEXT PRIMARY KEY,
material_id TEXT NOT NULL,
concept_id TEXT NOT NULL,
concept_label TEXT NOT NULL,
summary TEXT NOT NULL,
review_state TEXT NOT NULL DEFAULT 'candidate',
evidence JSONB NOT NULL DEFAULT '[]',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS ontology_edges (
id TEXT PRIMARY KEY,
from_concept_id TEXT NOT NULL,
to_concept_id TEXT NOT NULL,
kind TEXT NOT NULL,
evidence JSONB NOT NULL DEFAULT '[]',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS ontology_gaps (
id TEXT PRIMARY KEY,
concept_id TEXT NOT NULL,
reason TEXT NOT NULL,
evidence JSONB NOT NULL DEFAULT '[]',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS teaching_asset_prompts (
id TEXT PRIMARY KEY,
concept_id TEXT NOT NULL,
asset_type TEXT NOT NULL,
prompt TEXT NOT NULL,
model_key TEXT NOT NULL,
review_state TEXT NOT NULL DEFAULT 'candidate',
requires_model_id_verification BOOLEAN NOT NULL DEFAULT TRUE,
source_evidence JSONB NOT NULL DEFAULT '[]',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);