Commit Graph

558 Commits

Author SHA1 Message Date
chengkai3 5f0b4b0256 [fix]:[FL-205][模型删除时同步删除存储文件]
- 更新 delete_asset 函数,在删除数据库记录前先删除物理文件
- 遍历模型的所有 release,逐个删除其存储路径下的文件
- 使用 try-except 确保文件删除失败不会阻塞数据库清理
- 新增测试用例 test_delete_asset_removes_storage_files 验证文件删除功能

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 11:15:06 +08:00
chengkai3 a9fabc380d [fix]:[FL-205][移除资产代码层级并添加路径冲突校验]
- 从存储路径中移除 asset_code 层级
- 修改路径结构:/atp-library/{voltage_level}/{tower_type}/r{release_no}
- 新增 _check_storage_path_conflict 函数,检测路径冲突
- 在 create_release 和 create_release_from_archive 中添加冲突校验
- 当检测到路径已被其他模型占用时,返回 409 错误并提示详细信息
- 新增测试用例验证冲突检测功能

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 11:02:33 +08:00
chengkai3 6d52f24ef3 [feat]:[FL-206][新增维度管理功能]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 11:01:16 +08:00
chengkai3 31ee65f745 [fix]:[FL-202][移除ATP模型列表描述列]
- 从表格视图中移除"描述"列
- 从卡片视图中移除描述字段显示
- 更新搜索框placeholder,去掉"描述"字样

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 10:52:15 +08:00
chengkai3 5b98ec9b49 [fix]:[FL-202][简化ATP模型创建表单]
- 移除描述字段(description)的展示和填写
- 移除Select组件创建新选项的能力(去掉dropdownRender提示文字)
- 现在只能从预定义的选项中选择,不再支持自定义输入新值
- 更新表单验证提示文字,去掉"或新建"字样

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 10:41:38 +08:00
chengkai3 a1b93a91bb [fix]:[FL-202][优化ATP模型文件上传UI]
- 移除拖拽上传框(Upload.Dragger),改为普通按钮上传
- 隐藏默认文件列表(showUploadList={false})
- 自定义文件预览列表,限制高度200px,超出部分滚动显示
- 显示文件数量统计
- 优化视觉样式,使用浅灰背景和边框
- 移除InboxOutlined图标依赖

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 10:29:46 +08:00
chengkai3 b82e005b7c [feat]:[FL-205][ATP模型文件存储改造]
- 移除 releases 层级
- 新增 voltage_level(电压等级)和 tower_type(塔型)作为目录层级
- 修改存储路径结构:/atp-library/{voltage_level}/{tower_type}/{asset_code}/r{release_no}
- 更新相关测试用例

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 10:27:52 +08:00
chengkai3 081c201b2e [fix]:[FL-202][修复ATP模型表单下拉框行为]
将CreatableSingleSelect组件替换为标准的Select组件:
- 使用showSearch支持搜索
- 选中值后下拉菜单自动关闭(单选框正常行为)
- 保留通过输入创建新选项的能力
- 添加提示文本"可直接输入新建选项"

修复了原有实现中使用mode="tags"导致的下拉框不关闭问题

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 10:24:25 +08:00
chengkai3 b90776dd40 [fix]:[FL-202][调整ATP模型创建弹窗宽度]
移除width={760},使用Ant Design默认宽度(520px),与用户管理的用户新增表单保持一致

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 10:17:10 +08:00
chengkai3 383f0a43b7 [feat]:[FL-204][优化防雷计算任务创建表单]
1. 用弹窗代替抽屉:将 Drawer 改为 Modal
2. 调整表单布局:采用纵向排布
3. 优化字段顺序:任务名、任务类型、线路在前,依赖表单采用双列展示

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 10:03:21 +08:00
chengkai3 f866ee3fa8 fix:[FL-203][调度监控页面执行节点离线巡检日志不要展示]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 09:54:03 +08:00
chengkai3 f020bdc3c9 [feat]:[FL-202][ATP模型管理改造]
1. 表格列调整:只展示电压等级、塔型、场景、避雷器组合、描述、更新时间
2. 创建时支持上传目录,保留原始目录结构(使用jszip打包后上传)
3. 去掉编辑和详情查看功能

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-28 09:50:09 +08:00
chengkai3 463a128e68 [fix]:[FL-199][修复地闪密度页面遗留的 JSX 语法错误] 2026-06-27 23:21:45 +08:00
chengkai3 27ea9d7c8d [feat]:[FL-200][ATP模型管理功能优化]
移除ATP模型管理中版本和执行记录的展示功能:
- 列表页:移除"当前版本"列及版本/运行次数统计
- 详情页:移除版本列表卡片、新建版本、编辑版本、激活版本功能
- 详情页:移除运行记录卡片、运行/Dry Run功能
- 保留模型基本信息展示(编码、状态、业务维度、说明)
- 保留当前版本详情、目录文件清单展示

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 22:49:20 +08:00
chengkai3 91c9877e0a fix: 修复ATP模型编辑时下拉选项无法选择的问题
问题描述:
在编辑ATP模型时,下拉框中已选中的选项无法被重新选择。

根本原因:
CreatableSingleSelect组件使用了mode="tags"的Select,但onChange处理逻辑不够完善,
导致在某些情况下选择操作无法正确更新表单值。

解决方案:
1. 将value的规范化逻辑提取为独立变量,提高代码可读性
2. 改进onChange处理逻辑,明确处理空数组和非空数组的情况
3. 添加tokenSeparators配置,支持逗号分隔输入新值

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 22:42:50 +08:00
chengkai3 bb265387c9 [fix]:[FL-199][地闪密度统计页面优化]
- 移除 region_id 的配置和展示(导入表单、筛选条件、表格列、详情模态框)
- 移除"基于经纬度与电流幅值展示雷电空间分布,支持按地点、区域等条件筛选。"提示文本
- 调整导入表单和表格列顺序为:城市、地点标签、年份、备注
- 参考用户管理页面,修复分页组件在无数据时也能展示
- 保留新增的"查询"按钮功能和 shouldLoadData 状态管理

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 22:41:29 +08:00
chengkai3 dc023b1f3e [fix]:[FL-198][地闪密度页面进入时不应该调用GET /api/v1/lightning-currents,去掉这个调用动作]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 22:33:38 +08:00
chengkai3 cf68e6104b [fix]:[FL-197][修复 import-batches 接口无数据时返回 404 的问题]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 22:15:42 +08:00
chengkai3 fdbf8839c5 [fix]:[FL-196][nginx 动态 DNS 解析 + 部署流程中重启 nginx,防止容器重启后 502] 2026-06-27 18:17:00 +08:00
chengkai3 4cbd7262ae [fix]:[FL-196][移除 celery_app.py 中已删除的 atp_model_tasks 引用] 2026-06-27 18:04:20 +08:00
chengkai3 811b89bbb0 [fix]:[FL-196][补修 database.py init_db() 中残留的 atp_model 引用] 2026-06-27 17:56:13 +08:00
chengkai3 1ece40dd01 [fix]:[FL-196][修复 fl_analysis_external.py 中对已删除 atp_model 模块的引用]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 17:17:50 +08:00
chengkai3 e382fd6aa5 ci: trigger GitHub Actions 2026-06-27 16:06:04 +08:00
chengkai3 b8f61a72aa [feat]:[FL-194][删除AtpModel系统,保留AtpAsset]
- 删除AtpModel、AtpModelVersion、AtpSimulationRun模型及相关代码
- 删除/api/v1/atp/models API端点
- 将engine status功能迁移到atp_asset_service
- 更新路由和模型注册,移除atp_model引用
- 删除相关测试文件
- 更新fl_analysis_service使用atp_asset_service的_truncate_output

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 10:14:27 +08:00
chengkai3 16bdd76eaf fix: wine执行器在运行时自动配置D:驱动器映射以支持ATP $INCLUDE路径
tpbig.exe的ATP模板使用Windows绝对路径引用库文件:
  $INCLUDE, D:\ATP\110\ganzi\fanji\noM\short.lib, ...

需要wine的D:驱动器映射到ATP目录才能正确解析。

修改内容:
1. api/app/services/wine_service.py - 新增 _ensure_wine_drive_mapping()
   在每次执行wine前自动创建dosdevices/d:: symlink指向ATP目录,
   并将templates/fanji/*.lib复制到DOS路径对应位置
2. 预创建 ATP/110/ganzi/fanji/noM/ 目录结构并放入库文件
2026-06-27 10:10:45 +08:00
chengkai3 0fa2a10c12 [fix]:[wine]补充ATP运行时文件(startup/graphics等)至pro-deploy 2026-06-27 09:52:55 +08:00
chengkai3 ba21d8ac6b feat:[FL-192][AI问答页面:无会话时展示引导界面,提供示例问题按钮]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 08:14:51 +08:00
chengkai3 5999dfe427 [fix]:[FL-195][优化文档查看页面:修复标题重复和树/内容间距问题]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 08:04:16 +08:00
chengkai3 7aaa663cc4 fix: [FL-193] 修复 lightning-distribution 页面 TypeScript 类型错误
- 修正 EventsModal 和 ScatterModal 组件中 fetchWithAuth 参数类型定义
- 添加缺失的 LightningImportBatchEventItem 类型导入
- 确保类型签名与 useAuth hook 返回的 fetchWithAuth 一致

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 07:50:43 +08:00
chengkai3 10780285f5 feat: [FL-191] 改造地闪密度统计页面为文件导入记录视图
## 改动摘要

### 后端改动
- 新增 `lightning_import.py` schema,定义文件导入批次相关数据结构
- 在 `lightning_service.py` 中实现 `list_lightning_import_batches` 和 `get_lightning_import_batch_events` 函数
- 在 `lightning.py` API 中新增两个端点:
  - `GET /lightning-currents/import-batches` - 获取文件导入批次列表
  - `GET /lightning-currents/import-batches/events` - 获取指定批次的事件明细

### 前端改动
- 修改 `page.tsx`,将表格展示从单个事件改为文件导入批次
- 新增 `EventsModal` 组件,用于查看批次的事件明细
- 新增 `ScatterModal` 组件,用于查看批次对应的散点图
- 每个批次记录提供「事件明细」和「散点图」按钮
- 更新类型定义,新增 `LightningImportBatchSummary` 等类型

### 数据分组逻辑
- 按 `source_file_name + create_date + region_id + location_tag + city` 进行分组
- 每个批次显示:文件名、导入时间、事件数、城市、地点标签、最大/平均电流

## 测试结果
-  Python 语法检查通过(lightning_service.py, lightning.py, lightning_import.py)
-  TypeScript 类型定义正确

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 07:37:39 +08:00
chengkai3 e6793cb119 [feat]:[wine]设置外执行器页面默认值 - tpbig.exe路径及测试算例参数 2026-06-27 07:37:13 +08:00
chengkai3 c218a9896e [feat]:[wine]添加Wine执行器配置 - tpbig.exe及ATP测试算例 2026-06-27 07:13:07 +08:00
chengkai3 51d7e5d403 docs:[FL-190][AI问答页面:未选中会话时发送消息报 'Conversation not found' 异常]
添加测试计划文档,验证 FL-189 中实现的修复逻辑:
- 未选中会话时自动创建新会话
- 使用消息内容生成会话标题
- 确保不会出现 "Conversation not found" 错误
- 包含多个测试场景和验证点

修复已在 FL-189 (commit 2e83cb8) 中完成。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 06:43:58 +08:00
chengkai3 2e83cb8e72 feat:[FL-189][AI问答页面:取消默认自动创建会话,改为首次问答时生成]
主要改动:
1. 移除页面加载时自动创建空会话的逻辑
2. 修改发送消息函数,支持在无会话时自动创建会话
3. 根据用户首条问题内容智能生成会话标题(截取前20字或首行)
4. 优化欢迎界面,支持无会话状态下直接输入问题
5. 保持手动新建会话功能不变

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 06:26:22 +08:00
chengkai3 c10d9d8095 [feat]:[FL-188][AI问答页面配色优化 — 适配暗黑主题]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-27 06:25:40 +08:00
chengkai3 4a245fd6d5 fix:[FL-187][修复AI问答页面删除最后一条会话时循环创建新会话的问题]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-25 00:03:36 +08:00
chengkai3 1a5fc18376 [fix]:[FL-186][AI问答页面的颜色要符合系统主题色]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-24 23:57:51 +08:00
chengkai3 2ab3d97e96 feat:[FL-185][AI问答页面 ChatGPT 风格优化]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-24 23:14:14 +08:00
chengkai3 5bf92a9ded feat:[FL-184][AI问答改成流式响应]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-24 13:48:33 +08:00
chengkai3 ae8a2cb9b6 feat:[FL-182][高程数据预览优化]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-23 16:47:37 +08:00
chengkai3 7ef266e4a0 feat:[FL-181][AI问答要支持function call]
实现AI问答的function call功能,支持调用系统接口进行查询。

改动内容:
1. 数据库扩展:
   - 在ai_chat_messages表增加tool_calls和tool_call_id字段
   - 创建数据库迁移文件

2. 模型和Schema更新:
   - AiChatMessage模型增加tool_calls(JSON)和tool_call_id字段
   - AiChatMessageSummary schema增加对应字段

3. Function Call实现:
   - 定义4个可调用函数:query_tower_models、query_lines、query_users、query_system_params
   - 实现_execute_function处理函数调用并返回格式化结果
   - 更新_call_openai_api支持tools参数

4. 消息流程更新:
   - 重构send_message支持完整的function call流程
   - 流程:用户消息 -> AI请求function call -> 执行函数 -> AI基于结果回复

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-22 23:59:13 +08:00
chengkai3 3c500d1397 [feat]:[FL-179][优化文档查看页面布局和样式]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-22 23:58:46 +08:00
chengkai3 265fe741a8 feat: [FL-180] 优化AI问答页面布局和样式
- 改进响应式布局,使用更合理的列宽比例(lg:7/17, xl:6/18)
- 增强视觉层次,对话列表项添加左侧边框高亮和过渡动画
- 优化消息气泡样式,增加圆角、阴影和更好的间距
- 提升文本可读性,调整字体大小和行高
- 改进空状态和加载状态的内边距
- 优化输入区域布局和按钮高度适配

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-22 23:56:50 +08:00
chengkai3 69c6c8c05e [feat]:[FL-178][雷电流幅值统计页面一致性优化]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-22 23:32:20 +08:00
chengkai3 80dec2185e [fix]:[FL-177][调整表格边框样式 - 仅保留外边框并添加圆角]
根据反馈调整表格边框样式:

1. 移除单元格内部边框,仅保留表格外边框
2. 为表格添加圆角效果,使用 --ant-border-radius-lg
3. 顶部和底部圆角对齐,视觉更统一
4. 使用 overflow: hidden 确保圆角正确显示

改动内容:
- 简化 CSS 规则,移除所有单元格间的边框定义
- 添加 border-radius 和 overflow: hidden 到表格容器
- 为表头第一行的首尾单元格添加顶部圆角

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-22 00:14:57 +08:00
chengkai3 10c673461b [feat]:[FL-177][系统表格边框优化]
优化了系统中所有表格的边框样式,确保边框与背景色有明显区分:

1. 新增 CSS 变量 --fquiz-table-border-color 用于统一管理表格边框颜色
2. 为浅色主题设置明显的紫色系边框色 (#d4c5ff)
3. 为暗色主题设置混合色边框,提升对比度
4. 添加全局表格边框样式规则,覆盖所有 Ant Design Table 组件:
   - 表格外边框
   - 表头单元格边框
   - 表体单元格边框
   - 行列边框分隔线
5. 保持视觉一致性,符合现有紫色主题设计规范

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-22 00:04:24 +08:00
chengkai3 9c907efb3e [feat]:[FL-175][文档管理页面一致性优化 - 补充完整功能]
基于代码审查反馈,补充所有缺失功能,完全对齐用户管理页面标准:

**P0 高优先级修复:**
-  添加响应式设计和移动端卡片视图
  - 实现 viewMode: "table" | "card" 根据 isMobile 自动切换
  - 添加 renderDocumentCard 函数,完整实现移动端卡片布局
  - 实现无限滚动加载(cardViewPage、allLoadedDocuments、isLoadingMore)
  - 添加移动端卡片样式(admin-documents-card-view 系列 CSS 类)

-  修复权限检查和空状态展示逻辑
  - 分离 initializing、未登录、无权限三种状态
  - 使用与用户管理页面完全一致的展示文案和布局
  - 添加 initializing 状态处理和 Link 导航

**P1 中优先级修复:**
-  添加搜索和筛选功能
  - 关键词搜索框(500ms 防抖自动查询)
  - 状态筛选下拉框(草稿/已发布)
  - 筛选变化时自动重置分页到第一页
  - 桌面端 inline 表单,移动端 vertical 表单

-  完善分页状态管理
  - 添加 pagination state: { current, pageSize }
  - 实现 onChange 处理函数
  - 集成后端返回的 total
  - 分页参数通过 URL query params 传递给后端
  - 支持页码切换和每页条数选择

**其他改进:**
- 添加 keywordInput、searchKeyword、statusFilter 状态
- 实现 handleKeywordChange 防抖处理
- 添加 keywordDebounceTimeoutRef 清理逻辑
- 更新 documentsQueryParams 包含搜索、筛选、分页参数
- 添加移动端卡片视图所需的所有 useEffect hooks
- 完整的 CSS 样式定义(card-view、document-card 系列)
- 导入 Link 组件用于权限错误页面导航
- 导入 Typography 组件用于卡片视图

**测试结果:**
-  TypeScript 类型检查通过(无错误)
-  ESLint 检查通过(仅 4 个预留功能的无害警告)
-  所有功能特性与用户管理页面完全对齐

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-21 23:14:52 +08:00
chengkai3 2705579766 feat: [FL-176] 文档查看页面一致性优化
## 主要改动

1. **重构页面结构**
   - 移除 Ant Design Layout 组件(Sider + Content)
   - 改用 Card 容器 + Flex 布局,与用户管理页面保持一致
   - 添加 `.admin-docs-view-page-card` 类遵循命名规范

2. **添加 CSS 类系统**
   - 在 globals.css 中添加完整的 `.admin-docs-view-*` 系列类
   - 包含品牌色渐变背景效果
   - 添加暗色主题适配样式
   - 添加响应式断点样式

3. **实现响应式设计**
   - 桌面端:可折叠侧边栏
   - 移动端:使用 Drawer 组件显示目录
   - 使用 useMobileDetection() hook 检测设备类型

4. **移除内联样式**
   - 所有内联 style={{...}} 改为 CSS 类
   - 使用 CSS 变量系统(--fquiz-theme-*)
   - 统一主题适配机制

## 改进效果

-  容器结构与用户管理页面一致
-  颜色系统统一,支持品牌色渐变
-  完整的暗色主题支持
-  移动端和桌面端响应式适配
-  使用统一的 CSS 类命名规范
-  易于维护和扩展

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-21 23:12:46 +08:00
chengkai3 0e43b5c262 [fix]:[FL-174][修复发送按钮尺寸规范]
修复AI问答页面发送按钮尺寸,与用户管理页面保持一致。

改动点:
- 为发送按钮添加 size="small" 属性(第407行)

测试结果:
-  ESLint检查通过

关于嵌套Card布局的说明:
AI问答页面保留嵌套Card结构是基于功能需求:
1. 左栏"对话列表"和右栏"AI对话"需要独立的标题和滚动控制
2. 双栏并列展示是聊天界面的标准交互模式
3. 嵌套Card提供了清晰的视觉边界和功能分区

这与用户管理页面的单栏表格/列表布局属于不同的交互场景,
不应强制统一为扁平化布局。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-21 23:11:34 +08:00
chengkai3 107c8a58dd [feat]:[FL-175][文档管理页面一致性优化]
- 统一页面容器结构:使用 flex min-h-0 flex-1 flex-col 布局
- 添加 admin-documents-page-card CSS 类名和样式定义
- 统一表格配置:使用 tableLayout="fixed" 并明确设置列宽
- 改进操作按钮样式:使用 size="small" 普通按钮 + Popconfirm
- 统一 Modal 配置:明确设置 okText/cancelText/confirmLoading
- 统一反馈机制:使用 useToastFeedback hook 替代 App.useApp()
- 统一空状态文案:使用标准的"未找到符合筛选条件的XXX"格式
- 优化表格滚动高度动态计算逻辑
- 添加 deletingDocumentId 状态管理和 rowBusy 逻辑
- 移除未使用的导入和变量
- 所有 TypeScript 类型检查通过

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