chengkai3
|
d100566dae
|
fix:[FL-173][高程数据预览报错]
修复 TempDataset 缺少 code 属性导致的 AttributeError。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-21 14:31:17 +08:00 |
|
chengkai3
|
e45f8109cc
|
fix:[FL-172][高程数据管理页面上传文件提交表单报错]
修复前端文件上传时文件对象未正确传递的问题。
问题根源:
错误信息显示 "Expected UploadFile, received: <class 'str'>, input: undefined",
说明 file 字段传递的不是有效的文件对象。
原因分析:
在 Ant Design Upload 组件中使用 beforeUpload 返回 false 时,
fileList[0].originFileObj 可能为 undefined,导致传递了 undefined 到 FormData。
解决方案:
1. 添加 fallback 逻辑:const file = fileList[0].originFileObj || fileList[0]
2. 添加文件对象有效性检查,确保是 File 或 Blob 实例
3. 提供清晰的错误提示"无效的文件对象"
这样可以确保:
- 兼容不同版本的 Ant Design Upload 组件
- 文件对象始终是有效的 File/Blob 实例
- 用户得到明确的错误反馈
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-21 14:08:05 +08:00 |
|
chengkml
|
a7650065cc
|
fix: 高程数据管理页面表单字段去除首尾空格
在提交表单前对 source 和 notes 字段进行 trim 处理,避免提交空白字符导致的数据不一致。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-21 13:42:52 +08:00 |
|
chengkai3
|
3fb4d5f170
|
fix:[FL-172][高程数据管理页面上传文件提交表单报错]
修复高程文件上传接口的422错误。
问题原因:
ElevationFileRecordCreateRequest schema 的 mount_code 字段设置了 min_length=2 约束,
当前端传递空字符串时,Pydantic 验证失败导致 422 Unprocessable Entity 错误。
解决方案:
1. 添加 field_validator,将空字符串转换为 None
2. 应用到以下 Request schemas 的可选字符串字段:
- ElevationFileRecordCreateRequest: source, mount_code, notes
- ElevationFileRecordUpdateRequest: source, notes
- ElevationDatasetCreateRequest: source, mount_code, file_name, notes
- ElevationDatasetUpdateRequest: name, source, notes
这样可以确保:
- 空字符串被规范化为 None
- 保持向后兼容性
- 后端逻辑可以正确使用默认 mount_code(第一个可用挂载点)
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-21 13:15:29 +08:00 |
|
chengkai3
|
40b57e7aa3
|
feat:[FL-171][高程数据文件上传支持zip]
- 后端:elevation_file_record_service.py 新增 ZIP 文件上传支持
- 导入 zipfile 和 IMPORTABLE_ARCHIVE_EXTENSIONS
- create_file_record_from_upload 函数识别 .zip 扩展名
- 新增 _create_file_records_from_zip 辅助函数处理 ZIP 解压
- 自动为压缩包内每个有效的高程数据文件创建独立记录
- 支持 .csv, .img, .tif, .tiff 格式的解压
- 自动触发分析任务(如果启用)
- 前端:elevation-records/page.tsx 更新上传表单
- Upload 组件 accept 属性新增 .zip
- 更新提示文本说明支持 ZIP 压缩包自动解压
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-21 12:56:45 +08:00 |
|
chengkml
|
8e12b8a6e0
|
fix: 修复 ai_chat 模块导入错误,将 require_user 改为 get_current_user
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-21 00:34:12 +08:00 |
|
chengkai3
|
297b2c654a
|
fix:[FL-170][修复编译报错]
修复 web/src/app/admin/documents/page.tsx 中的 TypeScript 编译错误。
问题:useToastFeedback hook 返回 void,但代码尝试从中解构 showError 和 showSuccess。
解决方案:
- 移除 useToastFeedback 导入
- 直接使用 App.useApp() 获取 message API
- 创建 showSuccess 和 showError 包装函数
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-21 00:17:40 +08:00 |
|
chengkai3
|
2143e70c64
|
fix:[FL-162][地闪密度统计页面深度一致性修复]
修复13类不符合规范的问题,严格对齐用户管理页面的风格、样式和交互规范:
**高优先级修复(5项):**
1. ✅ 搜索/筛选表单使用Form组件 - 桌面使用Form layout="inline",移动端使用Form layout="vertical",所有输入使用Form.Item包装
2. ✅ Table分页配置完整且受控 - 添加pagination state,配置current、total、onChange、pageSizeOptions等完整属性
3. ✅ Table空状态自定义 - 配置locale.emptyText使用自定义Empty组件
4. ✅ 移动端卡片视图布局 - 使用Row + Col实现响应式网格(xs/sm/md/lg/xl),加载状态使用Spin组件
5. ✅ 初始化和权限检查UI - 使用标准main容器结构,Link直接带样式而非包裹在Button内
**中优先级修复(2项):**
6. ✅ Modal事件处理器 - 提取closeImportModal和closeStatsModal独立函数,移除内联箭头函数
7. ✅ 补充组件导入 - 导入Spin、Row、Col、Popconfirm
**其他优化:**
- 修复Table rowKey使用字符串"id"而非函数
- 统一分页重置逻辑,筛选条件变化时重置pagination.current
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 23:56:45 +08:00 |
|
chengkai3
|
c7d364a894
|
fix:[FL-169][修复登录页面颜色在暗黑主题下不兼容问题]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 23:55:01 +08:00 |
|
chengkai3
|
35c7bd4ac0
|
refactor:[FL-165][优化文档管理页面样式与系统风格一致]
优化内容:
- 使用 useToastFeedback 替代 antd message,与系统其他页面一致
- 添加权限检查逻辑(canManage、canRead)
- 实现表格动态滚动高度计算,提升用户体验
- 使用 AntCard 类型转换,保持代码一致性
- 优化数据刷新逻辑,使用统一的 refreshData 方法
- 添加权限控制的操作按钮禁用状态
- 优化 useCallback 和 useMemo 使用,提升性能
- 文档展示页面添加权限检查和空状态处理
- 统一代码风格和组件使用模式
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 23:52:37 +08:00 |
|
chengkai3
|
ccb796bc02
|
style: [FL-166] 优化AI问答界面样式,与系统风格保持一致
主要改动:
- 使用标准的 Card 组件替代自定义布局
- 采用 Row/Col 响应式布局,适配移动端
- 使用系统统一的 Space、Typography 组件
- 添加 useToastFeedback 统一错误提示
- 使用 useMobileDetection 实现响应式设计
- 优化消息显示,使用系统配色和边距
- 添加 Popconfirm 二次确认删除操作
- 调整页面布局,移除全屏高度容器
- 统一按钮、图标和文字样式
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 23:52:04 +08:00 |
|
chengkai3
|
483fdb982b
|
feat:[FL-165][给系统开发一个操作文档管理和展示功能]
- 创建后端数据库模型:DocumentChapter 和 Document,支持按章节组织的树形文档结构
- 创建数据库迁移文件:002_add_document_management.sql
- 创建 Pydantic schemas:定义文档和章节的请求/响应模型
- 创建后端服务层:document_service.py 实现 CRUD 和树形结构构建
- 创建 API 路由:/api/v1/documents 和 /api/v1/documents/chapters,支持完整的 RESTful 操作
- 创建前端类型定义:document.ts
- 创建文档管理页面:/admin/documents,包含章节树形目录和文档表格,支持增删改查
- 创建文档展示页面:/admin/docs-view,左侧目录树右侧内容展示,支持 Markdown 渲染
- 安装 react-markdown 依赖用于文档内容展示
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 23:22:03 +08:00 |
|
chengkai3
|
21f9839dd6
|
feat: [FL-166] 实现AI问答功能
- 后端实现:
- 添加 ai_chat_conversations 和 ai_chat_messages 数据模型
- 创建 AI 问答 API 路由(/api/v1/ai-chat)
- 实现对话管理和消息发送服务
- 集成 OpenAI API 进行对话交互
- 支持流式对话历史和上下文管理
- 前端实现:
- 创建 ChatGPT 风格的聊天界面(/admin/ai-chat)
- 支持新建、选择、删除对话
- 实现消息发送和实时显示
- 使用 Ant Design 组件构建响应式 UI
- 系统参数配置:
- ai_chat.openai_api_key: OpenAI API 密钥
- ai_chat.model: 使用的 AI 模型(默认 gpt-3.5-turbo)
- ai_chat.base_url: API 基础 URL(支持第三方兼容接口)
- 数据库迁移:
- 002_add_ai_chat.sql: 创建对话和消息表
- 003_add_ai_chat_params.sql: 添加系统参数默认配置
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 23:20:26 +08:00 |
|
chengkai3
|
b1df2d0b40
|
[feat]:[FL-164][高程数据管理页面一致性优化]
重构高程数据管理页面,与用户管理页面保持一致的UI规范和交互体验。
主要改动:
- 页面容器结构:使用admin-elevation-page-card类和flex布局
- 移动端适配:新增useMobileDetection hook,支持桌面表格/移动卡片双视图
- 筛选表单:桌面使用inline布局,移动使用vertical布局
- 关键词搜索:实现500ms防抖逻辑,优化用户体验
- 表格配置:添加tableLayout="fixed",动态计算scroll.y高度
- 分页管理:使用useState管理分页状态,筛选变更自动重置页码
- 操作列:提取"预览"为独立按钮,删除使用Popconfirm替代Modal.confirm
- 卡片视图:实现移动端无限滚动加载和专属卡片样式
- CSS样式:新增admin-elevation系列样式类,支持暗色主题
测试说明:
- 由于运行环境缺少node_modules依赖,无法执行构建测试
- 代码严格遵循users/page.tsx的已验证模式,结构一致
- 所有改动点均按需求文档实施,未引入新的API调用
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 23:17:09 +08:00 |
|
chengkai3
|
03758b9a9a
|
feat:[FL-162][地闪密度统计页面一致性优化]
实现地闪密度统计页面与用户管理页面的风格、样式、交互完全一致:
1. 修复Card组件导入来源 - 从antd导入并使用类型转换
2. 修复页面容器结构 - 使用flex布局替代Space,添加pageCardRef
3. 添加移动端响应式支持 - 实现viewMode切换和卡片视图
4. 实现搜索防抖 - 分离input和search状态,500ms防抖
5. 筛选条件即时生效 - 移除Form提交,通过onChange即时触发
6. 添加表格动态高度计算 - 实现updateTableScrollY和resize监听
7. 完善表格布局配置 - 添加tableLayout="fixed"
8. 添加专用CSS样式 - 新增lightning-distribution相关样式类
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 23:13:19 +08:00 |
|
chengkai3
|
330260502d
|
fix:[FL-221][登录页面暗黑主题背景色适配]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 22:44:44 +08:00 |
|
chengkai3
|
b32201711a
|
fix:[FL-222][文件管理页标题栏暗黑主题背景对齐]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 19:04:55 +08:00 |
|
chengkai3
|
6a653a4960
|
fix:[FL-220][菜单禁用访问控制]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 18:40:29 +08:00 |
|
chengkai3
|
899d5316cf
|
feat:[FL-211][高程管理扁平化为文件记录]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 18:03:27 +08:00 |
|
chengkai3
|
fac00c0536
|
fix:[FL-218][角色管理列表接口返回 500]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 16:13:47 +08:00 |
|
chengkai3
|
93b580649a
|
fix:[FL-216][菜单管理页面暗黑主题适配]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 15:48:11 +08:00 |
|
chengkai3
|
0f62776cbd
|
[feat]:[FL-214][fl-analysis 防雷计算页面UI交互重构]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 15:25:29 +08:00 |
|
chengkai3
|
57fbdbf25a
|
[fix]:[FL-156][任务监控移动端无限滚动对齐]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 15:10:03 +08:00 |
|
chengkai3
|
7022d7f266
|
[fix]:[FL-213][修复高程文件记录服务导入失败]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 14:34:38 +08:00 |
|
chengkai3
|
bf8b77af80
|
[fix]:[FL-152][对齐角色分页交互细节]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 12:10:57 +08:00 |
|
chengkai3
|
58d6efe6fe
|
[fix]:[FL-212][修复高程文件记录页构建类型错误]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 12:00:23 +08:00 |
|
chengkai3
|
faa47e26cd
|
[fix]:[FL-153][系统参数状态交互对齐]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 11:20:24 +08:00 |
|
chengkai3
|
f8eef853a7
|
[fix]:[FL-151][补齐菜单管理页一致性细节]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 11:15:44 +08:00 |
|
chengkai3
|
260e6598ef
|
[fix]:[FL-160][对齐系统日志筛选交互]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 11:12:47 +08:00 |
|
chengkai3
|
3d8013da57
|
[fix]:[FL-156][任务监控页面分页细节对齐]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 11:11:26 +08:00 |
|
chengkai3
|
64dbe4567e
|
[fix]:[FL-157][对齐Worker移动卡片间距]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 11:08:36 +08:00 |
|
chengkai3
|
86870f4610
|
feat: 高程管理重构 - 从数据集中心到文件中心
## 重构目标
将高程数据管理从"数据集中心"模式重构为"文件中心"模式,去掉 ElevationDataset 概念,
扁平化为 ElevationFileRecord,每条记录对应一个高程文件。
## 主要变更
### 数据库层
- 新增 `elevation_file_record` 表,合并原 dataset 核心字段
- 更新 `elevation_apply_job` 和 `elevation_data_import_job`,添加 `file_record_id` 字段
- 创建数据迁移脚本 `001_add_elevation_file_record.sql`
- 保留旧表用于向后兼容
### 后端 API
- 新增 `/api/v1/elevation/records` 路由组(推荐使用)
- GET /records - 文件记录列表
- POST /records - 上传文件并创建记录(上传即创建)
- GET /records/{id} - 获取记录详情
- PATCH /records/{id} - 更新记录
- DELETE /records/{id} - 删除记录
- POST /records/{id}/analyze - 触发分析
- POST /records/{id}/terrain/build - 生成地形瓦片
- GET /records/{id}/preview - 预览数据
- 保留 `/api/v1/elevation/datasets` 路由用于向后兼容
- Apply API 支持 `file_record_id` 和 `dataset_id` 双 ID
### 后端代码
- 新增 `elevation_file_record_service.py` (601 行),包含完整 CRUD 和操作逻辑
- 新增模型 `ElevationFileRecord`
- 新增 Schema:FileRecordSummary, CreateRequest, UpdateRequest 等
- 新增 Celery 任务:
- `analyze_elevation_file_record_job`
- `build_elevation_file_record_terrain_job`
- 新增执行函数:
- `execute_file_record_analysis_job`
- `execute_file_record_terrain_build_job`
- 更新模型字段,支持双 ID 关联
### 前端
- 新增简化页面 `/admin/elevation-records` (542 行)
- 从原 1760 行简化到 542 行
- 上传即创建,无需先建数据集
- 每行直接对应一个文件
- 操作更直观
### 文档
- 新增 `REFACTOR_SUMMARY.md` 完整重构说明
- 新增 `api/migrations/README.md` 迁移指南
## 用户体验改进
旧流程(4步):
1. 创建数据集(填编码+名称)
2. 导入文件到数据集
3. 分析数据集
4. 预览/地形/回填
新流程(2步):
1. 上传文件(填来源+分辨率)→ 自动创建+分析
2. 预览/地形/回填
## 向后兼容
- 保留旧表和旧 API,新旧系统可并存
- Apply Job 同时支持新旧 ID
- 提供平滑迁移路径
## 技术指标
- 代码简化:前端从 1760 行 → 542 行(-69%)
- 概念简化:去除"数据集"中间层
- API 数量:新增 8 个文件记录端点
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-20 09:01:16 +08:00 |
|
chengkai3
|
09835543a2
|
[feat]:[FL-159][杆塔模型管理页面一致性优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 08:38:07 +08:00 |
|
chengkai3
|
495c73cc9e
|
[feat]:[FL-160][系统日志页面一致性优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 08:17:14 +08:00 |
|
chengkai3
|
c9b2b332fd
|
[fix]:[FL-152][对齐角色管理弹窗与分页细节]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 08:12:35 +08:00 |
|
chengkai3
|
b2dd07d8e8
|
feat:[FL-158][ATP模型管理页面一致性优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 08:04:37 +08:00 |
|
chengkai3
|
90309ee0e4
|
[feat]:[FL-156][任务监控页面一致性优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 07:59:23 +08:00 |
|
chengkai3
|
7e4a1ff5e4
|
[feat]:[FL-157][Worker监控页面一致性优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 07:53:19 +08:00 |
|
chengkai3
|
21b23c1cce
|
fix:[FL-42][统一系统日志错误反馈]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 07:30:40 +08:00 |
|
chengkai3
|
83956f2587
|
[fix]:[FL-155][菜单管理页面最后3项细节优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 07:15:48 +08:00 |
|
chengkai3
|
a9a2d32fd5
|
[feat]:[FL-154][系统消息页面一致性优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 07:00:47 +08:00 |
|
chengkai3
|
012b62fab9
|
[feat]:[FL-153][系统参数管理页面一致性优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 06:50:53 +08:00 |
|
chengkai3
|
6989775abe
|
[fix]:[FL-151][菜单管理页React Query架构对齐]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 04:13:56 +08:00 |
|
chengkai3
|
06c23e5ff0
|
[fix]:[FL-152][补齐角色管理页面一致性细节]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 02:17:21 +08:00 |
|
chengkai3
|
2c1a4cd361
|
[feat]:[FL-152][角色管理页面一致性优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 01:04:52 +08:00 |
|
chengkai3
|
763a7814e1
|
[fix]:[FL-151][菜单管理页面一致性优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 00:52:07 +08:00 |
|
chengkai3
|
fcc8dfc01e
|
feat:[FL-122][杆塔模型管理页面对齐用户管理页面风格样式交互]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-19 23:27:00 +08:00 |
|
chengkai3
|
4834a567a8
|
[feat]:[FL-120][角色管理页面对齐用户管理分页交互]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-19 23:26:20 +08:00 |
|
chengkai3
|
455b7c54bb
|
[feat]:[FL-118][菜单管理页对齐用户管理页规范]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-19 23:18:45 +08:00 |
|
chengkai3
|
22ef1f0055
|
[fix]:[FL-125][系统参数管理页面继续对齐用户管理页面交互与移动端样式]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-19 23:13:00 +08:00 |
|