Initial commit: PastPaper Master full stack

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Zhao
2026-04-21 12:15:35 +07:00
commit 7a09167261
105 changed files with 24799 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
-- ============================================
-- PastPaper Master — Question taxonomy fields
-- Version: 003
-- Date: 2026-03-24
-- ============================================
-- A question needs multiple classification layers:
-- 1) question_format: how the student interacts with it
-- 2) topic_tags / topic_primary / analytics_topic: course knowledge taxonomy
-- 3) skill_tags: what kind of thinking task the question requires
ALTER TABLE paper_questions
ADD COLUMN IF NOT EXISTS question_format TEXT
CHECK (
question_format IN (
'mc',
'true_false',
'fill_blank',
'short_answer',
'long_answer',
'coding'
)
),
ADD COLUMN IF NOT EXISTS topic_primary TEXT,
ADD COLUMN IF NOT EXISTS analytics_topic TEXT,
ADD COLUMN IF NOT EXISTS topic_tags TEXT[],
ADD COLUMN IF NOT EXISTS skill_tags TEXT[];
-- Keep the legacy topics column for backward compatibility for now.
-- New analytics and retrieval code should gradually move to analytics_topic/topic_tags.
CREATE INDEX IF NOT EXISTS idx_questions_question_format
ON paper_questions(question_format);
CREATE INDEX IF NOT EXISTS idx_questions_analytics_topic
ON paper_questions(analytics_topic);
CREATE INDEX IF NOT EXISTS idx_questions_topic_tags
ON paper_questions USING GIN(topic_tags);
CREATE INDEX IF NOT EXISTS idx_questions_skill_tags
ON paper_questions USING GIN(skill_tags);