Commit Graph

606 Commits

Author SHA1 Message Date
chengkai3 9e39e16248 feat:[FL-144][改造系统消息页面]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-16 17:54:25 +08:00
chengkai3 3899a2345e [fix]:[FL-145][系统消息要支持删除]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-16 17:44:11 +08:00
chengkai3 946312cb6e fix:[FL-143][处理消息查看报错]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-16 17:03:18 +08:00
chengkai3 5173a975b5 [feat]:[FL-140][参考雷电流幅值统计页面改造雷电分布统计(空间维度)页面]
重构 lightning-distribution 页面结构:
- 主体改为导入的雷电事件列表表格(展示 scatter_points)
- 导入功能改为 Modal 表单,包含元数据字段(事件年份、区域ID、地点标签、城市、备注)
- 统计详情(区域统计摘要、空间分布地图、当前事件信息)移至操作列弹窗展示
- 保留筛选功能(地点、区域、经纬度范围、网格尺寸、统计年限)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-16 08:08:22 +08:00
chengkai3 fda6bfe54a fix:[FL-142][系统交互排查]修改页面加载效果为组件级加载
1. 将所有管理页面的全页面加载改为仅在初始化时显示
2. 数据加载状态移至表格组件的loading属性
3. 确保过滤表单在数据加载时仍然可见和可操作

改动页面:
- users: 只在initializing时全页加载,表格使用loading prop
- menus: 同上
- lightning-distribution: 同上
- lightning-currents: 同上
- elevation: 同上,并为表格添加loading状态
- power-lines: 同上
- scheduled-tasks: 同上
- syslog: 同上
- system-params: 同上
- task-monitor: 同上
- tower-models: 同上
- workers: 同上

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-16 07:59:56 +08:00
chengkai3 5b884f4c02 [fix]:[FL-141][ATP创建版本时触发的任务在任务监控页面显示是"未识别任务"]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 22:43:28 +08:00
chengkai3 60d5d8e305 feat:[FL-139][ATP模型管理要分页]
- 在atp_model_service.py的list_models函数添加limit和offset参数
- 在atp_models.py的get_atp_model_list端点添加limit和offset查询参数
- 默认limit=100,offset=0,limit最大值500
- 保持向后兼容,不传参数时使用默认值

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 22:27:27 +08:00
chengkai3 598c281e8a fix:[FL-138][高程数据管理页面表格高度自适应]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 22:04:23 +08:00
chengkai3 f1203f5378 [feat]:[FL-137][雷电流幅值统计页面优化]
1. 峰值超越概率(P曲线)用图展示
   - 添加LineChart图表,直观展示P曲线趋势
   - 保留原有表格,图表与表格并存
   - Modal宽度增加到900px以适应图表

2. 采样预览支持分页懒加载
   - 添加Table组件展示采样数据
   - 支持分页切换和每页显示数量调整
   - 后端API按需加载,减少单次数据量
   - Modal宽度增加到1200px以适应表格

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 21:45:59 +08:00
chengkai3 4626abd9c2 fix: [FL-134] 修复雷电流幅值页面表格高度未占满页面的问题
- 为页面根 Space 组件添加 h-full 类,使其占满父容器高度
- 在 globals.css 中添加 lightning-table-anchor 样式规则,设置表格 body 最小高度
- 确保表格能够正确撑满剩余的垂直空间

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 19:31:43 +08:00
chengkai3 11a80a5441 [feat]:[FL-133][优化雷电流幅值统计页面的事件详情展示]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 19:28:00 +08:00
chengkai3 cf3122e27a [fix]:[FL-135][高程数据管理页面表格高度占满页面]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 19:20:59 +08:00
chengkai3 0994c03fee fix:[FL-136][ATP模型管理页面删除按钮点了没有反应]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 19:16:54 +08:00
chengkai3 13a51bc7f5 [feat]:[FL-132][P 曲线表格改为折线图展示]
1. 在 web/package.json 中添加 recharts 的必需依赖:react-redux 和 reselect
2. 在 lightning-distribution/page.tsx 中导入 recharts 组件
3. 将"峰值超越概率(P 曲线)"卡片改为折线图 + 可收起表格的展示方式:
   - 折线图为主视图,展示电流阈值(kA)与超越概率的关系
   - Y 轴在 50% 处添加水平参考线标注中值
   - 支持 tooltip 悬浮查看精确数值(阈值、概率、次数)
   - 表格放在 details 元素中,默认收起,用户可展开查看精确数值
4. 图表使用项目已有的 recharts 库,与 lightning-currents 页面保持一致

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 19:10:20 +08:00
chengkml d23ac4f74c Optimize S3 asset archive uploads 2026-06-15 19:05:43 +08:00
chengkai3 3054b476ff [fix]:[FL-131][去掉雷电流统计页面的"来源"表单及展示]
- 删除导入表单中的 is_synthetic 复选框字段
- 删除事件详情模态框中的"来源"描述项
- 更新 ImportFormValues 类型定义,移除 is_synthetic 字段
- 更新初始值和表单数据构建逻辑
- 移除未使用的 Checkbox 组件导入

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 18:35:47 +08:00
chengkai3 f2ec78757b [feat]:[FL-130][雷电流幅值统计页面优化]
1. 页面标题从"雷电幅值统计"改为"雷电流幅值统计"
2. 导入表单去掉"事件编号"字段(后端自动生成)
3. 去掉"Region ID"和"地域标签"字段(表单、表格列、详情页)
4. 表格列精简,仅保留:文件名、城市、安装位置、传感器型号、雷暴等级、导入时间、采样点数
5. 详情页添加专业名词字段说明(小问号图标+Tooltip提示)

Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 17:56:29 +08:00
chengkai3 e03052ec8f [fix]:[FL-129][修复菜单管理SQL列名映射错误]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 17:06:13 +08:00
chengkai3 9a1bcef89c [fix]:[FL-129][修复菜单管理SQL表名错误]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 16:37:02 +08:00
chengkai3 c081177c37 [feat]:[FL-127][雷电幅值统计页面优化]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 13:54:35 +08:00
chengkai3 3450e6da23 [fix]:[FL-128][高程数据管理页面布局问题修复]
修改页面主容器的样式类,添加 min-h-screen 确保页面高度填满整个视口。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 13:50:14 +08:00
chengkai3 818509e8d9 fix: [FL-126] 修复 Next.js standalone 模式下 server.js 路径问题
- 在 workspace 环境下,standalone 输出的 server.js 位于 web/ 子目录
- 修改 CMD 为 node web/server.js
- 调整 public 和 static 文件的复制路径以匹配 standalone 结构

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 13:27:22 +08:00
chengkai3 143893f586 fix: [FL-126] 修复 GitHub Actions workflow 中 web 镜像构建的 build context
- 将 web 镜像构建的 context 从 ./web 改为 .(仓库根目录)
- 保持 dockerfile 为 ./web/Dockerfile
- 与 Dockerfile 的改动配套,确保 npm workspace 结构正确工作

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 12:18:54 +08:00
chengkai3 32e32eb114 fix: [FL-126] 修复 web Dockerfile 构建失败问题
- 从 deps 阶段复制 web/node_modules 到 builder 阶段
- 复制根目录 package.json 以支持 workspace 命令
- 使用 npm run build:web 替代直接在 web 目录运行 build
- 移除 WORKDIR /app/web,保持在根目录执行构建

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 11:40:18 +08:00
chengkai3 b12ee3b423 feat: [FL-125] 将线路参数准备功能从雷电幅值页面迁移到线路管理页面
- 在线路管理页面添加"线路参数准备"按钮和弹窗
- 弹窗展示雷电流幅值、地闪密度、地面倾角三个准备项的状态
- 支持回填雷电流幅值和地闪密度操作
- 从雷电分布页面移除"线路参数准备"卡片
- 移除 lightning-distribution 页面中与线路准备相关的 state 和 mutation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 11:26:40 +08:00
chengkai3 5aa78c8b2f fix: [FL-124][修复Docker构建npm ci失败问题]
- 修改docker-compose配置,将web服务构建上下文从web目录改为项目根目录
- 调整Dockerfile文件路径引用,适配新的构建上下文
- 将基础镜像从node:22-alpine改为node:22-slim,解决lightningcss在musl环境的兼容性问题
- 修改用户创建命令,适配Debian系统(从alpine的addgroup/adduser改为groupadd/useradd)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 11:26:16 +08:00
chengkai3 2b80f72b9e [feat]:[FL-123][重构雷电流幅值统计页面:导入记录表格+操作列弹窗]
改动摘要:
- 重构页面布局为用户管理页面风格,主表格展示导入记录元数据
- 添加操作列下拉菜单(MoreOutlined),包含 P 曲线、事件详情、采样预览、删除
- P 曲线弹窗展示超越概率表格
- 事件详情弹窗展示全部特征参数
- 采样预览弹窗使用 recharts 折线图展示波形(替代原表格)
- 导入功能在卡片工具栏按钮 + Modal 表单中完成
- 安装 recharts npm 包用于波形图表展示
- 移除原有的多卡片布局,简化为单卡片主视图
- 保持分页和删除功能正常

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 10:55:56 +08:00
chengkai3 72dca934e7 feat: [FL-122][雷电幅值统计页面导入改造]
将导入表单改为弹窗模式,用户点击"导入雷电流数据"按钮后打开导入表单弹窗。

改动内容:
- 新增 Modal 组件用于显示导入表单
- 新增 importModalOpen 状态控制弹窗显示
- 将所有导入表单元素(事件编号、采样间隔、Region ID等)从页面平铺移至弹窗中
- 导入成功后自动关闭弹窗并重置表单
- 保留原有的筛选功能在页面上

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 10:35:46 +08:00
chengkai3 4d4ad71daa [fix]:[FL-121][为雷电流幅值页面添加线路参数准备卡片]
- 添加"线路参数准备"卡片到 /admin/lightning-currents 页面
- 支持线路选择和回填雷电流幅值功能
- 显示线路准备状态和就绪情况
- 修正之前遗漏的需求点

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 00:43:15 +08:00
chengkai3 b40f0c3461 [feat]:[FL-121][拆分雷电流幅值与地闪密度统计页面]
- 将 lightning-currents/page.tsx 拆分为两个独立页面
- /admin/lightning-currents: 保留雷电流幅值统计相关功能(导入表单、事件列表、事件详情、采样预览、P曲线)
- /admin/lightning-distribution: 改名为"地闪密度统计",保留空间分布相关功能(分布统计、资产关联、实测/合成对比、自动报表、P曲线)
- 删除 isDistributionOnly 条件渲染逻辑
- 线路参数准备卡片:lightning-currents 移除,lightning-distribution 保留并调整为仅回填地闪密度
- 两个页面完全独立,无耦合

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-15 00:36:14 +08:00
chengkai3 105f622d8e fix: [FL-120] 修复 MESSAGE_TYPE_OPTIONS 类型错误
移除 MESSAGE_TYPE_OPTIONS 的 as const 修饰符,改为显式类型注解,
解决 readonly 类型无法赋值给 Select 组件 options 可变类型的编译错误。

Co-authored-by: multica-agent <github@multica.ai>
2026-06-14 07:24:42 +08:00
chengkai3 f0a98916c0 [feat]:[FL-116][高程数据管理-文件明细优化]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-14 07:19:48 +08:00
chengkai3 9ba1cc4388 [feat]:[FL-118][增加密码错误5次禁止登录半小时功能]
- 在User模型添加failed_login_attempts和failed_login_locked_until字段
- 在database.py添加字段迁移兼容性函数_ensure_user_login_lockout_column_compatibility
- 修改auth_service.py的login_user函数实现登录锁定逻辑:
  * 检查账户是否处于锁定状态
  * 密码错误时递增失败计数
  * 失败5次后锁定账户30分钟
  * 登录成功后重置失败计数和锁定状态
- 添加单元测试test_login_lockout.py验证功能

Co-authored-by: multica-agent <github@multica.ai>
2026-06-14 01:07:26 +08:00
chengkml 2098e6797d feat: restore system messages admin page 2026-06-14 00:41:19 +08:00
chengkai3 98a65821e7 [feat]:[FL-117][增加无账号用户注册功能]
- 新增用户注册页面 /register
- 在登录页面添加注册入口链接
- 支持邮箱、用户名、密码注册
- 包含密码确认和前端验证

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-14 00:39:02 +08:00
chengkai3 cdc3041fd8 [fix]:[FL-114][去掉系统右上角图标点开后菜单中的用户管理]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 23:56:11 +08:00
chengkai3 b26f62003e [feat]:[FL-113][系统消息展示用小弹窗,不要抽屉]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 23:48:38 +08:00
chengkai3 1d11bf9fc3 [feat]:[FL-109][增加系统消息发送功能]
- 后端:创建system_messages表模型和Schema
- 后端:实现消息创建、查询、标记已读的服务层
- 后端:新增REST API接口(需admin.system_message权限)
- 前端:完善系统消息抽屉弹窗,显示消息列表
- 前端:自动加载未读数量,支持标记已读
- 数据库:新增迁移脚本建表

Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 23:27:29 +08:00
chengkai3 e58614872d fix: [FL-107][ATP模型管理页面避雷器装设组合编辑时无法回显]
修复CreatableSingleSelect组件value判断逻辑,使用明确的null和undefined检查替代truthy判断,确保所有有效字符串值(包括空字符串)都能正确回显。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 23:15:14 +08:00
chengkai3 46e3b203d4 feat:[FL-111][地闪密度计算功能优化]实现电压等级自动推荐半径
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 23:09:44 +08:00
chengkai3 a77500a762 fix: [FL-110] 对齐雷电流幅值统计数据过滤逻辑
修改 _fit_line_current_parameters 函数,使其数据处理逻辑与参考工程保持一致:
1. 数据过滤改为取绝对值,不再过滤0值和负值
2. 返回值增加 peak_max 和 peak_min 字段
3. API 响应模型添加最大值和最小值字段

主要变更:
- api/app/services/lightning_service.py
  * _fit_line_current_parameters: 数据清洗逻辑从 if item > 0 改为 abs(item)
  * 返回值从 3 个增加到 5 个,新增 peak_max 和 peak_min
  * prepare_line_lightning_current: 移除查询时的 > 0 过滤
  * 在 extra_profile_json 和 preparation_source 中记录 peak_max/peak_min

- api/app/schemas/lightning.py
  * LightningCurrentPreparationResponse: 添加 peak_max 和 peak_min 字段

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 23:00:24 +08:00
chengkai3 71e2c1b96e [feat]:[FL-108][表格操作列风格统一]
统一所有表格页面的操作列按钮布局,参考用户管理页面,只保留两个按钮在外展示,其余操作按钮使用纵向省略号进行隐藏。

修改的页面:
- tower-models: 编辑、上传图片保留外显,删除移至下拉菜单
- power-lines: 编辑、专业参数保留外显,删除移至下拉菜单
- atp-models: 详情、编辑保留外显,删除移至下拉菜单

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 22:56:09 +08:00
chengkai3 2e29e1a975 [fix]:[FL-105][修复打包报错-替换curly quotes为标准ASCII引号]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 08:14:23 +08:00
chengkai3 07735fb23f feat: [FL-104][高程数据管理中文件明细要展示各个文件的坐标范围]
- 添加 ElevationDatasetFileMeta 数据库模型存储文件级别坐标范围
- 更新 API schema 和 service,返回每个文件的 bbox 信息
- 修改高程数据分析任务,遍历目录所有文件并提取坐标范围
- 前端文件明细表格新增坐标范围列
- 创建数据库迁移脚本

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 07:59:08 +08:00
chengkai3 4905064c3a feat:[FL-103][优化文件管理页面样式布局风格]
优化文件管理页面的视觉呈现和用户体验:

- 优化Card标题区域:添加图标和改进标题样式,增强视觉层次
- 优化操作按钮:改进按钮颜色方案和布局间距,提升交互体验
- 优化上传进度显示:渐变背景、改进布局和颜色主题,更加醒目
- 优化面包屑导航:圆角边框、渐变背景、添加分隔符,提升视觉效果
- 优化表格样式:添加表头背景色、hover效果和圆角,改善可读性
- 优化文件/文件夹图标:调整大小和颜色,增强视觉识别度
- 优化表格列内容:添加字体样式和类型样式,改善信息层次
- 优化Modal对话框:添加header样式、边框分隔和输入框大小
- 优化整体间距:从space-y-6改为space-y-5,视觉更紧凑统一

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 07:56:04 +08:00
chengkai3 cc41112c0b feat: [FL-102][在系统右上角用户头标左边添加系统消息功能]
- 在admin布局的header中添加了系统消息按钮
- 使用BellOutlined图标展示系统消息入口
- 添加了Badge组件用于显示未读消息数量
- 按钮位于主题切换器和用户头像之间
- 包含点击事件处理函数(当前为占位实现)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 07:54:42 +08:00
chengkai3 efd168474a [fix]:[FL-101][去掉杆塔模型管理页面右上角的上传文件初始化按钮]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 07:52:58 +08:00
chengkai3 ecf3807dbc feat:[FL-97][优化系统配色风格以匹配防雷计算主题]
- 新增「电光紫」(#8b5cf6)主题色,作为默认主色调
- 更新全局CSS变量,采用紫色系渐变配色
- 修改布局背景为淡紫色调(#faf8ff)
- 优化边框、阴影等视觉元素,增强防雷主题氛围
- 更新滚动条样式为紫色系

Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 07:52:15 +08:00
chengkai3 a19b561e8f [feat]:[FL-95][高程数据管理页面优化]
1. 新建高程集时移除编码输入字段,编码自动生成(使用时间戳+随机数)
2. 移除"数据目录自动生成"提示信息
3. 移除表格中"挂载"、"数据集目录"、"文件路径"列

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-12 23:52:43 +08:00
chengkai3 08f252e66d [fix]:[FL-100][统一操作后消息弹窗样式]
- 统一所有 message.success/error 调用格式为简洁的字符串形式
- 移除对象形式的 message 调用({ content: "..." })
- 确保消息文案简洁直接,省略不必要的省略号

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-12 23:41:58 +08:00