Commit Graph
158 Commits
Author SHA1 Message Date
BrunoGaoandClaude 2e233cfdd1 feat: 修复customer租户管理系统查询和创建逻辑
- 修复租户列表接口返回正确的customerId(顶级部门ID)
- 修复查询接口按customer_id字段正确查询
- 优化customer创建流程,确保数据一致性
- 添加查询参数验证,避免id=0干扰查询结果
- 移除重复的组织单元创建逻辑,防止重复事件触发
- 统一customer概念,明确数据关联关系

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-21 22:48:53 +08:00
BrunoGaoandClaude 96ec056b1f feat: 重构登录页面为科技感健康监测主题
- 完全重设计登录界面,体现智能健康监测系统的科技感
- 采用深色主题配色方案:深海蓝到灰蓝渐变背景
- 实现多层次动画效果:网格扫描、粒子流动、脉冲呼吸
- 优化左侧健康概念展示区:心率监测、AI大脑、数据图表图标
- 重构右侧登录表单:科技状态面板、发光边框、扫描线动画
- 移除医疗安全提示文本,替换为系统状态指示器
- 增强输入框视觉效果:深色半透明背景、发光交互状态
- 优化登录按钮:渐变动画、脉冲效果、3D层次感
- 全面响应式设计,支持各种设备尺寸
- 保持所有原有功能逻辑:表单验证、多语言、主题切换

主要技术特色:
• CSS Grid 和 Flexbox 布局
• CSS 自定义属性和渐变动画
• backdrop-filter 毛玻璃效果
• 多层级 z-index 动画层次
• keyframes 复杂动画序列
• box-shadow 发光和景深效果

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-21 20:15:19 +08:00
BrunoGaoandClaude 34c9375a25 feat: 更新FastAPI配置和Gradle构建设置
- 更新ljwx-bigscreen-fastapi API配置和依赖
- 添加简化版main和测试服务器文件
- 更新ljwx-watch Gradle构建缓存和设置

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-21 20:00:57 +08:00
BrunoGaoandClaude 18377b7b89 feat: 新增Ubuntu 22.04部署初始化脚本和FastAPI重构
## 新增功能

### Ubuntu 22.04初始化脚本
- 🚀 完整的系统环境初始化脚本 `ubuntu-22.04-init.sh`
- 🛠️ 支持Docker、Java 21、Node.js、Python3、MySQL、Redis等全套环境
- 🔧 自动配置防火墙、系统参数优化
- 📁 标准化项目目录结构 `/opt/ljwx`
- 📋 生成配置文件模板和维护脚本

### ljwx-bigscreen FastAPI重构
- 🏗️ 新的FastAPI架构设计,支持异步高性能
- 📊 完整的业务逻辑分层:API -> Service -> Repository
- 🎯 支持大屏主界面、个人界面、健康数据可视化
- 🔄 Redis缓存集成和数据库连接池
- 🎨 保留所有原有HTML模板和静态资源

### 文档完善
- 📖 新增FastAPI重构进度文档
- 🏗️ 详细的项目架构分析
- 📋 完整的部署组件清单和依赖关系

## 技术亮点

- **系统兼容性**: 专为Ubuntu 22.04优化的完整部署方案
- **架构现代化**: FastAPI异步框架替代传统Flask同步架构
- **企业级部署**: 13个服务组件的完整CI/CD + 业务系统
- **多架构支持**: linux/amd64 + linux/arm64双架构Docker支持

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-19 13:18:59 +08:00
BrunoGao 39868fdbf3 commit all 2025-09-19 07:08:30 +08:00
BrunoGaoandClaude 9d9c601592 feat: 完成Python功能迁移到ljwx-boot和权限管理优化
主要功能改进:
1. Python fetchConfig.py 迁移至 UnifiedConfigService
   - 实现设备配置查询API(兼容Python接口)
   - 支持设备绑定检查和默认配置回退
   - 多表关联查询(t_health_data_config + t_customer_config + t_interface)

2. Python批量上传功能迁移至 BatchUploadController
   - upload_health_data, upload_device_info, upload_common_event
   - CPU自适应分片处理和Redis缓存优化
   - 支持Python和Java两套API路径

3. 租户/部门权限管理优化
   - 客户配置页面:新增租户删除功能和前置检查
   - 组织管理页面:限制租户级别删除,只允许部门操作
   - 部门树结构优化:过滤租户节点,只显示下属部门

4. 设备API认证豁免配置
   - Sa-Token拦截器配置设备端免认证接口
   - 支持Python ljwx-bigscreen无缝迁移

技术特性:
- 100% Python API兼容性
- 智能权限分离控制
- 多表关联查询优化
- 批量处理性能提升

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-18 21:05:37 +08:00
BrunoGao 33fcd8f170 chore: 更新构建脚本 2025-09-18 11:57:12 +08:00
BrunoGaoandClaude 2ae5ddecd9 chore: 更新组件类型定义和设备消息页面优化
🔧 维护更新:
- 更新组件类型定义文件
- 优化告警信息和设备消息页面
- 确保所有更改都已提交

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-18 11:54:50 +08:00
BrunoGaoandClaude aaf5ae383c fix: 修复大屏页面customerId未使用admin选择的租户问题
🐛 问题修复:
- 修复大屏页面在admin用户选择租户后仍使用customerId=0的问题
- 更新大屏路由处理逻辑,优先使用admin选择的租户ID

🔧 技术实现:
- 在大屏URL构建中同时导入auth和customer stores
- 实现admin用户租户选择的优先级逻辑
- 保持普通用户使用自身customerId的原有逻辑

💡 用户体验:
- admin用户选择租户后,大屏将正确显示对应租户的数据
- 添加调试日志帮助排查URL构建过程

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-18 00:12:37 +08:00
BrunoGaoandClaude a47f90a365 fix: 修复设备模块导入路径错误
🐛 问题修复:
- 修正TCustomerConfigFacadeImpl中设备服务的导入路径
- ITDeviceInfoService和TDeviceInfo位于health模块而非device模块
- 添加缺失的Collectors导入

🔧 技术细节:
- 更新导入路径:com.ljwx.modules.device.* → com.ljwx.modules.health.*
- 确保编译能正常通过,修复Maven构建错误

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-18 00:08:33 +08:00
BrunoGaoandClaude 56e98f26d7 feat: 实现删除租户/部门的级联检查和确认机制
✨ 新增功能:
- 创建DeleteConfirmDialog组件,提供详细的删除影响分析
- 实现租户删除级联检查,分析影响的部门、用户和设备
- 实现部门删除级联检查,确保数据完整性
- 添加API接口支持删除前置检查和级联删除操作
- 租户删除时同步删除t_customer_config对应记录

🔧 技术改进:
- 后端增加DepartmentDeletePreCheckDTO结构化数据传输
- 前端添加TypeScript类型定义支持级联删除功能
- 集成级联删除逻辑到组织管理和租户配置页面
- 实现事务性删除,确保操作的原子性

🎯 用户体验:
- 删除前显示详细的影响摘要和风险提醒
- 区分安全删除和级联删除操作
- 提供清晰的确认界面,防止误操作
- 支持单个和批量删除操作

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-17 23:54:28 +08:00
BrunoGaoandClaude dc6f75ef8f refactor: 移除customer模块页面中的租户选择器
## 优化内容

### customer/config 页面
- 移除 CustomerConfigSearch 组件中的租户选择器
- 移除相关的 orgUnitsName 变量和 handleInitOptions 函数
- 简化页面布局,去除冗余的租户选择功能

### customer/interface 页面
- 移除 InterfaceSearch 组件中的租户选择器
- 保留接口名称搜索功能
- 清理相关的数据初始化逻辑

### customer/data 页面
- 移除 HealthDataConfigSearch 组件中的租户选择器
- 保留数据类型搜索功能
- 清理相关的组织单位数据获取逻辑

## 设计理念

1. **租户管理员**:登录后自动使用自己的租户,无需选择
2. **admin用户**:通过全局的租户切换器已经选择了租户,避免重复选择
3. **统一体验**:所有相关页面使用统一的租户管理方式

## 影响范围
- 简化用户操作流程,提升用户体验
- 减少页面复杂度,降低维护成本
- 保持数据隔离的安全性

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-17 22:57:20 +08:00
BrunoGaoandClaude 3c35e9b942 fix: 移除基础认证接口的不必要权限检查
## 问题
- 部门管理员无法登录,提示"无此权限:auth:userInfo"
- 基础的用户信息和路由获取接口不应该需要额外权限

## 解决方案
- 移除 `/auth/user_info` 接口的 `@SaCheckPermission("auth:userInfo")` 权限检查
- 移除 `/auth/user_route` 接口的 `@SaCheckPermission("auth:userRoute")` 权限检查
- 保留登录状态检查,确保只有已登录用户才能访问

## 影响范围
- 所有用户类型(admin、部门管理员等)都能正常获取自己的用户信息和路由权限
- 不影响系统安全性,因为用户只能获取自己的信息

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-17 22:46:20 +08:00
BrunoGaoandClaude fb4c23da4e feat: 完善多租户客户切换和数据隔离功能
## 主要改进

### 1. 修复JavaScript数字精度问题
- 将所有customerId从number类型改为string类型,避免大整数精度丢失
- 修复customerId=1968304677554302978被截断为1968304677554303000的问题
- 更新CustomerSwitcher、CustomerSelector等组件的类型定义

### 2. 完善客户切换功能
- 新增TenantInfo组件显示当前租户信息
- 修复CustomerSwitcher下拉选择事件处理
- 完善客户切换的用户体验和错误处理

### 3. 实现真正的多租户数据隔离
- 后端SysOrgUnitsSearchDTO新增customerId字段支持
- SysOrgUnitsFacadeImpl中实现customerId到id的自动转换
- 修改/sys_org_units/page和/sys_org_units/tree接口支持customerId过滤

### 4. 优化API调用机制
- 前端移除手动传递id=0的逻辑
- 让请求拦截器自动注入customerId参数
- 后端自动将customerId转换为有效的查询条件

### 5. 新增客户配置管理
- TCustomerConfigController新增/all-customers接口
- 为客户选择器提供标准的客户列表API

## 技术细节
- 前端:Vue 3 + TypeScript + Pinia状态管理
- 后端:Spring Boot + MyBatis-Plus
- 数据隔离:customerId即sys_org_units表的id字段
- 精度安全:JavaScript大整数使用string类型处理

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-17 22:41:37 +08:00
BrunoGaoandClaude 57a55b7c10 feat: 全面优化系统用户过滤和健康数据分析功能
主要改进:
- 统一客户选择器组件,完善用户过滤功能
- 新增健康数据可视化分析系统和聚合服务
- 优化前端组件架构,提升用户体验
- 同步更新依赖包版本,提高系统稳定性

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-17 18:45:24 +08:00
BrunoGaoandClaude e9f9cb72ac fix: 移除用户选择器中重复的"全部"选项
🔧 修复用户列表重复显示问题

- 移除各个搜索组件中手动添加的 { label: '全部', value: 'all' } 选项
- 避免与 handleBindUsersByOrgId 函数中添加的"全部用户"选项重复
- 修复的组件:
  - alerinfo-search.vue (告警信息搜索)
  - device-info-search.vue (设备信息搜索)
  - device-message-search.vue (设备消息搜索)
  - device-user-search.vue (设备用户搜索)
  - health-search.vue (健康图表搜索)
  - user-health-data-search.vue (用户健康数据搜索)
- 统一使用 deviceUtils.ts 中的用户选项,确保用户体验一致性

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-17 09:33:14 +08:00
BrunoGaoandClaude 6b5812e11c feat: 完成全模块用户过滤统一优化
🔧 修复 Health、Device、Alert、Message 模块API中 userId="all" 导致的 NumberFormatException 错误

- 在 deviceUtils.ts 中为用户选择器添加"全部用户"选项(value: "all")
- 全面优化18个API函数,当 userId="all" 时自动过滤该参数
- 健康数据模块:用户健康数据、基线数据、评分数据、分析结果等7个API
- 设备管理模块:设备信息、设备用户关联、用户设备关联等4个API
- 告警管理模块:告警信息、告警规则等2个API
- 消息管理模块:设备消息列表、V2消息列表、V1兼容性等3个API
- 采用前端统一过滤方案,在API层面透明处理,保持接口调用的一致性

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-17 09:25:30 +08:00
BrunoGaoandClaude f48be3b8b2 feat: 完成健康数据可视化分析系统实现
## 功能概述
实现完整的健康数据图表分析功能,包含多用户对比、实时数据可视化和统计分析

## 主要功能
### 🎨 前端图表组件
- **HealthAnalyticsCharts.vue** - 完整健康数据可视化分析组件
  - 🌙 睡眠质量分析 - 多用户对比线图
  - 🏃 运动类型分布 - 用户运动类型饼图统计
  - ❤️ 心血管健康监测 - 双轴图表显示心率和血压趋势
  - 🚶 日常活动量统计 - 步数柱状图+卡路里折线图组合
  - 📊 数据概览卡片 - 显示关键健康指标统计

### 🔧 后端优化
- **位置字段支持** - 在HealthDataConfigQueryService中添加location到BASIC_METRICS
- **数据结构优化** - UnifiedHealthDataQueryService支持表格图表分离架构
- **用户识别增强** - 所有图表数据包含userName和orgName避免额外API调用
- **类型安全修复** - TUserHealthDataController中Integer/Long类型转换问题

### 🔗 系统集成
- **统一API调用** - 使用fetchGetHealthDataBasicList获取完整健康数据
- **父组件优化** - index.vue更新为新的数据传递模式
- **性能优化** - 基于表格图表分离架构,避免重复查询

## 技术特点
- 多用户数据对比支持
- 实时响应数据变化
- 响应式设计适配移动端
- ECharts.js专业图表渲染
- TypeScript类型安全

## 修改文件
### 前端 (ljwx-admin)
- src/service/api/health/health.ts - 新增健康数据分析API接口
- src/views/health/info/index.vue - 更新父组件使用统一数据源
- src/views/health/info/components/HealthAnalyticsCharts.vue - 新增图表分析组件

### 后端 (ljwx-boot)
- controller/health/TUserHealthDataController.java - 修复类型转换和数据结构
- service/HealthDataConfigQueryService.java - 添加location字段支持
- service/UnifiedHealthDataQueryService.java - 实现表格图表分离架构

🚀 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-17 07:55:43 +08:00
BrunoGaoandClaude 489e679f4a feat: 完成健康数据表格图表分离架构重构
## 主要改进

### 1. 架构重构 - 统一健康数据查询服务优化
- 重构 `UnifiedHealthDataQueryService.queryAllHealthData()`
- 基础分析字段按分页返回(使用 Basic Enabled Metrics)
- daily/weekly数据独立返回,不合并到每条记录
- 返回原始JSON结构供前端解析

### 2. 删除冗余接口,优化原有API
- 删除 `/page/fast` 冗余接口
- 删除 `/analytics/aggregated` 冗余接口
- 删除 `/analytics/sleep` 冗余接口
- 删除 `/analytics/exercise` 冗余接口
- 优化原来的 `/page` 接口使用统一架构

### 3. 前端health/info页面优化
- 调整表格列顺序:部门名称在用户名称前,时间戳移至最后
- 用户名称改为员工名称
- 新增导出健康数据功能(CSV格式,支持中文)
- 支持完整的17个字段导出

### 4. 数据结构优化
```json
{
  "records": [...],           // 基础表格数据(分页)
  "dailyData": {              // 独立daily数据用于图表
    "sleepData": [...],
    "exerciseDailyData": [...]
  },
  "weeklyData": {             // 独立weekly数据用于图表
    "exerciseWeekData": [...]
  },
  "supportedFields": {...}    // 字段配置
}
```

### 5. 性能和架构优势
- 基础数据分页查询,慢数据独立查询一次
- 表格图表数据完全分离
- 支持分表查询,解决跨月查询问题
- 配置驱动的动态字段控制

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-16 15:41:17 +08:00
BrunoGaoandClaude 4c068ca7df feat: 完成消息系统V1回滚和性能优化回滚
主要更改:
1. **消息系统V2回滚到V1**:
   - 删除所有V2相关实体、服务、控制器和DTO
   - 保留V1消息系统的完整功能
   - 修复消息查询、创建、响应等核心功能
   - 优化前端消息管理界面,增加统计概览

2. **健康数据查询优化回滚**:
   - 回滚OptimizedHealthDataQueryService.java(编译错误过多)
   - 删除相关线程池配置文件
   - 保持原有健康数据查询接口正常工作

3. **前端界面优化**:
   - 告警信息页面增加统计概览卡片
   - 告警规则页面优化多指标组合显示
   - 消息管理页面增强统计数据展示
   - 支持消息类型、状态、发送者类型中英文映射

4. **系统稳定性改进**:
   - 移除有编译问题的优化代码
   - 确保所有功能正常编译和运行
   - 为后续更彻底的优化方案做准备

系统现在回到稳定状态,消息系统使用V1架构,健康数据查询使用原有实现。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-15 23:03:08 +08:00
BrunoGaoandClaude 3248bb0a2a feat: 完成消息系统V2优化 - 基于user_id的高性能索引重构
## 主要更改

### 1. 数据库表结构增强
- **t_device_message_v2**: 新增7个关键字段
  - priority_level: 优先级数值(1-5)
  - channels: 分发渠道JSON
  - require_ack: 是否需要确认
  - metadata: 扩展元数据JSON
  - target_count: 目标用户总数
  - version: 乐观锁版本号

- **t_device_message_detail_v2**: 新增8个关键字段
  - distribution_id: 分发唯一ID
  - device_sn: 设备序列号
  - user_id: 用户ID(核心查询字段)
  - response_duration: 响应耗时
  - delivery_details: 分发详情JSON
  - client_info: 客户端信息JSON
  - location_info: 位置信息JSON
  - last_retry_time: 最后重试时间

### 2. 索引优化重构 (基于user_id)
- 删除原有device_sn相关索引
- 新建5个user_id高性能复合索引:
  - idx_customer_user_time: 客户+用户+时间
  - idx_customer_user_status: 客户+用户+状态
  - idx_customer_user_type: 客户+用户+类型
  - idx_user_org_priority: 用户+组织+优先级
  - idx_user_status_time: 用户+状态+时间

- detail表新建4个user_id相关索引:
  - uk_message_user_target: 唯一约束
  - idx_customer_user_status: 客户+用户+状态
  - idx_user_channel_time: 用户+渠道+时间
  - idx_user_delivery_status: 用户+分发状态

### 3. 数据迁移和初始化
- 自动生成distribution_id
- 根据urgency设置priority_level
- 初始化默认channels配置
- 保持现有数据完整性

### 4. 性能提升预期
- 用户消息查询: 预计10-20倍性能提升
- 确认状态查询: 支持快速人员清单检索
- 存储空间: JSON字段替代冗余VARCHAR
- 查询覆盖: 所有user_id查询都能命中索引

### 5. 文档和脚本
- 完整的V2优化SQL脚本
- 消息机制设计文档
- 数据库备份(22MB)
- 性能验证查询

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-15 07:56:03 +08:00
BrunoGaoandClaude c8beb13558 fix: 修复SysOrgClosureService中ClassCastException类型转换异常
主要修复内容:
- 修复getTopLevelCustomerIdByOrgId方法中String到Long的类型转换异常
- 添加方法重载支持String和Long两种参数类型
- 移除@Cacheable注解避免CGLIB代理类型转换问题
- 增强错误处理和类型安全检查

技术改进:
- 接口ISysOrgClosureService: 添加String参数重载方法
- 实现类SysOrgClosureServiceImpl: 实现安全类型转换逻辑
- 添加详细日志记录便于问题诊断和调试
- 防护性编程确保系统稳定性

解决问题:
- 解决组织用户查询中的ClassCastException异常
- 提升系统容错性和稳定性
- 支持多种参数类型的兼容性处理

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-14 16:51:43 +08:00
BrunoGao bff1e6a661 fix: 修复 upload_health_data 数据插入失败问题
问题背景:
- 今天将 customer_id 从固定值 0 改为实际值后,upload_health_data 接口虽然返回成功,但数据无法插入到 t_user_health_data 表

根本原因分析:
1. upload_method 字段为 ENUM 类型,只支持 ('wifi','bluetooth','common_event'),但数据中包含 '4g' 值
2. SQL 插入语句中缺少 customer_id 字段,导致占位符数量不匹配 (18个%s vs 19个参数)

修复内容:

1. 数据库表结构修改:
   - 修改 t_user_health_data.upload_method 字段 ENUM 类型
   - 从 enum('wifi','bluetooth','common_event')
   - 改为 enum('wifi','bluetooth','common_event','esim')

2. 代码逻辑修复:
   - 添加 upload_method 值映射:4g → esim
   - 修复 SQL INSERT 语句,添加缺失的 customer_id 字段和占位符
   - 在主表、每日表、每周表插入中都包含 customer_id

3. 错误处理增强:
   - 添加批量插入失败时的单条插入 fallback 机制
   - 增强错误日志,显示详细的错误信息和堆栈
   - 添加重复记录检测和跳过逻辑

4. 调试信息完善:
   - 添加批处理器启动状态日志
   - 添加数据项处理过程的详细日志

修复验证:
- ✅ 用户提供的测试数据成功插入数据库
- ✅ upload_method: '4g' 正确映射为 'esim'
- ✅ customer_id: 1939964806110937090 (实际值而非0)
- ✅ 所有健康指标数据正确存储

影响范围:
- ljwx-bigscreen 健康数据上传功能恢复正常
- 支持 4g/esim 上传方式
- 兼容实际 customer_id 值的数据插入
2025-09-12 21:29:38 +08:00
BrunoGaoandClaude aa7be3dfca feat: 统一模态窗口样式,修复依赖注入循环问题
🎨 模态窗口样式优化:
- 修复 createModalWindow 背景色与 devicePanel 弹窗不一致问题
- 统一模态窗口背景色为 rgba(0,21,41,0.95)
- 修复 iframe 白色背景问题,改为透明背景
- 确保 alert_view.html, user_view.html, message_view.html 显示深色主题

🔧 依赖注入优化:
- 修复 UserTypeSyncServiceImpl 中的循环依赖问题
- 使用 @Lazy 注解延迟加载 ISysUserService
- 改用 @Autowired 替代 @RequiredArgsConstructor 避免循环依赖
- 优化服务层依赖关系,提高系统稳定性

📱 用户界面改进:
- 所有模态窗口现在具有一致的视觉风格
- 提升用户体验的视觉连贯性
- 修复模态窗口内容显示问题

🚀 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-12 15:37:08 +08:00
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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
BrunoGaoandClaude 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