变更内容: 1. 删除 maintainItemId 字段(冗余,无实际作用) 2. 保留 maintainItem 字段(直接存储项目名称) 3. 新增接口:获取已使用的保养项目列表(去重) 4. 前端可使用该接口提供下拉提示,提升用户体验 5. 添加 maintainItem 字段的非空校验 设计思路: - 不引入保养项目字典表(避免过度设计) - 通过 DISTINCT 查询提供已使用项目列表 - 用户可以输入新项目,也可以从已有项目中选择 - 后续如需规范化,可平滑升级到字典表方案
8.5 KiB
8.5 KiB
停车场和车型参数模块 - 测试执行报告
📅 测试时间
开始时间: 2026-03-12 01:30
当前时间: 2026-03-12 01:36
🎯 测试目标
- 执行数据库迁移
- 启动应用服务
- 执行 API 测试
- 验证功能正常
✅ 已完成的工作
1. 开发工作 ✅
- ✅ 停车场管理模块(6 个接口)
- ✅ 车型参数管理模块(8 个接口)
- ✅ 保养项目管理(一对多关系)
- ✅ 代码编译通过(BUILD SUCCESS)
- ✅ 完整的文档(9 个文档)
- ✅ 测试脚本(test-api.sh)
2. 环境准备 ✅
- ✅ MySQL 客户端安装成功
- ✅ SQL 迁移脚本准备完成
- ✅ 测试脚本准备完成
⏸️ 当前状态
数据库迁移 - 需要手动执行
问题说明
- 网络限制: 本地无法直接连接远程数据库(IP 白名单限制)
- SSH 认证: SSH 密码认证失败,需要手动输入密码或配置密钥
- Docker 环境: 数据库运行在 Docker 容器中(oneos-mysql)
解决方案
已创建详细的手动操作指南:DATABASE_MIGRATION_MANUAL.md
需要执行的步骤
方式 1:手动登录服务器执行(推荐)
# 1. 登录服务器(需要手动输入密码)
ssh root@47.103.115.36
# 密码: Passw0rd2026@ssl
# 2. 创建 SQL 文件(复制 sql/update-2026-03-12-停车场和车型参数模块.sql 的内容)
cat > /tmp/update-asset.sql << 'EOF'
# 粘贴 SQL 内容
EOF
# 3. 执行 SQL
docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system < /tmp/update-asset.sql
# 4. 验证
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system -e "SHOW TABLES LIKE 'asset_%';"
方式 2:配置 SSH 密钥后自动化
# 1. 配置 SSH 密钥
ssh-copy-id root@47.103.115.36
# 2. 上传并执行
scp sql/update-2026-03-12-停车场和车型参数模块.sql root@47.103.115.36:/tmp/
ssh root@47.103.115.36 "docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system < /tmp/update-2026-03-12-停车场和车型参数模块.sql"
📋 完整测试流程
阶段 1:数据库迁移 ⏳
状态: 等待手动执行
操作步骤:
- 登录服务器:
ssh root@47.103.115.36 - 上传 SQL 文件到
/tmp/ - 执行 SQL:
docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system < /tmp/update-2026-03-12-停车场和车型参数模块.sql - 验证表结构:
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system -e "SHOW TABLES LIKE 'asset_%';"
验证清单:
- asset_parking 表存在
- asset_parking 包含 9 个新字段
- asset_vehicle_model 表创建成功
- asset_vehicle_model_maintain_item 表创建成功
阶段 2:启动应用服务 ⏳
状态: 等待数据库迁移完成
操作步骤:
cd /Users/kkfluous/Projects/ai-coding/ln-oneos/oneos-backend
# 1. 打包应用
mvn clean package -DskipTests
# 2. 启动服务
java -jar yudao-server/target/yudao-server-*.jar
# 或者使用 Maven 启动
cd yudao-server
mvn spring-boot:run
验证清单:
- 服务启动成功
- 无数据库连接错误
- 无 Bean 创建错误
- 端口 48080 监听正常
阶段 3:API 测试 ⏳
状态: 等待服务启动
3.1 获取访问 Token
方式 1:通过登录接口
curl -X POST http://localhost:48080/admin-api/system/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "admin123"
}'
方式 2:通过 Swagger 文档
访问: http://localhost:48080/doc.html
使用登录接口获取 token
3.2 执行自动化测试
# 1. 修改测试脚本中的 TOKEN
vim test-api.sh
# 将 YOUR_TOKEN_HERE 替换为实际的 token
# 2. 运行测试
./test-api.sh
3.3 手动测试用例
测试 1:创建停车场
curl -X POST http://localhost:48080/admin-api/asset/parking/create \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"name": "杭州停车场",
"principal": "张三",
"contactName": "李四",
"contactPhone": "13800138000",
"address": "浙江省杭州市西湖区",
"longitude": "120.123456",
"latitude": "30.123456",
"capacity": 100,
"parkedAmount": 0,
"stockArea": 1,
"unusualActionCity": 1,
"remark": "测试停车场"
}'
测试 2:创建车型参数(带保养项目)
curl -X POST http://localhost:48080/admin-api/asset/vehicle-model/create \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"brand": 1,
"model": 1,
"modelCode": "HFC1043K1",
"modelName": "江淮骏铃V6",
"hydrogenCapacity": 165,
"reserveElectricity": 80.00,
"maintainItems": [
{
"maintainItem": "更换机油",
"maintainContent": "更换机油、机滤",
"materialsExpenses": 200.00,
"hourFee": 100.00,
"kilometerCycle": 5000,
"timeCycle": 6
}
]
}'
验证清单:
- 停车场创建成功
- 停车场详情包含新字段
- 车型参数创建成功
- 保养项目保存成功
- 获取详情时返回保养项目
- 分页查询正常
- 精简列表正常
- 按品牌/车型查询正常
📊 测试结果统计
开发阶段
| 项目 | 状态 | 说明 |
|---|---|---|
| 代码开发 | ✅ 完成 | 25 个 Java 文件 |
| 代码编译 | ✅ 通过 | BUILD SUCCESS |
| 文档编写 | ✅ 完成 | 9 个文档 |
| 测试脚本 | ✅ 完成 | test-api.sh |
部署阶段
| 项目 | 状态 | 说明 |
|---|---|---|
| 环境准备 | ✅ 完成 | MySQL 客户端已安装 |
| 数据库迁移 | ⏳ 待执行 | 需要手动登录服务器 |
| 服务启动 | ⏳ 待执行 | 等待数据库迁移 |
| API 测试 | ⏳ 待执行 | 等待服务启动 |
功能测试
| 模块 | 接口数 | 状态 | 说明 |
|---|---|---|---|
| 停车场管理 | 6 | ⏳ 待测试 | 等待服务启动 |
| 车型参数管理 | 8 | ⏳ 待测试 | 等待服务启动 |
| 保养项目管理 | - | ⏳ 待测试 | 级联功能 |
📝 相关文档
开发文档
- PROJECT_DELIVERY_SUMMARY.md - 项目交付总结
- DEVELOPMENT_PROGRESS.md - 开发进度
- COMPLETION_REPORT.md - 完成报告
- MAINTAIN_ITEM_REPORT.md - 保养项目报告
部署文档
- DEPLOYMENT_TEST_GUIDE.md - 部署和测试指南(详细)
- DATABASE_MIGRATION_MANUAL.md - 数据库迁移手动操作指南 ⭐
- test-api.sh - API 自动化测试脚本
其他文档
- MIGRATION_REPORT.md - 项目迁移报告
- RENAME_REPORT.md - 模块重命名报告
- CLEANUP_REPORT.md - 模块清理报告
🎯 下一步操作
立即需要做的(手动)
-
登录服务器执行数据库迁移
- 参考:DATABASE_MIGRATION_MANUAL.md
- 预计时间:5 分钟
-
启动应用服务
- 参考:DEPLOYMENT_TEST_GUIDE.md
- 预计时间:2 分钟
-
执行 API 测试
- 使用:test-api.sh
- 预计时间:5 分钟
可选优化(后续)
- 配置 SSH 密钥(实现自动化部署)
- 添加单元测试
- 添加集成测试
- 配置 CI/CD 流水线
💡 建议
短期建议
- 优先完成数据库迁移 - 这是后续测试的前提
- 使用 Swagger 文档测试 - 比 curl 更直观
- 保存测试数据 - 便于后续回归测试
长期建议
- 配置 SSH 密钥 - 实现自动化部署
- 搭建测试环境 - 独立的测试数据库
- 完善测试用例 - 覆盖更多场景
- 添加监控告警 - 及时发现问题
📞 技术支持
开发者: Kiro (OpenClaw AI Assistant)
完成时间: 2026-03-12 01:36
项目路径: /Users/kkfluous/Projects/ai-coding/ln-oneos/oneos-backend/
🎉 总结
已完成
- ✅ 完整的代码开发(25 个文件,14 个接口)
- ✅ 编译验证通过(BUILD SUCCESS)
- ✅ 完善的文档(10 个文档)
- ✅ 测试脚本准备(test-api.sh)
- ✅ 环境准备(MySQL 客户端)
待完成
- ⏳ 数据库迁移(需要手动登录服务器)
- ⏳ 服务启动(等待数据库迁移)
- ⏳ API 测试(等待服务启动)
阻塞原因
- 网络限制:无法直接连接远程数据库
- SSH 认证:需要手动输入密码或配置密钥
解决方案
已提供详细的手动操作指南(DATABASE_MIGRATION_MANUAL.md),按照指南操作即可完成部署和测试。
状态: ✅ 开发完成,⏳ 等待手动部署测试
下一步: 参考 DATABASE_MIGRATION_MANUAL.md 执行数据库迁移