-- 数据库表结构设计
-- MySQL 8

-- 合同表
CREATE TABLE IF NOT EXISTS `contract` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '合同ID',
  `name` VARCHAR(255) NOT NULL COMMENT '合同名称',
  `contract_no` VARCHAR(100) DEFAULT NULL COMMENT '合同编号',
  `contract_type` VARCHAR(100) NOT NULL COMMENT '合同类型',
  `amount` DECIMAL(18,2) DEFAULT NULL COMMENT '合同金额',
  `sign_date` DATE DEFAULT NULL COMMENT '签订日期',
  `submitter` VARCHAR(100) NOT NULL COMMENT '审查提交人',
  `document_uploader` VARCHAR(100) DEFAULT NULL COMMENT '文档上传人',
  `department` VARCHAR(100) NOT NULL COMMENT '所属部门',
  `query_source` VARCHAR(100) NOT NULL COMMENT '查询来源',
  `deposit_ratio` DECIMAL(5,2) DEFAULT NULL COMMENT '定金比例',
  `payment_method` VARCHAR(100) DEFAULT NULL COMMENT '付款方式',
  `penalty_ratio` DECIMAL(5,2) DEFAULT NULL COMMENT '罚款比例',
  `delivery_period` INT(11) DEFAULT NULL COMMENT '货期(天)',
  `upload_time` DATETIME NOT NULL COMMENT '上传时间',
  `finish_time` DATETIME NOT NULL COMMENT '完结时间',
  `high_risk` INT(11) DEFAULT 0 COMMENT '高风险数量',
  `medium_risk` INT(11) DEFAULT 0 COMMENT '中风险数量',
  `low_risk` INT(11) DEFAULT 0 COMMENT '低风险数量',
  `status` VARCHAR(50) NOT NULL COMMENT '状态',
  `source_file` VARCHAR(255) DEFAULT NULL COMMENT '源文件路径',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  INDEX `idx_department` (`department`),
  INDEX `idx_status` (`status`),
  INDEX `idx_upload_time` (`upload_time`),
  INDEX `idx_contract_type` (`contract_type`),
  INDEX `idx_query_source` (`query_source`),
  INDEX `idx_submitter` (`submitter`),
  INDEX `idx_document_uploader` (`document_uploader`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='合同表';

-- 合同风险表
CREATE TABLE IF NOT EXISTS `contract_risk` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '风险ID',
  `contract_id` BIGINT(20) NOT NULL COMMENT '合同ID',
  `rule_no` VARCHAR(50) DEFAULT NULL COMMENT '规则编号',
  `rule_name` VARCHAR(255) DEFAULT NULL COMMENT '规则名称',
  `risk_level` VARCHAR(50) NOT NULL COMMENT '风险等级',
  `regulation_name` VARCHAR(255) NOT NULL COMMENT '法规名称',
  `regulation_clause` VARCHAR(255) NOT NULL COMMENT '法规条目',
  `violation_clause` TEXT NOT NULL COMMENT '违规条款 (原文摘要)',
  `violation_basis` TEXT NOT NULL COMMENT '违规依据',
  `suggestion` TEXT NOT NULL COMMENT '修改建议',
  `status` VARCHAR(50) DEFAULT 'normal' COMMENT '风险状态(normal:正常, ignored:忽略)',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  INDEX `idx_contract_id` (`contract_id`),
  INDEX `idx_risk_level` (`risk_level`),
  INDEX `idx_rule_no` (`rule_no`),
  INDEX `idx_status` (`status`),
  FOREIGN KEY (`contract_id`) REFERENCES `contract` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='合同风险表';

-- 规章制度表
CREATE TABLE IF NOT EXISTS `regulation` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '法规ID',
  `name` VARCHAR(255) NOT NULL COMMENT '法规名称',
  `clause` VARCHAR(255) NOT NULL COMMENT '法规条目',
  `content` TEXT DEFAULT NULL COMMENT '法规内容',
  `effective_date` DATE DEFAULT NULL COMMENT '生效日期',
  `status` VARCHAR(50) DEFAULT 'enabled' COMMENT '状态(enabled:启用, disabled:禁用)',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  INDEX `idx_name` (`name`),
  INDEX `idx_clause` (`clause`),
  INDEX `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='规章制度表';

-- 审查记录表
CREATE TABLE IF NOT EXISTS `review_record` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '记录ID',
  `contract_id` BIGINT(20) NOT NULL COMMENT '合同ID',
  `reviewer` VARCHAR(100) NOT NULL COMMENT '审查人',
  `review_time` DATETIME NOT NULL COMMENT '审查时间',
  `review_result` TEXT DEFAULT NULL COMMENT '审查结果',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`),
  INDEX `idx_contract_id` (`contract_id`),
  INDEX `idx_reviewer` (`reviewer`),
  FOREIGN KEY (`contract_id`) REFERENCES `contract` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审查记录表';

-- 清空现有数据
DELETE FROM contract_risk;
DELETE FROM review_record;
DELETE FROM contract;
DELETE FROM regulation;

-- 插入公司内部规则数据
INSERT INTO `regulation` (`name`, `clause`, `content`, `effective_date`) VALUES
('《公司销售合同业务规则》', '规则 CR01', '定金条款：定金比例必须达到或超过30%，低于30%视为违规。', '2025-01-01'),
('《公司销售合同业务规则》', '规则 CR02', '支付条款：禁止使用商业承兑汇票，仅允许使用银行承兑汇票。', '2025-01-01'),
('《公司销售合同业务规则》', '规则 CR03', '违约金条款：违约金比例不得超过5%，超过5%视为违规。', '2025-01-01'),
('《公司销售合同业务规则》', '规则 CR04', '货期条款：货期表述必须明确，不得使用模糊表述。', '2025-01-01');

-- 插入合同数据
INSERT INTO `contract` (`id`, `name`, `contract_no`, `contract_type`, `amount`, `sign_date`, `submitter`, `document_uploader`, `department`, `query_source`, `deposit_ratio`, `payment_method`, `penalty_ratio`, `delivery_period`, `upload_time`, `finish_time`, `high_risk`, `medium_risk`, `low_risk`, `status`, `source_file`) VALUES
(1, '软件开发服务合同', 'RK-2026-001', '服务合同', 120000.00, '2026-01-20', '唐文', '唐文', '技术部', '直接查询', 20.00, '银行转账', 3.00, 60, '2026-01-15 09:30:00', '2026-01-18 16:45:00', 0, 1, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\1.doc'),
(2, '设备采购合同', 'CG-2026-001', '采购合同', 250000.00, '2026-01-15', '唐文', '唐文', '技术部', '知识库自动审查', 25.00, '银行转账', 5.00, 30, '2026-01-10 10:15:00', '2026-01-12 15:30:00', 1, 2, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\2.doc'),
(3, '技术咨询服务合同', 'ZX-2026-001', '服务合同', 80000.00, '2026-01-10', '唐文', '唐文', '技术部', '钉钉自动审查', 15.00, '银行转账', 4.00, 45, '2026-01-05 09:00:00', '2026-01-08 14:20:00', 0, 2, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\3.docx'),
(4, '产品销售合同', 'XS-2026-001', '销售合同', 300000.00, '2026-01-25', '唐文', '唐文', '技术部', '直接查询', 25.00, '商业承兑汇票', 6.00, 20, '2026-01-20 11:30:00', '2026-01-23 16:00:00', 0, 0, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\4.docx'),
(5, '租赁合同', 'ZL-2026-001', '租赁合同', 150000.00, '2026-01-05', '唐文', '唐文', '技术部', '知识库自动审查', 30.00, '银行转账', 5.00, 10, '2026-01-01 08:45:00', '2026-01-03 11:15:00', 0, 0, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\5.docx'),
(6, '软件开发合同（修订版）', 'RK-2026-002', '服务合同', 180000.00, '2026-02-01', '唐文', '唐文', '技术部', '钉钉自动审查', 25.00, '银行转账', 4.00, 90, '2026-01-25 14:00:00', '2026-01-28 17:30:00', 0, 0, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\6.doc'),
(7, '设备采购合同（补充协议）', 'CG-2026-002', '采购合同', 50000.00, '2026-01-22', '唐文', '唐文', '技术部', '直接查询', 20.00, '银行转账', 5.00, 15, '2026-01-18 10:30:00', '2026-01-20 15:45:00', 0, 0, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\7.doc'),
(8, '技术服务合同', 'FW-2026-001', '服务合同', 95000.00, '2026-01-18', '唐文', '唐文', '技术部', '知识库自动审查', 20.00, '银行转账', 3.00, 40, '2026-01-12 09:15:00', '2026-01-15 16:30:00', 0, 0, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\8.docx'),
(9, '产品销售合同（长期）', 'XS-2026-002', '销售合同', 500000.00, '2026-02-05', '唐文', '唐文', '市场部', '钉钉自动审查', 20.00, '银行转账', 5.00, 30, '2026-01-28 11:00:00', '2026-02-01 17:00:00', 0, 0, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\9.docx'),
(10, '软件开发框架合同', 'RK-2026-003', '服务合同', 350000.00, '2026-01-15', '唐文', '唐文', '技术部', '直接查询', 25.00, '银行转账', 4.00, 120, '2026-01-08 10:00:00', '2026-01-12 16:15:00', 0, 2, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\10.doc'),
(11, '设备采购框架合同', 'CG-2026-003', '采购合同', 400000.00, '2026-01-22', '唐文', '唐文', '市场部', '知识库自动审查', 30.00, '银行转账', 5.00, 25, '2026-01-16 09:30:00', '2026-01-19 15:30:00', 0, 2, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\11.doc'),
(12, '技术咨询框架合同', 'ZX-2026-002', '服务合同', 180000.00, '2026-01-28', '唐文', '唐文', '市场部', '钉钉自动审查', 20.00, '银行转账', 4.00, 60, '2026-01-22 14:30:00', '2026-01-25 16:45:00', 0, 2, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\12.doc'),
(13, '产品销售补充协议', 'XS-2026-003', '销售合同', 120000.00, '2026-02-05', '唐文', '唐文', '市场部', '直接查询', 15.00, '银行转账', 6.00, 15, '2026-01-30 10:15:00', '2026-02-03 15:15:00', 0, 0, 0, '已完成', 'e:\test\aozhipoc\contractReview\.trae\documents\13.doc');

-- 插入风险数据
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (1, 1, 'CR01', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR01', '合同签订后7日内，买方支付合同总金额的 25% 作为定金。', '定金比例(25%)低于公司风控红线(30%)', '将定金比例调整为 30%', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (2, 2, 'CR01', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR01', '合同双方签字盖章生效后，付定金 $20 \text{‰}$', '定金比例(2%)低于公司风控红线(30%)', '将定金比例调整为 30%', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (3, 2, 'CR02', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR02', '卖方确认本次合同总额的 $50%$ 接受买方使用承兑汇票支付', '支付方式模糊，未排除商承风险', '明确改为"银行承兑汇票"，并注明"不接受商业承兑汇票"', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (4, 2, 'CR03', '合同风险评估', '高危', '《公司销售合同业务规则》', '规则 CR03', '卖方每延迟交货一天，扣除合同总额的 $1%$，累计计算；安装调试延期每日扣 $0.1%$，亦无上限', '违约金无上限，且日罚1%远超5%风控红线', '建议对所有违约金条款统一设置 不超过合同总额5%的封顶限制', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (5, 3, 'CR01', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR01', '……支付合同总价的30%……作为预付款（其中$20%$为定金）；', '定金比例(20%)低于公司风控红线(30%)', '将定金比例调整为 30%（即预付款中定金部分应占合同总价的30%，而非20%）', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (6, 3, 'CR02', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR02', '……部分承兑 （金额： 000 ），承兑部分包含在提货款、到货款中。', '支付方式仅写"承兑"，未限定类型，存在商承风险', '明确改为"银行承兑汇票"，并注明"不接受商业承兑汇票"', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (7, 10, 'CR01', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR01', '……支付合同总价的 $30%$ 作为首付款（其中包含 $20%$ 的定金 + $10%$ 首期付款）……', '定金比例(20%)低于公司风控红线(30%)', '将定金比例调整为 30%（即首付款中定金部分应占合同总价的30%，而非20%）', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (8, 10, 'CR02', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR02', '……首付款：15%银行电汇，$15%$ 银行承兑；发货款、质保金：银行承兑……', '合同允许使用银行承兑汇票支付主要款项，违反公司拒收所有承兑（含银承）的内部风控要求', '明确删除"银行承兑"表述，全部改为"银行电汇"，或至少注明"不接受任何形式的承兑汇票"', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (9, 11, 'CR01', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR01', '……支付合同总价的 30% 作为首付款（其中包含 20% 的定金 + 10% 首期付款）……', '定金比例(20%)低于公司风控红线(30%)', '将定金比例调整为 30%（即定金应单独占合同总价的30%，不得与其他款项混同）', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (10, 11, 'CR02', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR02', '……首付款：15%银行电汇，15%银行承兑；发货款、质保金：银行承兑……', '公司内部风控政策已全面禁止接受承兑汇票（包括银行承兑），以规避票据风险与贴现成本', '全部支付方式改为"银行电汇"，或明确声明"不接受任何形式的承兑汇票（含银行承兑）"', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (11, 12, 'CR01', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR01', '……支付合同总价的 30% 作为首付款（其中包含 20% 的定金 + 10% 首期款）……', '定金比例(20%)低于公司强制风控红线(30%)', '将定金比例调整为 30%（即定金应单独占合同总价的30%，不得拆分或混同）', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 
INSERT INTO `contract_risk` (`id`, `contract_id`, `rule_no`, `rule_name`, `risk_level`, `regulation_name`, `regulation_clause`, `violation_clause`, `violation_basis`, `suggestion`, `status`, `created_at`, `updated_at`) VALUES (12, 12, 'CR02', '合同风险评估', '中危', '《公司销售合同业务规则》', '规则 CR02', '……首付款：15%银行电汇，15%银行承兑；发货款、质保金：银行承兑……', '公司内部风控政策已全面禁止承兑汇票（包括银行承兑），以规避票据兑付风险与资金成本', '全部支付方式改为"银行电汇"，或明确声明"不接受任何形式的承兑汇票（含银行承兑）"', 'normal', '2026-02-04 17:15:13', '2026-02-04 17:51:20'); 

-- 插入审查记录数据
INSERT INTO `review_record` (`contract_id`, `reviewer`, `review_time`, `review_result`) VALUES
(1, '唐文', '2026-01-18 16:45:00', '发现1个中风险点，已提出修改建议。'),
(2, '唐文', '2026-01-12 15:30:00', '发现3个风险点，其中1个高风险，2个中风险，已提出修改建议。'),
(3, '唐文', '2026-01-08 14:20:00', '发现2个中风险点，已提出修改建议。'),
(4, '唐文', '2026-01-23 16:00:00', '合同条款完整，无明显风险。'),
(5, '唐文', '2026-01-03 11:15:00', '租赁合同条款完整，符合法律规定。'),
(6, '唐文', '2026-01-28 17:30:00', '软件开发合同修订版条款合理，无风险。'),
(7, '唐文', '2026-01-20 15:45:00', '设备采购补充协议条款清晰，无风险。'),
(8, '唐文', '2026-01-15 16:30:00', '技术服务合同条款完整，无明显风险。'),
(9, '唐文', '2026-02-01 17:00:00', '产品销售合同（长期）条款完整，无风险。'),
(10, '唐文', '2026-01-12 16:15:00', '发现2个中风险点，已提出修改建议。'),
(11, '唐文', '2026-01-19 15:30:00', '发现2个中风险点，已提出修改建议。'),
(12, '唐文', '2026-01-25 16:45:00', '发现2个中风险点，已提出修改建议。'),
(13, '唐文', '2026-02-03 15:15:00', '产品销售补充协议条款完整，无风险。');