优化交叉评查详情页面
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 智慧法务
|
||||
Source Server Type : PostgreSQL
|
||||
Source Server Version : 170005
|
||||
Source Host : nas.7bm.co:54302
|
||||
Source Catalog : docauditai
|
||||
Source Schema : public
|
||||
|
||||
Target Server Type : PostgreSQL
|
||||
Target Server Version : 170005
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 09/07/2025 10:25:35
|
||||
*/
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for document_types
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "public"."document_types";
|
||||
CREATE TABLE "public"."document_types" (
|
||||
"id" int4 NOT NULL DEFAULT nextval('document_types_id_seq'::regclass),
|
||||
"name" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"description" text COLLATE "pg_catalog"."default",
|
||||
"evaluation_point_groups_ids" jsonb,
|
||||
"prompt_config" jsonb,
|
||||
"created_at" timestamptz(6) DEFAULT now(),
|
||||
"updated_at" timestamptz(6) DEFAULT now(),
|
||||
"code" varchar(255) COLLATE "pg_catalog"."default"
|
||||
)
|
||||
;
|
||||
COMMENT ON COLUMN "public"."document_types"."id" IS '类型ID,主键,自增';
|
||||
COMMENT ON COLUMN "public"."document_types"."name" IS '文档类型名称,唯一且非空';
|
||||
COMMENT ON COLUMN "public"."document_types"."description" IS '类型描述,可为空';
|
||||
COMMENT ON COLUMN "public"."document_types"."evaluation_point_groups_ids" IS '关联的评查点组ID,JSONB格式';
|
||||
COMMENT ON COLUMN "public"."document_types"."prompt_config" IS '提示词配置,JSONB格式';
|
||||
COMMENT ON COLUMN "public"."document_types"."created_at" IS '创建时间,带时区,默认当前时间';
|
||||
COMMENT ON COLUMN "public"."document_types"."updated_at" IS '更新时间,带时区,默认当前时间';
|
||||
COMMENT ON TABLE "public"."document_types" IS '文档类型表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Triggers structure for table document_types
|
||||
-- ----------------------------
|
||||
CREATE TRIGGER "update_document_types_updated_at" BEFORE UPDATE ON "public"."document_types"
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE "public"."update_updated_at_column"();
|
||||
|
||||
-- ----------------------------
|
||||
-- Uniques structure for table document_types
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."document_types" ADD CONSTRAINT "document_types_name_key" UNIQUE ("name");
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table document_types
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."document_types" ADD CONSTRAINT "document_types_pkey" PRIMARY KEY ("id");
|
||||
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 智慧法务
|
||||
Source Server Type : PostgreSQL
|
||||
Source Server Version : 170005
|
||||
Source Host : nas.7bm.co:54302
|
||||
Source Catalog : docauditai
|
||||
Source Schema : public
|
||||
|
||||
Target Server Type : PostgreSQL
|
||||
Target Server Version : 170005
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 09/07/2025 10:25:25
|
||||
*/
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for documents
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "public"."documents";
|
||||
CREATE TABLE "public"."documents" (
|
||||
"id" int4 NOT NULL DEFAULT nextval('documents_id_seq'::regclass),
|
||||
"user_id" int4,
|
||||
"type_id" int4 NOT NULL,
|
||||
"name" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"document_number" varchar(100) COLLATE "pg_catalog"."default",
|
||||
"path" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"storage_type" varchar(20) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 'minio'::character varying,
|
||||
"file_size" int4,
|
||||
"upload_time" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
|
||||
"is_test_document" bool DEFAULT false,
|
||||
"evaluation_level" varchar(255) COLLATE "pg_catalog"."default",
|
||||
"status" varchar(20) COLLATE "pg_catalog"."default" DEFAULT 'waiting'::character varying,
|
||||
"ocr_result" jsonb,
|
||||
"extracted_results" jsonb,
|
||||
"sumary" text COLLATE "pg_catalog"."default",
|
||||
"remark" text COLLATE "pg_catalog"."default",
|
||||
"created_at" timestamptz(6) DEFAULT now(),
|
||||
"updated_at" timestamptz(6) DEFAULT now(),
|
||||
"evaluations_status" int4,
|
||||
"audit_status" int4,
|
||||
"error_massage" varchar(500) COLLATE "pg_catalog"."default"
|
||||
)
|
||||
;
|
||||
COMMENT ON COLUMN "public"."documents"."id" IS '文档ID,主键,自增';
|
||||
COMMENT ON COLUMN "public"."documents"."user_id" IS '上传用户的ID,外键引用users表,可为空';
|
||||
COMMENT ON COLUMN "public"."documents"."type_id" IS '文档类型ID,外键引用document_types表,非空';
|
||||
COMMENT ON COLUMN "public"."documents"."name" IS '原始文件名,非空';
|
||||
COMMENT ON COLUMN "public"."documents"."document_number" IS '合同编号、许可证号等,可为空';
|
||||
COMMENT ON COLUMN "public"."documents"."path" IS '存储路径,非空';
|
||||
COMMENT ON COLUMN "public"."documents"."storage_type" IS '文件存储方式,默认minio';
|
||||
COMMENT ON COLUMN "public"."documents"."file_size" IS '文件大小,单位字节,可为空';
|
||||
COMMENT ON COLUMN "public"."documents"."upload_time" IS '上传时间,默认当前时间';
|
||||
COMMENT ON COLUMN "public"."documents"."is_test_document" IS '是否是测试文档,默认false';
|
||||
COMMENT ON COLUMN "public"."documents"."status" IS '处理状态,默认waiting(waiting: 上传时默认状态, Cutting: 切分+OCR处理中, extractioning: 大模型抽取信息中, evaluationing: 评查中, processed: 文档处理完成等待审核)';
|
||||
COMMENT ON COLUMN "public"."documents"."ocr_result" IS 'OCR处理结果,JSONB格式';
|
||||
COMMENT ON COLUMN "public"."documents"."extracted_results" IS '内容抽取结果,JSONB格式';
|
||||
COMMENT ON COLUMN "public"."documents"."sumary" IS '评查结果,可为空';
|
||||
COMMENT ON COLUMN "public"."documents"."remark" IS '备注,可为空';
|
||||
COMMENT ON COLUMN "public"."documents"."created_at" IS '创建时间,带时区,默认当前时间';
|
||||
COMMENT ON COLUMN "public"."documents"."updated_at" IS '更新时间,带时区,默认当前时间';
|
||||
COMMENT ON COLUMN "public"."documents"."evaluations_status" IS '评查状态:
|
||||
* 通过 :1
|
||||
* 警告 :-2
|
||||
* 不通过 :-1
|
||||
* 待人工确认 :0';
|
||||
COMMENT ON COLUMN "public"."documents"."audit_status" IS '审核状态:
|
||||
* 待审核:0
|
||||
* 通过:1
|
||||
* 审核中:2
|
||||
* 不通过:-1
|
||||
* 警告:-2';
|
||||
COMMENT ON TABLE "public"."documents" IS '文档表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Triggers structure for table documents
|
||||
-- ----------------------------
|
||||
CREATE TRIGGER "trg_set_updated_at" BEFORE UPDATE ON "public"."documents"
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE "public"."update_updated_at"();
|
||||
CREATE TRIGGER "update_documents_updated_at" BEFORE UPDATE ON "public"."documents"
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE "public"."update_updated_at_column"();
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table documents
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."documents" ADD CONSTRAINT "documents_pkey" PRIMARY KEY ("id");
|
||||
|
||||
-- ----------------------------
|
||||
-- Foreign Keys structure for table documents
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."documents" ADD CONSTRAINT "documents_type_id_fkey" FOREIGN KEY ("type_id") REFERENCES "public"."document_types" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||
ALTER TABLE "public"."documents" ADD CONSTRAINT "documents_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 智慧法务
|
||||
Source Server Type : PostgreSQL
|
||||
Source Server Version : 170005
|
||||
Source Host : nas.7bm.co:54302
|
||||
Source Catalog : docauditai
|
||||
Source Schema : public
|
||||
|
||||
Target Server Type : PostgreSQL
|
||||
Target Server Version : 170005
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 09/07/2025 16:21:17
|
||||
*/
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for evaluation_points
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "public"."evaluation_points";
|
||||
CREATE TABLE "public"."evaluation_points" (
|
||||
"id" int4 NOT NULL DEFAULT nextval('evaluation_points_id_seq'::regclass),
|
||||
"code" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"name" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"evaluation_point_groups_id" int4,
|
||||
"risk" varchar(10) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"description" text COLLATE "pg_catalog"."default",
|
||||
"is_enabled" bool DEFAULT true,
|
||||
"references_laws" jsonb NOT NULL,
|
||||
"extraction_config" jsonb NOT NULL,
|
||||
"evaluation_config" jsonb NOT NULL,
|
||||
"pass_message" text COLLATE "pg_catalog"."default",
|
||||
"fail_message" text COLLATE "pg_catalog"."default",
|
||||
"suggestion_message" text COLLATE "pg_catalog"."default",
|
||||
"suggestion_message_type" varchar(20) COLLATE "pg_catalog"."default" DEFAULT 'warning'::character varying,
|
||||
"post_action" varchar(50) COLLATE "pg_catalog"."default",
|
||||
"action_config" text COLLATE "pg_catalog"."default",
|
||||
"created_at" timestamptz(6) DEFAULT now(),
|
||||
"updated_at" timestamptz(6) DEFAULT now(),
|
||||
"evaluation_point_groups_pid" int4,
|
||||
"score" numeric(5,2) DEFAULT 0.00
|
||||
)
|
||||
;
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."id" IS '主键,自增';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."code" IS '评查点编码,唯一且非空';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."name" IS '评查点名称,非空';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."evaluation_point_groups_id" IS '所属分组ID,外键引用evaluation_point_groups表';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."risk" IS '风险等级,非空(高/中/低)';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."description" IS '评查点描述,可为空';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."is_enabled" IS '是否启用,默认true';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."references_laws" IS '引用法典,JSONB格式,非空';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."extraction_config" IS '抽取配置,JSONB格式,非空';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."evaluation_config" IS '评查设置,JSONB格式,非空';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."pass_message" IS '通过提示,可为空';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."fail_message" IS '不通过提示,可为空';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."suggestion_message" IS '建议信息,可为空';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."suggestion_message_type" IS '建议信息类型,默认warning(info/warning/error)';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."post_action" IS '评查后动作类型,可为空(none/manual/replace)';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."action_config" IS '动作配置,可为空';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."created_at" IS '创建时间,带时区,默认当前时间';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."updated_at" IS '更新时间,带时区,默认当前时间';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."evaluation_point_groups_pid" IS '所属分组PID,外键引用evaluation_point_groups表';
|
||||
COMMENT ON COLUMN "public"."evaluation_points"."score" IS '评查点得分';
|
||||
COMMENT ON TABLE "public"."evaluation_points" IS '评查点表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Triggers structure for table evaluation_points
|
||||
-- ----------------------------
|
||||
CREATE TRIGGER "update_evaluation_points_updated_at" BEFORE UPDATE ON "public"."evaluation_points"
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE "public"."update_updated_at_column"();
|
||||
|
||||
-- ----------------------------
|
||||
-- Uniques structure for table evaluation_points
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."evaluation_points" ADD CONSTRAINT "evaluation_points_code_key" UNIQUE ("code");
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table evaluation_points
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."evaluation_points" ADD CONSTRAINT "evaluation_points_pkey" PRIMARY KEY ("id");
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 智慧法务
|
||||
Source Server Type : PostgreSQL
|
||||
Source Server Version : 170005
|
||||
Source Host : nas.7bm.co:54302
|
||||
Source Catalog : docauditai
|
||||
Source Schema : public
|
||||
|
||||
Target Server Type : PostgreSQL
|
||||
Target Server Version : 170005
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 09/07/2025 10:25:50
|
||||
*/
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for evaluation_results
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "public"."evaluation_results";
|
||||
CREATE TABLE "public"."evaluation_results" (
|
||||
"id" int4 NOT NULL DEFAULT nextval('evaluation_results_id_seq'::regclass),
|
||||
"document_id" int4 NOT NULL,
|
||||
"evaluation_point_id" int4 NOT NULL,
|
||||
"status" varchar(20) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"extracted_results" jsonb NOT NULL,
|
||||
"rules_results" jsonb NOT NULL,
|
||||
"evaluated_results" jsonb NOT NULL,
|
||||
"created_at" timestamptz(6) DEFAULT now(),
|
||||
"updated_at" timestamptz(6) DEFAULT now(),
|
||||
"evaluated_point_results_log" jsonb
|
||||
)
|
||||
;
|
||||
COMMENT ON COLUMN "public"."evaluation_results"."id" IS '主键,自增';
|
||||
COMMENT ON COLUMN "public"."evaluation_results"."document_id" IS '文档ID,外键引用documents表,非空';
|
||||
COMMENT ON COLUMN "public"."evaluation_results"."evaluation_point_id" IS '评查点ID,外键引用evaluation_points表,非空';
|
||||
COMMENT ON COLUMN "public"."evaluation_results"."status" IS '结果状态,非空(pending/extracted/evaluated/failed)';
|
||||
COMMENT ON COLUMN "public"."evaluation_results"."extracted_results" IS '抽取结果,JSONB格式,非空';
|
||||
COMMENT ON COLUMN "public"."evaluation_results"."rules_results" IS '规则判断结果,JSONB格式,非空';
|
||||
COMMENT ON COLUMN "public"."evaluation_results"."evaluated_results" IS '评查结果,JSONB格式,非空';
|
||||
COMMENT ON COLUMN "public"."evaluation_results"."created_at" IS '创建时间,带时区,默认当前时间';
|
||||
COMMENT ON COLUMN "public"."evaluation_results"."updated_at" IS '更新时间,带时区,默认当前时间';
|
||||
COMMENT ON COLUMN "public"."evaluation_results"."evaluated_point_results_log" IS '记录每个评查点规则的评查记录';
|
||||
COMMENT ON TABLE "public"."evaluation_results" IS '评查点结果表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Triggers structure for table evaluation_results
|
||||
-- ----------------------------
|
||||
CREATE TRIGGER "update_evaluation_results_updated_at" BEFORE UPDATE ON "public"."evaluation_results"
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE "public"."update_updated_at_column"();
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table evaluation_results
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."evaluation_results" ADD CONSTRAINT "evaluation_results_pkey" PRIMARY KEY ("id");
|
||||
|
||||
-- ----------------------------
|
||||
-- Foreign Keys structure for table evaluation_results
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."evaluation_results" ADD CONSTRAINT "evaluation_results_evaluation_point_id_fkey" FOREIGN KEY ("evaluation_point_id") REFERENCES "public"."evaluation_points" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 智慧法务
|
||||
Source Server Type : PostgreSQL
|
||||
Source Server Version : 170005
|
||||
Source Host : nas.7bm.co:54302
|
||||
Source Catalog : docauditai
|
||||
Source Schema : public
|
||||
|
||||
Target Server Type : PostgreSQL
|
||||
Target Server Version : 170005
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 16/07/2025 21:59:28
|
||||
*/
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for scoring_proposals
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "public"."scoring_proposals";
|
||||
CREATE TABLE "public"."scoring_proposals" (
|
||||
"id" int4 NOT NULL DEFAULT nextval('scoring_proposals_id_seq'::regclass),
|
||||
"evaluation_result_id" int4 NOT NULL,
|
||||
"proposer_id" int4 NOT NULL,
|
||||
"proposed_score" numeric(10,2) NOT NULL,
|
||||
"reason" text COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"status" varchar(50) COLLATE "pg_catalog"."default" NOT NULL DEFAULT 'pending_review'::character varying,
|
||||
"created_at" timestamptz(6) NOT NULL DEFAULT now(),
|
||||
"updated_at" timestamptz(6) NOT NULL DEFAULT now(),
|
||||
"document_id" int4 NOT NULL
|
||||
)
|
||||
;
|
||||
COMMENT ON COLUMN "public"."scoring_proposals"."id" IS '计分提案的唯一标识符。';
|
||||
COMMENT ON COLUMN "public"."scoring_proposals"."evaluation_result_id" IS '关联的评查结果ID,外键引用 evaluation_results 表。';
|
||||
COMMENT ON COLUMN "public"."scoring_proposals"."proposer_id" IS '提出提案的用户ID,外键引用 users 表。';
|
||||
COMMENT ON COLUMN "public"."scoring_proposals"."proposed_score" IS '提案中建议的修正分数。';
|
||||
COMMENT ON COLUMN "public"."scoring_proposals"."reason" IS '修改分数的理由说明。';
|
||||
COMMENT ON COLUMN "public"."scoring_proposals"."status" IS '提案的当前状态:待审核、已批准或已否决。';
|
||||
COMMENT ON COLUMN "public"."scoring_proposals"."created_at" IS '提案创建的时间戳。';
|
||||
COMMENT ON COLUMN "public"."scoring_proposals"."updated_at" IS '提案最后更新的时间戳。';
|
||||
COMMENT ON COLUMN "public"."scoring_proposals"."document_id" IS '关联的文档ID,用于快速查询和统计';
|
||||
COMMENT ON TABLE "public"."scoring_proposals" IS '存储用户对评查结果提出的计分修改提案。';
|
||||
|
||||
-- ----------------------------
|
||||
-- Indexes structure for table scoring_proposals
|
||||
-- ----------------------------
|
||||
CREATE INDEX "idx_scoring_proposals_document_id" ON "public"."scoring_proposals" USING btree (
|
||||
"document_id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_scoring_proposals_document_status" ON "public"."scoring_proposals" USING btree (
|
||||
"document_id" "pg_catalog"."int4_ops" ASC NULLS LAST,
|
||||
"status" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_scoring_proposals_evaluation_result_id" ON "public"."scoring_proposals" USING btree (
|
||||
"evaluation_result_id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_scoring_proposals_proposer_id" ON "public"."scoring_proposals" USING btree (
|
||||
"proposer_id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE UNIQUE INDEX "uq_pending_proposal" ON "public"."scoring_proposals" USING btree (
|
||||
"evaluation_result_id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
) WHERE status::text = 'pending_review'::text;
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table scoring_proposals
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."scoring_proposals" ADD CONSTRAINT "scoring_proposals_pkey" PRIMARY KEY ("id");
|
||||
|
||||
-- ----------------------------
|
||||
-- Foreign Keys structure for table scoring_proposals
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."scoring_proposals" ADD CONSTRAINT "scoring_proposals_evaluation_result_id_fkey" FOREIGN KEY ("evaluation_result_id") REFERENCES "public"."evaluation_results" ("id") ON DELETE CASCADE ON UPDATE NO ACTION;
|
||||
ALTER TABLE "public"."scoring_proposals" ADD CONSTRAINT "scoring_proposals_proposer_id_fkey" FOREIGN KEY ("proposer_id") REFERENCES "public"."users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION;
|
||||
@@ -0,0 +1,82 @@
|
||||
CREATE OR REPLACE FUNCTION "public"."get_review_files_with_details"("p_keyword" text=NULL::text, "p_typeid" _int4=NULL::integer[], "p_evaluations_status" int4=NULL::integer, "p_date_from" date=NULL::date, "p_date_to" date=NULL::date, "p_sort_order" text='created_at_desc'::text, "p_page" int4=1, "p_page_size" int4=10)
|
||||
RETURNS TABLE("id" int4, "status" varchar, "path" varchar, "file_name" varchar, "file_code" varchar, "file_type_name" varchar, "file_type_id" int4, "file_size" int4, "upload_time" timestamptz, "created_at" timestamptz, "evaluations_status" int4, "audit_status" int4, "created_by_user_id" int4, "issue_count" int8, "total_score" numeric, "pass_count" int8, "warning_count" int8, "fail_count" int8, "manual_count" int8, "issues" jsonb) AS $BODY$
|
||||
DECLARE
|
||||
offset_val integer;
|
||||
sort_column text;
|
||||
sort_direction text;
|
||||
BEGIN
|
||||
offset_val := (p_page - 1) * p_page_size;
|
||||
|
||||
SELECT
|
||||
CASE
|
||||
WHEN p_sort_order = 'upload_time_asc' THEN 'created_at'
|
||||
WHEN p_sort_order = 'upload_time_desc' THEN 'created_at'
|
||||
WHEN p_sort_order = 'issue_count_asc' THEN 'issue_count'
|
||||
WHEN p_sort_order = 'issue_count_desc' THEN 'issue_count'
|
||||
ELSE 'created_at' -- 默认排序字段
|
||||
END,
|
||||
CASE
|
||||
WHEN p_sort_order LIKE '%_asc' THEN 'ASC'
|
||||
ELSE 'DESC'
|
||||
END
|
||||
INTO sort_column, sort_direction;
|
||||
|
||||
RETURN QUERY EXECUTE format('
|
||||
WITH doc_agg AS (
|
||||
SELECT
|
||||
er.document_id,
|
||||
COUNT(*) FILTER (WHERE (er.evaluated_results->>''result'')::boolean = false) AS issue_count,
|
||||
SUM(ep.score) FILTER (WHERE (er.evaluated_results->>''result'')::boolean = true) AS total_score,
|
||||
COUNT(*) FILTER (WHERE (er.evaluated_results->>''result'')::boolean = true) AS pass_count,
|
||||
COUNT(*) FILTER (WHERE (er.evaluated_results->>''result'')::boolean = false AND (ep.suggestion_message_type = ''warning'' OR ep.suggestion_message_type = ''info'')) AS warning_count,
|
||||
COUNT(*) FILTER (WHERE (er.evaluated_results->>''result'')::boolean = false AND ep.suggestion_message_type = ''error'') AS fail_count,
|
||||
COUNT(*) FILTER (WHERE ep.post_action = ''manual'') AS manual_count,
|
||||
jsonb_agg(
|
||||
jsonb_build_object(
|
||||
''severity'', ep.suggestion_message_type,
|
||||
''message'', er.evaluated_results->>''message''
|
||||
)
|
||||
) FILTER (WHERE (er.evaluated_results->>''result'')::boolean = false) AS issues
|
||||
FROM evaluation_results er
|
||||
JOIN evaluation_points ep ON er.evaluation_point_id = ep.id
|
||||
GROUP BY er.document_id
|
||||
)
|
||||
SELECT
|
||||
d.id,
|
||||
d.status,
|
||||
d.path,
|
||||
d.name AS file_name,
|
||||
d.document_number AS file_code,
|
||||
dt.name AS file_type_name,
|
||||
d.type_id AS file_type_id,
|
||||
d.file_size,
|
||||
d.upload_time::timestamptz,
|
||||
d.created_at,
|
||||
d.evaluations_status,
|
||||
d.audit_status,
|
||||
d.user_id AS created_by_user_id,
|
||||
COALESCE(agg.issue_count, 0) AS issue_count,
|
||||
COALESCE(agg.total_score, 0) AS total_score,
|
||||
COALESCE(agg.pass_count, 0) AS pass_count,
|
||||
COALESCE(agg.warning_count, 0) AS warning_count,
|
||||
COALESCE(agg.fail_count, 0) AS fail_count,
|
||||
COALESCE(agg.manual_count, 0) AS manual_count,
|
||||
agg.issues
|
||||
FROM documents d
|
||||
LEFT JOIN document_types dt ON d.type_id = dt.id
|
||||
LEFT JOIN doc_agg agg ON d.id = agg.document_id
|
||||
WHERE
|
||||
($1 IS NULL OR (d.name ILIKE ''%%'' || $1 || ''%%'' OR d.document_number ILIKE ''%%'' || $1 || ''%%'')) AND
|
||||
($2 IS NULL OR d.type_id = ANY($2)) AND
|
||||
($3 IS NULL OR d.evaluations_status = $3) AND
|
||||
($4 IS NULL OR d.created_at >= $4) AND
|
||||
($5 IS NULL OR d.created_at < ($5 + INTERVAL ''1 day''))
|
||||
ORDER BY %I %s
|
||||
LIMIT $6 OFFSET $7
|
||||
', sort_column, sort_direction)
|
||||
USING p_keyword, p_typeid, p_evaluations_status, p_date_from, p_date_to, p_page_size, offset_val;
|
||||
END;
|
||||
$BODY$
|
||||
LANGUAGE plpgsql VOLATILE
|
||||
COST 100
|
||||
ROWS 1000;
|
||||
Reference in New Issue
Block a user