110
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | 202501福大-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 软工实践——CodeArts团队实战总结 |
| 这个作业的目标 | 实践多人协作的软件开发流程(Git协作、模块分工),体验从需求分析到产品上线的完整项目周期 |
| 其他参考文献 | Spring Boot官方文档、React官方文档、Ant Design组件库文档、阿里云百炼API文档 |
截止2025.11.12 15:45,commit次数:39
以下是日志截图



基于Spring Boot 3.4.x + MyBatis + Langchain4j构建的智能购车咨询系统,集成多个大语言模型(通义千问、OpenAI),为用户提供个性化的购车建议。
carConsult/
├── src/main/java/com/carconsult/
│ ├── CarConsultApplication.java # 启动类
│ ├── config/ # 配置类
│ ├── entity/ # 实体类
│ ├── dto/ # 数据传输对象
│ ├── vo/ # 视图对象
│ ├── mapper/ # MyBatis Mapper
│ ├── service/ # 服务层
│ ├── controller/ # 控制器
│ ├── security/ # 安全模块
│ ├── llm/ # LLM集成
│ ├── common/ # 公共类
│ ├── exception/ # 异常处理
│ └── util/ # 工具类
├── src/main/resources/
│ ├── application.yml # 主配置
│ ├── application-dev.yml # 开发环境配置
│ ├── mapper/ # MyBatis XML
│ └── db/
│ └── schema.sql # 数据库脚本
└── pom.xml # Maven依赖
# 登录MySQL
mysql -u root -p
# 执行初始化脚本
source src/main/resources/db/schema.sql
编辑 src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/car_consult
username: your_username
password: your_password
llm:
qianwen:
api-key: sk-45ef3e8a6748416ca8b274d8cdaf5460
chatglm:
api-key: d2c8a49289484cdbaebc1b3596dd27fb.EF3c7iozYvkB50qk
注意: API Key已经配置在application.yml中,可以直接使用。
# 使用Maven运行
mvn spring-boot:run
# 或者打包后运行
mvn clean package
java -jar target/car-consult-1.0.0.jar
项目启动后访问: http://localhost:8080/
POST /api/auth/register
Content-Type: application/json
{
"username": "testuser",
"password": "123456",
"confirmPassword": "123456",
"realName": "张三",
"phone": "13800138000",
"budget": 20.0,
"preferredType": "SUV",
"preferredBrand": "比亚迪,特斯拉",
"useScene": "家庭",
"fuelType": "电动"
}
POST /api/auth/login
Content-Type: application/json
{
"username": "testuser",
"password": "123456"
}
Response:
{
"code": 200,
"message": "登录成功",
"data": {
"token": "eyJhbGciOiJIUzI1NiJ9..."
}
}
GET /api/user/info
Authorization: Bearer {token}
PUT /api/user/info
Authorization: Bearer {token}
Content-Type: application/json
{
"budget": 25.0,
"preferredType": "轿车"
}
POST /api/consultation/create
Authorization: Bearer {token}
Content-Type: application/json
{
"budgetRange": "15-20万",
"preferredType": "SUV",
"useScene": "家庭",
"fuelType": "电动",
"brandPreference": "比亚迪,特斯拉",
"additionalRequirements": "希望有自动驾驶功能",
"llmProvider": "qianwen" // 可选值: "qianwen" 或 "chatglm"
}
GET /api/consultation/list?pageNum=1&pageSize=10
Authorization: Bearer {token}
GET /api/consultation/detail/{recordId}
Authorization: Bearer {token}
POST /api/consultation/rate/{recordId}
Authorization: Bearer {token}
Content-Type: application/json
{
"rating": 5,
"feedback": "非常有帮助,建议很专业"
}
testuser12345613800138000123456,请根据实际情况修改llmProvider参数选择qianwen或chatglmllmProvider: "qianwen"llmProvider: "chatglm"nailong team



认证接口:
| 接口方法 | 接口路径 | 功能描述 | 请求参数 | 响应数据 |
|---|---|---|---|---|
POST | /api/v1/auth/register | 用户注册 | 用户名、密码、手机号、邮箱、预算、偏好车型 | 用户ID、用户名、JWT令牌 |
POST | /api/v1/auth/login | 用户登录 | 用户名、密码 | 用户信息、JWT令牌、过期时间 |
用户信息接口:
| 接口方法 | 接口路径 | 功能描述 | 请求头 | 响应数据 |
|---|---|---|---|---|
GET | /api/v1/users/profile | 获取用户信息 | Authorization Bearer Token | 完整用户档案信息 |
PUT | /api/v1/users/profile | 更新用户信息 | Authorization Bearer Token | 更新后的用户信息 |
咨询核心接口:
| 接口方法 | 接口路径 | 功能描述 | 请求头 | 请求体 | 响应数据 |
|---|---|---|---|---|---|
POST | /api/v1/consultations | 提交购车咨询 | Authorization Bearer Token | 预算范围、偏好车型、使用场景、燃料类型、品牌偏好、特殊要求 | 咨询ID、推荐车型列表、对比分析、购买建议 |
咨询历史接口:
| 接口方法 | 接口路径 | 功能描述 | 请求头 | 查询参数 | 响应数据 |
|---|---|---|---|---|---|
GET | /api/v1/consultations/history | 获取咨询历史 | Authorization Bearer Token | 页码、页大小、时间范围 | 咨询记录分页列表 |
GET | /api/v1/consultations/{consultationId} | 获取咨询详情 | Authorization Bearer Token | - | 完整的咨询请求和结果详情 |
积分操作接口:
| 接口方法 | 接口路径 | 功能描述 | 请求头 | 请求体 | 响应数据 |
|---|---|---|---|---|---|
GET | /api/v1/points/balance | 查询积分余额 | Authorization Bearer Token | - | 总积分、可用积分、会员等级 |
POST | /api/v1/points/exchange | 积分兑换 | Authorization Bearer Token | 礼品ID、数量 | 兑换记录、消耗积分 |
积分历史接口:
| 接口方法 | 接口路径 | 功能描述 | 请求头 | 查询参数 | 响应数据 |
|---|---|---|---|---|---|
GET | /api/v1/points/history | 获取积分历史 | Authorization Bearer Token | 页码、页大小、变更类型 | 积分变更记录分页列表 |
管理员认证接口:
| 接口方法 | 接口路径 | 功能描述 | 请求体 | 响应数据 |
|---|---|---|---|---|
POST | /api/v1/admin/auth/login | 管理员登录 | 用户名、密码 | 管理员信息、权限列表、JWT令牌 |
数据管理接口:
| 接口方法 | 接口路径 | 功能描述 | 请求头 | 查询参数 | 响应数据 |
|---|---|---|---|---|---|
GET | /api/v1/admin/users | 用户列表查询 | Authorization Bearer Token | 页码、页大小、用户名、状态、时间范围 | 用户列表分页数据 |
GET | /api/v1/admin/consultations | 咨询记录查询 | Authorization Bearer Token | 页码、页大小、用户名、咨询类型、时间范围 | 咨询记录分页数据 |
统计分析接口:
| 接口方法 | 接口路径 | 功能描述 | 请求头 | 查询参数 | 响应数据 |
|---|---|---|---|---|---|
GET | /api/v1/admin/dashboard/overview | 仪表盘概览 | Authorization Bearer Token | - | 用户统计、咨询统计、积分统计、系统统计 |
GET | /api/v1/admin/analysis/hot-topics | 热门话题分析 | Authorization Bearer Token | 时间范围、TopN数量 | 热门话题列表、词云数据、趋势分析 |
用户请求 → API网关 → 身份验证 → 权限检查 → 业务服务 → 数据持久化 → 响应返回
│ │ │ │ │ │ │
│ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼
[前端/移动端] → [路由分发] → [JWT验证] → [角色权限] → [业务逻辑] → [数据库] → [JSON响应]
用户状态管理流程:
用户请求 → 身份验证 → 权限校验 → 业务处理 → 状态更新 → 响应返回
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
[登录/注册] → [JWT验证] → [角色权限] → [数据操作] → [会话更新] → [结果返回]
安全控制策略:
数据一致性保障:
缓存策略:
并发处理:
购车咨询模块是系统的核心功能,通过集成大语言模型为用户提供个性化的购车推荐和专业的购车建议。
graph TD
A[开始咨询请求] --> B[验证用户身份和权限]
B --> C[构建咨询请求缓存键]
C --> D{检查缓存中是否存在相同请求}
D -->|存在| E[返回缓存结果]
D -->|不存在| F[构建LLM提示词模板]
F --> G[填充用户具体参数到模板]
G --> H[配置LLM调用参数]
H --> I[调用LLM API]
I --> J[解析LLM返回的文本响应]
J --> K[提取结构化推荐信息]
K --> L[验证和补全推荐数据]
L --> M[保存结果到缓存]
M --> N[记录调用指标和日志]
N --> O[返回推荐结果给用户]
咨询积分系统通过积分激励机制促进用户参与购车咨询,提升用户活跃度和平台粘性。
用户行为触发—>积分规则匹配—>积分计算与发放—>积分余额更新—>积分记录存储—>实时通知用户
登陆界面







| 学号 | 姓名 | 工作内容 | 贡献度 |
|---|---|---|---|
| 102300114 | 杨嘉乐 | 编写需求文档、设计测试用例、组织单元/集成/系统测试 | 10% |
| 102300126 | 林浩嶒 | 制定计划、跟踪进度、LLM接口集成和优化 | 14% |
| 102300130 | 郭林钧 | 用户管理模块开发、咨询服务开发 | 17% |
| 102300131 | 方齐东 | 系统测试、压力测试、部署运维 | 10% |
| 102300132 | 陈赏 | 积分系统开发、后端开发 | 14% |
| 102300133 | 陈俊鸣 | 页面路由 | 9% |
| 102300430 | 胡喆昶 | 前端架构设计 | 12% |
| 102300135 | 李炜韩 | 组件库搭建 | 14% |
开发工作流程:
| 困难 | 多人修改同一文件时,容易产生版本冲突。 |
|---|---|
| 解决方法 | 使用Git进行版本控制,遵循分支管理策略(如GitFlow)。明确分工,减少同一文件的多人同时修改。 |
| 困难 | 用户在购车咨询过程中的需求是动态、模糊的,但用例规约要求明确、完整的“主事件流”。 |
|---|---|
| 解决方法 | 采用场景化、多轮对话的用例描述方式,将一次咨询拆解为多个子用例。 |
| 困难 | 精准还原设计风格,保持与用户端 UI 视觉一致性 |
|---|---|
| 解决方法 | 从用户端UI中归纳出设计系统变量,在浏览器开发者工具中实时调整颜色和间距,直至视觉效果高度匹配 |
| 困难 | 将html代码转为vue代码后,新页面与原来页面有较大出入 |
|---|---|
| 解决方法 | 在ai辅助下发现问题并修改出理想的页面效果 |
| 困难 | 路由权限控制逻辑复杂,需要区分不同用户角色的访问权限 |
|---|---|
| 解决方法 | 采用路由守卫结合元信息配置,实现动态权限验证 |
| 困难 | 学习langchain4j的调用ai大模型出现许多问题 |
|---|---|
| 解决方法 | 通过ai给出的示例代码解决了项目中调用ai大模型的问题 |
| 困难 | 如何在前端接收过程中同步暂存并最终提交完整记录,存在时序控制难题。 |
|---|---|
| 解决方法 | 前端流式接收并实时拼接内容,每次发起咨询时,标记会话ID与临时状态,流结束时自动提交完整内容 |
| 困难 | 测试时模拟请求一次性使用太多线程组导致耗时太长,效率低下,浪费资源 |
|---|---|
| 解决方法 | 使用少量线程组设计多次循环 |
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 60 | 55 |
| · Estimate | · 估计这个任务需要多少时间 | 20 | 15 |
| Development | 开发 | 440 | 450 |
| · Analysis | · 需求分析(包括学习新技术) | 40 | 35 |
| · Design Spec | · 生成设计文档 | 30 | 35 |
| · Design Review | · 设计复审 | 20 | 25 |
| · Coding Standard | · 代码规范(为目前的开发制定合适的规范) | 15 | 10 |
| · Design | · 具体设计 | 50 | 55 |
| · Coding | · 具体编码 | 200 | 195 |
| · Code Review | · 代码复审 | 35 | 40 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 50 | 55 |
| Reporting | 报告 | 70 | 75 |
| · Test Report | · 测试报告 | 30 | 35 |
| · Size Measurement | · 计算工作量 | 20 | 20 |
| · Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 20 | 20 |
| Summary | 合计 | 570 | 580 |
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | ||
| · Estimate | · 估计这个任务需要多少时间 | 570 | 420 |
| Development | 开发 | ||
| · Analysis | · 需求分析(包括学习新技术) | 30 | 30 |
| · Design Spec | · 生成设计文档 | 30 | 20 |
| · Design Review | · 设计复审 | 20 | 25 |
| · Coding Standard | · 代码规范(为目前的开发制定合适的规范) | 40 | 30 |
| · Design | · 具体设计 | 50 | 60 |
| · Coding | · 具体编码 | 200 | 210 |
| · Code Review | · 代码复审 | 50 | 60 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 100 | 90 |
| Reporting | 报告 | ||
| · Test Report | · 测试报告 | 20 | 15 |
| · Size Measurement | · 计算工作量 | 10 | 15 |
| · Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 20 | 20 |
| Summary | 合计 | 570 | 575 |
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | ||
| · Estimate | · 估计这个任务需要多少时间 | 580 | 620 |
| Development | 开发 | ||
| · Analysis | · 需求分析(包括学习新技术) | 60 | 70 |
| · Design Spec | · 生成设计文档 | 40 | 35 |
| · Design Review | · 设计复审 | 20 | 15 |
| · Coding Standard | · 代码规范(为目前的开发制定合适的规范) | 15 | 10 |
| · Design | · 具体设计 | 50 | 60 |
| · Coding | · 具体编码 | 200 | 220 |
| · Code Review | · 代码复审 | 40 | 45 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 90 | 100 |
| Reporting | 报告 | ||
| · Test Report | · 测试报告 | 25 | 30 |
| · Size Measurement | · 计算工作量 | 10 | 10 |
| · Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 30 | 30 |
| Summary | 合计 | 580 | 620 |
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | ||
| · Estimate | · 估计这个任务需要多少时间 | 560 | 567 |
| Development | 开发 | ||
| · Analysis | · 需求分析(包括学习新技术) | 50 | 45 |
| · Design Spec | · 生成设计文档 | 25 | 20 |
| · Design Review | · 设计复审 | 20 | 25 |
| · Coding Standard | · 代码规范(为目前的开发制定合适的规范) | 35 | 30 |
| · Design | · 具体设计 | 50 | 60 |
| · Coding | · 具体编码 | 230 | 210 |
| · Code Review | · 代码复审 | 30 | 40 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 80 | 90 |
| Reporting | 报告 | ||
| · Test Report | · 测试报告 | 15 | 15 |
| · Size Measurement | · 计算工作量 | 10 | 12 |
| · Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 15 | 20 |
| Summary | 合计 | 560 | 567 |
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | ||
| · Estimate | · 估计这个任务需要多少时间 | 460 | 500 |
| Development | 开发 | ||
| · Analysis | · 需求分析(包括学习新技术) | 40 | 50 |
| · Design Spec | · 生成设计文档 | 50 | 40 |
| · Design Review | · 设计复审 | 30 | 20 |
| · Coding Standard | · 代码规范(为目前的开发制定合适的规范) | 20 | 10 |
| · Design | · 具体设计 | 60 | 80 |
| · Coding | · 具体编码 | 160 | 200 |
| · Code Review | · 代码复审 | 30 | 40 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 20 | 30 |
| Reporting | 报告 | ||
| · Test Report | · 测试报告 | 30 | 16 |
| · Size Measurement | · 计算工作量 | 10 | 4 |
| · Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 10 | 10 |
| Summary | 合计 | 460 | 500 |
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 30 | 15 |
| · Estimate | · 估计这个任务需要多少时间 | 30 | 15 |
| Development | 开发 | 580 | 495 |
| · Analysis | · 需求分析(包括学习新技术) | 90 | 70 |
| · Design Spec | · 生成设计文档 | 40 | 30 |
| · Design Review | · 设计复审 | 30 | 20 |
| · Coding Standard | · 代码规范(为目前的开发制定合适的规范) | 10 | 10 |
| · Design | · 具体设计 | 70 | 70 |
| · Coding | · 具体编码 | 200 | 180 |
| · Code Review | · 代码复审 | 60 | 45 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 80 | 70 |
| Reporting | 报告 | 50 | 40 |
| · Test Report | · 测试报告 | 30 | 20 |
| · Size Measurement | · 计算工作量 | 10 | 10 |
| · Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 10 | 10 |
| Summary | 合计 | 660 | 550 |
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | ||
| · Estimate | · 估计这个任务需要多少时间 | 550 | 575 |
| Development | 开发 | ||
| · Analysis | · 需求分析(包括学习新技术) | 30 | 40 |
| · Design Spec | · 生成设计文档 | 30 | 30 |
| · Design Review | · 设计复审 | 30 | 25 |
| · Coding Standard | · 代码规范(为目前的开发制定合适的规范) | 20 | 20 |
| · Design | · 具体设计 | 60 | 50 |
| · Coding | · 具体编码 | 200 | 225 |
| · Code Review | · 代码复审 | 60 | 50 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 30 | 30 |
| Reporting | 报告 | ||
| · Test Report | · 测试报告 | 40 | 50 |
| · Size Measurement | · 计算工作量 | 20 | 20 |
| · Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 30 | 35 |
| Summary | 合计 | 550 | 575 |
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 30 | 30 |
| · Estimate | · 估计这个任务需要多少时间 | 5 | 5 |
| Development | 开发 | ||
| · Analysis | · 需求分析(包括学习新技术) | 30 | 25 |
| · Design Spec | · 生成设计文档 | 30 | 15 |
| · Design Review | · 设计复审 | 10 | 10 |
| · Coding Standard | · 代码规范(为目前的开发制定合适的规范) | 5 | 5 |
| · Design | · 具体设计 | 50 | 70 |
| · Coding | · 具体编码 | 120 | 150 |
| · Code Review | · 代码复审 | 20 | 15 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 80 | 100 |
| Reporting | 报告 | 10 | 10 |
| · Test Report | · 测试报告 | 20 | 15 |
| · Size Measurement | · 计算工作量 | 10 | 10 |
| · Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 10 | 10 |
| Summary | 合计 | 430 | 470 |