Commit Graph

400 Commits

Author SHA1 Message Date
22f7c53914 Merge branch 'claude/sweet-swanson-772e08' 2026-06-12 14:35:27 +08:00
9e6ae1eca9 AI审核支持微调/自定义审核重点
- 新增审核可选择审核重点(字典驱动,合同/简历各一套)并填写附加要求自由文本,
  两者合并为 requirements 随请求提交,后端追加进系统提示词,让模型按需聚焦
- 审核项存字典 oa_ai_review_item_contract / oa_ai_review_item_resume,
  用户可在系统管理→字典管理自行增删审核项(无需改代码),各预置10项
- oa_ai_review 增加 requirements 列(已应用到生产库),落库留痕;详情页展示
- 前后端贯通:analyze / analyzeStream 均新增 requirements 参数

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 14:35:27 +08:00
f745651370 Merge remote-tracking branch 'origin/main' 2026-06-12 10:51:02 +08:00
a4f479454f 修复流式审核点击后无输出(静默失败)
原因:旧实现在返回 SseEmitter 之前同步做文档解析/渲染,一旦抛异常会被全局
异常处理器包成 JSON(HTTP 200 + {code,msg})返回;前端按 SSE 流读取,找不到
\n\n 分隔帧便静默结束——表现为“闪一下后无输出、也无报错”。

后端:
- analyzeStream 拆分 prepareSync(仅校验+读字节,必须在请求线程内)与
  buildPrompt(解析/渲染/构建提示词)。buildPrompt 移入异步线程,任何异常都
  转为 SSE error 事件返回,不再走 JSON 静默路径
- 线程启动即推送 start 事件,确认通道已打开
- 流式接口去掉 @Log(操作日志切面会尝试序列化 SseEmitter 返回值)

前端 add.vue:
- 校验响应 content-type:非 text/event-stream(鉴权失败/异常JSON/HTML)时读出
  正文并弹出错误,避免静默
- 统计收到的事件数,全程零事件时提示“未收到流式数据,请检查后端能否访问AI服务”
- 处理 start 事件

注:服务端为 Undertow、未开 gzip 压缩,dev 代理默认透传,排除缓冲导致。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 10:37:18 +08:00
7a2603e1f9 AI审核新增改为独立流式页面:左侧实时输出+右侧文档预览
解决上传后长时间无反馈的问题——改为流式(SSE)边生成边展示。

后端:
- MiMoClient.chatStream:HttpURLConnection 读 SSE,分别回调 reasoning(思考)
  与 content(正文) 增量;支持多模态(扫描件PDF)
- IOaAiReviewService.analyzeStream + 实现:同步校验/解析文档后,异步线程调用
  流式接口,通过 SseEmitter 推送 {type:reasoning|content|done|error},
  结束后落库(含结论解析、摘要、原件OSS留存);createBy 显式回填(异步线程无登录上下文)
  · 抽出 prepare()/persist() 复用,analyze() 与 analyzeStream() 共用
- Controller 新增 POST /oa/aiReview/analyzeStream(multipart→text/event-stream)

前端:
- 新增独立二级页面 views/oa/aiReview/add.vue(路由 /hint/aiReview/add):
  · 顶部:类型/岗位/选文件/开始审核
  · 左侧:用原生 fetch 读流,实时渲染——思考过程(可折叠)+正文 Markdown 实时输出
  · 右侧:选中文件即用本地 objectURL 预览(PDF 内嵌 iframe,Word 占位提示)
  · 完成后显示匹配度/风险标签 + 查看详情
- 列表页「新增审核」由弹窗改为跳转该页面,移除弹窗相关逻辑
- router 增加 /hint/aiReview/add 隐藏路由

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 10:19:52 +08:00
23f65c738d refactor(oa): 优化到货明细服务的关联查询
- 添加批量填充关联VO的方法,避免N+1查询问题
- 新增需求和项目关联字段到到货明细VO中
- 实现根据需求ID自动填充项目ID和贸易类型的逻辑
- 重构查询方法以支持关联数据的批量加载
- 添加Excel导出忽略注解以防止关联对象被导出
2026-06-12 10:05:45 +08:00
d46754ede8 AI审核改为 列表页+详情页 结构,列表带审核摘要
- 表 oa_ai_review 增加 summary 列(审核结论摘要,纯文本,列表展示用),
  已应用到生产库;分析时由结果 Markdown 提炼前160字纯文本写入
- 列表查询清空大字段 result_md 减小响应体,详情接口仍返回完整结果
- 前端拆分:
  · index.vue 重写为列表页:搜索(类型/关键字)+表格(类型/文件名/岗位/结论标签/
    审核摘要/时间)+分页,「新增审核」改为弹窗上传(类型/岗位/文件),
    审核完成后跳转详情;行可删除
  · 新增 detail.vue 详情页:元信息(文件名+下载原件/岗位/模型/时间/审核人)
    + 结论标签 + 完整 Markdown 结果,返回列表按钮
  · router 增加 /hint/aiReview/detail/:id 隐藏路由
- 原件已通过 OSS 留存,详情页可下载,下次可直接查看

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 10:04:16 +08:00
faca2f85eb 新增 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
005cf47424 feat(oa): 添加到货明细管理功能
- 创建到货明细实体类 OaArrivalDetail 包含基本信息字段
- 实现到货明细业务对象 OaArrivalDetailBo 和视图对象 OaArrivalDetailVo
- 开发到货明细服务接口 IOaArrivalDetailService 及其实现类
- 构建到货明细数据访问层 OaArrivalDetailMapper 及对应的 XML 映射文件
- 设计到货明细控制器 OaArrivalDetailController 提供完整的 CRUD 操作
- 集成分页查询、导出 Excel、新增修改删除等完整业务功能
2026-06-12 09:48:46 +08:00
a9c9b8a5ea 会议纪要功能修复与改进
后端:
- 待办同步改走 ISysOaTaskService.insertByBo/updateByBo,新任务带操作日志和IM通知
- 任务状态映射修正:done→2执行完成,其余→0执行中(原 progress→1 会显示成"等待验收")
- 无负责人/无内容的待办仅作纪要记录,不再生成无主任务
- 更新时可清空字段改用显式 set(原来解绑项目、清空内容不生效)
- 新增接口返回纪要ID,前端据此进入编辑态,避免重复保存生成多条
- 会议编号加3位随机数防同秒撞唯一键;异常改 ServiceException;同步失败记日志
- enrich 为待办条目注入 assigneeName,列表/详情/导出可显示负责人姓名
- SysOaTaskServiceImpl.insertByBo 回填 taskId 供调用方关联

前端:
- 主持人/待办负责人改用人员单选弹窗(原多选组件取首位的方式易误操作)
- 会议类型、待办状态接入 sys_dict 字典(oa_meeting_type / oa_meeting_task_status)
- 新建保存后切换为编辑态;默认日期用本地时区(原 UTC 凌晨会差一天)
- 导出/打印带主持人、参会人、待办负责人姓名(原来只有用户ID)
- 删除已同步待办时提示任务不会被删除

SQL(已直接应用到生产库):
- 字典数据补全并修复 dict_id=0 脏数据(sys_dict_* 主键为雪花ID须显式指定)
- 菜单 2063809716454174722 icon 修为 documentation,授权10个角色
- 脚本改为幂等,去掉 DROP TABLE,del_flag 注释修正为逻辑删除值2

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 10:12:48 +08:00
e5bfa0c78c 会议纪要:原始WIP版本留底
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 10:12:12 +08:00
79e536aeca oa更新项目总览 2026-06-08 10:11:33 +08:00
3334248847 库房回退 2026-06-05 13:54:11 +08:00
9ce3bbf118 库房bug修复 2026-06-02 14:25:47 +08:00
c6e4c4bb06 库房bug修复 2026-06-02 14:22:50 +08:00
55443dac9e 提交 2026-06-01 15:31:49 +08:00
dcc66aa4a9 推送项目重构代码 2026-05-31 14:19:15 +08:00
a28ea44cab 推送项目重构代码 2026-05-30 15:32:57 +08:00
3dafaceef2 推送项目重构代码 2026-05-29 19:52:32 +08:00
95141d0e1f fix(oa): 过滤考勤统计中的离职和禁用用户
在考勤统计逻辑中增加对用户状态的检查,跳过状态为非正常(已离职或已禁用)的用户,确保统计结果仅包含在职且启用的员工数据。
2026-05-28 09:37:52 +08:00
81e529a2dd feat(oa): 添加项目进度步骤批量延期功能
- 在服务层接口添加批量延期方法定义
- 实现批量延期业务逻辑,支持按天或小时延期
- 添加数据库批量延期SQL映射
- 控制器增加批量延期API端点
- 前端组件添加批量延期按钮和对话框
- 集成前端批量延期API调用逻辑
- 添加批量延期数据传输对象定义
2026-05-16 15:30:19 +08:00
305d8524d1 feat(oa): 添加项目进度步骤负责人更新功能
- 引入 OaProjectScheduleStepMapper 依赖注入
- 新增 updateNodeHeaderByScheduleId 方法用于批量更新节点负责人
- 在修改项目进度时同步更新相关步骤的负责人信息
- 添加相应的 XML 映射配置实现条件更新逻辑
- 完善操作日志记录机制确保数据变更可追溯
2026-05-16 14:29:40 +08:00
47baa575df 推送任务进度操作历史,推送项目总览 2026-05-10 16:38:39 +08:00
2752a31a49 修改配置 2026-05-08 18:55:53 +08:00
dc67788f51 完成ocr识别发票的前提条件 2026-05-05 20:15:54 +08:00
3613b6d83a refactor(oa): 需求管理模块的Vo修改
- 继承 BaseEntity 类以统一实体基类功能
- 添加 BaseEntity 依赖导入以支持基础属性扩展
- 保持现有数据传输对象结构不变
2026-04-25 16:11:58 +08:00
f6b5940a27 merge origin main conflicts resolved 2026-04-23 13:20:29 +08:00
db90e2a084 feat: 添加项目进度统计功能,支持在列表中显示各项目的进度步骤统计信息,以及跳转 2026-04-23 12:47:23 +08:00
602928dc0b 修复综合看板 2026-04-22 18:44:14 +08:00
8b78e82a80 添加1报工审批2添加我的申请 2026-04-22 15:52:58 +08:00
f3d5556196 feat:完善出差申请,城市页面优化 2026-04-21 16:32:24 +08:00
54b820cc40 Merge remote-tracking branch 'origin/main' 2026-04-20 15:43:51 +08:00
f73a002f0f 新增城市管理 2026-04-20 14:14:08 +08:00
dfd912bf07 feat(security): 新增高德逆地理编码接口并配置RestTemplate超时时间 2026-04-16 11:05:02 +08:00
ebb57f4f26 fix(oa): 修复项目进度步骤查询遗漏删除标记过滤条件
- 在步骤表公共筛选方法中添加删除标记等于0的过滤条件
- 确保查询结果不包含已删除的步骤记录
- 修复因缺少软删除过滤导致的数据查询异常问题
2026-04-15 18:05:23 +08:00
365fc08b62 Merge branch 'main' of http://49.232.154.205:10100/liujingchao/fad_oa into main 2026-04-15 17:26:25 +08:00
50f3f15f48 feat(项目看板): 新增项目综合看板功能
新增项目综合看板功能,聚合展示项目、任务、进度主表和步骤数据
- 新增后端聚合接口 GET /oa/project/dashboard/{projectId}
- 新增前端看板页面,包含项目列表、任务表格和进度导图
- 优化思维导图组件,支持看板模式下的紧凑展示
- 新增进度明细表格视图和状态图例
- 实现任务与进度步骤的关联展示
- 添加项目模糊搜索功能
2026-04-15 17:19:56 +08:00
f4dbe29d8e feat(oa): 完成审批历史页面全链路开发,含前后端接口、菜单配置 2026-04-14 20:36:01 +08:00
4d4ab32ab1 feat(oa): 添加财务模块主表分页查询功能
- 新增 selectMainPageList 方法用于主表分页查询
- 在 SysOaFinanceMapper.xml 中添加对应的 SQL 查询语句
- 修改 selectPageFinanceList 实现,先查询主表数据再批量查询子表数据
- 通过 financeId 分组将子表数据封装到对应的主表记录中
- 修复查询条件中的字段前缀问题,统一使用表别名 sof
2026-03-13 15:11:45 +08:00
febcf3ec8a refactor(oa): 优化绩效报告服务中的逾期步骤过滤逻辑
- 移除未使用的当前时间变量声明
- 简化逾期步骤过滤的日期比较逻辑
- 提升代码可读性和维护性
2026-03-02 17:46:36 +08:00
4fcbc78655 bug:逾期后结束不被统计,已经被修复 2026-02-28 19:58:05 +08:00
7ca8a3521f 全量提交 2026-02-28 19:47:28 +08:00
c727e3498d refactor(oa): 重命名请假请求VO类
- 将HrmLeaveReqVo重命名为HrmLeaveRequestVo
- 更新MonthlyPerformanceReportVo中的属性类型引用
- 更新PerformanceReportMapper接口返回类型
- 更新MyBatis映射文件中的resultType配置
- 更新PerformanceReportServiceImpl中的导入和变量声明
- 修改buildSummary方法参数类型和循环遍历类型
2026-02-28 15:35:48 +08:00
697fe67780 全量提交 2026-02-28 15:20:47 +08:00
613bf59833 feat(hrm): 添加抄送标志字段支持已审批流程查询
- 在HrmFlowCcBo中新增ccFlag字段
- 修改HrmFlowCcController的my方法增加ccFlag参数支持
- 在HrmFlowCcServiceImpl中实现ccFlag为1时查询已审批流程实例逻辑
- 添加flowInstMapper依赖注入用于查询流程实例数据
- 增加stream包导入支持列表转换操作
- 在OaSalaryMasterServiceImpl中添加按创建时间倒序排序功能
2026-02-10 14:56:19 +08:00
c8f6aea972 feat(oa): 添加交付订单状态和附件字段
- 在 OaDeliveryOrder 实体类中新增 status 和 accessory 字段
- 在 OaDeliveryOrderBo 业务对象中新增 status 和 accessory 字段
- 在 OaDeliveryOrderMapper.xml 中配置 status 和 accessory 的映射关系
- 在 OaDeliveryOrderVo 视图对象中新增 status 和 accessory 字段
- 更新数据库查询结果映射以包含新的字段信息
2025-12-17 10:42:58 +08:00
5d9bdce9de feat(oa): 新增发货单明细状态和附件字段
- 在 OaDeliveryOrderDetail 实体类中新增 status 和 accessory 字段
- 在 OaDeliveryOrderDetailBo 业务对象中新增 status 和 accessory 字段
- 在 OaDeliveryOrderDetailVo 视图对象中新增 status 和 accessory 字段
- 更新 MyBatis Mapper XML 文件,映射新增的 status 和 accessory 字段
- 数据库查询结果集中包含新增的 status 和 accessory 字段
2025-12-17 10:16:52 +08:00
7f5d6c1143 refactor(oa): 优化项目列表查询逻辑
- 添加空列表检查避免空指针异常
- 使用流式收集项目ID用于后续范围查询
- 分别对工艺卡和送货单进行分组统计
- 通过Map结构提高查询效率避免重复数据库访问
- 保留原有VO转换及数据组装逻辑
- 确保只统计未删除的数据记录
- 提升接口性能减少不必要的循环查询
2025-12-13 15:45:57 +08:00
f0e9f9626f feat(oa): 新增项目工艺卡和发货单统计功能
- 在 IOaProcessCardService 接口中新增 queryProjectList 方法
- 在 OaProcessCardController 中添加 /projectList 接口用于查询项目列表
- 实现 OaProcessCardServiceImpl 中的 queryProjectList 方法逻辑
- 统计每个项目的工艺卡和发货单数量并返回
- 新增 SysOaProjectVo 字段 processCardCount 和 deliveryOrderCount
- 注入 SysOaProjectMapper 和 OaDeliveryOrderMapper 依赖
- 使用 BeanUtil 转换 SysOaProject 到 SysOaProjectVo 对象
- 添加相关 import 引用及必要的 Java 工具类导入
2025-12-13 15:20:17 +08:00
cbd307160e feat(oa): 添加财务记录时间范围查询功能
- 在 SysOaFinanceBo 中增加 beginCreateTime 和 endCreateTime 字段
- 配置 JsonFormat 和 DateTimeFormat 注解以支持日期时间格式化
- 修改 SysOaFinanceServiceImpl 中的查询逻辑,使用 BO 对象中的时间字段进行范围查询
- 移除对 params 参数中时间字段的依赖,统一通过 BO 对象传递查询条件
2025-12-13 11:35:57 +08:00