Files
fad_oa/sql/oa_ai_review.sql

93 lines
7.8 KiB
MySQL
Raw Normal View History

新增 AI 合同/简历审核功能(小米 MiMo 多模态大模型) 核心诉求:合同审核站在我方(德睿福)立场,找出不利条款并给出利好我方的 修改/补充建议;简历审核评估候选人与目标岗位的匹配度。 后端(ruoyi-oa): - 接入小米 MiMo(OpenAI 兼容 /chat/completions),mimo-v2.5 多模态模型 · MiMoProperties 绑定 application.yml mimo: 配置(base-url/api-key/model/...) · MiMoClient:text + multimodal(image_url base64) 两种调用,独立长超时 RestTemplate;mimo-v2.5 是推理模型,max-tokens 配 8192 留足思考额度 - DocumentParseUtil:PDF 文字(PDFBox)、Word(POI: docx XWPF / doc HWPF), 扫描版 PDF(提取文字过短)用 PDFRenderer 转 PNG 走多模态 - OaAiReview 实体 + BO/VO/Mapper/Service/Controller(/oa/aiReview) · analyze 上传解析→构建提示词→调用大模型→留存原件(OSS)→落库 · 合同/简历两套提示词;正则解析风险评级:高/中/低与匹配度评分:NN入库 · 提供 list/detail/delete - ruoyi-oa/pom.xml 增加 poi-ooxml、poi-scratchpad(Word 解析) - application.yml 增加 mimo: 配置块 前端(ruoyi-ui): - views/oa/aiReview/index.vue:类型切换(合同/简历)、拖拽上传(pdf/word)、 简历目标岗位输入、审核(loading)、Markdown 结果渲染、历史记录列表 - api/oa/aiReview.js:analyze 用 FormData,超时放宽到 5 分钟 SQL(已应用到生产库): - oa_ai_review 表;菜单挂信息下(menu_id 2063910000000000001),授权10个角色 已用真实接口端到端验证:合同审核输出利好我方意见、风险评级可正确解析。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 10:00:09 +08:00
-- =====================================================
-- AI 智能审核(合同 / 简历)
-- - 使用小米 MiMo 多模态大模型mimo-v2.5
-- - 合同:站在“我方”立场审查,找出不利条款 + 利好我方的修改建议
-- - 简历:评估候选人与目标岗位匹配度
-- 本脚本可重复执行(幂等)。
-- 注意sys_menu 主键为雪花ID非自增必须显式指定。
-- =====================================================
-- ---------------- 审核记录表 ----------------
CREATE TABLE IF NOT EXISTS `oa_ai_review` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`review_type` varchar(20) NOT NULL COMMENT '类型 contract合同 / resume简历',
`file_name` varchar(255) DEFAULT NULL COMMENT '原始文件名',
`oss_id` bigint(20) DEFAULT NULL COMMENT 'OSS文件ID原件留存',
`file_url` varchar(500) DEFAULT NULL COMMENT 'OSS文件地址',
`position` varchar(255) DEFAULT NULL COMMENT '简历目标岗位',
`requirements` varchar(1000) DEFAULT NULL COMMENT '本次审核的附加要求/审核重点',
新增 AI 合同/简历审核功能(小米 MiMo 多模态大模型) 核心诉求:合同审核站在我方(德睿福)立场,找出不利条款并给出利好我方的 修改/补充建议;简历审核评估候选人与目标岗位的匹配度。 后端(ruoyi-oa): - 接入小米 MiMo(OpenAI 兼容 /chat/completions),mimo-v2.5 多模态模型 · MiMoProperties 绑定 application.yml mimo: 配置(base-url/api-key/model/...) · MiMoClient:text + multimodal(image_url base64) 两种调用,独立长超时 RestTemplate;mimo-v2.5 是推理模型,max-tokens 配 8192 留足思考额度 - DocumentParseUtil:PDF 文字(PDFBox)、Word(POI: docx XWPF / doc HWPF), 扫描版 PDF(提取文字过短)用 PDFRenderer 转 PNG 走多模态 - OaAiReview 实体 + BO/VO/Mapper/Service/Controller(/oa/aiReview) · analyze 上传解析→构建提示词→调用大模型→留存原件(OSS)→落库 · 合同/简历两套提示词;正则解析风险评级:高/中/低与匹配度评分:NN入库 · 提供 list/detail/delete - ruoyi-oa/pom.xml 增加 poi-ooxml、poi-scratchpad(Word 解析) - application.yml 增加 mimo: 配置块 前端(ruoyi-ui): - views/oa/aiReview/index.vue:类型切换(合同/简历)、拖拽上传(pdf/word)、 简历目标岗位输入、审核(loading)、Markdown 结果渲染、历史记录列表 - api/oa/aiReview.js:analyze 用 FormData,超时放宽到 5 分钟 SQL(已应用到生产库): - oa_ai_review 表;菜单挂信息下(menu_id 2063910000000000001),授权10个角色 已用真实接口端到端验证:合同审核输出利好我方意见、风险评级可正确解析。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 10:00:09 +08:00
`match_score` int(11) DEFAULT NULL COMMENT '简历匹配度评分 0-100',
`risk_level` varchar(10) DEFAULT NULL COMMENT '合同风险评级 高/中/低',
`summary` varchar(500) DEFAULT NULL COMMENT 'AI审核结论摘要列表展示',
新增 AI 合同/简历审核功能(小米 MiMo 多模态大模型) 核心诉求:合同审核站在我方(德睿福)立场,找出不利条款并给出利好我方的 修改/补充建议;简历审核评估候选人与目标岗位的匹配度。 后端(ruoyi-oa): - 接入小米 MiMo(OpenAI 兼容 /chat/completions),mimo-v2.5 多模态模型 · MiMoProperties 绑定 application.yml mimo: 配置(base-url/api-key/model/...) · MiMoClient:text + multimodal(image_url base64) 两种调用,独立长超时 RestTemplate;mimo-v2.5 是推理模型,max-tokens 配 8192 留足思考额度 - DocumentParseUtil:PDF 文字(PDFBox)、Word(POI: docx XWPF / doc HWPF), 扫描版 PDF(提取文字过短)用 PDFRenderer 转 PNG 走多模态 - OaAiReview 实体 + BO/VO/Mapper/Service/Controller(/oa/aiReview) · analyze 上传解析→构建提示词→调用大模型→留存原件(OSS)→落库 · 合同/简历两套提示词;正则解析风险评级:高/中/低与匹配度评分:NN入库 · 提供 list/detail/delete - ruoyi-oa/pom.xml 增加 poi-ooxml、poi-scratchpad(Word 解析) - application.yml 增加 mimo: 配置块 前端(ruoyi-ui): - views/oa/aiReview/index.vue:类型切换(合同/简历)、拖拽上传(pdf/word)、 简历目标岗位输入、审核(loading)、Markdown 结果渲染、历史记录列表 - api/oa/aiReview.js:analyze 用 FormData,超时放宽到 5 分钟 SQL(已应用到生产库): - oa_ai_review 表;菜单挂信息下(menu_id 2063910000000000001),授权10个角色 已用真实接口端到端验证:合同审核输出利好我方意见、风险评级可正确解析。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 10:00:09 +08:00
`result_md` longtext COMMENT 'AI 审核结果Markdown',
`model` varchar(50) DEFAULT NULL COMMENT '使用的模型',
`tokens` int(11) DEFAULT NULL COMMENT '消耗 token',
`create_by` varchar(64) DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_by` varchar(64) DEFAULT NULL,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志0正常 2删除mybatis-plus logicDeleteValue=2',
PRIMARY KEY (`id`),
KEY `idx_type` (`review_type`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 审核记录(合同/简历)';
-- 若表已存在旧版本补加列MySQL 不支持 ADD COLUMN IF NOT EXISTS已存在则报错可忽略
-- ALTER TABLE `oa_ai_review` ADD COLUMN `summary` varchar(500) DEFAULT NULL COMMENT 'AI审核结论摘要列表展示' AFTER `risk_level`;
-- ALTER TABLE `oa_ai_review` ADD COLUMN `requirements` varchar(1000) DEFAULT NULL COMMENT '本次审核的附加要求/审核重点' AFTER `position`;
-- ---------------- 字典:可选审核重点(合同 / 简历),用户可在字典管理增删 ----------------
INSERT IGNORE INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`)
VALUES (2063920000000000001, 'AI合同审核项', 'oa_ai_review_item_contract', '0', 'admin', NOW(), 'AI合同审核可选审核重点'),
(2063920000000000002, 'AI简历审核项', 'oa_ai_review_item_resume', '0', 'admin', NOW(), 'AI简历审核可选审核重点');
INSERT IGNORE INTO `sys_dict_data`
(`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`)
VALUES
(2063920000000000010, 1, '付款条款与节点', '付款条款与节点', 'oa_ai_review_item_contract', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000011, 2, '违约责任与赔偿', '违约责任与赔偿', 'oa_ai_review_item_contract', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000012, 3, '知识产权归属', '知识产权归属', 'oa_ai_review_item_contract', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000013, 4, '保密义务', '保密义务', 'oa_ai_review_item_contract', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000014, 5, '交付与验收标准', '交付与验收标准', 'oa_ai_review_item_contract', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000015, 6, '质保与售后', '质保与售后', 'oa_ai_review_item_contract', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000016, 7, '价格与税费', '价格与税费', 'oa_ai_review_item_contract', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000017, 8, '争议解决与管辖', '争议解决与管辖', 'oa_ai_review_item_contract', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000018, 9, '不可抗力', '不可抗力', 'oa_ai_review_item_contract', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000019, 10,'合同解除条件', '合同解除条件', 'oa_ai_review_item_contract', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000040, 1, '技术能力匹配', '技术能力匹配', 'oa_ai_review_item_resume', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000041, 2, '项目经验深度', '项目经验深度', 'oa_ai_review_item_resume', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000042, 3, '工作稳定性', '工作稳定性', 'oa_ai_review_item_resume', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000043, 4, '团队协作与管理', '团队协作与管理', 'oa_ai_review_item_resume', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000044, 5, '学历与专业背景', '学历与专业背景', 'oa_ai_review_item_resume', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000045, 6, '行业相关经验', '行业相关经验', 'oa_ai_review_item_resume', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000046, 7, '薪资期望匹配', '薪资期望匹配', 'oa_ai_review_item_resume', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000047, 8, '成长潜力', '成长潜力', 'oa_ai_review_item_resume', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000048, 9, '离职风险', '离职风险', 'oa_ai_review_item_resume', '', 'default', 'N', '0', 'admin', NOW(), ''),
(2063920000000000049, 10,'外语能力', '外语能力', 'oa_ai_review_item_resume', '', 'default', 'N', '0', 'admin', NOW(), '');
新增 AI 合同/简历审核功能(小米 MiMo 多模态大模型) 核心诉求:合同审核站在我方(德睿福)立场,找出不利条款并给出利好我方的 修改/补充建议;简历审核评估候选人与目标岗位的匹配度。 后端(ruoyi-oa): - 接入小米 MiMo(OpenAI 兼容 /chat/completions),mimo-v2.5 多模态模型 · MiMoProperties 绑定 application.yml mimo: 配置(base-url/api-key/model/...) · MiMoClient:text + multimodal(image_url base64) 两种调用,独立长超时 RestTemplate;mimo-v2.5 是推理模型,max-tokens 配 8192 留足思考额度 - DocumentParseUtil:PDF 文字(PDFBox)、Word(POI: docx XWPF / doc HWPF), 扫描版 PDF(提取文字过短)用 PDFRenderer 转 PNG 走多模态 - OaAiReview 实体 + BO/VO/Mapper/Service/Controller(/oa/aiReview) · analyze 上传解析→构建提示词→调用大模型→留存原件(OSS)→落库 · 合同/简历两套提示词;正则解析风险评级:高/中/低与匹配度评分:NN入库 · 提供 list/detail/delete - ruoyi-oa/pom.xml 增加 poi-ooxml、poi-scratchpad(Word 解析) - application.yml 增加 mimo: 配置块 前端(ruoyi-ui): - views/oa/aiReview/index.vue:类型切换(合同/简历)、拖拽上传(pdf/word)、 简历目标岗位输入、审核(loading)、Markdown 结果渲染、历史记录列表 - api/oa/aiReview.js:analyze 用 FormData,超时放宽到 5 分钟 SQL(已应用到生产库): - oa_ai_review 表;菜单挂信息下(menu_id 2063910000000000001),授权10个角色 已用真实接口端到端验证:合同审核输出利好我方意见、风险评级可正确解析。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 10:00:09 +08:00
-- ---------------- 菜单:信息 > AI审核 ----------------
-- 父菜单 1774989374680858626 = 「信息」
INSERT IGNORE INTO `sys_menu`
(`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`)
VALUES
(2063910000000000001, 'AI审核', 1774989374680858626, 4,
'aiReview', 'oa/aiReview/index', 'C', '0', '0',
NULL, 'eye-open', 'admin', NOW());
-- ---------------- 角色授权(与「信息」下兄弟菜单一致的角色集) ----------------
INSERT IGNORE INTO `sys_role_menu` (`role_id`, `menu_id`)
VALUES
(1743186990678077442, 2063910000000000001), -- 总经理
(1743204526291349506, 2063910000000000001), -- 技术总监
(1743205028123045890, 2063910000000000001), -- 信息化部
(1852970465740505090, 2063910000000000001), -- 普通员工
(1859257980152692738, 2063910000000000001), -- 职工
(1859548445766717441, 2063910000000000001), -- 后勤
(1893987128812761089, 2063910000000000001), -- 新员工临时身份
(1914212623781187585, 2063910000000000001), -- 技术总工
(1914213026883162113, 2063910000000000001), -- 设计主任
(1925062159919448065, 2063910000000000001); -- 外贸专责
-- ---------------- 校验 ----------------
SELECT menu_id, menu_name, path, component, icon FROM sys_menu WHERE menu_id = 2063910000000000001;