CUB-119: Add docker-compose.yml + .env.example, remove legacy .NET backend and Angular frontend
Some checks failed
Dev Build / build-test (pull_request) Failing after 1m36s
Some checks failed
Dev Build / build-test (pull_request) Failing after 1m36s
This commit is contained in:
9
go-backend/migrations/001_initial_schema.down.sql
Normal file
9
go-backend/migrations/001_initial_schema.down.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
-- Migration: 001_initial_schema (down)
|
||||
-- Description: Reverts the core Control Center database schema.
|
||||
|
||||
-- Drop in reverse dependency order to avoid FK conflicts
|
||||
DROP TABLE IF EXISTS agent_events;
|
||||
DROP TABLE IF EXISTS task_logs;
|
||||
DROP TABLE IF EXISTS sessions;
|
||||
DROP TABLE IF EXISTS projects;
|
||||
DROP TABLE IF EXISTS agents;
|
||||
97
go-backend/migrations/001_initial_schema.up.sql
Normal file
97
go-backend/migrations/001_initial_schema.up.sql
Normal file
@@ -0,0 +1,97 @@
|
||||
-- Migration: 001_initial_schema
|
||||
-- Description: Creates the core Control Center database schema.
|
||||
|
||||
-- Enable UUID extension
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
|
||||
-- ============================================
|
||||
-- Table: agents
|
||||
-- ============================================
|
||||
CREATE TABLE agents (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
name TEXT NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT 'idle'
|
||||
CHECK (status IN ('active', 'idle', 'thinking', 'error', 'offline')),
|
||||
task TEXT,
|
||||
progress INT NOT NULL DEFAULT 0
|
||||
CHECK (progress >= 0 AND progress <= 100),
|
||||
session_key TEXT,
|
||||
channel TEXT,
|
||||
last_activity TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
COMMENT ON TABLE agents IS 'Registered agents and their current state';
|
||||
COMMENT ON COLUMN agents.status IS 'Agent lifecycle status: active, idle, thinking, error, offline';
|
||||
|
||||
-- ============================================
|
||||
-- Table: sessions
|
||||
-- ============================================
|
||||
CREATE TABLE sessions (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
agent_id UUID NOT NULL,
|
||||
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
ended_at TIMESTAMPTZ,
|
||||
status TEXT NOT NULL DEFAULT 'running'
|
||||
CHECK (status IN ('running', 'completed', 'crashed', 'terminated')),
|
||||
CONSTRAINT fk_sessions_agent
|
||||
FOREIGN KEY (agent_id) REFERENCES agents(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
COMMENT ON TABLE sessions IS 'Agent session history';
|
||||
|
||||
-- ============================================
|
||||
-- Table: task_logs
|
||||
-- ============================================
|
||||
CREATE TABLE task_logs (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
agent_id UUID NOT NULL,
|
||||
task TEXT NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT 'pending'
|
||||
CHECK (status IN ('pending', 'running', 'completed', 'failed', 'cancelled')),
|
||||
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
completed_at TIMESTAMPTZ,
|
||||
error_message TEXT,
|
||||
CONSTRAINT fk_task_logs_agent
|
||||
FOREIGN KEY (agent_id) REFERENCES agents(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
COMMENT ON TABLE task_logs IS 'Historical record of tasks assigned to agents';
|
||||
|
||||
-- ============================================
|
||||
-- Table: projects
|
||||
-- ============================================
|
||||
CREATE TABLE projects (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'planned'
|
||||
CHECK (status IN ('planned', 'in_progress', 'completed', 'paused', 'cancelled')),
|
||||
agent_id UUID,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
CONSTRAINT fk_projects_agent
|
||||
FOREIGN KEY (agent_id) REFERENCES agents(id)
|
||||
ON DELETE SET NULL
|
||||
);
|
||||
|
||||
COMMENT ON TABLE projects IS 'Projects managed by the Control Center';
|
||||
|
||||
-- ============================================
|
||||
-- Table: agent_events
|
||||
-- ============================================
|
||||
CREATE TABLE agent_events (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
agent_id UUID NOT NULL,
|
||||
event_type TEXT NOT NULL,
|
||||
payload JSONB,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
CONSTRAINT fk_agent_events_agent
|
||||
FOREIGN KEY (agent_id) REFERENCES agents(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
COMMENT ON TABLE agent_events IS 'Event stream for agent lifecycle and telemetry';
|
||||
20
go-backend/migrations/002_add_indexes.down.sql
Normal file
20
go-backend/migrations/002_add_indexes.down.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
-- Migration: 002_add_indexes (down)
|
||||
-- Description: Remove all indexes added in 002_add_indexes.
|
||||
|
||||
DROP INDEX IF EXISTS idx_agents_status;
|
||||
DROP INDEX IF EXISTS idx_agents_last_activity;
|
||||
DROP INDEX IF EXISTS idx_agents_created_at;
|
||||
|
||||
DROP INDEX IF EXISTS idx_sessions_agent_id;
|
||||
DROP INDEX IF EXISTS idx_sessions_status;
|
||||
DROP INDEX IF EXISTS idx_sessions_started_at;
|
||||
|
||||
DROP INDEX IF EXISTS idx_task_logs_agent_started;
|
||||
DROP INDEX IF EXISTS idx_task_logs_status;
|
||||
|
||||
DROP INDEX IF EXISTS idx_agent_events_agent_created;
|
||||
DROP INDEX IF EXISTS idx_agent_events_event_type;
|
||||
|
||||
DROP INDEX IF EXISTS idx_projects_status;
|
||||
DROP INDEX IF EXISTS idx_projects_agent_id;
|
||||
DROP INDEX IF EXISTS idx_projects_created;
|
||||
25
go-backend/migrations/002_add_indexes.up.sql
Normal file
25
go-backend/migrations/002_add_indexes.up.sql
Normal file
@@ -0,0 +1,25 @@
|
||||
-- Migration: 002_add_indexes
|
||||
-- Description: Add performance indexes for common query patterns.
|
||||
|
||||
-- agents: status filtering, activity ordering
|
||||
CREATE INDEX idx_agents_status ON agents(status);
|
||||
CREATE INDEX idx_agents_last_activity ON agents(last_activity DESC);
|
||||
CREATE INDEX idx_agents_created_at ON agents(created_at DESC);
|
||||
|
||||
-- sessions: agent session lookups, active session checks
|
||||
CREATE INDEX idx_sessions_agent_id ON sessions(agent_id);
|
||||
CREATE INDEX idx_sessions_status ON sessions(status);
|
||||
CREATE INDEX idx_sessions_started_at ON sessions(started_at DESC);
|
||||
|
||||
-- task_logs: agent task history, chronological ordering
|
||||
CREATE INDEX idx_task_logs_agent_started ON task_logs(agent_id, started_at DESC);
|
||||
CREATE INDEX idx_task_logs_status ON task_logs(status);
|
||||
|
||||
-- agent_events: event stream queries
|
||||
CREATE INDEX idx_agent_events_agent_created ON agent_events(agent_id, created_at DESC);
|
||||
CREATE INDEX idx_agent_events_event_type ON agent_events(event_type);
|
||||
|
||||
-- projects: status filtering, agent assignment
|
||||
CREATE INDEX idx_projects_status ON projects(status);
|
||||
CREATE INDEX idx_projects_agent_id ON projects(agent_id);
|
||||
CREATE INDEX idx_projects_created ON projects(created_at DESC);
|
||||
Reference in New Issue
Block a user