All checks were successful
Deploy Development / deploy (push) Successful in 44s
Test Suite / pytest-backend (push) Successful in 1m39s
Test Suite / lint-backend (push) Successful in 2s
Test Suite / compose-smoke (push) Has been skipped
Test Suite / k6 /api/health Baseline (push) Successful in 18s
Test Suite / playwright-smoke (push) Successful in 12s
Schema 013; Projekte/Arbeitspakete/Aufgaben pflegbar; Tab Zielzustände vs Ausführung. Co-authored-by: Cursor <cursoragent@cursor.com>
46 lines
2.0 KiB
SQL
46 lines
2.0 KiB
SQL
-- AP1.5: Project, Task, Action.project_id — operative Ist-Hierarchie
|
|
|
|
CREATE TABLE projects (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
initiative_id UUID NOT NULL REFERENCES initiatives(id) ON DELETE CASCADE,
|
|
title VARCHAR(255) NOT NULL,
|
|
description TEXT NOT NULL DEFAULT '',
|
|
status VARCHAR(32) NOT NULL DEFAULT 'active'
|
|
CHECK (status IN ('active', 'paused', 'completed', 'archived')),
|
|
roadmap_item_id UUID NULL REFERENCES roadmap_items(id) ON DELETE SET NULL,
|
|
sort_order INT NOT NULL DEFAULT 0,
|
|
target_date DATE NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_projects_tenant_initiative ON projects(tenant_id, initiative_id);
|
|
CREATE INDEX idx_projects_tenant_status ON projects(tenant_id, status);
|
|
CREATE INDEX idx_projects_roadmap_item ON projects(tenant_id, roadmap_item_id)
|
|
WHERE roadmap_item_id IS NOT NULL;
|
|
|
|
ALTER TABLE actions
|
|
ADD COLUMN project_id UUID NULL REFERENCES projects(id) ON DELETE SET NULL;
|
|
|
|
CREATE INDEX idx_actions_project ON actions(tenant_id, project_id)
|
|
WHERE project_id IS NOT NULL;
|
|
|
|
CREATE TABLE tasks (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
action_id UUID NOT NULL REFERENCES actions(id) ON DELETE CASCADE,
|
|
title VARCHAR(255) NOT NULL,
|
|
description TEXT NOT NULL DEFAULT '',
|
|
status VARCHAR(32) NOT NULL DEFAULT 'open'
|
|
CHECK (status IN ('open', 'in_progress', 'done', 'discarded')),
|
|
roadmap_item_id UUID NULL REFERENCES roadmap_items(id) ON DELETE SET NULL,
|
|
sort_order INT NOT NULL DEFAULT 0,
|
|
due_at TIMESTAMPTZ NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_tasks_tenant_action ON tasks(tenant_id, action_id);
|
|
CREATE INDEX idx_tasks_tenant_status ON tasks(tenant_id, status);
|