WIP
This commit is contained in:
8
migrations/005_add_group_key.sql
Normal file
8
migrations/005_add_group_key.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
-- Add group_key column to admin_documents
|
||||
-- Allows users to organize documents into logical groups
|
||||
|
||||
-- Add the column (nullable, VARCHAR 255)
|
||||
ALTER TABLE admin_documents ADD COLUMN IF NOT EXISTS group_key VARCHAR(255);
|
||||
|
||||
-- Add index for filtering/grouping queries
|
||||
CREATE INDEX IF NOT EXISTS ix_admin_documents_group_key ON admin_documents(group_key);
|
||||
49
migrations/006_model_versions.sql
Normal file
49
migrations/006_model_versions.sql
Normal file
@@ -0,0 +1,49 @@
|
||||
-- Model versions table for tracking trained model deployments.
|
||||
-- Each training run can produce a model version for inference.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS model_versions (
|
||||
version_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
version VARCHAR(50) NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
model_path VARCHAR(512) NOT NULL,
|
||||
status VARCHAR(20) NOT NULL DEFAULT 'inactive',
|
||||
is_active BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
|
||||
-- Training association
|
||||
task_id UUID REFERENCES training_tasks(task_id) ON DELETE SET NULL,
|
||||
dataset_id UUID REFERENCES training_datasets(dataset_id) ON DELETE SET NULL,
|
||||
|
||||
-- Training metrics
|
||||
metrics_mAP DOUBLE PRECISION,
|
||||
metrics_precision DOUBLE PRECISION,
|
||||
metrics_recall DOUBLE PRECISION,
|
||||
document_count INTEGER NOT NULL DEFAULT 0,
|
||||
|
||||
-- Training configuration snapshot
|
||||
training_config JSONB,
|
||||
|
||||
-- File info
|
||||
file_size BIGINT,
|
||||
|
||||
-- Timestamps
|
||||
trained_at TIMESTAMP WITH TIME ZONE,
|
||||
activated_at TIMESTAMP WITH TIME ZONE,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Indexes
|
||||
CREATE INDEX IF NOT EXISTS idx_model_versions_version ON model_versions(version);
|
||||
CREATE INDEX IF NOT EXISTS idx_model_versions_status ON model_versions(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_model_versions_is_active ON model_versions(is_active);
|
||||
CREATE INDEX IF NOT EXISTS idx_model_versions_task_id ON model_versions(task_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_model_versions_dataset_id ON model_versions(dataset_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_model_versions_created ON model_versions(created_at);
|
||||
|
||||
-- Ensure only one active model at a time
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_model_versions_single_active
|
||||
ON model_versions(is_active) WHERE is_active = TRUE;
|
||||
|
||||
-- Comment
|
||||
COMMENT ON TABLE model_versions IS 'Trained model versions for inference deployment';
|
||||
46
migrations/007_training_tasks_extra_columns.sql
Normal file
46
migrations/007_training_tasks_extra_columns.sql
Normal file
@@ -0,0 +1,46 @@
|
||||
-- Add missing columns to training_tasks table
|
||||
|
||||
-- Add name column
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS name VARCHAR(255);
|
||||
UPDATE training_tasks SET name = 'Training ' || substring(task_id::text, 1, 8) WHERE name IS NULL;
|
||||
ALTER TABLE training_tasks ALTER COLUMN name SET NOT NULL;
|
||||
|
||||
-- Add description column
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS description TEXT;
|
||||
|
||||
-- Add admin_token column (for multi-tenant support)
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS admin_token VARCHAR(255);
|
||||
|
||||
-- Add task_type column
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS task_type VARCHAR(20) DEFAULT 'train';
|
||||
|
||||
-- Add recurring schedule columns
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS cron_expression VARCHAR(50);
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS is_recurring BOOLEAN DEFAULT FALSE;
|
||||
|
||||
-- Add result metrics columns (for display without parsing JSONB)
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS result_metrics JSONB;
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS document_count INTEGER DEFAULT 0;
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS metrics_mAP DOUBLE PRECISION;
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS metrics_precision DOUBLE PRECISION;
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS metrics_recall DOUBLE PRECISION;
|
||||
|
||||
-- Rename metrics to config if exists
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'training_tasks' AND column_name = 'metrics'
|
||||
AND NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'training_tasks' AND column_name = 'config')) THEN
|
||||
ALTER TABLE training_tasks RENAME COLUMN metrics TO config;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Add updated_at column
|
||||
ALTER TABLE training_tasks ADD COLUMN IF NOT EXISTS updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW();
|
||||
|
||||
-- Create index on name
|
||||
CREATE INDEX IF NOT EXISTS idx_training_tasks_name ON training_tasks(name);
|
||||
|
||||
-- Create index on metrics_mAP
|
||||
CREATE INDEX IF NOT EXISTS idx_training_tasks_mAP ON training_tasks(metrics_mAP);
|
||||
14
migrations/008_fix_model_versions_fk.sql
Normal file
14
migrations/008_fix_model_versions_fk.sql
Normal file
@@ -0,0 +1,14 @@
|
||||
-- Fix foreign key constraints on model_versions table to allow CASCADE delete
|
||||
|
||||
-- Drop existing constraints
|
||||
ALTER TABLE model_versions DROP CONSTRAINT IF EXISTS model_versions_dataset_id_fkey;
|
||||
ALTER TABLE model_versions DROP CONSTRAINT IF EXISTS model_versions_task_id_fkey;
|
||||
|
||||
-- Add constraints with ON DELETE SET NULL
|
||||
ALTER TABLE model_versions
|
||||
ADD CONSTRAINT model_versions_dataset_id_fkey
|
||||
FOREIGN KEY (dataset_id) REFERENCES training_datasets(dataset_id) ON DELETE SET NULL;
|
||||
|
||||
ALTER TABLE model_versions
|
||||
ADD CONSTRAINT model_versions_task_id_fkey
|
||||
FOREIGN KEY (task_id) REFERENCES training_tasks(task_id) ON DELETE SET NULL;
|
||||
Reference in New Issue
Block a user