Files
2026-06-22 08:55:57 +08:00

25 lines
1.4 KiB
SQL

-- Phase state machine gates: extend artifact phases to 5, add per-version
-- verdict, and a per-(requirement,phase) approved/current artifact pointer.
-- (1) 扩展产物阶段 CHECK,纳入 implementing/reviewing(审计报告/评审记录也是文档型产物)。
ALTER TABLE requirement_artifacts DROP CONSTRAINT requirement_artifacts_phase_check;
ALTER TABLE requirement_artifacts ADD CONSTRAINT requirement_artifacts_phase_check
CHECK (phase IN ('planning','prototyping','auditing','implementing','reviewing'));
-- (2) 每版本评审结论。default 'none' 让现存行全部合法(无需数据迁移)。
-- 新列放在表末尾,满足 sqlc 列序约定(见 0012 注释)。
ALTER TABLE requirement_artifacts ADD COLUMN verdict TEXT NOT NULL DEFAULT 'none'
CHECK (verdict IN ('none','pass','fail'));
-- (3) 每 (requirement, phase) 的"已批准/当前"产物指针。仅在首次批准后才有行。
CREATE TABLE requirement_phase_pointers (
requirement_id UUID NOT NULL REFERENCES requirements(id) ON DELETE CASCADE,
phase TEXT NOT NULL,
approved_artifact_id UUID REFERENCES requirement_artifacts(id) ON DELETE SET NULL,
approved_by UUID REFERENCES users(id) ON DELETE SET NULL,
approved_at TIMESTAMPTZ,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (requirement_id, phase)
);
CREATE INDEX idx_req_phase_pointers_artifact ON requirement_phase_pointers(approved_artifact_id);