265 lines
18 KiB
SQL
265 lines
18 KiB
SQL
-- =============================
|
||
-- 招投标智能体业务模块
|
||
-- 支持:招标文件管理、投标文件生成、评分分析、流程跟踪
|
||
-- =============================
|
||
CREATE SCHEMA IF NOT EXISTS bidding;
|
||
|
||
-- 招标项目表
|
||
DROP TABLE IF EXISTS bidding.tb_bidding_project CASCADE;
|
||
CREATE TABLE bidding.tb_bidding_project (
|
||
optsn VARCHAR(50) NOT NULL, -- 流水号
|
||
project_id VARCHAR(50) NOT NULL, -- 项目ID
|
||
project_no VARCHAR(100) NOT NULL, -- 项目编号
|
||
project_name VARCHAR(500) NOT NULL, -- 项目名称
|
||
project_type VARCHAR(50) NOT NULL, -- 项目类型:public-公开招标/invitation-邀请招标/competitive_negotiation-竞争性谈判
|
||
industry VARCHAR(100), -- 所属行业
|
||
source_platform VARCHAR(100), -- 来源平台(如:政府采购网、企业官网等)
|
||
source_url VARCHAR(500), -- 来源URL
|
||
publish_date timestamptz, -- 发布日期
|
||
deadline timestamptz, -- 投标截止日期
|
||
opening_date timestamptz, -- 开标日期
|
||
budget_amount DECIMAL(18,2), -- 预算金额
|
||
currency VARCHAR(10) DEFAULT 'CNY', -- 货币单位
|
||
project_status VARCHAR(30) NOT NULL DEFAULT 'collecting', -- 项目状态:collecting-收集中/analyzing-分析中/preparing-准备投标/submitted-已提交/opened-已开标/won-中标/lost-未中标/abandoned-放弃
|
||
winning_status VARCHAR(30), -- 中标状态:pending-待定/won-中标/lost-未中标
|
||
winning_amount DECIMAL(18,2), -- 中标金额
|
||
client_name VARCHAR(255), -- 客户名称
|
||
client_contact VARCHAR(100), -- 客户联系方式
|
||
contact_person VARCHAR(100), -- 联系人
|
||
project_location VARCHAR(500), -- 项目地点
|
||
description TEXT, -- 项目描述
|
||
keywords TEXT[], -- 关键词数组
|
||
metadata JSONB DEFAULT NULL, -- 项目元数据
|
||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||
responsible_user VARCHAR(50), -- 负责人
|
||
team_members VARCHAR(50)[], -- 团队成员数组
|
||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||
PRIMARY KEY (project_id),
|
||
UNIQUE (optsn),
|
||
UNIQUE (project_no)
|
||
);
|
||
|
||
CREATE INDEX idx_project_status ON bidding.tb_bidding_project(project_status) WHERE deleted = false;
|
||
CREATE INDEX idx_project_deadline ON bidding.tb_bidding_project(deadline) WHERE deleted = false;
|
||
CREATE INDEX idx_project_dept ON bidding.tb_bidding_project(dept_path) WHERE deleted = false;
|
||
CREATE INDEX idx_project_responsible ON bidding.tb_bidding_project(responsible_user) WHERE deleted = false;
|
||
|
||
COMMENT ON TABLE bidding.tb_bidding_project IS '招标项目表';
|
||
COMMENT ON COLUMN bidding.tb_bidding_project.project_status IS '项目状态:collecting/analyzing/preparing/submitted/opened/won/lost/abandoned';
|
||
|
||
-- 招标文件表
|
||
DROP TABLE IF EXISTS bidding.tb_bidding_document CASCADE;
|
||
CREATE TABLE bidding.tb_bidding_document (
|
||
optsn VARCHAR(50) NOT NULL, -- 流水号
|
||
doc_id VARCHAR(50) NOT NULL, -- 文档ID
|
||
project_id VARCHAR(50) NOT NULL, -- 所属项目ID
|
||
doc_type VARCHAR(50) NOT NULL, -- 文档类型:tender-招标文件/technical-技术标/commercial-商务标/clarification-澄清文件/other-其他
|
||
doc_name VARCHAR(500) NOT NULL, -- 文档名称
|
||
file_id VARCHAR(50), -- 关联文件表ID
|
||
file_path VARCHAR(500), -- 文件路径
|
||
file_size BIGINT, -- 文件大小
|
||
mime_type VARCHAR(100), -- MIME类型
|
||
version VARCHAR(20) DEFAULT '1.0', -- 版本号
|
||
language VARCHAR(20) DEFAULT 'zh-CN', -- 语言
|
||
page_count INTEGER, -- 页数
|
||
parse_status VARCHAR(30) DEFAULT 'pending', -- 解析状态:pending-待解析/parsing-解析中/completed-已完成/failed-失败
|
||
parse_result JSONB, -- 解析结果(JSON格式:提取的要素、表格、图纸等)
|
||
extraction_data JSONB, -- 提取的结构化数据
|
||
ai_analysis TEXT, -- AI分析结果
|
||
upload_date timestamptz DEFAULT now(), -- 上传日期
|
||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||
PRIMARY KEY (doc_id),
|
||
UNIQUE (optsn),
|
||
FOREIGN KEY (project_id) REFERENCES bidding.tb_bidding_project(project_id)
|
||
);
|
||
|
||
CREATE INDEX idx_doc_project ON bidding.tb_bidding_document(project_id) WHERE deleted = false;
|
||
CREATE INDEX idx_doc_type ON bidding.tb_bidding_document(doc_type) WHERE deleted = false;
|
||
|
||
COMMENT ON TABLE bidding.tb_bidding_document IS '招标文件表';
|
||
COMMENT ON COLUMN bidding.tb_bidding_document.parse_status IS '解析状态:pending/parsing/completed/failed';
|
||
|
||
-- 招标要素提取表
|
||
DROP TABLE IF EXISTS bidding.tb_bidding_requirement CASCADE;
|
||
CREATE TABLE bidding.tb_bidding_requirement (
|
||
optsn VARCHAR(50) NOT NULL, -- 流水号
|
||
req_id VARCHAR(50) NOT NULL, -- 要素ID
|
||
project_id VARCHAR(50) NOT NULL, -- 所属项目ID
|
||
doc_id VARCHAR(50), -- 来源文档ID
|
||
req_category VARCHAR(50) NOT NULL, -- 要素类别:commercial-商务要素/technical-技术参数/veto-否决项/qualification-资质要求/delivery-交付要求/payment-付款条件/scoring-评分标准
|
||
req_name VARCHAR(255) NOT NULL, -- 要素名称
|
||
req_content TEXT NOT NULL, -- 要素内容
|
||
req_value VARCHAR(500), -- 要素值
|
||
is_mandatory BOOLEAN DEFAULT false, -- 是否必填
|
||
is_veto BOOLEAN DEFAULT false, -- 是否为否决项
|
||
priority INTEGER DEFAULT 0, -- 优先级
|
||
extraction_method VARCHAR(30) DEFAULT 'ai', -- 提取方式:ai-AI提取/manual-人工录入
|
||
confidence_score DECIMAL(5,4), -- 置信度分数(0-1)
|
||
source_location JSONB, -- 来源位置(页码、段落等)
|
||
compliance_status VARCHAR(30), -- 合规状态:compliant-符合/non_compliant-不符合/pending-待确认
|
||
response_content TEXT, -- 响应内容(我方的应答)
|
||
notes TEXT, -- 备注
|
||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||
PRIMARY KEY (req_id),
|
||
UNIQUE (optsn),
|
||
FOREIGN KEY (project_id) REFERENCES bidding.tb_bidding_project(project_id)
|
||
);
|
||
|
||
CREATE INDEX idx_req_project ON bidding.tb_bidding_requirement(project_id) WHERE deleted = false;
|
||
CREATE INDEX idx_req_category ON bidding.tb_bidding_requirement(req_category) WHERE deleted = false;
|
||
CREATE INDEX idx_req_veto ON bidding.tb_bidding_requirement(is_veto) WHERE deleted = false AND is_veto = true;
|
||
|
||
COMMENT ON TABLE bidding.tb_bidding_requirement IS '招标要素提取表';
|
||
COMMENT ON COLUMN bidding.tb_bidding_requirement.req_category IS '要素类别:commercial/technical/veto/qualification/delivery/payment/scoring';
|
||
|
||
-- 投标文件生成表
|
||
DROP TABLE IF EXISTS bidding.tb_bid_response CASCADE;
|
||
CREATE TABLE bidding.tb_bid_response (
|
||
optsn VARCHAR(50) NOT NULL, -- 流水号
|
||
response_id VARCHAR(50) NOT NULL, -- 响应文件ID
|
||
project_id VARCHAR(50) NOT NULL, -- 所属项目ID
|
||
response_type VARCHAR(50) NOT NULL, -- 响应类型:technical-技术标/commercial-商务标/comprehensive-综合标
|
||
doc_name VARCHAR(500) NOT NULL, -- 文档名称
|
||
outline TEXT, -- 文档大纲(JSON格式)
|
||
content TEXT, -- 文档内容
|
||
generation_method VARCHAR(30) DEFAULT 'ai', -- 生成方式:ai-AI生成/template-模板生成/manual-人工编写
|
||
template_id VARCHAR(50), -- 使用的模板ID
|
||
ai_model VARCHAR(100), -- 使用的AI模型
|
||
generation_status VARCHAR(30) DEFAULT 'draft', -- 生成状态:draft-草稿/reviewing-审核中/approved-已批准/rejected-已拒绝/submitted-已提交
|
||
file_id VARCHAR(50), -- 生成的文件ID
|
||
file_path VARCHAR(500), -- 文件路径
|
||
version VARCHAR(20) DEFAULT '1.0', -- 版本号
|
||
parent_version_id VARCHAR(50), -- 父版本ID
|
||
review_comments TEXT, -- 审核意见
|
||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||
PRIMARY KEY (response_id),
|
||
UNIQUE (optsn),
|
||
FOREIGN KEY (project_id) REFERENCES bidding.tb_bidding_project(project_id)
|
||
);
|
||
|
||
CREATE INDEX idx_response_project ON bidding.tb_bid_response(project_id) WHERE deleted = false;
|
||
CREATE INDEX idx_response_status ON bidding.tb_bid_response(generation_status) WHERE deleted = false;
|
||
|
||
COMMENT ON TABLE bidding.tb_bid_response IS '投标文件生成表';
|
||
COMMENT ON COLUMN bidding.tb_bid_response.generation_status IS '生成状态:draft/reviewing/approved/rejected/submitted';
|
||
|
||
-- 评分规则表
|
||
DROP TABLE IF EXISTS bidding.tb_bidding_scoring_rule CASCADE;
|
||
CREATE TABLE bidding.tb_bidding_scoring_rule (
|
||
optsn VARCHAR(50) NOT NULL, -- 流水号
|
||
rule_id VARCHAR(50) NOT NULL, -- 规则ID
|
||
project_id VARCHAR(50) NOT NULL, -- 所属项目ID
|
||
rule_category VARCHAR(50) NOT NULL, -- 规则类别:technical-技术分/commercial-商务分/price-价格分/credit-信誉分
|
||
rule_name VARCHAR(255) NOT NULL, -- 规则名称
|
||
rule_description TEXT, -- 规则描述
|
||
max_score DECIMAL(10,2) NOT NULL, -- 最高分值
|
||
weight DECIMAL(5,4), -- 权重(0-1)
|
||
scoring_method VARCHAR(50), -- 评分方法:fixed-固定分值/range-区间评分/formula-公式计算
|
||
calculation_formula TEXT, -- 计算公式
|
||
evaluation_criteria TEXT, -- 评分标准
|
||
our_score DECIMAL(10,2), -- 我方得分(预估)
|
||
score_analysis TEXT, -- 得分分析
|
||
optimization_advice TEXT, -- 优化建议
|
||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||
PRIMARY KEY (rule_id),
|
||
UNIQUE (optsn),
|
||
FOREIGN KEY (project_id) REFERENCES bidding.tb_bidding_project(project_id)
|
||
);
|
||
|
||
CREATE INDEX idx_rule_project ON bidding.tb_bidding_scoring_rule(project_id) WHERE deleted = false;
|
||
|
||
COMMENT ON TABLE bidding.tb_bidding_scoring_rule IS '评分规则表';
|
||
|
||
-- 项目流程节点表
|
||
DROP TABLE IF EXISTS bidding.tb_bidding_process CASCADE;
|
||
CREATE TABLE bidding.tb_bidding_process (
|
||
optsn VARCHAR(50) NOT NULL, -- 流水号
|
||
process_id VARCHAR(50) NOT NULL, -- 流程节点ID
|
||
project_id VARCHAR(50) NOT NULL, -- 所属项目ID
|
||
node_name VARCHAR(255) NOT NULL, -- 节点名称
|
||
node_type VARCHAR(50) NOT NULL, -- 节点类型:collection-文件收集/analysis-需求分析/preparation-文件准备/review-内部审核/submission-投标提交/opening-开标/result-结果通知
|
||
node_order INTEGER NOT NULL, -- 节点顺序
|
||
node_status VARCHAR(30) DEFAULT 'pending', -- 节点状态:pending-待处理/in_progress-进行中/completed-已完成/skipped-已跳过
|
||
planned_start_time timestamptz, -- 计划开始时间
|
||
planned_end_time timestamptz, -- 计划结束时间
|
||
actual_start_time timestamptz, -- 实际开始时间
|
||
actual_end_time timestamptz, -- 实际结束时间
|
||
responsible_user VARCHAR(50), -- 负责人
|
||
participants VARCHAR(50)[], -- 参与人员数组
|
||
notes TEXT, -- 节点备注
|
||
attachments VARCHAR(50)[], -- 附件ID数组
|
||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||
PRIMARY KEY (process_id),
|
||
UNIQUE (optsn),
|
||
FOREIGN KEY (project_id) REFERENCES bidding.tb_bidding_project(project_id)
|
||
);
|
||
|
||
CREATE INDEX idx_process_project ON bidding.tb_bidding_process(project_id, node_order) WHERE deleted = false;
|
||
|
||
COMMENT ON TABLE bidding.tb_bidding_process IS '项目流程节点表';
|
||
COMMENT ON COLUMN bidding.tb_bidding_process.node_type IS '节点类型:collection/analysis/preparation/review/submission/opening/result';
|
||
|
||
-- 投标模板表
|
||
DROP TABLE IF EXISTS bidding.tb_bid_template CASCADE;
|
||
CREATE TABLE bidding.tb_bid_template (
|
||
optsn VARCHAR(50) NOT NULL, -- 流水号
|
||
template_id VARCHAR(50) NOT NULL, -- 模板ID
|
||
template_name VARCHAR(255) NOT NULL, -- 模板名称
|
||
template_type VARCHAR(50) NOT NULL, -- 模板类型:technical-技术标/commercial-商务标/comprehensive-综合标
|
||
industry VARCHAR(100), -- 适用行业
|
||
template_content TEXT, -- 模板内容
|
||
outline_structure JSONB, -- 大纲结构(JSON格式)
|
||
file_id VARCHAR(50), -- 模板文件ID
|
||
usage_count INTEGER DEFAULT 0, -- 使用次数
|
||
is_default BOOLEAN DEFAULT false, -- 是否默认模板
|
||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||
status VARCHAR(20) DEFAULT 'active', -- 状态:active-激活/inactive-停用
|
||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||
PRIMARY KEY (template_id),
|
||
UNIQUE (optsn)
|
||
);
|
||
|
||
CREATE INDEX idx_template_type ON bidding.tb_bid_template(template_type) WHERE deleted = false;
|
||
|
||
COMMENT ON TABLE bidding.tb_bid_template IS '投标模板表';
|