74 lines
3.4 KiB
Plaintext
74 lines
3.4 KiB
Plaintext
-- ================================================================
|
||
-- 权限方案 A 升级 DDL(在已有表结构基础上执行)
|
||
-- 执行顺序:按文件从上到下顺序执行
|
||
-- ================================================================
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 1. department:新增部门负责人字段
|
||
-- ------------------------------------------------------------
|
||
ALTER TABLE public.department
|
||
ADD COLUMN IF NOT EXISTS leader_user_id INTEGER
|
||
REFERENCES public.user_list(id) ON DELETE SET NULL;
|
||
|
||
COMMENT ON COLUMN public.department.leader_user_id IS '部门负责人 user_id,对应 role=leader 的用户';
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_department_leader_user_id
|
||
ON public.department (leader_user_id);
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 2. user_list:新增「是否允许上传文件到知识库」开关
|
||
-- ------------------------------------------------------------
|
||
ALTER TABLE public.user_list
|
||
ADD COLUMN IF NOT EXISTS allow_kb_upload BOOLEAN NOT NULL DEFAULT TRUE;
|
||
|
||
COMMENT ON COLUMN public.user_list.allow_kb_upload IS '是否允许上传文件到知识库(上级领导或 admin 可关闭)';
|
||
|
||
-- ------------------------------------------------------------
|
||
-- 3. kb_audit_log:知识库操作审计日志表(新建)
|
||
-- ------------------------------------------------------------
|
||
CREATE TABLE IF NOT EXISTS public.kb_audit_log
|
||
(
|
||
id SERIAL PRIMARY KEY,
|
||
enterprise_id INTEGER NOT NULL
|
||
REFERENCES public.enterprise ON DELETE CASCADE,
|
||
actor_id INTEGER NOT NULL
|
||
REFERENCES public.user_list (id) ON DELETE CASCADE,
|
||
target_user_id INTEGER
|
||
REFERENCES public.user_list (id) ON DELETE SET NULL,
|
||
department_id INTEGER
|
||
REFERENCES public.department (id) ON DELETE SET NULL,
|
||
kb_id INTEGER
|
||
REFERENCES public.knowledge_base (id) ON DELETE SET NULL,
|
||
file_id INTEGER
|
||
REFERENCES public.knowledge_base_file (id) ON DELETE SET NULL,
|
||
action VARCHAR(50) NOT NULL,
|
||
-- upload | download | delete | archive | create_kb | delete_kb | permission_change
|
||
ip VARCHAR(128),
|
||
user_agent TEXT,
|
||
metadata JSONB,
|
||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL
|
||
);
|
||
|
||
COMMENT ON TABLE public.kb_audit_log IS '知识库操作审计日志';
|
||
COMMENT ON COLUMN public.kb_audit_log.action IS
|
||
'upload | download | delete | archive | create_kb | delete_kb | permission_change';
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_kb_audit_log_enterprise_id
|
||
ON public.kb_audit_log (enterprise_id);
|
||
CREATE INDEX IF NOT EXISTS idx_kb_audit_log_actor_id
|
||
ON public.kb_audit_log (actor_id);
|
||
CREATE INDEX IF NOT EXISTS idx_kb_audit_log_target_user_id
|
||
ON public.kb_audit_log (target_user_id);
|
||
CREATE INDEX IF NOT EXISTS idx_kb_audit_log_department_id
|
||
ON public.kb_audit_log (department_id);
|
||
CREATE INDEX IF NOT EXISTS idx_kb_audit_log_kb_id
|
||
ON public.kb_audit_log (kb_id);
|
||
CREATE INDEX IF NOT EXISTS idx_kb_audit_log_action
|
||
ON public.kb_audit_log (action);
|
||
CREATE INDEX IF NOT EXISTS idx_kb_audit_log_created_at
|
||
ON public.kb_audit_log (created_at DESC);
|
||
CREATE INDEX IF NOT EXISTS idx_kb_audit_log_ent_dept_created
|
||
ON public.kb_audit_log (enterprise_id, department_id, created_at DESC);
|
||
|
||
ALTER TABLE public.kb_audit_log OWNER TO zuoleiroot;
|