diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index b2dc60b..7cc3309 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -225,6 +225,7 @@ ocr: # ocr_mutipart: http://10.98.80.141:9000/ocr ocr_llm_url: http://39.98.44.136:6016/inner-ai/aicoapi/gateway/v2/chatbot/api_run/1763386387_d4c07131-a047-4c0d-9623-7e3c3a45bd7e ocr_llm_apiKey: NfzPnFRtogHlYCAh2hHIB7ra5EsrSQEM + ocr_llm_chatUrl: http://39.98.44.136:6016/v1/chat/completions cipher-security: socket: 39.102.146.78:11028 diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index f89adb2..be81711 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -219,10 +219,11 @@ file: ocr: ocr_url: http://127.0.0.1:9001/ocr - ocr_mutipart: https://qd.zhaopinzao8dian.com/ocr-api/ocr - # ocr_mutipart: http://10.98.80.141:9000/ocr +# ocr_mutipart: https://qd.zhaopinzao8dian.com/ocr-api/ocr + ocr_mutipart: http://10.98.80.141:9000/ocr ocr_llm_url: http://39.98.44.136:6016/inner-ai/aicoapi/gateway/v2/chatbot/api_run/1763386387_d4c07131-a047-4c0d-9623-7e3c3a45bd7e ocr_llm_apiKey: NfzPnFRtogHlYCAh2hHIB7ra5EsrSQEM + ocr_llm_chatUrl: http://10.98.76.104:1025/v1/chat/completions cipher-security: # socket: 39.102.146.78:11028 diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java index 9d47137..d09c5c4 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/StringUtil.java @@ -154,6 +154,95 @@ public class StringUtil { REGION_CODE_CODE_MAP = Collections.unmodifiableMap(tempMap); } + /** + * 解析简历 + */ + public static final String RESUME_SYSTEM_PROMPT = "你是简历OCR信息提取工具,仅输出标准JSON,严格遵守全部规则:\n" + + "1. 禁止输出任何解释、步骤、Markdown、前言、后语,只返回纯JSON字符串;\n" + + "2. 完全按照下方模板字段生成,字段名称一字不能修改,所有字段必须保留;\n" + + "3. 识别不到的内容:普通字符串填\"\",数字填0,数组/子集合填[],不允许删除key;\n" + + "4. 时间统一输出文本格式yyyy-MM-dd,文本标点原样保留;\n" + + "5. 数组类字段拆分多条信息存入数组,不要逗号拼接字符串;\n" + + "\n" + + "【强制输出JSON模板,完全匹配UserInfoDetail实体】\n" + + "{\n" + + " \"name\": \"\",\n" + + " \"age\": \"\",\n" + + " \"sex\": \"\",\n" + + " \"education\": \"\",\n" + + " \"birthDate\": \"\",\n" + + " \"politicalAffiliation\": \"\",\n" + + " \"phone\": \"\",\n" + + " \"avatar\": \"\",\n" + + " \"salaryMin\": \"\",\n" + + " \"salaryMax\": \"\",\n" + + " \"area\": \"\",\n" + + " \"jobTitleId\": \"\",\n" + + " \"experience\": \"\",\n" + + " \"jobTitle\": [],\n" + + " \"idNumber\": \"\",\n" + + " \"introduction\": \"\",\n" + + " \"selfEvaluation\": \"\",\n" + + " \"contactEmail\": \"\",\n" + + " \"jobIntention\": \"\",\n" + + " \"graduationSchool\": \"\",\n" + + " \"workYears\": 0,\n" + + " \"residenceAddress\": \"\",\n" + + " \"major\": \"\",\n" + + " \"educationExp\": [\n" + + " {\n" + + " \"schoolName\": \"\",\n" + + " \"major\": \"\",\n" + + " \"education\": \"\",\n" + + " \"startTime\": \"\",\n" + + " \"endTime\": \"\"\n" + + " }\n" + + " ],\n" + + " \"workExp\": [\n" + + " {\n" + + " \"companyName\": \"\",\n" + + " \"position\": \"\",\n" + + " \"startTime\": \"\",\n" + + " \"endTime\": \"\",\n" + + " \"workContent\": \"\"\n" + + " }\n" + + " ],\n" + + " \"projectExp\": [\n" + + " {\n" + + " \"projectName\": \"\",\n" + + " \"position\": \"\",\n" + + " \"startTime\": \"\",\n" + + " \"endTime\": \"\",\n" + + " \"projectDesc\": \"\"\n" + + " }\n" + + " ],\n" + + " \"certificateList\": [\n" + + " {\n" + + " \"certName\": \"\",\n" + + " \"getDate\": \"\"\n" + + " }\n" + + " ],\n" + + " \"skillList\": [\n" + + " {\n" + + " \"skillName\": \"\",\n" + + " \"skillLevel\": \"\"\n" + + " }\n" + + " ],\n" + + " \"professionalTechnicalPostList\": [\n" + + " {\n" + + " \"postName\": \"\",\n" + + " \"level\": \"\"\n" + + " }\n" + + " ],\n" + + " \"resumeOcrStatus\": \"\",\n" + + " \"resumeList\": [],\n" + + " \"indices\": [],\n" + + " \"isCert\": \"\",\n" + + " \"remark\": \"\",\n" + + " \"isRecommend\": 0\n" + + "}\n" + + "要求:只返回上面这份JSON,无任何额外文字!"; + /** * areaToRegion * @param area diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/EncryptConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/EncryptConstants.java index dd6e53c..c6fa964 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/EncryptConstants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/EncryptConstants.java @@ -69,6 +69,14 @@ public class EncryptConstants { "/app/appskill/list", "/cms/appskill/list", "/cms/employeeConfirm/list", - "/app/user/createResume" + "/app/user/createResume", + "/app/user/resume/recognition" + ); + + /** + * 请求需要排除的接口 + */ + public static final List EXCLUDE_PATTERNS = Arrays.asList( + "/app/user/resume/recognition" ); } \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/filter/RequestWrapperFilter.java b/ruoyi-common/src/main/java/com/ruoyi/common/filter/RequestWrapperFilter.java index 2e4f333..2eb4460 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/filter/RequestWrapperFilter.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/filter/RequestWrapperFilter.java @@ -144,6 +144,12 @@ public class RequestWrapperFilter implements Filter { } String requestURI = request.getRequestURI(); + // 排除指定接口 + for (String exclude : EncryptConstants.EXCLUDE_PATTERNS) { + if (pathMatcher.match(exclude, requestURI)) { + return false; + } + } // 检查URL是否匹配需要加解密的模式 for (String pattern : EncryptConstants.URL_PATTERNS) {