feat: Implement LTI deep linking, live sessions, predictive analytics, and portfolios with associated UI and database migrations.

This commit is contained in:
2026-02-24 09:37:16 -03:00
parent 7f7ea3d70c
commit 04dbe05704
81 changed files with 4119 additions and 249 deletions
@@ -11,8 +11,8 @@ CREATE TABLE IF NOT EXISTS rubrics (
name VARCHAR(255) NOT NULL,
description TEXT,
total_points INTEGER NOT NULL DEFAULT 100,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_rubrics_org ON rubrics(organization_id);
@@ -26,7 +26,7 @@ CREATE TABLE IF NOT EXISTS rubric_criteria (
description TEXT,
max_points INTEGER NOT NULL,
position INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_criteria_rubric ON rubric_criteria(rubric_id);
@@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS rubric_levels (
description TEXT,
points INTEGER NOT NULL,
position INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_levels_criterion ON rubric_levels(criterion_id);
@@ -49,8 +49,8 @@ CREATE TABLE IF NOT EXISTS lesson_rubrics (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
lesson_id UUID NOT NULL REFERENCES lessons(id) ON DELETE CASCADE,
rubric_id UUID NOT NULL REFERENCES rubrics(id) ON DELETE CASCADE,
is_active BOOLEAN DEFAULT TRUE,
assigned_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
is_active BOOLEAN NOT NULL DEFAULT TRUE,
assigned_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
UNIQUE(lesson_id, rubric_id)
);
@@ -68,9 +68,9 @@ CREATE TABLE IF NOT EXISTS rubric_assessments (
total_score DECIMAL(5,2) NOT NULL,
max_score INTEGER NOT NULL,
feedback TEXT,
status VARCHAR(50) DEFAULT 'draft', -- draft, submitted, published
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
status VARCHAR(50) NOT NULL DEFAULT 'draft', -- draft, submitted, published
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_assessments_lesson ON rubric_assessments(lesson_id);
@@ -86,7 +86,7 @@ CREATE TABLE IF NOT EXISTS assessment_scores (
level_id UUID REFERENCES rubric_levels(id), -- selected performance level
points DECIMAL(5,2) NOT NULL,
feedback TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_scores_assessment ON assessment_scores(assessment_id);