Commit Graph

584 Commits

Author SHA1 Message Date
chengkai3 aeabdab275 [fix]:[FL-86][ATP模型管理页面缺少Empty组件导入]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 17:05:05 +08:00
chengkai3 3a03cf54ed fix:[FL-88][菜单管理页面卡片删除按钮引用未定义函数导致运行时错误]
- 修复删除按钮 onClick 引用未定义的 requestDeleteMenu 函数
- 改为使用 Modal.confirm 进行二次确认,与用户管理页面保持一致
- 移除 loading 属性,确认对话框内的按钮会显示 loading
- 确认后调用正确的 removeMenu 函数

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 17:03:55 +08:00
chengkai3 7614f134b5 feat:[FL-70][ATP模型管理页面:添加移动端响应式支持(卡片视图)]
- 引入useMobileDetection hook检测移动设备
- 实现卡片布局,包含模型名称、编码、业务维度、版本信息和操作按钮
- 添加视图切换逻辑,移动端自动使用卡片视图
- 新增CSS样式支持卡片视图和暗色模式
- 与用户管理页面保持一致的移动端体验

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:45:51 +08:00
chengkai3 c4b2794119 fix:[FL-66][杆塔模型管理页面:表格滚动高度计算逻辑不一致]
对齐杆塔模型管理页面的表格滚动高度计算逻辑,使其与用户管理页面保持一致。

主要改动:
1. 重命名常量:TOWER_MODEL_VIEWPORT_BOTTOM_GAP → TOWER_MODEL_VIEWPORT_GAP
2. 新增常量:TOWER_MODEL_FALLBACK_RESERVE (220)
3. 移除常量:TOWER_MODEL_MAX_GROW_STEP(不再需要)
4. 重构 updateTableScrollY 函数,采用用户管理页面的精确计算逻辑:
   - 基于 anchor 元素的 top 位置计算
   - 考虑 table wrapper 和 table body 的高度差
   - 使用 FALLBACK_RESERVE 和 VIEWPORT_GAP 进行精确计算
5. 将 useLayoutEffect 改为 useEffect,并使用 requestAnimationFrame
6. 移除对 paginationRef 的依赖,计算逻辑不再依赖分页元素
7. 清理未使用的 useLayoutEffect import

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:45:19 +08:00
chengkai3 7814318d13 fix:[FL-40][系统参数管理页面Card样式属性配置不规范]
移除系统参数管理页面 Card 组件的内联 style={{ height: '100%' }} 配置,
使其与用户管理页面保持一致的配置规范。

- 移除 Card 组件的 style 属性
- 保持组件配置简洁性
- 确保布局行为与用户管理页面一致

Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:44:39 +08:00
chengkai3 31e701d3c7 [fix]:[FL-62][杆塔模型管理页面:空状态提示文案不一致]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:44:11 +08:00
chengkai3 4fb7846ee2 [feat]:[FL-64][系统日志页面:添加移动端响应式卡片视图]
- 导入 useMobileDetection hook 进行设备检测
- 添加 viewMode 状态,根据设备自动切换表格/卡片视图
- 实现 renderLogCard 函数,渲染日志卡片组件
- 添加卡片视图的无限滚动加载支持
- 实现响应式筛选表单(移动端纵向,桌面端横向)
- 在 globals.css 添加卡片视图样式和暗色主题支持
- 修复 system-messages 页面的 git merge 冲突

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:43:36 +08:00
chengkai3 a83ce7013b fix:[FL-68][杆塔模型管理页面:表格列宽度未设置固定布局]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:42:37 +08:00
chengkai3 87d0c2f956 [feat]:[FL-37][系统参数管理页面添加Dropdown更多操作菜单]
- 在表格操作列添加Dropdown更多菜单,包含"复制参数键"功能
- 在移动端卡片视图的更多菜单中也添加"复制参数键"功能
- 统一操作列交互模式,与用户管理页面保持一致
- 将操作列宽度从150px调整为180px以容纳新增的Dropdown按钮
- 所有操作按钮根据rowBusy状态统一控制禁用,确保交互一致性

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:40:46 +08:00
chengkai3 4872a6e13d [fix]:[FL-71][统一Card组件导入来源]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:40:24 +08:00
chengkai3 cfa6a1337e [fix]:[FL-45][杆塔模型管理页面:缺少Card组件包装]
- 移除自定义Card导入,改用Ant Design原生Card
- 添加类型转换:const AntCard = Card as unknown as ComponentType<CardProps>
- 主Card组件改用AntCard并添加className="admin-tower-models-page-card"
- 保留内部Card组件(卡片视图内的小卡片)继续使用Card

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:39:39 +08:00
chengkai3 59d3bf2e18 [fix]:[FL-72][统一外层容器className规范]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:37:51 +08:00
chengkai3 5c80337ec1 fix:[FL-79][统一表格操作列为Button组件而非Typography.Link]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:36:05 +08:00
chengkai3 35ec198d7e feat:[FL-76][统一搜索交互为防抖自动触发模式]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:35:46 +08:00
chengkai3 d9134ab8e7 [fix]:[FL-67][系统消息页面:统一Card组件高度样式]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:34:31 +08:00
chengkai3 9f741baf27 [fix]:[FL-73][统一Card组件属性配置规范]
为高程数据管理页面的主Card组件添加标准属性:
- 添加 ref={pageCardRef}
- 添加 className="admin-elevation-page-card"
- 移除内联 style={{ height: '100%' }}

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:34:00 +08:00
chengkai3 97e9800ca7 [fix]:[FL-75][统一筛选表单样式控制方式]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:33:30 +08:00
chengkai3 9e8e069705 fix:[FL-77][移除独立的重置筛选按钮]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:33:06 +08:00
chengkai3 9eb0a909ed feat:[FL-47][系统消息页面:添加移动端响应式卡片视图]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:12:16 +08:00
chengkai3 800cbf4d75 fix:[FL-60][ATP模型管理页面:统一Table列定义和操作按钮样式]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:10:07 +08:00
chengkai3 af8a928978 [feat]:[FL-30][系统参数管理页面添加移动端响应式卡片视图]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:08:16 +08:00
chengkai3 bf91ebf09f fix:[FL-50][ATP模型管理页面:修复Card布局和样式不一致问题]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:07:47 +08:00
chengkai3 76bd5c8221 fix:[FL-25][菜单管理页面:修复移动端卡片视图缺失]
- 将 viewMode 从 state 改为直接根据 isMobile 计算
- 移除不必要的 useEffect 监听
- 实现条件渲染:移动端显示卡片视图,桌面端显示表格视图
- 实现移动端垂直布局搜索表单,桌面端水平布局
- 调整卡片样式,使用响应式网格布局(xs=24, sm=24, md=12, lg=8, xl=6)
- 移除 renderMenuCard 中的 marginBottom,改用网格间距

Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:07:31 +08:00
chengkai3 75748925c7 feat:[FL-51][系统消息页面:实现动态表格高度自适应]
- 添加 MESSAGES_TABLE_MIN_SCROLL_Y、MESSAGES_TABLE_VIEWPORT_GAP、MESSAGES_TABLE_FALLBACK_RESERVE 常量
- 添加 tableScrollY 状态和 tableScrollAnchorRef 引用
- 实现 updateTableScrollY 函数,动态计算表格滚动高度
- 添加 useEffect 监听窗口 resize 事件
- 添加 useEffect 监听表格容器 ResizeObserver
- 添加 useEffect 监听依赖项变化(消息数量、加载状态、过滤条件)
- 在 Table 组件应用 scroll={{ y: tableScrollY }}
- 外层 div 使用 ref 和 CSS 变量

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:07:19 +08:00
chengkai3 5e191741a6 feat:[FL-49][杆塔模型管理页面添加移动端自适应视图模式]
- 导入 useMobileDetection hook
- 根据设备类型自动选择默认视图模式(移动端默认卡片视图,桌面端默认列表视图)
- 移动端隐藏视图切换控件

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:06:41 +08:00
chengkai3 b5b6124261 [fix]:[FL-54][ATP模型管理页面:统一搜索表单布局和间距]
将ATP模型管理页面的搜索表单布局统一为与用户管理页面一致的样式:
- 将关键词输入框从 className="min-w-[240px]" 改为 style={{ width: 260 }}
- 保持 Form 的 layout="inline" 和 style={{ rowGap: 12 }} 配置
- 确保表单与表格的间距(mt-4)保持一致

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 16:06:10 +08:00
chengkai3 b50850219f fix:[FL-36][系统参数管理页面模态框Footer配置方式不规范]
移除自定义footer,使用标准Modal props配置:
- 使用okText和cancelText配置按钮文本
- 使用confirmLoading自动显示加载状态
- 使用onOk触发表单提交
- 移除footer中的"重置"按钮
- 与用户管理页面保持一致的交互体验

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:57:55 +08:00
chengkai3 7c70f89411 [feat]:[FL-32][系统参数管理页面分页功能缺失]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:57:32 +08:00
chengkai3 71388e4177 [feat]:[FL-24][角色管理页面:添加操作按钮 loading 和 disabled 状态管理]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:57:05 +08:00
chengkai3 4f197b1caa feat:[FL-19][角色管理页面:表格操作列按钮缺少图标]
- 在导入中添加 Popconfirm 组件
- 将 removeRole 函数从 modal.confirm 改为直接执行删除
- 表格视图的删除按钮使用 Popconfirm 二次确认
- 卡片视图的删除按钮使用 Popconfirm 二次确认
- 统一与用户管理页面的删除确认样式

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:55:44 +08:00
chengkai3 979b57474b fix:[FL-28][菜单管理页面布局容器类名统一]
- 外层容器类名改为 flex min-h-0 flex-1 flex-col
- 移除 space-y-6
- Card 组件添加 ref 和 className 属性
- 移除 style={{ height: '100%' }}
- 添加 pageCardRef 定义

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:54:14 +08:00
chengkai3 7206f7965b [fix]:[FL-27][菜单管理页面:添加缺失的卡片视图编辑按钮图标]
- 在 web/src/app/admin/menus/page.tsx 中添加 EditOutlined 图标导入
- 在卡片 extra 区域添加编辑按钮,与用户管理页面保持一致
- 使用 Space 容器包裹编辑按钮和更多操作按钮
- 更多操作按钮添加 type="text" 属性

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:53:38 +08:00
chengkai3 e58f05dc49 feat:[FL-26][菜单管理页面:统一操作按钮交互模式和UI组件]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:53:21 +08:00
chengkai3 0f2dfe7e67 fix:[FL-21][角色管理页面:卡片视图操作按钮缺少图标]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:52:59 +08:00
chengkai3 4445217815 fix:[FL-22][角色管理页面:搜索表单布局需对齐用户管理]
将角色管理页面搜索表单的样式从 Tailwind CSS className 改为内联 style,与用户管理页面保持一致。

修改内容:
- web/src/app/admin/roles/page.tsx:486
  将 className="min-w-[260px]" 改为 style={{ width: 260 }}

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:51:25 +08:00
chengkai3 b5601d5cd7 fix:[FL-17][修正:卡片视图滚动容器改为页面Card的body]
根据用户反馈修正滚动容器位置,从 .admin-users-card-view 改为 .admin-users-page-card 的 .ant-card-body

变更点:
1. CSS 修改:移除 .admin-users-card-view 的 overflow 属性(已经在 .ant-card-body 设置)
2. JS 修改:将滚动事件监听从卡片视图容器改为页面Card的body元素
3. Ref 修改:pageCardRef 引用页面Card,通过 querySelector 获取其 .ant-card-body 子元素

Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:28:10 +08:00
chengkai3 721720bf9e fix:[FL-16][修复删除关键字时数据不回显的问题]
修复卡片视图中逐个字母删除关键字时,接口返回数据但页面不回显的问题。

问题原因:
在状态更新函数中使用函数式更新器检查 cardViewPage === 1,可能导致闭包问题或状态更新时机不当,使得删除字符时的数据更新无法正确触发。

解决方案:
将 cardViewPage === 1 的检查移到状态更新函数外部,对于第一页直接调用 setAllLoadedUsers(users),避免使用函数式更新器,确保状态能够立即同步更新。

改动:
- 第一页:直接设置状态 setAllLoadedUsers(users)
- 后续页:使用函数式更新器追加新数据

这样确保无论是输入还是删除字符,第一页的数据都能正确更新显示。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:27:43 +08:00
chengkai3 6218b61ca3 fix:[FL-17][用户管理页面卡片视图滚动优化]
修改卡片视图滚动行为,使卡片列表容器自身滚动而非整个页面滚动

变更点:
1. CSS 修改:为 .admin-users-card-view 添加 overflow-y: auto 和 overflow-x: hidden
2. JS 修改:将滚动事件监听从 window 改为卡片视图容器 cardViewContainerRef
3. 重构:使用容器的 scrollTop/scrollHeight/clientHeight 替代 window 的对应属性

Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:07:26 +08:00
chengkai3 ccb1b36640 fix:[FL-16][修复卡片视图关键字过滤时偶发的数据不显示问题]
修复卡片视图中关键字过滤时,接口返回数据但页面偶尔不显示的问题。

问题原因:
更新 allLoadedUsers 的 effect 有条件 `users.length > 0`,导致当数据暂时为空或正在加载时,effect 不会执行,即使后续有数据也无法更新显示。

解决方案:
1. 移除 `users.length > 0` 条件,让 effect 在非加载状态下总是执行
2. 对于第一页,直接设置为 users(即使为空)
3. 对于后续页,只有 users 有数据时才追加,避免追加空数组

这样确保无论数据状态如何变化,allLoadedUsers 都能正确更新。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 15:00:05 +08:00
chengkai3 b4900ffd8a style:[FL-16][将滚动条移至ant-card-body层级]
将滚动条从卡片内容区域移至 ant-card-body 层级,使过滤表单始终可见,只滚动卡片列表内容。

改动:
1. 在 .admin-users-page-card > .ant-card-body 添加 overflow-x: hidden 和 overflow-y: auto
2. 从 .admin-users-card-view-content 移除 overflow 属性

效果:当卡片内容较多时,滚动条出现在卡片主体区域,过滤表单保持固定。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 14:34:46 +08:00
chengkai3 7c5b6ac3e2 style:[FL-16][移除卡片视图顶部外边距]
卡片视图容器移除 mt-4 类,去掉顶部 margin,使卡片列表与过滤表单之间更加紧凑。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 14:25:49 +08:00
chengkai3 c9cb5a570f style:[FL-16][卡片视图角色标签去除边框]
卡片视图中的角色标签改为无边框样式,使界面更加简洁。

为 Tag 组件添加 bordered={false} 属性。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:51:48 +08:00
chengkai3 e073a52b80 feat:[FL-16][卡片视图优化过滤表单显示]
卡片视图模式下,简化过滤表单展示:
1. 仅显示关键字搜索输入框
2. 隐藏状态过滤下拉框
3. 移除"关键词"标签
4. 输入框占满整行宽度

表格视图保持原有的完整过滤表单(关键词+状态)。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:48:09 +08:00
chengkai3 0bf84ccbe3 fix:[FL-16][修复用户启用后页面状态不刷新问题]
将 refreshData 函数中的 invalidateQueries 改为 refetchQueries,确保启用/禁用用户操作后立即强制重新获取数据并更新页面状态。

问题原因:invalidateQueries 只是将查询标记为过期,不会立即触发重新获取,在某些情况下可能导致页面状态不及时更新。

解决方案:使用 refetchQueries 强制立即重新获取数据,确保启用和禁用操作后页面状态都能及时刷新。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:43:46 +08:00
chengkai3 ad02f9eb3a fix:[FL-16][修复卡片视图初始渲染问题]
修复卡片视图模式下,页面初次加载时接口返回数据但页面不渲染的问题。

问题原因:重置效果的条件判断(viewMode === "card")导致在表格视图模式下切换过滤条件时不会重置状态,当切回卡片视图时会使用旧的状态数据。

解决方案:移除 viewMode 的条件判断,确保无论当前视图模式如何,过滤条件变化时都会正确重置卡片视图状态。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:37:56 +08:00
chengkai3 31b686543d fix:[FL-16][用户管理页面优化]
1. 去掉搜索按钮,输入关键字时自动触发查询(500ms防抖)
2. 修复卡片视图展示时出现的横向滚动条问题

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:25:48 +08:00
chengkai3 c529c40739 [fix]:[FL-15][强制覆盖卡片背景色以适配暗黑主题]
添加!important规则确保暗黑主题下卡片标题和内容区域正确显示深色背景

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:05:38 +08:00
chengkai3 83a03194ca refactor:[FL-11][卡片视图仅显示编辑按钮]
- 卡片右上角只显示编辑按钮和三个点菜单
- 删除按钮移至三个点菜单中,作为第一项
- 删除操作使用 Modal.confirm 进行确认

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 13:04:02 +08:00
chengkai3 51cb711b4c refactor:[FL-11][将卡片操作按钮移至右上角]
- 将编辑、删除、三个点按钮从卡片底部移至右上角
- 使用 Card 组件的 extra 属性放置按钮
- 移除底部的 admin-users-user-card-actions 区域

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 12:45:51 +08:00
chengkai3 dfa97df8d1 [fix]:[FL-15][用户管理页面的卡片视图无法适配暗黑主题]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-19 12:42:19 +08:00