feat(n8n): add school paperless intake pipeline
This commit is contained in:
47
docs/reference/SCHOOL_INTAKE_POSTGRES_SCHEMA.sql
Normal file
47
docs/reference/SCHOOL_INTAKE_POSTGRES_SCHEMA.sql
Normal file
@@ -0,0 +1,47 @@
|
||||
-- Shared Postgres schema for Telegram-driven school-work intake.
|
||||
-- Apply in a dedicated `school_intake` database or adapt to an existing shared DB.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS school_paperless_intake (
|
||||
intake_id TEXT PRIMARY KEY,
|
||||
class_name TEXT NOT NULL,
|
||||
assignment_name TEXT NOT NULL,
|
||||
submission_kind TEXT NOT NULL,
|
||||
semester TEXT,
|
||||
course_code TEXT,
|
||||
paper_kind TEXT,
|
||||
notes TEXT,
|
||||
source TEXT NOT NULL DEFAULT 'telegram',
|
||||
telegram_chat_id TEXT,
|
||||
telegram_message_id TEXT,
|
||||
original_filename TEXT NOT NULL,
|
||||
stored_filename TEXT NOT NULL,
|
||||
mime_type TEXT NOT NULL,
|
||||
file_size_bytes BIGINT NOT NULL,
|
||||
checksum_sha256 TEXT NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT 'received',
|
||||
paperless_task_id TEXT,
|
||||
paperless_document_id BIGINT,
|
||||
paperless_title TEXT,
|
||||
received_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
uploaded_at TIMESTAMPTZ,
|
||||
enriched_at TIMESTAMPTZ,
|
||||
error_text TEXT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_school_paperless_intake_status ON school_paperless_intake(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_school_paperless_intake_doc_id ON school_paperless_intake(paperless_document_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_school_paperless_intake_assignment ON school_paperless_intake(class_name, assignment_name);
|
||||
CREATE INDEX IF NOT EXISTS idx_school_paperless_intake_checksum ON school_paperless_intake(checksum_sha256);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS school_paperless_intake_events (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
intake_id TEXT NOT NULL REFERENCES school_paperless_intake(intake_id) ON DELETE CASCADE,
|
||||
event_type TEXT NOT NULL,
|
||||
event_payload JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_school_paperless_intake_events_intake_id
|
||||
ON school_paperless_intake_events(intake_id);
|
||||
Reference in New Issue
Block a user