Spaces:
Sleeping
Sleeping
| create table if not exists submissions ( | |
| id bigint generated always as identity primary key, | |
| faculty_email text not null, | |
| course_title text not null, | |
| course_code text not null, | |
| offering_department text not null default 'CS', | |
| target_department text not null default 'CSE', | |
| semester int not null default 1, | |
| credit_category text not null default '4', | |
| raw_course_content text not null, | |
| text_books text not null default '', | |
| reference_books text not null default '', | |
| preferred_tools text not null default '', | |
| status text not null default 'pending', | |
| created_at timestamptz default now() | |
| ); | |
| -- Refined / template-ready courses | |
| create table if not exists refined_submissions ( | |
| id bigint generated always as identity primary key, | |
| submission_id bigint references submissions(id), | |
| faculty_email text not null default '', | |
| course_title text not null default '', | |
| course_code text not null default '', | |
| offering_department text not null default 'CS', | |
| target_department text not null default 'CSE', | |
| semester int not null default 1, | |
| credit_category text not null default '4', | |
| program text not null default 'B. TECH', | |
| lecture_hours int not null default 0, | |
| tutorial_hours int not null default 0, | |
| practical_hours int not null default 0, | |
| self_study int not null default 0, | |
| credits int not null default 0, | |
| course_type text not null default '', | |
| is_elective boolean not null default false, | |
| visible boolean not null default true, | |
| units jsonb not null default '[]'::jsonb, | |
| objectives text not null default '', | |
| course_outcomes text not null default '', | |
| text_books text not null default '', | |
| reference_books text not null default '', | |
| lab_experiments text not null default '', | |
| tools_languages text not null default '', | |
| raw_course_content text not null default '', | |
| status text not null default 'refined', | |
| created_at timestamptz default now() | |
| ); | |
| -- Specialization track definitions (e.g. SCC, MIDS, CSCS for semesters 5 & 6) | |
| create table if not exists specialization_definitions ( | |
| id bigint generated always as identity primary key, | |
| semester int not null, | |
| letter text not null, | |
| name text not null, | |
| key text not null, | |
| academic_year text not null default '', | |
| created_at timestamptz default now() | |
| ); | |
| -- Which electives belong to which specialization tracks | |
| create table if not exists course_specialization_assignments ( | |
| id bigint generated always as identity primary key, | |
| refined_id bigint references refined_submissions(id) on delete cascade, | |
| specialization_id bigint references specialization_definitions(id) on delete cascade, | |
| created_at timestamptz default now(), | |
| unique (refined_id, specialization_id) | |
| ); | |
| -- Curriculum version snapshots | |
| create table if not exists curriculum_versions ( | |
| id bigint generated always as identity primary key, | |
| name text not null default '', | |
| program text not null default '', | |
| academic_year text not null default '', | |
| status text not null default 'draft', | |
| created_at timestamptz default now() | |
| ); | |
| -- Course snapshots within a version | |
| create table if not exists finalized_submissions ( | |
| id bigint generated always as identity primary key, | |
| curriculum_version_id bigint references curriculum_versions(id) on delete cascade, | |
| refined_id bigint references refined_submissions(id), | |
| course_json jsonb not null default '{}'::jsonb, | |
| created_at timestamptz default now() | |
| ); | |
| -- Revision history for applied drafts | |
| create table if not exists course_revision_history ( | |
| id bigint generated always as identity primary key, | |
| refined_id bigint references refined_submissions(id), | |
| draft_id bigint, | |
| old_json jsonb not null default '{}'::jsonb, | |
| new_json jsonb not null default '{}'::jsonb, | |
| created_at timestamptz default now() | |
| ); | |
| -- Agent-proposed course drafts | |
| create table if not exists agent_drafts ( | |
| id bigint generated always as identity primary key, | |
| refined_id bigint references refined_submissions(id), | |
| document_draft_id bigint, | |
| base_refined_json jsonb not null default '{}'::jsonb, | |
| proposed_json jsonb not null default '{}'::jsonb, | |
| json_patch jsonb not null default '[]'::jsonb, | |
| diff_summary jsonb not null default '{}'::jsonb, | |
| change_reason text not null default '', | |
| status text not null default 'proposed', | |
| created_at timestamptz default now() | |
| ); | |
| -- Agent-proposed document drafts (multi-course) | |
| create table if not exists agent_document_drafts ( | |
| id bigint generated always as identity primary key, | |
| curriculum_version_id bigint, | |
| uploaded_document_id text not null default '', | |
| diff_summary jsonb not null default '{}'::jsonb, | |
| change_reason text not null default '', | |
| status text not null default 'proposed', | |
| created_at timestamptz default now() | |
| ); | |
| -- Chat sessions | |
| create table if not exists chat_sessions ( | |
| id bigint generated always as identity primary key, | |
| refined_id bigint, | |
| document_draft_id bigint, | |
| title text not null default '', | |
| status text not null default 'active', | |
| created_at timestamptz default now() | |
| ); | |
| -- Chat messages | |
| create table if not exists chat_messages ( | |
| id bigint generated always as identity primary key, | |
| session_id bigint references chat_sessions(id) on delete cascade, | |
| role text not null default 'user', | |
| content text not null default '', | |
| metadata jsonb not null default '{}'::jsonb, | |
| created_at timestamptz default now() | |
| ); | |
| -- Chat attachments (files, reports) | |
| create table if not exists chat_attachments ( | |
| id bigint generated always as identity primary key, | |
| session_id bigint references chat_sessions(id) on delete cascade, | |
| message_id bigint, | |
| filename text not null default '', | |
| content_type text not null default '', | |
| size_bytes bigint not null default 0, | |
| extracted_text text not null default '', | |
| content_base64 text not null default '', | |
| status text not null default 'pending', | |
| error text not null default '', | |
| created_at timestamptz default now() | |
| ); | |