Add Phase 7: grade history and session-plan item linking

- New tables: lesson_plan_item_grade_history (append-only), lesson_session_plan_item
- Grading an item updates current_grade_value and creates immutable history record
- Grading a not_started item auto-transitions it to in_progress
- Linking items to a session also auto-transitions not_started items
- Link operation is idempotent — re-linking same items produces no duplicates
- Endpoints: POST/GET /lesson-plan-items/:id/grades, GET /lesson-plan-items/:id/grade-history
- Endpoints: POST/GET /lesson-sessions/:id/plan-items
- 8 new integration tests
This commit is contained in:
Ryan Moon
2026-03-30 10:33:21 -05:00
parent 5cd2d05983
commit 2cc8f24535
8 changed files with 446 additions and 2 deletions

View File

@@ -0,0 +1,19 @@
-- Phase 7: Grade history and session-plan item linking
CREATE TABLE "lesson_plan_item_grade_history" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
"lesson_plan_item_id" uuid NOT NULL REFERENCES "lesson_plan_item"("id"),
"grading_scale_id" uuid REFERENCES "grading_scale"("id"),
"grade_value" varchar(50) NOT NULL,
"graded_by" uuid REFERENCES "user"("id"),
"session_id" uuid REFERENCES "lesson_session"("id"),
"notes" text,
"created_at" timestamptz NOT NULL DEFAULT now()
);
CREATE TABLE "lesson_session_plan_item" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
"session_id" uuid NOT NULL REFERENCES "lesson_session"("id"),
"lesson_plan_item_id" uuid NOT NULL REFERENCES "lesson_plan_item"("id"),
"created_at" timestamptz NOT NULL DEFAULT now()
);

View File

@@ -246,6 +246,13 @@
"when": 1774940000000,
"tag": "0034_blocked_dates",
"breakpoints": true
},
{
"idx": 35,
"version": "7",
"when": 1774950000000,
"tag": "0035_grade_history",
"breakpoints": true
}
]
}