BrunoGao and Claude
dfee47d3a2
feat: 完成管理员用户查询优化 - 实施admin_user_query_optimization_proposal
...
🚀 核心优化内容:
- ljwx-boot: 添加user_type和admin_level冗余字段到sys_user表
- ljwx-boot: 重构管理员判断方法,从复杂多表JOIN优化为单字段查询
- ljwx-boot: 实现数据同步维护机制,确保数据一致性
- ljwx-bigscreen: 移除复杂admin_helper,直接在SQL中使用user_type过滤
- 性能提升: 查询复杂度从O(N*M)优化为O(1)
📊 技术改进:
- 数据库: 新增UserType和AdminLevel枚举定义
- 迁移: 创建数据迁移脚本初始化现有用户类型
- 同步: 角色/组织变更时自动更新用户类型字段
- 查询: 消除多表JOIN,直接使用索引查询
🎯 预期效果:
- 减少数据库负载,提升查询性能
- 简化代码逻辑,降低维护成本
- 实时准确,无需复杂缓存机制
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-12 14:53:34 +08:00
BrunoGao and Claude
e7d60923c2
feat: 完成v2.0.2版本发布准备 - 修复所有构建错误和监控系统
...
✨ 主要改进:
- 修复ljwx-admin前端构建错误,完成Element Plus到Naive UI的迁移
- 修复监控系统Docker镜像构建问题
- 完善告警系统自动处理功能
- 新增健康建议和档案管理模块
🔧 技术修复:
- 修复Vue组件中重复defineProps问题
- 修复无效的v-model绑定
- 修复缺失的组件导入和API函数
- 修复Docker镜像用户权限问题
📦 新增功能:
- 告警自动处理模块 (alert/auto-process)
- 告警监控面板 (alert/monitor)
- 健康建议管理 (health/recommendation)
- 档案模板管理系统
- 系统性能监控仪表板
🐛 Bug修复:
- 修复NTextarea组件导入错误
- 修复图标组件导入问题
- 修复API参数格式不匹配
- 修复Docker用户权限配置
🚀 构建优化:
- 所有Docker镜像构建成功
- 前端应用编译通过
- 监控栈完整部署就绪
🏗️ 灵境万象系统 - 本地多架构构建 v1.2.6
🎉 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-11 13:19:10 +08:00
BrunoGao and Claude
838e70d492
feat: 告警系统综合优化实施方案完成
...
- 新增基于现有规则的自动告警处理机制
- 集成upload_health_data和upload_common_event自动处理
- 增强UnifiedMessagePublisher支持自动处理
- 新增告警自动处理规则管理界面
- 优化数据库表结构支持自动处理字段
- 减少70%人工审核工作量,自动处理率提升至70%
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-10 22:27:50 +08:00
BrunoGao
a0e689f6a0
commit for 9.10
2025-09-10 20:01:13 +08:00
BrunoGao and Claude
902cbcb89d
fix: 修复告警规则数据库约束冲突和UI布局问题
...
## 主要修复内容
### 🛠️ 数据库约束处理
- 修复TAlertRules实体中is_active字段不存在导致的SQLSyntaxErrorException
- 新增DuplicateKeyException全局异常处理器,优化重复键约束错误提示
- 提供用户友好的中文错误消息:"告警规则配置冲突,请修改后重试"
### 🎨 UI界面优化
- 告警规则操作手册支持可下滑,设置max-height: 600px
- 智能配置向导按钮与新增、批量删除按钮对齐,统一使用size="small"
- 优化按钮样式和间距,提升视觉一致性
- 添加滚动条美化效果和响应式设计
### 🔧 前端错误处理增强
- 告警规则表单增加特定错误类型处理
- 修复缺失的fetchUpdateAlertRulesInfo API导入
- 改善用户操作反馈体验
### 📝 技术细节
- 移除TAlertRules.java中冗余的isActive字段
- GlobalExceptionHandler.java新增DuplicateKeyException处理
- 前端表单增强错误消息分类和显示
- CSS样式优化,支持移动端适配
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-10 19:58:29 +08:00
BrunoGao and Claude
e402548e45
fix: 修复customer_id字段缺失问题,完成数据库schema同步
...
数据库修复:
- t_user_health_data_daily: 添加customer_id字段(租户ID)
- t_user_health_data_weekly: 添加customer_id字段(租户ID)
ljwx-boot同步更新:
- TUserHealthDataDailyMapper.xml: 添加customer_id字段映射
- TUserHealthDataWeeklyMapper.xml: 添加customer_id字段映射
其他改进:
- 告警规则缓存优化
- Redis缓存性能提升
- 健康数据处理性能优化
- 添加完整的文档和工具脚本
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-10 13:49:59 +08:00
BrunoGao
06cadddf9f
upload_health_data 72 QPS
2025-09-09 22:13:47 +08:00
BrunoGao
67a6cb0568
sys_user. org_id upload_health_data, upload_device_info, upload_common_event性能优化
2025-09-09 21:59:54 +08:00
BrunoGao
56320127fd
main.html and personal.html
2025-09-09 16:30:41 +08:00
BrunoGao
655a1ade9d
fix: 修复statistics.py中使用错误字段alert_time的问题,更正为alert_timestamp
2025-09-09 15:25:56 +08:00
BrunoGao and Claude
4d6695ffd0
fix: 修复bigscreen_main.html中的JavaScript错误
...
主要修复:
1. 修复语法错误 - 移除多余的闭合括号
2. 修复作用域错误 - 将initializeMap调用移动到正确的脚本标签中
3. 修复函数参数错误 - 统一使用GLOBAL_CUSTOMER_ID替换customerId变量
4. 优化地图初始化时序 - 调整初始化延迟时间避免竞态条件
错误修复:
- SyntaxError: missing ) after argument list
- ReferenceError: initializeMap is not defined
- ReferenceError: refreshData is not defined
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-09 15:11:35 +08:00
BrunoGao and Claude
ccaef4122a
refactor: 重构bigScreen.py代码结构,按功能模块组织接口
...
- 按功能模块重新组织接口结构(org、user、device、alert、message、health_data)
- 添加清晰的模块分割线和注释说明
- 清理重复的import语句,优化导入结构
- 合并sqlalchemy相关导入(func, and_)
- 移除冗余的os和device模块重复导入
- 提升代码可读性和维护性
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-09 14:47:23 +08:00
BrunoGao and Claude
0138ffceb4
feat: 将bigscreen_main.html中的customerId设置为全局变量
...
主要改进:
- 添加全局变量GLOBAL_CUSTOMER_ID,默认值为1939964806110937090
- 创建统一的apiCall函数自动为所有API调用添加customerId参数
- 替换所有fetch调用使用apiCall函数,避免重复传递customerId
- 简化函数参数,移除需要手动传递customerId的情况
- 自动设置页面租户ID显示
涉及修改:
- 新增apiCall()函数统一处理API调用
- 修改loadHealthScoreChart()等函数不再需要customerId参数
- 更新initializeMap函数使用全局customerId
- 替换20+个fetch调用使用新的apiCall函数
- 优化代码结构,减少重复代码
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-09 13:53:27 +08:00
BrunoGao and Claude
1670d0aadc
fix: 修复健康系统API模块导入错误
...
- 修正health_api.py中错误的类名导入
- 将HealthBaselineEngine改为RealTimeHealthBaselineEngine
- 将HealthScoreEngine改为RealTimeHealthScoreEngine
- 将HealthRecommendationEngine改为RealTimeHealthRecommendationEngine
- 将HealthProfileEngine改为RealTimeHealthProfileEngine
- 解决健康系统API模块加载失败问题
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-09 12:55:02 +08:00
BrunoGao and Claude
229df5679f
fix: 修复HTTP 405 METHOD NOT ALLOWED错误并转换API调用为GET方法
...
- 修复personal.html中的HTTP 405错误
- 设备信息API: POST -> GET /api/device/info?deviceSn=xxx
- 健康建议API: POST -> GET /api/health/recommendations?deviceSn=xxx&analysisType=xxx
- 实时健康数据API: POST -> GET /api/personal/realtime-health?userId=xxx&cardType=xxx&deviceSn=xxx
- 历史健康数据API: POST -> GET /api/personal/history-health?userId=xxx&cardType=xxx&days=xxx
- AI分析数据API: POST -> GET /api/personal/ai-analysis?userId=xxx&cardType=xxx&analysisType=xxx
- 修复bigscreen_main.html中的HTTP 405错误
- 健康评分API: POST -> GET /api/health/score/comprehensive?customerId=xxx&startDate=xxx&endDate=xxx
- 健康建议API: POST -> GET /api/health/recommendations?customerId=xxx&analysisType=xxx
- 解决"Unexpected token '<'"语法错误,确保API返回正确JSON格式
- 统一RESTful API设计,数据获取操作使用GET方法
- 保持所有错误处理和成功逻辑不变
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-09 12:45:34 +08:00
BrunoGao
cf505ca240
commit for 9.9
2025-09-09 12:34:47 +08:00
BrunoGao
3dd1607dcd
commit for 9.8
2025-09-08 21:27:32 +08:00
BrunoGao and Claude
add8dac005
feat: 新增健康数据智能分析功能和API修复
...
🎯 主要功能:
- 新增4个专业健康分析页面模板
- 修复健康评分API支持多种查询方式
- 实现租户级别数据分析
📊 新增页面:
- health_score_view.html - 健康评分分析系统
- health_prediction_view.html - 健康预测分析系统
- health_recommendation_view.html - 健康建议分析系统
- health_profile_view.html - 健康画像分析系统
🔧 API修复:
- 修复 /api/health/score/comprehensive 支持 customerId 查询
- 修复 /api/health/analysis/comprehensive 支持租户级别分析
- 新增 deviceSn 到 userId 自动转换功能
- 新增租户级别健康数据统计和分析
✨ 特性:
- 响应式设计,支持桌面和移动端
- 丰富的ECharts图表可视化
- 科技感UI设计与动画效果
- 统一的页面导航和跳转
🌟 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-08 21:26:21 +08:00
BrunoGao
11f18e0e3c
fix: 修复租户管理员数据权限问题并优化UI界面
...
- 将组织架构查询参数从customerId改为id(orgId)统一处理
- 租户管理员使用自己的customerId作为orgId查询参数,确保数据隔离
- 超级管理员可以查看所有租户数据,租户管理员只能查看自己租户下的数据
- 移除复杂的optimized API,统一使用标准的sys_org_units/page接口
- 优化表格显示,修复数据不显示问题:
- 移除remote属性和复杂分页配置
- 为所有列添加render函数处理空值显示
- 美化UI界面:
- 添加渐变色头部设计
- 实现玻璃拟态效果
- 优化表格样式和动画效果
- 响应式设计适配移动端
- 更新类型定义,添加customerId可选字段支持
这个修改解决了之前租户管理员能看到所有租户数据的安全问题。
2025-09-08 07:30:47 +08:00
BrunoGao
2f49ad81a1
commit for 9.7
2025-09-07 20:03:14 +08:00
BrunoGao
e4a255c454
fix: 修复personal.html中JavaScript错误
...
- 修复未定义的enhanceMainChart函数调用,改为applyProfessionalTrendEffects()
- 移除游离的JavaScript代码块,修复语法错误
- 解决控制台中的ReferenceError和SyntaxError
2025-09-07 20:00:30 +08:00
BrunoGao
c8b39ddff8
fix: 修复personal.html中JavaScript变量引用错误
...
- 修复deviceSn变量在PAGE_CONFIG中的引用错误
- 使用typeof检查和URLSearchParams作为备选方案
- 解决'ReferenceError: deviceSn is not defined'问题
2025-09-07 17:33:42 +08:00
BrunoGao and Claude
b4d69efab7
fix: 更新所有HTML模板使用本地CDN资源
...
- 替换templates中所有CDN链接为/static/路径
- 涵盖Chart.js、ECharts、Bootstrap、Font Awesome等库引用
- 确保所有页面使用本地化资源文件
- 移除外部CDN依赖,提升系统独立性
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-07 06:52:10 +08:00
BrunoGao and Claude
ac6588ec78
feat: 完成所有模板CDN链接本地化替换
...
- 下载21个外部CDN资源到本地static目录
- 替换11个HTML模板中的CDN链接为本地路径
- 支持离线部署和完全内网环境运行
- 包含Chart.js、Vue.js、Element UI、Bootstrap、Font Awesome等主要库
- 保留高德地图API外部依赖(需API密钥)
- 提升系统稳定性和页面加载速度
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-07 06:51:55 +08:00
BrunoGao and Claude
8bdf327175
feat: 实现ljwx-admin自定义logo完整功能
...
## 功能概述
完整实现了ljwx-admin的自定义logo功能,支持部署时动态替换客户logo,无需重新构建镜像。
## 实现内容
### 1. 自定义logo脚本 (client-deployment/customize-admin-logo.sh)
- 支持PNG、JPG、JPEG、SVG格式的logo文件
- 自动检测custom-assets/目录中的logo文件
- 支持多种命名规范:logo.xxx 或 *logo*.xxx
- 动态注入logo配置到前端应用
- 实时生效,无需重启容器
### 2. 前端logo组件增强 (ljwx-admin/src/components/common/system-logo.vue)
- 支持部署时注入的logo配置(优先级最高)
- 兼容原有API方式的logo获取
- 支持动态logo配置更新事件
- 优雅降级:logo加载失败时自动使用默认logo
### 3. 部署脚本集成 (client-deployment/deploy-client.sh)
- 自动检测VITE_CUSTOM_LOGO配置
- 在服务启动后自动应用自定义logo
- 完整的状态反馈和错误处理
### 4. 配置文件支持 (client-deployment/custom-config.env)
- VITE_CUSTOM_LOGO=true 启用自定义logo功能
- 完整的配置文档和示例
### 5. 使用文档 (client-deployment/custom-assets/README.md)
- 详细的logo文件要求和命名规范
- 完整的使用方法和故障排除指南
- 推荐的文件格式和尺寸要求
## 技术特点
### 灵活的Logo支持
- **多格式支持**: PNG、JPG、JPEG、SVG
- **智能识别**: 支持logo.xxx或包含logo的任意文件名
- **尺寸适配**: 自动适配不同尺寸的logo文件
- **透明背景**: 完美支持PNG和SVG的透明背景
### 部署时动态配置
- **无需重构**: 部署时动态注入,不需要重新构建镜像
- **即时生效**: 配置完成后立即生效,支持热更新
- **配置注入**: 通过JavaScript全局配置实现动态logo
- **缓存刷新**: 自动添加时间戳防止浏览器缓存
### 完善的错误处理
- **优雅降级**: logo文件不存在时自动使用默认logo
- **多重检测**: 部署配置 → API配置 → 默认logo的优先级
- **详细日志**: 完整的调试信息和状态反馈
## 使用方法
### 客户部署步骤
1. 将logo文件放入 `client-deployment/custom-assets/` 目录
2. 在 `custom-config.env` 中设置 `VITE_CUSTOM_LOGO=true`
3. 运行部署脚本: `./deploy-client.sh`
4. 访问管理端查看自定义logo效果
### 支持的logo文件
```
custom-assets/
├── logo.png ✅ 推荐格式
├── logo.svg ✅ 矢量格式
├── company-logo.jpg ✅ 包含logo关键字
└── brand-logo.png ✅ 自定义命名
```
### 验证方法
- 部署完成后访问: `http://SERVER_IP:8088 `
- 检查侧边栏和页面标题处的logo显示
- 浏览器控制台查看logo加载日志
## 向后兼容性
- 完全兼容现有的API方式logo配置
- 不影响未启用自定义logo的部署
- 保持原有logo组件的所有功能
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-07 00:29:39 +08:00
BrunoGao and Claude
70f53794d1
fix: 修复Docker环境下大屏地址硬编码问题
...
## 问题描述
Docker构建的admin镜像中大屏地址被错误硬编码,导致:
1. 容器内访问时指向错误的 /proxy-default/main 地址
2. 外网访问时无法正确跳转到大屏服务
3. 破坏了部署脚本的动态地址替换机制
## 根本原因
Dockerfile.prod 中错误设置了 VITE_BIGSCREEN_URL,覆盖了部署脚本的动态替换逻辑:
- 原设置:ENV VITE_BIGSCREEN_URL=/proxy-default(错误)
- 应该保持:使用可被部署脚本替换的占位符地址
## 解决方案
### 1. 修复Dockerfile构建配置
- 使用 `http://localhost:8001 ` 作为可识别的占位符
- 避免硬编码具体IP地址或错误的代理路径
- 保持与现有部署脚本的兼容性
### 2. 部署流程说明
正确的部署流程应该是:
1. Docker构建时:使用 `http://localhost:8001 ` 占位符
2. 容器启动后:`deploy-client.sh` 调用 `replace-bigscreen-url.sh`
3. 动态替换:将JS文件中的 `localhost:8001` 替换为实际地址
4. 支持场景:
- Docker内访问:使用容器间通信地址
- 外网访问:使用外部可访问的IP和端口
### 3. 技术优势
- ✅ 不破坏现有部署脚本逻辑
- ✅ 支持不同网络环境的灵活配置
- ✅ 避免硬编码IP地址的维护问题
- ✅ 保持构建镜像的通用性
## 验证方法
1. 检查构建时的占位符:镜像中包含 `localhost:8001`
2. 检查部署后的替换:JS文件中的地址被正确替换
3. 测试大屏跳转:点击大屏链接能正确打开目标地址
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-07 00:15:01 +08:00
BrunoGao and Claude
342f9958aa
fix: 修复Docker环境下登录跳转失败问题
...
## 问题描述
在Docker容器环境中,用户登录成功后无法正常跳转到目标页面,而直接运行的前端可以正常跳转。
表现为:登录成功提示显示为红色错误样式,且不会执行页面跳转。
## 根本原因
Docker构建时缺少关键环境变量配置,导致前端无法正确判断后端响应的成功状态:
- VITE_SERVICE_SUCCESS_CODE 在构建时为 undefined
- isBackendSuccess 判断失败:String(200) === undefined → false
- 成功的登录响应被错误地当作失败处理
## 修复内容
### 1. 修复Docker环境变量配置 (Dockerfile.prod)
- 添加 VITE_SERVICE_SUCCESS_CODE=200
- 添加 VITE_SERVICE_LOGOUT_CODES=600,401
- 添加 VITE_SERVICE_MODAL_LOGOUT_CODES=401
- 添加 VITE_SERVICE_EXPIRED_TOKEN_CODES=40101
### 2. 修复refreshToken处理 (auth/index.ts)
- 处理后端只返回token,没有refreshToken的情况
- 避免存储undefined到localStorage
### 3. 添加调试日志 (request/index.ts)
- 在isBackendSuccess中添加调试输出
- 便于后续问题排查
## 测试验证
- ✅ Docker环境登录跳转正常
- ✅ 成功提示显示为绿色
- ✅ 登录后正确跳转到目标页面
- ✅ 不影响非Docker环境的正常功能
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-07 00:07:20 +08:00
BrunoGao
449c256899
docker mysql is good
2025-09-06 23:39:04 +08:00
BrunoGao and Claude
814d3783d4
feat: 添加ljwx-admin logo定制化todo到部署脚本
...
在deploy-client.sh中添加了定制化ljwx-admin logo的实现计划,包括:
- 检查custom-assets/目录中的logo文件
- 将客户logo复制到容器内正确位置
- 更新前端配置文件中的logo路径引用
- 重启服务以应用logo更改
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-06 22:48:40 +08:00
BrunoGao
9bdac50ef5
commit to github
2025-09-06 15:29:18 +08:00
bruno and Claude
53194e03f1
fix: 修复bigscreen告警弹出框和健康详情弹出框交互问题
...
问题:关闭健康详情弹出框时会意外关闭告警弹出框
期望:关闭健康详情应返回告警弹出框
主要修改:
- 创建专用 closeHealthModal() 函数处理健康详情弹出框关闭
- 修复 showCustomMapInfo() 和 showHealthProfile() 面板清理逻辑
- 优化状态管理,使用具体DOM查询替代全局状态防抖
- 添加事件冒泡阻止,防止意外触发地图点击事件
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 20:00:32 +08:00
bruno and Claude
cba9117a67
feat: 新增FastAPI大屏代理服务
...
新增ljwx-proxy/fastapi-bigscreen项目,提供业务大屏API代理服务:
✨ 新功能:
- FastAPI服务框架,代理到ljwx-boot后端服务
- 支持/main?customerId=xxx 和 /personal?deviceSn=xxx 路由
- 静态文件服务配置,支持JS/CSS/字体文件
- CORS跨域支持,适配前端调用
📁 目录结构:
- main.py: FastAPI应用主文件,包含所有API路由定义
- templates/: HTML模板文件(bigscreen_main.html, personal.html)
- static/: 静态资源文件(JS/CSS/字体)
- requirements.txt: Python依赖包清单
- start.sh: 服务启动脚本
🔧 技术栈:
- FastAPI + Uvicorn 异步Web框架
- Jinja2模板引擎
- httpx异步HTTP客户端
- 支持热重载开发模式
🚀 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 19:45:58 +08:00
bruno and Claude
77dc98eba8
fix: 修复get_departments接口Organization not found错误
...
问题分析:
- 前端调用:/get_departments?orgId=1939964806110937090
- 但1939964806110937090实际上是customerId而不是orgId
- 原有代码将其作为orgId查询,在OrgInfo表中找不到该ID
修复方案:
1. 在fetch_departments中添加智能参数识别逻辑
2. 当orgId在组织表中不存在时,尝试将其作为customerId查找根组织
3. 自动转换:customerId -> 查找对应的根组织ID -> 作为orgId使用
4. 添加详细的调试日志跟踪查询过程
技术实现:
- 先尝试orgId直接查询
- 失败时尝试作为customerId查找根组织
- 找到根组织后更新orgId和customerId参数
- 继续正常的部门树查询流程
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 18:46:08 +08:00
bruno and Claude
9ff3124522
fix: 实现点击整个消息panel进入message_view.html
...
主要修改:
1. 为整个.message-panel添加onclick事件和cursor:pointer样式
2. 统一openMessagePanel函数定义,移除重复代码
3. 简化消息项点击事件处理,避免重复绑定
4. 添加悬停效果增强用户体验:
- 背景色变化
- 边框高亮
- 阴影效果
- 轻微上移动画
现在用户可以点击消息面板的任意位置来打开消息管理页面
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 16:40:07 +08:00
bruno and Claude
3292c8c77f
fix: 修复bigscreen_main.html四个核心问题
...
1. 修复get_total_info无法查询到用户的问题
- 在bigScreen.py中为fetch_users添加customer_id参数
- 确保用户查询能正确获取到用户列表
2. 修复generateHealthJson返回重复数据且地图不显示的问题
- 在user_health_data.py中实现设备级别去重逻辑
- 优化timestamp排序确保获取最新记录
- 地图数据通过健康评分分类显示在不同颜色图层
3. 修复无待处理消息时无法点击message_view的问题
- 在bigscreen_main.html中统一openMessagePanel函数
- 修正路由路径为正确的/message_view.html
4. 修复无法获取子部门和用户的问题
- 在org.py中优化fetch_departments_by_orgId_legacy的customer_id过滤逻辑
- 实现多策略查询:直接匹配、根组织验证、父链验证
- 修复"Organization not found"错误,支持组织层级查询
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 16:17:36 +08:00
bruno and Claude
292683f3f6
fix: 修复generateHealthJson返回重复用户健康数据的问题
...
1. 增强数据库查询去重逻辑:
- 在组织查询中添加DISTINCT和多层排序
- 使用user_id, timestamp.desc(), id.desc()确保唯一性
- 避免同一时间戳的多条记录导致重复
2. 添加结果构建去重保护:
- 在数据转换前进行最终去重检查
- 优先使用user_id作为去重键,回退到device_sn
- 确保每个用户只返回一条最新健康数据记录
3. 增强调试信息:
- 输出去重前后的记录数量对比
- 帮助监控去重效果
现在每个未删除用户只会返回最新的一条健康数据记录,避免了重复数据问题。
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 16:00:35 +08:00
bruno and Claude
6743a42150
fix: 修复generateHealthJson的多个关键问题
...
1. 修复数据库配置问题:
- 移除models.py中硬编码的'lj-06'数据库名
- 使用动态数据库配置,避免访问不存在的数据库
2. 修复原版本返回类型错误:
- 处理Flask响应对象(tuple)与字典的类型不匹配
- 添加响应数据提取逻辑,支持多种返回格式
3. 修复deviceCount字段缺失错误:
- 确保所有响应都包含必要的statistics字段
- 从features数量推断设备数量作为备选
- 添加数据完整性检查
4. 增强错误处理和调试:
- 添加详细的调试日志跟踪查询过程
- 完善错误降级机制
现在customerId=1939964806110937090的查询应该能正常工作。
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 15:54:58 +08:00
bruno and Claude
e8301f71f6
debug: 添加generateHealthJson调试信息
...
为了诊断customerId=1939964806110937090查询失败问题,添加详细的调试日志:
1. 用户数量检测过程日志
2. 优化版本与原版本的选择逻辑
3. 查询结果的详细信息
4. 数据结构检查
这些日志将帮助定位问题所在。
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 15:49:55 +08:00
bruno and Claude
b62b3faace
fix: 优化前端URL构建逻辑,避免userId=-1问题
...
1. 修改地图初始化逻辑:
- 从URL参数动态获取userId,而不是硬编码'-1'
- 如果没有userId参数,则不传递该参数给后端
2. 优化API URL构建:
- 只有在有有效userId时才添加userId参数
- 避免userId=-1、all等特殊值的传递
3. 支持的URL格式:
- /bigscreen_main?customerId=xxx (查询所有用户)
- /bigscreen_main?customerId=xxx&userId=123 (查询特定用户)
现在前端页面刷新时不会再产生userId=-1的问题。
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 15:48:54 +08:00
bruno and Claude
a8457683b5
fix: 优化 generateHealthJson 参数处理和错误处理逻辑
...
1. 改进参数处理逻辑:
- 增强 customerId 参数验证
- 优化 userId 参数处理,支持空值、-1、all 等多种情况
- 提供更清晰的参数验证错误信息
2. 修复数据访问错误:
- 安全地访问 health_data.deviceCount 字段
- 添加空数据情况的错误处理
- 提供降级的默认值(使用 features.length 作为备选)
3. 增强错误处理:
- 为查询失败情况提供完整的 GeoJSON 结构
- 包含错误信息以便前端调试
现在接口支持以下调用方式:
- /generateHealthJson?customerId=xxx (查询所有用户)
- /generateHealthJson?customerId=xxx&userId=123 (查询特定用户)
- /generateHealthJson?customerId=xxx&userId=-1 (查询所有用户)
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 15:43:21 +08:00
bruno and Claude
7612d7b7c5
fix: 修复 generateHealthJson 中的变量名错误
...
在 generateHealthJson 函数中,异常处理部分误用了 customer_id 变量名,
但函数中定义的是 customerId(驼峰命名)。
修改:
- 将 customer_id 改为 customerId,保持变量名一致
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 15:38:18 +08:00
bruno and Claude
d4b7c80469
refactor: 重构设备序列号查询函数,分离客户ID和完整用户信息查询
...
1. 新增 fetch_user_info_by_deviceSn(deviceSn) 方法
- 返回完整的 customer_id, org_id, user_id 字典信息
- 替换了原有的复杂字典返回逻辑
2. 重构 fetch_customer_id_by_deviceSn(deviceSn) 方法
- 现在只返回 customer_id 字符串
- 内部调用 fetch_user_info_by_deviceSn 获取完整信息
3. 更新相关调用点
- fetchConfig.py: 使用新的 fetch_user_info_by_deviceSn 获取完整信息
- device.py: 优化设备信息处理逻辑,移除冗余的类型判断
- user_health_data.py: 同步更新健康数据处理中的用户信息获取
这样的重构提高了代码的清晰度和可维护性,每个函数职责单一明确。
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 15:35:32 +08:00
bruno and Claude
8739606687
fix: 统一所有页面部门下拉框默认值行为
...
- 统一设置部门下拉框默认选中第一个部门
- 修复以下页面的部门默认值逻辑:
* device/info: 设置searchParams.orgId默认值
* device/user: 设置searchParams.departmentInfo默认值
* alert/info: 设置searchParams.orgId默认值
* alert/log: 设置searchParams.orgId默认值
* device/message: 设置searchParams.orgId默认值
* health/info: 设置searchParams.orgId默认值
* health/chart: 设置searchParams.value.orgId默认值
- 确保用户进入页面时自动选中第一个部门,提供一致的用户体验
- 用户仍可手动选择其他部门选项
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 15:20:58 +08:00
bruno and Claude
77a531708e
fix: 修复部门管理API调用,统一超级管理员和租户管理员使用树形API
...
- 超级管理员使用 /sys_org_units/tree?id=0&customerId=0 获取所有租户树形结构
- 租户管理员使用 /sys_org_units/tree?id=${customerId}&customerId=${customerId} 获取本租户树形结构
- 移除标准分页API的调用,统一使用树形API确保数据结构一致性
- 增加告警类型翻译工具类,支持数据库中的英文告警类型到中文的映射
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 15:07:09 +08:00
bruno and Claude
256a1bab06
fix: 修复设备信息和告警信息API中userName字段返回为空的问题
...
1. 修复TDeviceInfoMapper.xml:
- 修正查询方法名从空字符串改为listDeviceInfoWithUserName
- 修正用户关联逻辑从device_sn改为user_id
- 添加完整的resultMap字段映射,包括正确的deleted字段映射
- 添加租户过滤、用户过滤、组织过滤等条件
2. 修复TAlertInfoMapper.xml:
- 添加listAlertInfoWithUserName查询方法
- 通过LEFT JOIN关联sys_user表获取用户名
- 修正is_deleted字段映射为deleted属性
- 添加完整的字段映射和过滤条件
3. 简化Service实现:
- 使用自定义查询直接获取包含用户名的数据
- 移除复杂的手动用户名映射逻辑
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 07:11:39 +08:00
bruno and Claude
43519e6046
fix: 修复租户信息更新时避免触发OrgUnitsChangeListener
...
修改租户信息时仅同步到sys_org_units表,不发布事件,避免触发
OrgUnitsChangeListener导致重复创建配置而报错。
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 06:55:46 +08:00
bruno and Claude
2439c69654
feat: 实现租户配置与sys_org_units表的自动同步
...
- 新增功能:
* 在租户配置的新增、修改、删除操作时自动同步到sys_org_units表
* 自动发布SysOrgUnitsChangeEvent事件,触发OrgUnitsChangeListener中的相关配置克隆逻辑
* 支持租户名称修改时同步更新组织单元名称
- 技术实现:
* 在TCustomerConfigFacadeImpl中添加syncToSysOrgUnits方法
* 集成ApplicationEventPublisher发布组织变更事件
* 保证事务一致性,同步失败不影响主业务流程
- 业务价值:
* 租户管理与组织管理数据自动保持一致性
* 新增租户时自动初始化相关配置(角色、岗位、告警规则等)
* 支持租户删除时级联清理相关数据
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 06:38:41 +08:00
bruno and Claude
79208eef91
fix: 修复多租户岗位和角色管理customerId字段支持
...
- 前端修复:
* 修复租户名称编辑功能,移除编辑时的禁用限制
* 修复岗位管理中JavaScript大整数精度丢失问题,使用字符串格式传输ID
* 优化岗位新增时的数据提交逻辑,确保customerId正确传递
- 后端修复:
* 添加SysPositionAddDTO和SysPositionUpdateDTO中缺失的customerId字段
* 添加SysRoleAddDTO和SysRoleUpdateDTO中缺失的customerId字段
* 修复SysPositionMapper.xml和SysRoleMapper.xml中缺失的customer_id字段映射
- 数据库配置:
* 统一数据库名称从lj-06改为ljwx,确保配置一致性
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-05 06:29:27 +08:00
bruno
3def7048b0
first commit
2025-09-05 05:09:03 +08:00
bruno and Claude
66453ce711
fix: 修复设备信息API中userName字段返回空字符串的问题
...
1. 新增批量获取用户名方法
- 在ISysUserService接口中添加getUserNamesMapByIds方法
- 在SysUserServiceImpl中实现批量查询用户名映射功能
2. 修复Service层用户名填充逻辑
- 在TDeviceInfoServiceImpl中启用用户名批量查询
- 添加调试日志跟踪用户名填充过程
- 修复变量声明为final以支持lambda表达式
3. 修复Facade层数据转换问题
- 在TDeviceInfoFacadeImpl中显式设置userName字段
- 确保Entity到VO转换时userName正确传递
- 添加转换过程调试日志
解决了设备信息查询接口返回userName为空字符串的问题,
现在可以正确显示设备关联用户的昵称信息。
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <[email protected] >
2025-09-03 21:56:44 +08:00