26 lines
1.5 KiB
SQL
26 lines
1.5 KiB
SQL
-- ImageHub: structured review decisions. The task pipeline applies accept/acceptWithCorrections/
|
|
-- reject moves, but until now the verdict survived only as a free-text Vietnamese audit string —
|
|
-- not queryable, no reviewer/stage FK, no reject reason. This append-only table records every
|
|
-- review decision so review history + per-reviewer accept/reject counters become real. Idempotent.
|
|
-- Apply after 024 (no semicolons inside comments or string literals — the runner splitter is naive):
|
|
-- docker exec -i initiative-postgres psql -U initiative -d initiatives < be0/migrations/025_imagehub_task_review_events.sql
|
|
|
|
CREATE TABLE IF NOT EXISTS imagehub_task_review_events (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
dataset_id UUID NOT NULL REFERENCES imagehub_datasets(id) ON DELETE CASCADE,
|
|
task_id UUID NOT NULL REFERENCES imagehub_tasks(id) ON DELETE CASCADE,
|
|
stage_id UUID REFERENCES imagehub_dataset_stages(id) ON DELETE SET NULL,
|
|
reviewer_user_id UUID REFERENCES users(id) ON DELETE SET NULL,
|
|
decision TEXT NOT NULL CHECK (decision IN ('accept','acceptWithCorrections','reject')),
|
|
note TEXT NOT NULL DEFAULT '',
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Per-reviewer counters over a date window (the productivity panel query).
|
|
CREATE INDEX IF NOT EXISTS idx_imagehub_review_events_reviewer
|
|
ON imagehub_task_review_events (dataset_id, reviewer_user_id, created_at);
|
|
|
|
-- A task's review history (chronological).
|
|
CREATE INDEX IF NOT EXISTS idx_imagehub_review_events_task
|
|
ON imagehub_task_review_events (task_id, created_at);
|