Files
multica/server/migrations/032_add_project.up.sql
Jiayuan 2b2e9828ea feat(project): add Project feature with full CRUD and issue association
- Add `project` table with status, color, lead, dates, and sort_order
- Add `project_id` column to `issue` table (nullable FK, ON DELETE SET NULL)
- Implement project CRUD API (POST/GET/PUT/DELETE /api/projects)
- Auto-calculate project progress from issue completion ratio
- Add project_id support to issue create, update, list, and batch operations
- Add WebSocket events (project:created/updated/deleted) with realtime sync
- Add frontend: project types, API client, Zustand store, realtime integration
- Add projects list page (/projects) with create dialog
- Add project detail page (/projects/[id]) with issue list
- Add project picker to issue detail properties sidebar
- Add "Projects" nav item to sidebar
2026-04-05 04:13:07 +08:00

26 lines
1.1 KiB
SQL

-- Create project table
CREATE TABLE project (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
workspace_id UUID NOT NULL REFERENCES workspace(id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT,
status TEXT NOT NULL DEFAULT 'backlog'
CHECK (status IN ('backlog', 'planned', 'in_progress', 'completed', 'cancelled')),
icon TEXT,
color TEXT,
lead_type TEXT CHECK (lead_type IN ('member', 'agent')),
lead_id UUID,
start_date DATE,
target_date DATE,
sort_order FLOAT8 NOT NULL DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX idx_project_workspace ON project(workspace_id);
CREATE INDEX idx_project_workspace_status ON project(workspace_id, status);
-- Add project_id to issue
ALTER TABLE issue ADD COLUMN project_id UUID REFERENCES project(id) ON DELETE SET NULL;
CREATE INDEX idx_issue_project ON issue(workspace_id, project_id);