# Ether 智慧物业管理平台 - 问题解决记录 **文档版本**: v1.0 **最后更新**: 2026-02-10 **维护原则**: 按时间倒序记录,新问题置顶 --- ## 一、2026-02-10 问题修复记录 ### 1. 登录功能问题修复 ✅ **问题描述**: 前端登录后无法正确获取用户信息,路由跳转异常 **问题原因**: 1. 后端 LoginResponse 缺少 user 字段,前端需要该字段保存用户信息 2. 前端路由配置错误,动态路由未正确添加为 Layout 的子路由 3. layout 组件缺少 SafetyOutlined 图标支持 **解决方案**: - 后端 LoginResponse 添加 user 字段 - 后端 AuthServiceImpl 设置 user 对象到响应中 - 前端路由配置修复,动态路由正确添加为 Layout 的子路由 - 前端 layout 组件添加 SafetyOutlined 图标支持 **涉及文件**: - `ether-auth/src/main/java/com/ether/auth/dto/LoginResponse.java` - `ether-auth/src/main/java/com/ether/auth/service/impl/AuthServiceImpl.java` - `ether-ui-admin/src/router/index.ts` - `ether-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.ts` - `ether-ui-admin/src/views/system/user/index.vue` - `ether-ui-admin/src/views/system/permission/index.vue` --- ### 4. 用户管理菜单缺少图标修复 ✅ **问题描述**: 用户管理菜单项缺少图标显示 **问题原因**: layout 组件 iconMap 未添加 UserOutlined 图标映射 **解决方案**: layout 组件 iconMap 添加 UserOutlined 图标映射 **涉及文件**: - `ether-ui-admin/src/layout/index.vue` --- ### 5. 菜单页面获取列表失败修复 ✅ **问题描述**: 菜单页面无法正确获取数据列表 **问题原因**: 1. 前端 API 路径缺少 `/api/v1` 前缀 2. 后端 Controller 路径缺少 `/api/v1` 前缀 3. 后端实体类使用 PostGIS 依赖导致兼容性问题 **解决方案**: - 前端 API 路径修复,添加 `/api/v1` 前缀 - 后端 Controller 路径修复,添加 `/api/v1` 前缀 - 后端实体类移除 PostGIS 依赖,改用 longitude/latitude 字段 **涉及文件**: - `ether-ui-admin/src/api/mdm/space-node.ts` - `ether-mdm/src/main/java/com/ether/mdm/controller/SpaceNodeController.java` - `ether-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.vue` - `ether-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. 端到端测试问题修复 ✅ **问题描述**: 端到端测试执行时遇到多个问题 **已修复问题**: 1. **密码加密方案**: - 添加 `salt` 字段到 `auth_user` 表 - 使用随机 8 位 Salt - 密码格式: `salt$MD5(password+salt)` 2. **前端路由错误**: - 修复 `Empty` 组件导入错误 - 从 `@ant-design/icons-vue` 改为 `ant-design-vue` 3. **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.java` - `ether-gateway/src/main/java/com/ether/gateway/filter/ProjectContextFilter.java` - `ether-mdm/src/main/java/com/ether/mdm/controller/SpaceNodeController.java` - `ether-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 | 权限管理功能测试 | ⏸️ 未执行 | ### 测试环境要求 完整的端到端测试需要以下服务全部启动: 1. **基础设施** - PostgreSQL 15 (端口 5432) - RabbitMQ (端口 5672, 15672) - Nacos (端口 8848) 2. **后端微服务** - ether-gateway (端口 8080) - ether-auth (端口 8081) - ether-mdm (端口 8082) - ether-ops (端口 8083) - ether-finance (端口 8084) 3. **前端** - ether-ui-admin (端口 5174) ### 快速启动脚本 ```bash # 启动所有服务 chmod +x /Users/Chiguyong/Code/Ether/start-services.sh /Users/Chiguyong/Code/Ether/start-services.sh ``` --- ## 七、文档维护说明 1. **记录原则**: 所有生产环境问题和重要开发问题必须记录 2. **记录格式**: 问题描述 → 问题原因 → 解决方案 → 涉及文件 3. **更新频率**: 每次修复问题后立即更新 4. **归档策略**: 每季度归档一次已解决的问题到历史记录 --- **文档维护**: 本文档为问题解决记录的唯一权威文档,所有问题修复记录请直接修改此文件。