feat(workbench): add dynamic task approval lifecycle
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
-- Task-scoped, reviewable data access requests for dynamic investigations.
|
||||
-- This migration is deliberately restricted to the verified tjwater_v2 BizDB.
|
||||
BEGIN;
|
||||
SET LOCAL lock_timeout = '5s';
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF current_database() <> 'tjwater_v2' THEN
|
||||
RAISE EXCEPTION 'Operational access-request migration is restricted to tjwater_v2';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS workbench.operational_task_access_requests (
|
||||
project_id uuid NOT NULL,
|
||||
task_id uuid NOT NULL,
|
||||
access_request_id uuid NOT NULL,
|
||||
node_id text NOT NULL CHECK (length(node_id) > 0),
|
||||
status text NOT NULL CHECK (status IN ('pending','approved','rejected')),
|
||||
version bigint NOT NULL CHECK (version >= 1),
|
||||
document jsonb NOT NULL,
|
||||
requested_at timestamptz NOT NULL,
|
||||
updated_at timestamptz NOT NULL,
|
||||
PRIMARY KEY (project_id,task_id,access_request_id),
|
||||
FOREIGN KEY (project_id,task_id)
|
||||
REFERENCES workbench.operational_tasks(project_id,task_id) ON DELETE CASCADE,
|
||||
CHECK ((document->>'access_request_id'=access_request_id::text
|
||||
AND document->>'status'=status
|
||||
AND (document->>'version')::bigint=version) IS TRUE)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS operational_task_access_pending_idx
|
||||
ON workbench.operational_task_access_requests(project_id,status,requested_at)
|
||||
WHERE status='pending';
|
||||
|
||||
COMMENT ON TABLE workbench.operational_task_access_requests IS
|
||||
'动态调查中的任务级数据访问申请;与动作审批分离,保存申请范围及人工审核结果。';
|
||||
COMMENT ON COLUMN workbench.operational_task_access_requests.project_id IS
|
||||
'所属项目标识;当前仍要求一个项目独占一个 BizDB。';
|
||||
COMMENT ON COLUMN workbench.operational_task_access_requests.task_id IS
|
||||
'所属工况任务标识。';
|
||||
COMMENT ON COLUMN workbench.operational_task_access_requests.access_request_id IS
|
||||
'访问申请的稳定标识,同时用于计划审核节点引用。';
|
||||
COMMENT ON COLUMN workbench.operational_task_access_requests.node_id IS
|
||||
'发起申请的执行计划节点标识。';
|
||||
COMMENT ON COLUMN workbench.operational_task_access_requests.status IS
|
||||
'人工审核状态:pending、approved 或 rejected。';
|
||||
COMMENT ON COLUMN workbench.operational_task_access_requests.version IS
|
||||
'用于乐观并发控制的申请修订号。';
|
||||
COMMENT ON COLUMN workbench.operational_task_access_requests.document IS
|
||||
'经过接口模型校验的完整访问申请文档。';
|
||||
COMMENT ON COLUMN workbench.operational_task_access_requests.requested_at IS
|
||||
'Agent 发起访问申请的时间。';
|
||||
COMMENT ON COLUMN workbench.operational_task_access_requests.updated_at IS
|
||||
'申请最近一次状态变更时间。';
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user