ether-docs/05-ISSUES/ISSUE_RESOLUTION_LOG.md

8.7 KiB
Raw Blame History

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: createupdate
  • MDM 服务: ddl-auto: createupdate
  • 密码加密: 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)

快速启动脚本

# 启动所有服务
chmod +x /Users/Chiguyong/Code/Ether/start-services.sh
/Users/Chiguyong/Code/Ether/start-services.sh

七、文档维护说明

  1. 记录原则: 所有生产环境问题和重要开发问题必须记录
  2. 记录格式: 问题描述 → 问题原因 → 解决方案 → 涉及文件
  3. 更新频率: 每次修复问题后立即更新
  4. 归档策略: 每季度归档一次已解决的问题到历史记录

文档维护: 本文档为问题解决记录的唯一权威文档,所有问题修复记录请直接修改此文件。