一、数据库设计
完成对分析总结建议展示界面的初步编写后,这次打算完成日报周报的数据库设计。
根据先前对分析总结建议展示结果的分析,日报周报的文字内容主要分为两部分:对今日/本周日志的分析总结、心理建议。内容由psyLLM生成。
创建两个表,分别用于存储总结、建议,
字段如下,需要根据uid获取当前登录用户的日志,timestamp记录生成时间。
二、后端Entity实体类、Service服务层编写
完成数据模型层的编写工作。在Entity中,定义数据库中的表结构和与表对应的Java对象,使用JPA注解来映射数据库表和列。
LogSummarizedResults类和LogSuggestedResults类,分别对应两个数据库表。
完成实体类的编写后,编写Service层,处理业务逻辑。
SuggestedResults同理。
最后完成Controller控制器编写即可。在编写Controller前,需要明确,日报和周报分别需要从数据库获取当日/本周日志,所以需要在Blog的Mapper、Service层中完成根据用户id获取当日/本周日志的方法的编写。
三、获取日志方法编写
编写逻辑为,获取指定用户在特定时间范围内(今天或本周)发布的日志列表,故在Mapper映射器中完成数据访问层(DAO层)的工作,用于数据库操作。
指定时间范围,根据start和end获取数据库中该时间范围内的所有日志,根据uid获取指定用户的。
接下来在Service服务层中处理业务逻辑,调用数据访问层(Mapper),对数据进行处理。
获取今日日志方法编写如下:
接下来继续完成获取本周日志方getThisWeekBlogs法的编写。
基于获取今日日志的逻辑,完成如下:
四、后端Controller控制器编写
需要接收HTTP请求,调用Service层处理业务逻辑,并返回响应。使用Spring MVC的注解来实现。
基于上述工作,日报周报获取日志逻辑的编写已经完成,接下来要在Controller中将日志传给psyLLM,并获取返回结果,将结果存入数据库对应表中,最后还需将结果返回给Vue.js前端。
这里打算将总结、建议一起在LogResultsController中完成处理。
因为需要调用到外部的模型,故打算先完成模型的连通。
五、模型连通
为了完成Controller的编写,也为了更好地调试,这里需要先完成模型的连通。
根据负责psyLLM的队友的指导与帮助,首先完成必要包的安装:
pip install flask
pip install zhipuai
pip install numpy
pip install -U sentence-transformers
pip install faiss-cpu
接下来在包的目录下,找到\Lib\site-packages\huggingface_hub\constants.py文件,打开,将ENDPOINT = os.getenv("HF_ENDPOINT") or (_HF_DEFAULT_STAGING_ENDPOINT if _staging_mode else _HF_DEFAULT_ENDPOINT)替换成ENDPOINT = " https://hf-mirror.com"。
由此,python后端(具体工作见队友博客)就能够嵌入后接通大模型成功运行起来。
在需要调用python接口的java文件中,import cn.hutool.http.HttpUtil;
String content = "要发送给psyLLM的内容";
String url = "http://localhost:5000/connectToAPI?content=" + content;
String answer = HttpUtil.get(url); //answer就是psyLLM返回的回答
基于上述内容,能够开始Controller的编写工作。
六、Controller编写,前后端交互
根据先前的分析,需要在LogResultsController中将日志传给psyLLM,并获取返回结果,将结果存入数据库对应表中,最后还需将结果返回给Vue.js前端。
首先需要获取日志,因为要根据uid获取对应用户的日志内容,所以需要先从前端获取到当前登录用户的uid。
在DayVisual.vue中,
测试(当前登录用户uid为85):
console打印: