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
|
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
|
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
|
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
|
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
|
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
|
5bf92a9ded
|
feat:[FL-184][AI问答改成流式响应]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-24 13:48:33 +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
|
4fada96355
|
fix:[FL-173][修复usage_status验证错误]
将 TempDataset 的 usage_status 从 "active" 改为 "idle",符合 ElevationDatasetUsageStatus 的 Literal 定义("idle" 或 "in_use")。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-21 14:45:37 +08:00 |
|
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
|
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 |
|
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
|
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
|
7022d7f266
|
[fix]:[FL-213][修复高程文件记录服务导入失败]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 14:34:38 +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
|
b2dd07d8e8
|
feat:[FL-158][ATP模型管理页面一致性优化]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-20 08:04:37 +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
|
4834a567a8
|
[feat]:[FL-120][角色管理页面对齐用户管理分页交互]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-19 23:26:20 +08:00 |
|
chengkai3
|
d342fe79d0
|
fix:[FL-203][菜单管理 - 修复 INSERT SQL 缺少 visible/cacheable/component 字段]
修复菜单创建接口中 INSERT SQL 语句缺少 visible、cacheable 和 component 字段的问题。
问题描述:
- 前端发送的请求包含 visible、cacheable 和 component 字段
- 后端 INSERT SQL 语句未包含这些字段
- 导致数据库使用默认值 null,违反 visible 列的 NOT NULL 约束
修复内容:
- 在 INSERT INTO menus 语句中添加 visible、cacheable、component 字段
- 在 VALUES 子句中添加对应的占位符
- 在参数字典中添加这三个字段的值
影响范围:
- api/app/services/legacy_admin_rbac_service.py 的 create_menu 函数
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-18 21:03:44 +08:00 |
|
chengkai3
|
d195bef4d3
|
fix:[FL-202][用户管理 - 创建用户 API 返回 500 错误]
修复了用户创建时因数据库表名不匹配导致的 500 错误。
问题原因:
代码中使用了错误的数据库表名:
- 使用 user_role 表,但实际表名是 roles
- 使用 user_role_rela 表,但实际表名是 user_roles
- 查询 user_role.id = 'user',但应该是 roles.code = 'user'
修改内容:
1. _role_ids_exist(): 修正表名从 user_role 到 roles,字段从 id 到 code
2. _replace_legacy_user_roles(): 修正表名从 user_role_rela 到 user_roles,并添加通过 role_code 查询 role_id 的逻辑
3. _assign_legacy_roles(): 修正默认角色查询从 user_role.id 到 roles.code
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-18 13:57:13 +08:00 |
|
chengkai3
|
23db30d0f0
|
fix: [FL-199][拆分用户创建错误消息以明确失败原因]
将模糊的 409 错误消息 "User id/email/username already exists or default role missing"
拆分为三种具体的异常类型:
1. UserDuplicateError (409) - 用户ID/邮箱/用户名已存在
2. UserRoleAssignmentError (500) - 默认角色未配置或角色分配失败
3. UserCreateError (500) - 其他用户创建失败
改动内容:
- 在 user_service.py 中定义三个异常类
- 将 create_user 返回类型从 UserPublic | None 改为 UserPublic(抛出异常)
- 在 API 层捕获具体异常并返回对应的 HTTP 状态码和明确错误消息
- 更新和新增测试以验证错误消息准确性
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-18 13:13:51 +08:00 |
|
chengkai3
|
e67475aad6
|
[fix]:[FL-198][菜单管理 - 创建失败且错误信息不明确]
## 改动摘要
- 新增自定义异常类用于菜单验证错误的精确识别
- 修改 create_menu 服务函数,使用异常替代返回 None
- 修改 API 端点捕获异常并返回详细错误信息
## 详细改动
### 1. 新增异常类 (api/app/exceptions/menu_exceptions.py)
创建了以下异常类以区分不同的验证失败场景:
- `MenuValidationError`: 基础菜单验证异常类
- `EmptyMenuCodeError`: 菜单编码为空
- `EmptyMenuNameError`: 菜单名称为空
- `DuplicateMenuCodeError`: 菜单编码重复
- `RemovedMenuCodeError`: 使用已移除的菜单编码
- `SelfParentError`: 菜单将自己设为父菜单
- `ParentNotFoundError`: 父菜单不存在
### 2. 修改服务层 (api/app/services/legacy_admin_rbac_service.py)
- 在 create_menu 函数中,将所有返回 None 的地方替换为抛出对应的异常
- 为数据库异常添加更具体的错误上下文
- 修改返回类型从 `MenuPublic | None` 为 `MenuPublic`
### 3. 修改 API 端点 (api/app/api/v1/admin.py)
- 在 create_menu_endpoint 中捕获 MenuValidationError 异常
- 返回详细的错误信息,包括具体的字段名(如有)
- 替换原来的模糊错误信息"Invalid menu payload or duplicate menu code"
## 测试验证
- 已通过 Python 语法检查
- 所有修改的文件编译通过
- 异常类可以正常导入
## 解决的问题
修复了 Issue FL-198 中描述的问题:
- 之前:所有创建失败都返回同一个模糊错误"Invalid menu payload or duplicate menu code"
- 现在:返回具体的错误原因,如"菜单编码 'xxx' 已存在 (字段: code)"、"父菜单 'xxx' 不存在 (字段: parent_id)"等
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-18 12:43:37 +08:00 |
|
chengkai3
|
96f83923f6
|
fix:[FL-197][角色管理 - 修复数据库表 user_role 不存在错误]
修复角色创建功能在使用现代表结构(roles)时因硬编码查询 user_role 表而导致的数据库错误。
问题分析:
- admin.py:72 直接硬编码查询 user_role 表检查角色是否存在
- legacy_admin_rbac_service.py:201 也硬编码查询 user_role 表
- 实际项目使用的是现代表结构 roles(定义在 rbac.py)
- 导致 psycopg.errors.UndefinedTable: relation "user_role" does not exist
修复方案:
1. 移除 admin.py 中的硬编码表查询,将重复检查逻辑委托给 create_role 服务函数
2. 在 create_role 函数中添加 role_source 检测逻辑
3. 根据检测结果使用正确的表名(user_role 或 roles)和字段
4. 确保 legacy 和 modern 模式下都能正常工作
影响范围:
- 角色创建功能现在支持两种表结构
- 保持向后兼容性(legacy 模式仍使用 user_role)
- 修复 modern 模式下的角色创建功能
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-18 12:35:32 +08:00 |
|
chengkai3
|
80cf981fdb
|
fix: [FL-195][创建用户报错] 为用户服务事务添加异常处理和回滚机制
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-18 12:26:58 +08:00 |
|
chengkai3
|
fa4834a9e2
|
fix:[FL-191][修复用户创建失败的数据库事务错误]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-18 11:00:38 +08:00 |
|
chengkai3
|
6519fee729
|
[feat]:[FL-172][用户管理页面新增用户时邮箱放最后,且不要必填]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-18 00:34:20 +08:00 |
|
chengkai3
|
cdc0b4b054
|
feat:[FL-165][角色管理页面查询时合并角色和菜单请求]
将角色管理页面的角色和菜单两个独立API请求合并为单个请求,减少网络开销。
后端改动:
- 新增 RolesWithMenusResponse 响应模型
- 新增 list_roles_with_menus 服务函数
- 新增 GET /api/v1/admin/roles-with-menus 接口
前端改动:
- 更新 loadData 函数使用新的合并接口
- 减少从两个并发请求改为单个请求
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-18 00:05:11 +08:00 |
|
chengkai3
|
dd15768623
|
feat:[FL-160][角色管理页面表单过滤改成后台查询]
- 后端API新增keyword查询参数支持角色搜索
- 在数据库层面实现基础过滤优化性能
- 前端移除客户端过滤逻辑改为调用后端API
- 添加搜索按钮和回车搜索功能
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-17 23:23:38 +08:00 |
|
chengkai3
|
9f4a121712
|
feat:[FL-156][菜单管理页面的过滤表单实时查询后台数据]
- 后端API添加keyword和status查询参数支持
- 前端改为调用后端API进行实时过滤
- 添加300ms防抖优化性能
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-17 18:41:37 +08:00 |
|
chengkai3
|
c451a20f76
|
fix:[FL-153][导入雷电分布数据改成导入地闪密度数据]
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-17 15:35:07 +08:00 |
|
chengkai3
|
3899a2345e
|
[fix]:[FL-145][系统消息要支持删除]
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-16 17:44:11 +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 |
|
chengkml
|
d23ac4f74c
|
Optimize S3 asset archive uploads
|
2026-06-15 19:05:43 +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
|
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
|
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
|
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
|
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
|
86377f82d4
|
fix: 修复scheduled_tasks表外键约束违规错误
修复了当system作为actor_user_id时,update_user字段违反外键约束的问题。
当actor_user_id为"system"时,将create_user和update_user设置为NULL,
而不是尝试使用不存在的"system"用户ID。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-12 23:25:53 +08:00 |
|