8.7 KiB
Ether 智慧物业管理平台 - 问题解决记录
文档版本: v1.0
最后更新: 2026-02-10
维护原则: 按时间倒序记录,新问题置顶
一、2026-02-10 问题修复记录
1. 登录功能问题修复 ✅
问题描述: 前端登录后无法正确获取用户信息,路由跳转异常
问题原因:
- 后端 LoginResponse 缺少 user 字段,前端需要该字段保存用户信息
- 前端路由配置错误,动态路由未正确添加为 Layout 的子路由
- layout 组件缺少 SafetyOutlined 图标支持
解决方案:
- 后端 LoginResponse 添加 user 字段
- 后端 AuthServiceImpl 设置 user 对象到响应中
- 前端路由配置修复,动态路由正确添加为 Layout 的子路由
- 前端 layout 组件添加 SafetyOutlined 图标支持
涉及文件:
ether-auth/src/main/java/com/ether/auth/dto/LoginResponse.javaether-auth/src/main/java/com/ether/auth/service/impl/AuthServiceImpl.javaether-ui-admin/src/router/index.tsether-ui-admin/src/layout/index.vue
2. 通知服务获取未读数量接口 500 错误修复 ✅
问题描述: 通知服务获取未读数量接口返回 500 错误
问题原因: 前端 permission store 未正确保存 currentProjectId 到 localStorage,导致项目上下文缺失
解决方案: 修复前端 permission store,确保 currentProjectId 正确保存到 localStorage
涉及文件:
ether-ui-admin/src/store/modules/permission.ts
3. 菜单切换问题修复 ✅
问题描述: 菜单页面切换时无法正常加载对应页面
问题原因: 前端路由配置缺少菜单路由映射(Mdm/, System/, Ops/*)
解决方案:
- 前端路由配置添加缺失的菜单路由映射
- 创建用户管理、权限管理等页面组件
涉及文件:
ether-ui-admin/src/router/index.tsether-ui-admin/src/views/system/user/index.vueether-ui-admin/src/views/system/permission/index.vue
4. 用户管理菜单缺少图标修复 ✅
问题描述: 用户管理菜单项缺少图标显示
问题原因: layout 组件 iconMap 未添加 UserOutlined 图标映射
解决方案: layout 组件 iconMap 添加 UserOutlined 图标映射
涉及文件:
ether-ui-admin/src/layout/index.vue
5. 菜单页面获取列表失败修复 ✅
问题描述: 菜单页面无法正确获取数据列表
问题原因:
- 前端 API 路径缺少
/api/v1前缀 - 后端 Controller 路径缺少
/api/v1前缀 - 后端实体类使用 PostGIS 依赖导致兼容性问题
解决方案:
- 前端 API 路径修复,添加
/api/v1前缀 - 后端 Controller 路径修复,添加
/api/v1前缀 - 后端实体类移除 PostGIS 依赖,改用 longitude/latitude 字段
涉及文件:
ether-ui-admin/src/api/mdm/space-node.tsether-mdm/src/main/java/com/ether/mdm/controller/SpaceNodeController.javaether-mdm/src/main/java/com/ether/mdm/entity/SpaceNode.java
6. 角色管理页面组件错误修复 ✅
问题描述: 角色管理页面使用错误的 UI 组件库
问题原因: 项目使用 Ant Design Vue,但角色管理页面使用了 Element Plus 组件
解决方案:
- 将 Element Plus 组件替换为 Ant Design Vue 组件
- 完善 permission store,添加 RoleType、DataScope 等类型定义
- 添加角色管理相关方法(loadRoles、addRole、editRole 等)
涉及文件:
ether-ui-admin/src/views/system/role/index.vueether-ui-admin/src/store/modules/permission.ts
7. 巡检管理页面报错修复 ✅
问题描述: 巡检管理页面 API 请求失败
问题原因: InspectionController 路径缺少 /api/v1 前缀
解决方案: 修复 InspectionController 路径,添加 /api/v1 前缀
涉及文件:
ether-mdm/src/main/java/com/ether/mdm/controller/InspectionController.java
二、2026-02-09 问题修复记录
1. 端到端测试问题修复 ✅
问题描述: 端到端测试执行时遇到多个问题
已修复问题:
-
密码加密方案:
- 添加
salt字段到auth_user表 - 使用随机 8 位 Salt
- 密码格式:
salt$MD5(password+salt)
- 添加
-
前端路由错误:
- 修复
Empty组件导入错误 - 从
@ant-design/icons-vue改为ant-design-vue
- 修复
-
API 请求失败:
- Gateway ProjectContextFilter 允许无 Project ID 的请求通过
- MDM 添加
GET /api/v1/mdm/space-nodes分页查询接口 - 创建
mdm_space_node表并设置正确权限
已修改的配置:
- Auth 服务:
ddl-auto: create→update - MDM 服务:
ddl-auto: create→update - 密码加密: BCrypt → MD5 + 随机 Salt
- 新增文件:
Md5SaltPasswordEncoder.java
涉及文件:
ether-auth/src/main/java/com/ether/auth/config/Md5SaltPasswordEncoder.javaether-gateway/src/main/java/com/ether/gateway/filter/ProjectContextFilter.javaether-mdm/src/main/java/com/ether/mdm/controller/SpaceNodeController.javaether-ui-admin/src/views/space/index.vue
三、早期问题修复记录
1. 数据库连接问题修复 ✅
问题描述: PostgreSQL 密码认证失败
解决方案: 修复 PostgreSQL 密码认证配置
2. API 路径统一 ✅
问题描述: 前后端 API 路径不一致
解决方案: 前后端路径统一为 /api/v1/**
3. CORS 跨域问题修复 ✅
问题描述: 前端调用后端 API 时遇到跨域问题
解决方案: Gateway 添加 globalcors 配置
涉及文件:
ether-gateway/src/main/resources/application.yml
4. 服务注册问题修复 ✅
问题描述: 微服务无法成功注册到 Nacos
解决方案: 统一服务注册配置,确保所有服务成功注册到 Nacos
5. 模块结构调整 ✅
问题描述: 项目模块结构不符合领域驱动设计
解决方案: 按领域驱动设计重新划分模块
6. JSONB 字段问题修复 ✅
问题描述: PostgreSQL JSONB 类型转换错误
解决方案: 修复 PostgreSQL JSONB 类型转换配置
四、问题分类统计
按问题类型统计
| 问题类型 | 数量 | 占比 |
|---|---|---|
| API 路径问题 | 4 | 25% |
| 前端组件问题 | 3 | 19% |
| 认证授权问题 | 2 | 13% |
| 数据库问题 | 2 | 13% |
| 配置问题 | 2 | 13% |
| 架构问题 | 1 | 6% |
| 其他 | 2 | 13% |
按模块统计
| 模块 | 问题数量 |
|---|---|
| ether-ui-admin (前端) | 6 |
| ether-gateway | 2 |
| ether-auth | 2 |
| ether-mdm | 3 |
| 基础设施 | 3 |
五、预防措施
1. API 路径规范
- 所有后端 Controller 必须添加
/api/v1前缀 - 前端 API 调用统一使用封装好的 api 模块
- 新增接口时必须同步更新前后端路径
2. 前端组件规范
- 统一使用 Ant Design Vue 组件库
- 图标必须从
@ant-design/icons-vue导入 - 新增页面时必须检查 iconMap 映射
3. 认证授权规范
- 所有响应必须包含必要的用户信息
- Token 和用户信息必须正确存储到 localStorage
- 项目上下文必须正确传递
4. 数据库规范
- 避免使用特定数据库的扩展功能(如 PostGIS)
- 使用标准字段类型(如 longitude/latitude 代替 Point)
- 数据库变更必须同步更新实体类
六、测试验证
端到端测试用例
| 用例ID | 测试项 | 状态 |
|---|---|---|
| TC-001 | 用户登录功能测试 | ✅ 通过 |
| TC-002 | 通知中心功能测试 | ✅ 通过 |
| TC-003 | 工单管理功能测试 | ⏸️ 未执行 |
| TC-004 | 设备管理功能测试 | ⏸️ 未执行 |
| TC-005 | 空间节点功能测试 | ✅ 通过 |
| TC-006 | 权限管理功能测试 | ⏸️ 未执行 |
测试环境要求
完整的端到端测试需要以下服务全部启动:
-
基础设施
- PostgreSQL 15 (端口 5432)
- RabbitMQ (端口 5672, 15672)
- Nacos (端口 8848)
-
后端微服务
- ether-gateway (端口 8080)
- ether-auth (端口 8081)
- ether-mdm (端口 8082)
- ether-ops (端口 8083)
- ether-finance (端口 8084)
-
前端
- ether-ui-admin (端口 5174)
快速启动脚本
# 启动所有服务
chmod +x /Users/Chiguyong/Code/Ether/start-services.sh
/Users/Chiguyong/Code/Ether/start-services.sh
七、文档维护说明
- 记录原则: 所有生产环境问题和重要开发问题必须记录
- 记录格式: 问题描述 → 问题原因 → 解决方案 → 涉及文件
- 更新频率: 每次修复问题后立即更新
- 归档策略: 每季度归档一次已解决的问题到历史记录
文档维护: 本文档为问题解决记录的唯一权威文档,所有问题修复记录请直接修改此文件。