# 工作学习助手 **Repository Path**: xi-feiyu/work-and-study-assistant ## Basic Information - **Project Name**: 工作学习助手 - **Description**: 工作学习助手:为开发者提供高效的工作与学习工具集,涵盖代码片段、效率插件与知识管理,助力提升日常生产力。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-27 - **Last Updated**: 2026-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 工作学习助手 (Work and Study Assistant) 一个基于 Spring Boot 框架开发的应用程序,帮助用户更好地管理工作和学习任务。 ## 项目简介 本项目是一个轻量级的工作学习辅助工具,采用现代化的 Spring Boot 技术栈构建,提供简洁高效的任务管理功能。 ## 技术栈 - **框架**: Spring Boot - **构建工具**: Maven - **运行环境**: JDK 8+ - **配置管理**: YAML ## 项目结构 ``` work-and-study-assistant/ ├── pom.xml # Maven 项目配置 ├── mvnw # Maven Wrapper (Linux) ├── mvnw.cmd # Maven Wrapper (Windows) └── src/ ├── main/ │ ├── java/com/woniuxy/ │ │ ├── WorkAndStudyAssistantApplication.java # 应用程序入口 │ │ └── controller/ │ │ └── Test.java # 测试控制器 │ └── resources/ │ └── application.yaml # 应用程序配置 └── test/ └── java/com/woniuxy/ └── WorkAndStudyAssistantApplicationTests.java # 单元测试 ``` ## 快速开始 ### 环境要求 - JDK 8 或更高版本 - Maven 3.6+ ### 编译运行 1. **使用 Maven Wrapper (推荐)**: ```bash # Linux/Mac ./mvnw spring-boot:run # Windows mvnw.cmd spring-boot:run ``` 2. **使用 Maven**: ```bash mvn spring-boot:run ``` ### 打包部署 ```bash # 打包为 JAR 文件 ./mvnw package # 运行打包后的应用 java -jar target/work-and-study-assistant-*.jar ``` ## 测试 ```bash # 运行所有测试 ./mvnw test ``` #### 参与贡献 [//]: # (7月27日) 1. 席飞雨:完成项目基础设施搭建:敲定前端 、后端 Spring Boot、桌面端三栈选型并跑通初步测试,完善两套 Git 仓库规范,形成以"今日视图"为核心的 Web 最小可运行框架,并明确了接口返回类型约定与"本地 SQLite + 云端同步,redis缓存->上传mysql"的数据处理方案。 2. 武旭飞:验证【实时获取用户操作的行为记录的可行性】 获取用户打开软件的进程信息(JNA),定时截图用户当前操作界面(AWT Robot),使用OCR技术识别图片内容,但是会出现部分的乱码,读取不准确 ,最后输出到html文件中 3. 林书高:主要完成了项目学习功能模块的思维导图,围绕学生角色,拆分出学习工作台、学习计划、专注记录、错题中心、资料整合、发现六大板块,并通过workbuddy生成原型图。但是功能模块还不够清晰,两个项目模块还没有对接整合,感觉还有很多冗余的部分,需要再讨论明确一下。 4. 杨彬莉:昨天下午用graph engine工作流简单创建了几个节点和条件边,以及AllOverState全局状态共享 简单跑了一下流程,整理了项目的graph工作流,梳理了项目学生板块的主要流程,主要业务链流程是:开始提问->接收用户节点->向量库检索节点->条件分支(查找相关文档片段,组装成prompt+调用大模型生成回答,形成循环)->保存学习的行为日志节点(存入redis里)->判断是否生成复习计划->结束。在这个工作流里面没有加上人工介入,项目需求不够完善,后面进行再次梳理流程,把登录入口,认证鉴权,还添加了是否为新用户,自定义填写信息(人工介入)等等...流程,以至于后面流程比较复杂,很难理清工作流的逻辑关系。上传资料的功能:上传真题、笔记、文件处理->自动分类标签->文件解析,向量化文件处理->RAG向量检索匹配AI推理。 5. 贾固明:完成了工作模块的初步思维导图,分出四个子模块工作任务,工作记录,日志生成,文件归档。暂列各个模块期望实现的功能 [//]: # (7月28日) 1. 席飞雨:完成了SQLite的验证,最终确定使用mySQL,优点操作便捷,绑定用户id,完善工作流核心内容,流程,后续继续完善,将mySQL远程配置设置统一,搭载在统一服务器上通过远程链接实现多人共同协作同一个数据库测试,初步设计基础表单,通过jpa包装实体类自动建表。 2. 武旭飞:昨天主要是验证 【读取截图文字的可行性】 1、刚开始使用的是 Tesseract 这个还需要额外安装 Tesseract 软件、配置环境变量 然后配置 他的编码 识别的语言等等 然后结果还是会有乱码问题 解读不出来 2、最后 使用了 PaddlePaddle PP-OCR + ONNX Runtime 来实现的 文字识别 3. 林书高:完成了 AI 自动整理 HTML 日志的流式接口可行性验证,通过读取本地的html文件提取文本日志内容,将日志文本交给大模型分析整理,将AI返回的内容流式返回给前端,完成日志简单的智能总结。但是还没有用到多模态对文件中的图片进行识别,且日志内容过于冗长,还需要精简和筛选。 4. 杨彬莉:主要使用StateGraph 搭建了项目的整体工作流,定义了状态管理WorkflowStateKeys,通过策略模式精细管理全局状态,封装了所有的节点和边,并且添加了主要的功能的条件边及人工介入的路由控制。 资料处理流:上传文件->自动分类->文本向量化解析->RAG检索匹配 用户引导流:校验新用户->填写基本信息->确认初始化计划->保存计划 主学习流:开始学习->计时器->暂停/继续/->日志生成->Agent分析->生成报告->确认规划->-保存数据到数据库 困难:在计时器节点->暂停/继续节点 5. 贾固明:进行了文件内容生成日志的可行性验证,接收前端传过来的文本内容,调用agent生成工作日志,缓存到redis的,保存文件的话还没写,人工介入待完善,遇到的问题:前端传递的json有转义字符还识别不了。 [//]: # (7月29日) 1. 席飞雨:完成总体计时器统计,实现开始/暂停/继续/停止等接口,完成从设计文档到可运行的前后端代码全部落地,断点续记与状态机逻辑经 5/5 测试验证通过,前后端构建均成功,并整合进程监控器与计时器同步调用,下一步计划进行进程监控器各项属性的设计与持久化 2. 武旭飞:主要是 通过 【判断进程名是否属于白名单以及文字识别出来的数据是否正常】的方式过滤进程 接着 完善了 任务开始 暂停 继续 以后 对进程/分类 时间的续接 3. 林书高:主要完成的是利用workbuddy生成了一个简单的前端,然后做了简易一个登录注册,对屏幕录制功能做了几个简单的接口调用方法,在前端进行对录制功能的可行性验证,可以实现屏幕的录制功能,在测试计时器功能的时候还需要做一些调整。 4. 杨彬莉:主要完成用户登录、注册页面开发以及全局认证过滤器 用户信息线程绑定开发配置,完善项目基础用户权限登录体系。梳理了新用户填写基本信息的流程,使用jpa创建了两个实体类(用户基本信息表,科目表),通过逻辑外键关联userId,设计了两个接口(1,判断是否为新用户+填写信息+保存 2、ai生成规划+用户确认+保存) 目前困难:判断新用户 我怎么拿到用户基本信息id? 5. 贾固明:昨天整合了agent工厂,梳理了整个工作流的所有节点和普通边条件边,将生成学习报告的功能整合到了主工作流中,可行性验证输出结果,工作流需要调整 [//]: # (7月30日) 1. 席飞雨:进程监控器mysql持久化处理,提供分类、时间,任务流、以及其他的查询处理,修改数据库jpa和mybatis冲突部分的bug,测试总任务计时器与进程计时器,分类,进程流的整体运行情况,并修改相关bug 2. 武旭飞:昨天主要是修改了 用户访问不同的软件进程按不同分类合并以后的时间统计问题 【会因为 暂停 继续 开会来回切换 会统计不准,计算逻辑的问题】 3. 林书高:主要是改善了一下前端,对现有的后端接口进行了测试,可以将生成的日报简单在前端展示出来,还没有进行持久化。之后在后端改变传输方式之后,一直在尝试将屏幕录制的内容转给ai处理,中间出现了一些bug,导致没有完成。 4. 杨彬莉:完成了 1、鉴权校验 为true旧用户直接走主循环,false为新用户走填写用户基本信息。2、AI根据用户基本信息生成初始规划。3、人工介入写了,目前遇到了问题 已解决的困难: 原因:AI生成规划是,AllOverState里拿到了数据,但是Agent识别不到,1、数据里面有列表list,2、state被覆盖了,在authCheck返回的Map只有两个字段,没有list里面的数据,在节点返回时可能丢失了。 方法:1、把列表list转为String,让Agent直接去识别,2、在在authCheck 节点中保留所有字段,防止丢失。 目前的困难: 人工介入的报错还是识别不了用户基本信息的数据,并且接收不到用户的回答。 5. 贾固明:昨天把主工作流整理了一下,按照人工介入的点和功能分流成了新用户生成目标计划子流,开始学习计时器计时子流,结束学习后数据传输给agent生成对应的学习报告工作日志子流,三个部分。 [//]: # (7月31日) 1. 席飞雨:昨日任务,添加计时器任务基本数据查询接口,项目总流程解耦,提供数据获取的get接口,计时器子工作流的整合以及分类agent的植入,以及整体项目整合 2. 武旭飞:昨天主要是修改了 用户访问不同的软件进程按不同分类合并以后的时间统计问题 【会因为 暂停 继续 来回切换 会统计不准,计算逻辑的问题】 3. 林书高:主要是完成将屏幕录制的数据直接交给ai处理后返回给前端展示,后面计划先将录屏数据存到数据库在给ai处理,但是收到的文件过大,暂时没有直接加入数据库。 4. 杨彬莉:完成了: 1、人工介入 2、初始学习规划保存到数据库 遇到的困难: 1、prompt使用了模板占位变量,走人工介入节点时,一直抛变量缺失直接抛异常,上下文数据存取结构错乱。(人工介入后,传给 prompt 模板只有 userAnswer,缺失 exam_type/subject_list/major 等一堆变量 ——>校验失败抛出异常。) 2、AI生成规划后,在state里面获取不到Agent的回答,message里只有用户的回答。 解决方法: 1、用两个Agent,一个planAgent生成规划,人工介入后,另一个receiveAgent回答用户的问题 2、把存入state里接收Agent回答的常量值和Agent的outputkey的值 改成一样AI_PLAN,两个key名字完全一样 5. 贾固明:昨天补全了部分工作流的人类反馈节点和部分条件边,工作流串到一起,尝试将业务功能添加到工作流,遇到的问题,没有完成人类反馈之前暂不能运行 [//]: # (8月1日) 1. 席飞雨:计时器工作流的完善,梳理主流与子流的关系,以及修改部分bug 2. 武旭飞:主要是做了 空闲时间的检测 如果 超过了 一定的时间 就提示用户 屏幕长时间未操作 3. 林书高:主要是测试完计时器学习报告接口后,对生成日报加入了人工介入,通过人工介入来对生成的日报进行下一步操作 4. 杨彬莉:在解决报错,分了主、子流,分支报错。 困难: 1、人工介入节点不存在 2、流一直循环 解决: 1、在主流都加了人工介入节点 5. 贾固明:拆分了报告子图,细分为学习报告和工作日志子图,尝试子流编译后加入主流进行人类反馈的暂停 [//]: # (8月3日) 1. 席飞雨:重新梳理主流逻辑,将计时器数据通过主流传递到下一个子流。 2. 武旭飞:修改屏幕截图bug,将数据接入数据库,工作流人工介入 3. 林书高:学习日报,工作日报常量池进行规范化处理,重新规整结点,边,保证全局代码准确 4. 杨彬莉:鉴权以及学习计划工作流,成功生成规划报告 5. 贾固明:将开始学习之后的记录内容通过流的全局状态传给agent,经过人工介入多次确认后最终版本直接保存到本地 [//]: # (8月4日) 1. 席飞雨:工作报告子流编写,并顺利介入主流流程,创建用户工作计划表、用户工作信息表,代办事项接口,后续ai生成自动形成代办事项 2. 武旭飞:测试通过了【使用 python 的Pix2Text 来做数学公式的这种识别】 基于 Pix2Text(CnOCR 文字识别 + MTR 数学公式识别),搭建 FastAPI HTTP 接口,实现图片内文字 + 数学公式一体化识别,公式会输出 LaTeX 表达式。 3. 林书高:从全局拿到录屏数据经过ai处理和人工介入后,在save结点将日报同时保存在数据库和本地文件中 4. 杨彬莉:完成:1、疏通工作流,解决报错。 2、完善AI生成规划,将用户的问题加入UserMessage里面,让Agent根据用户的需要生成 3、在此(user_plan表)基础之前新增day_plan今日计划字段,可以按照今日计划和长期计划分别存储及查询今日计划 4、新增分支,新用户可以不用先生成规划,直接去开始体验学习 困难: 1、使用PostMapping注解,@RequestBody 单个String参数,会被JSON格式包裹,导致取值有误 2、新增每日计划,不知道怎么把类型加到state里面。 解决方法: 1、@RequestBody,创建了一个实体类Dto 2、在常量池新增常量GENERATEPLANTYPE(generatePlanType),根据用户的问题提取关键字(今日/每日)计划,然后赋值generatePlanType="DAY_PLAN" 5. 贾固明:新增日报,周报,月报接口再次调用agent对日志进行总结生成日报,周报,月报,保存到本地,接下来改进一下生成报告的筛查方式,新增一键发送邮件的 [//]: # (8月5日) 1. 席飞雨:前端展示功能补充,工作计划工作流agent实现持续对话修改,以及向用户确认细节功能,agent提示词修改,修复用户id识别异常,角色权限鉴别,token储存用户id丢失精度问题 2. 武旭飞:完成了 将识别解析到的错题 通过工作流交给智能体处理 然后返回对应题目的正确答案 并且将对应的错题保存到数据库 3. 林书高:主要完成了优化前端页面,将后端新增的接口和前端对接,测试日报,月报,周报生成功能,保存本地,但是功能还需要优化 4. 杨彬莉:完成:1、文件上传 2、Ai自动分类打标签(逻辑梳理) 困难: 1、后端接收文件之后,文件包括了图片以及pdf这种特特殊文件怎么去识别里面的纯文字。 2、对于文件解析,清晰为什么要用线程池异步 已解决: 1、基于 Pix2Text(CnOCR 文字识别 + MTR 数学公式识别) 2、大文件pdf、ocr解析耗时久,Tomcat主线程容易阻塞,长时间卡死。把文件解析清洗交给线程池异步执行,释放主线程。 5. 贾固明:改进报告生成方案,可以根据文档最后修改时间自动筛选,当日,前一周,前一个月的文件进行总结,还可以手动上传文件进行总结,目前是同步调用agent [//]: # (8月6日) 1. 整体部署项目至linux,修复bug,基于windows环境部署,测试部署bug ## 许可证 本项目采用 [MIT License](LICENSE) 开源协议。