# zyx **Repository Path**: zuo-yixing/zyx ## Basic Information - **Project Name**: zyx - **Description**: zyx - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-28 - **Last Updated**: 2025-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 一、项目核心亮点 1. **技术栈选型贴合场景** 选用Spring Boot作为核心框架,简化了配置和部署;MyBatis负责数据库交互,兼顾SQL的灵活性;Thymeleaf作为模板引擎实现服务端渲染,快速完成前端页面与后端数据的绑定;集成OpenAI SDK并支持**流式输出**,符合AI聊天的实时交互需求。 2. **功能模块划分清晰** 按业务拆分为课程管理、用户登录、OpenAI聊天三大模块,控制器层、服务层、数据访问层职责明确,实体类与数据库表结构对应,符合Java Web开发的分层设计思想。 3. **基础业务功能完整** 课程管理覆盖**增删改查**全流程,支持按教师名查询的条件检索;用户登录实现基础的身份验证;OpenAI集成实现了聊天上下文的向量存储和记忆功能,为智能对话提供了基础。 ## 二、项目现存问题 1. **代码拼写与命名不规范** - 服务层接口存在拼写错误:`CorseService.java`(应为`CourseService`)、`UserServcie.java`(应为`UserService`),违反Java命名的驼峰法和语义准确性。 - 工具类`CourseTools.java`与Service层功能重叠,工具类的职责定位模糊(Service层已实现课程的增删改查,工具类无需重复实现)。 2. **缺少核心机制与安全保障** - 登录功能仅做基础验证,**无权限控制**(如基于角色的访问控制,普通用户/管理员权限区分),也未实现token登录、密码加密存储(如BCrypt加密),存在安全风险。 - 全局**异常处理机制缺失**,控制器层、服务层的异常直接抛出,未做统一捕获和友好提示,用户体验差且不利于问题排查。 - OpenAI的API密钥、请求参数等配置可能硬编码在代码中,未通过`application.properties`外部化管理,不利于环境切换和配置保密。 3. **架构与性能待优化** - 数据访问层仅使用原生MyBatis,未引入分页插件(如PageHelper),查询大量课程数据时会出现性能问题。 - 前端交互逻辑简单(仅通过`script.js`管理作业卡片),未做表单校验、请求防抖等处理,易出现非法数据提交和重复请求。 - 聊天记忆和向量存储的Bean初始化直接写在启动类中,耦合度高,未通过配置类或自定义starter解耦。 4. **工程化与可维护性不足** - 缺少单元测试(如Service层、Controller层的测试用例),无法验证业务逻辑的正确性。 - 静态资源(CSS/JS)未做压缩、缓存处理,前端加载速度慢;Thymeleaf模板未做公共片段抽取(如页眉、页脚),存在代码冗余。 ## 三、针对性优化建议 ### 1. 规范代码与命名 - 修正所有拼写错误,统一遵循**Java命名规范**:类名使用大驼峰(如`CourseService`)、方法名使用小驼峰(如`getCourseById`)、常量全大写(如`OPENAI_API_KEY`)。 - 移除`CourseTools.java`,将其功能合并至`CourseServiceImpl`,工具类仅保留通用工具(如日期处理、字符串工具),避免与服务层功能重叠。 ### 2. 增强安全与权限控制 - 引入**Spring Security**或**Shiro**实现权限管理,区分普通用户和管理员角色(如管理员可编辑课程,普通用户仅可查看)。 - 对用户密码进行**BCrypt加密存储**,登录时通过加密算法验证,避免明文密码泄露。 - 将OpenAI的API密钥、请求超时时间等配置写入`application.properties`,通过`@Value`或`@ConfigurationProperties`注入使用。 ### 3. 完善异常与数据校验 - 创建**全局异常处理器**(`@RestControllerAdvice`),捕获控制器层、服务层的异常(如数据库异常、OpenAI请求异常),返回统一的错误码和提示信息。 - 引入**Hibernate Validator**对前端提交的参数进行校验(如课程名非空、用户名格式验证),在实体类中通过注解(`@NotBlank`、`@Size`)配置校验规则。 ### 4. 优化架构与性能 - 集成**PageHelper**分页插件,对课程查询接口实现分页功能,减少大数据量查询的性能损耗。 - 对OpenAI的聊天请求做**缓存处理**(如使用Redis缓存高频问题的回答),减少重复调用OpenAI API的成本。 - 将启动类中的Bean初始化逻辑抽离至**配置类**(`@Configuration`),如`VectorStoreConfig`、`ChatMemoryConfig`,降低启动类的耦合度。 ### 5. 提升前端交互与工程化 - 对前端表单添加**JS校验**(如非空校验、格式校验),为按钮添加请求防抖(避免重复提交)。 - 使用Thymeleaf的**模板片段**(`th:fragment`)抽取公共页面部分(如导航栏、页脚),减少代码冗余。 - 编写**单元测试**(使用JUnit 5 + Mockito),覆盖Service层的核心业务方法(如课程添加、用户登录验证),保证代码质量。 ## 四、功能扩展方向 基于现有基础,可快速扩展以下实用功能: 1. **课程评分与评论**:新增课程评论表,实现学生对课程的评分和留言功能。 2. **聊天记录持久化**:将OpenAI的聊天记录存入数据库,支持用户查看历史对话。 3. **文件上传**:允许教师上传课程资料(如PPT、作业文件),通过Spring Boot的文件上传功能实现。 4. **多端适配**:基于现有接口开发RESTful API,配合Vue/React实现前后端分离的前端页面,适配移动端和PC端。 ![登录](.mvn/%E7%99%BB%E5%BD%95.png)![输入图片说明](.mvn/%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2.png)![输入图片说明](.mvn/%E6%B7%BB%E5%8A%A0.png)!