Files
fad_oa/sql/oa_ai_review.sql

62 lines
3.9 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 '简历目标岗位',
`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 审核记录(合同/简历)';
-- 若表已存在(旧版本),补加 summary 列MySQL 不支持 ADD COLUMN IF NOT EXISTS重复执行报错可忽略
-- ALTER TABLE `oa_ai_review` ADD COLUMN `summary` varchar(500) DEFAULT NULL COMMENT 'AI审核结论摘要列表展示' AFTER `risk_level`;
新增 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;