Commit Graph

105 Commits

Author SHA1 Message Date
719f54bf2e feat(annotation): 完善文件版本管理和标注同步功能
- 将 useNewVersionUsingPost 重命名为 applyNewVersionUsingPost
- 添加 fileVersionCheckSeqRef 避免版本检查竞态条件
- 移除 checkingFileVersion 状态变量的渲染依赖
- 在文件版本信息中添加 annotationVersionUnknown 字段
- 修复前端文件版本比较显示的 JSX 语法
- 添加历史标注缺少版本信息的提示显示
- 配置 Alembic 异步数据库迁移环境支持 aiomysql
- 添加文件版本未知状态的后端判断逻辑
- 实现标注清除时的段落注释清理功能
- 添加知识库同步钩子到版本更新流程
2026-02-05 23:22:49 +08:00
f5cb265667 feat(annotation): implement file version management for annotation feature
Add support for detecting new file versions and switching to them:

Backend Changes:
- Add file_version column to AnnotationResult model
- Create Alembic migration for database schema update
- Implement check_file_version() method to compare annotation and file versions
- Implement use_new_version() method to clear annotations and update version
- Update upsert_annotation() to record file version when saving
- Add new API endpoints: GET /version and POST /use-new-version
- Add FileVersionCheckResponse and UseNewVersionResponse schemas

Frontend Changes:
- Add checkFileVersionUsingGet and useNewVersionUsingPost API calls
- Add version warning banner showing current vs latest file version
- Add 'Use New Version' button with confirmation dialog
- Clear version info state when switching files to avoid stale warnings

Bug Fixes:
- Fix previousFileVersion returning updated value (save before update)
- Handle null file_version for historical data compatibility
- Fix segmented annotation clearing (preserve structure, clear results)
- Fix files without annotations incorrectly showing new version warnings
- Preserve total_segments when clearing segmented annotations

Files Modified:
- frontend/src/pages/DataAnnotation/Annotate/LabelStudioTextEditor.tsx
- frontend/src/pages/DataAnnotation/annotation.api.ts
- runtime/datamate-python/app/db/models/annotation_management.py
- runtime/datamate-python/app/module/annotation/interface/editor.py
- runtime/datamate-python/app/module/annotation/schema/editor.py
- runtime/datamate-python/app/module/annotation/service/editor.py

New Files:
- runtime/datamate-python/alembic.ini
- runtime/datamate-python/alembic/env.py
- runtime/datamate-python/alembic/script.py.mako
- runtime/datamate-python/alembic/versions/20250205_0001_add_file_version.py
2026-02-05 20:12:07 +08:00
473f4e717f feat(annotation): 添加文本分段索引显示功能
- 实现了分段索引数组的生成逻辑
- 添加了分段索引网格显示界面
- 支持当前分段高亮显示
- 优化了分段导航的用户体验
- 替换了原有的分段提示文字为可视化索引组件
2026-02-04 19:16:48 +08:00
6b0042cb66 refactor(annotation): 简化任务选择逻辑并移除未使用的状态管理
- 移除了 resolveSegmentSummary 函数调用以简化完成状态判断
- 删除了未使用的 segmentStats 相关引用和缓存清理代码
- 简化了重置模式下的状态更新逻辑
2026-02-04 18:23:49 +08:00
fa9e9d9f68 refactor(annotation): 简化文本标注编辑器的段落管理功能
- 移除段落统计相关的数据结构和缓存逻辑
- 删除段落切换确认对话框和自动保存选项
- 简化段落加载和状态管理流程
- 将段落列表视图替换为简单的进度显示
- 更新API接口以支持单段内容获取
- 重构后端服务实现单段内容查询功能
2026-02-04 18:08:14 +08:00
cda22a720c feat(annotation): 优化文本标注分段功能实现
- 新增 getEditorTaskSegmentsUsingGet 接口用于获取任务分段信息
- 移除 SegmentInfo 中的 text、start、end 字段,精简数据结构
- 添加 EditorTaskSegmentsResponse 类型定义用于分段摘要响应
- 实现服务端 get_task_segments 方法,支持分段信息查询
- 重构前端组件缓存机制,使用 segmentSummaryFileRef 管理分段状态
- 优化分段构建逻辑,提取 _build_segment_contexts 公共方法
- 调整后端 _build_text_task 方法中的分段处理流程
- 更新 API 类型定义,统一 RequestParams 和 RequestPayload 类型
2026-02-04 16:59:04 +08:00
b36fdd2438 feat(annotation): 添加数据类型过滤功能到标签配置树编辑器
- 引入 DataType 枚举类型定义
- 根据数据类型动态过滤对象标签选项
- 在模板表单中添加数据类型监听
- 改进错误处理逻辑以提高类型安全性
- 集成数据类型参数到配置树编辑器组件
2026-02-02 20:37:38 +08:00
85433ac071 feat(template): 移除模板类型和版本字段并添加管理员权限控制
- 移除了模板详情页面中的类型和版本显示字段
- 移除了模板列表页面中的类型和版本列
- 添加了管理员权限检查功能,通过 localStorage 键控制
- 将编辑和删除操作按钮限制为仅管理员可见
- 将创建模板按钮限制为仅管理员可见
2026-02-02 18:59:32 +08:00
fc2e50b415 Revert "refactor(template): 移除模板列表中的类型、版本和操作列"
This reverts commit a5261b33b2.
2026-02-02 18:39:52 +08:00
26e1ae69d7 Revert "refactor(template): 移除模板列表页面的创建按钮"
This reverts commit b2bdf9e066.
2026-02-02 18:39:48 +08:00
b2bdf9e066 refactor(template): 移除模板列表页面的创建按钮
- 删除了右上角的创建模板按钮组件
- 移除了相关的点击事件处理函数调用
- 调整了页面布局结构以适应按钮移除后的变化
2026-02-02 16:35:09 +08:00
a5261b33b2 refactor(template): 移除模板列表中的类型、版本和操作列
- 移除了类型列(内置/自定义标签显示)
- 移除了版本列
- 移除了操作列(查看、编辑、删除按钮)
- 保留了创建时间列并维持其渲染逻辑
2026-02-02 16:20:50 +08:00
a73571bd73 feat(annotation): 优化模板配置树编辑器中的属性填充逻辑
- 修改对象配置属性填充条件,仅在名称不存在时设置默认值
- 为控制配置添加标签类别判断逻辑
- 区分标注类和布局类控件的属性填充策略
- 标注类控件始终填充必需属性,布局类控件仅在需要时填充
- 修复属性值设置逻辑,确保正确引用名称属性
2026-02-02 15:26:25 +08:00
00fa1b86eb refactor(DataAnnotation): 移除未使用的状态变量并优化选择器逻辑
- 删除未使用的 addChildTag 和 addSiblingTag 状态变量
- 将 Select 组件的值设置为 null 以重置选择状态
- 简化 handleAddNode 调用的处理逻辑
- 移除不再需要的状态管理代码以提高性能
2026-02-02 15:23:01 +08:00
626c0fcd9a fix(data-annotation): 修复数据标注任务进度计算问题
- 添加 toSafeCount 工具函数确保数值安全处理
- 支持 totalCount 和 total_count 字段兼容性
-
2026-02-01 23:42:06 +08:00
551248ec76 feat(data-annotation): 添加表格序号列并移除任务ID列
- 添加序号列显示当前页码计算后的行号
- 移除原有的任务ID列
- 序号列居中对齐宽度为80px
- 序号基于当前页码和页面大小动态计算
- 保持表格
2026-02-01 19:11:39 +08:00
0bb9abb200 feat(annotation): 添加标注类型显示功能
- 在前端页面中新增标注类型列并使用Tag组件展示
- 添加AnnotationTypeMap常量用于标注类型的映射
- 修改接口定义支持labelingType字段的传递
- 更新后端项目创建和更新逻辑以存储标注类型
- 添加标注类型配置键常量统一管理
- 扩展数据传输对象支持标注类型属性
- 实现模板标注类型的继承逻辑
2026-02-01 19:08:11 +08:00
906bb39b83 feat(annotation): 添加保存并跳转到下一段功能
- 新增 SAVE_AND_NEXT_LABEL 常量用于保存并跳转按钮文本
- 添加 saveDisabled 状态控制保存按钮禁用逻辑
- 修改顶部工具栏布局为三列网格结构
- 在工具栏中间位置添加保存并跳转到下一段/下一条按钮
- 调整保存按钮样式移除主色调设置
- 优化保存按钮禁用状态逻辑统一管理
- 修改保存功能区分普通保存和跳转保存操作
2026-02-01 13:09:55 +08:00
dbf8ec53dd style(ui): 统一预览模态框宽度为响应式尺寸
- 将 CreateAnnotationTaskDialog 中的预览模态框宽度从固定像素改为 80vw
- 将 VisualTemplateBuilder 中的预览抽屉宽度从 600px 改为 80vw
- 将 PreviewPromptModal 中的模态框宽度从 800px 改为 80vw
- 将 Overview 组件中的文本和媒体预览宽度统一改为 80vw
- 将 KnowledgeSetDetail 中的文本和媒体预览宽度统一改为 80vw
- 移除原来固定的像素值,使用响应式单位提升用户体验
2026-02-01 12:49:56 +08:00
aeec19b99f feat(annotation): 添加保存快捷键功能
- 实现了 Ctrl+S 保存快捷键检测逻辑
- 添加了 handleSaveShortcut 事件处理函数
- 在窗口上注册键盘事件监听器
- 修改 requestExport 函数支持 autoAdvance 参数
- 更新保存按钮点击事件传递 autoAdvance 参数
2026-01-31 20:47:33 +08:00
c1fb02b0f5 refactor(annotation): 更新任务编辑模式的数据类型定义
- 移除 AnnotationTask 类型导入
- 添加 AnnotationTaskListItem 类型导入
- 修改 editTask 属性类型从 AnnotationTask 到 AnnotationTaskListItem
- 优化组件类型定义以匹配实际使用的数据结构
2026-01-31 17:19:18 +08:00
4a3e466210 feat(annotation): 添加标注任务进行中数据显示功能
- 新增 AnnotationTaskListItem 和相关类型定义
- 在前端页面中添加标注中列显示进行中的标注数据量
- 更新数据获取逻辑以支持进行中标注数量统计
- 修改后端服务层添加 in_progress_count 字段映射
- 优化类型安全和代码结构设计
2026-01-31 17:14:23 +08:00
5d8d25ca8c fix(annotation): 解决空标注结果的状态处理问题
- 在构建标注快照时增加空标注检查,避免空对象被处理
- 修改状态判断逻辑,当标注为空且当前状态为 NO_ANNOTATION 或 NOT_APPLICABLE 时保持原状态
- 移除冗余的 hasExistingAnnotation 变量检查
- 确保空标注情况下状态流转的正确性,防止误标为已标注状态
2026-01-31 16:57:38 +08:00
33cf65c9f8 feat(annotation): 添加分段标注统计和进度跟踪功能
- 新增 SegmentStats 类型定义用于分段统计
- 实现分段标注进度计算和缓存机制
- 添加标注任务状态判断逻辑支持分段模式
- 集成分段统计数据显示到任务列表界面
- 实现分段总数自动计算和验证功能
- 扩展标注状态枚举支持进行中标注状态
- 优化任务选择逻辑基于分段完成状态
- 添加分段统计数据预加载和同步机制
2026-01-31 15:42:04 +08:00
3e0a15ac8e fix(annotation): 修复导出标注对话框格式选项显示问题
- 为格式选项添加 py-1 样式类改善布局
- 添加 simpleLabel 属性用于选项标签显示
- 将 optionLabelProp 从 label 改为 simpleLabel
- 优化下拉选择器的标签
2026-01-31 15:35:54 +08:00
f2403f00ce feat(annotation): 添加不适用标注状态支持
- 在 AnnotationResultStatus 枚举中新增 NOT_APPLICABLE 状态
- 将无标注/不适用合并为两个独立的状态选项
- 更新前端标签显示逻辑以支持新的状态类型
- 修改确认对话框允许选择不适用状态
- 在后端数据库模型中添加 NOT_APPLICABLE 状态值
- 更新 API schema 描述以反映新的状态选项
- 调整标注状态判断和保存逻辑以处理三种状态
- 更新数据库表结构注释包含新状态类型
2026-01-31 13:28:08 +08:00
f4fc574687 feat(annotation): 添加标注状态管理功能
- 引入 AnnotationResultStatus 枚举类型区分已标注和无标注状态
- 在前端组件中实现空标注检测和确认对话框逻辑
- 添加数据库表字段 annotation_status 存储标注状态
- 扩展后端服务验证和处理标注状态逻辑
- 更新 API 接口支持标注状态参数传递
- 改进任务列表显示逻辑以反映不同标注状态
- 实现分段模式下的标注结果检查机制
2026-01-31 13:23:38 +08:00
52a2a73a8e feat(annotation): 添加保存并跳转快捷键功能
- 实现了 Ctrl+Enter 保存并跳转到下一个标注的快捷键逻辑
- 添加了键盘事件监听器来捕获快捷键组合
- 集成了导出选中标注并发送到父窗口的功能
- 处理了快捷键事件的防重复和传播阻止
- 在消息处理器中添加了 LS_SAVE_AND_NEXT 类型的支持
- 实现了自动跳转到下一项标注的功能
2026-01-31 11:47:33 +08:00
b5d7c66240 feat(data-management): 扩展源文档排除功能支持Excel文件类型
- 在后端服务中扩展源文档类型检查,新增对XLS和XLSX文件的支持
- 修改DatasetFileApplicationService中的过滤逻辑,统一处理所有源文档类型
- 新增isSourceDocument和isDerivedFile辅助方法进行文件类型判断
- 更新前端DatasetFileTransfer组件中的注释说明
- 在Python运行时依赖中添加openpyxl和xlrd库以支持Excel文件处理
- 修改标注项目接口中源文档类型的集合定义
- 更新文件操作钩子中的派生文件排除逻辑
2026-01-31 11:30:55 +08:00
a4cdaecf8a refactor(annotation): 简化注释数据导出下载逻辑
- 移除前端手动创建 a 标签下载文件的方式
- 将文件名参数传递给后端 API 函数
- 利用 download 函数内置的下载处理机制
- 简化 ExportAnnotationDialog 组件中的导出流程
- 更新 annotation.api.ts 中的 downloadAnnotationsUsingGet 函数签名
- 直接通过 API 调用完成文件下载和命名
2026-01-30 17:33:14 +08:00
6dfed934a5 feat(file-preview): 增加PDF文件预览功能并优化预览逻辑
- 引入统一的文件预览工具函数和类型定义
- 添加PDF文件类型的识别和预览支持
- 使用iframe实现PDF文件在线预览
- 重构文件预览逻辑,统一处理不同文件类型的预览
- 优化文本内容预览的长度截取机制
- 更新预览按钮加载状态显示
- 统一预览窗口的最大高度配置
- 修改API调用路径为专门的预览接口
2026-01-30 17:32:36 +08:00
0b69845a29 feat(annotation): 添加文本项目源文档过滤功能
- 在 EditorProjectInfo 中增加 datasetType 字段
- 移除前端硬编码的源文档扩展名列表
- 添加 isTextProject 判断逻辑
- 实现 prefetch 和 loadTasks 中的源文档排除参数
- 在后端接口中添加 excludeSourceDocuments 参数
- 实现源文档类型的数据库查询过滤逻辑
- 优化任务列表加载性能,避免不必要的源文档加载
2026-01-29 16:29:40 +08:00
f5f0add529 refactor(editor): 重构标签工作室文本编辑器组件
- 优化了文本编辑器的渲染性能
- 改进了组件的状态管理逻辑
- 更新了编辑器的事件处理机制
- 简化了组件的属性传递方式
- 修复了文本选择相关的边界情况
- 提升了代码的可维护性和可读性
2026-01-29 16:14:10 +08:00
6eb7507adf feat(repository): 添加查询衍生文件源文件ID功能
- 在 DatasetFileRepository 接口中添加 findSourceFileIdsWithDerivedFiles 方法定义
- 在 DatasetFileRepositoryImpl 实现类中实现该方法
- 添加查询 metadata 中包含 derived_from_file_id 记录的源文件ID逻辑
- 提供完整的 JavaDoc 文档注释说明方法用途和参数
2026-01-29 14:40:44 +08:00
4233da5b91 fix(annotation): 调整模板查询大小限制
- 将模板查询大小从 200 减少到 100
- 添加注释说明后端最大限制为 100
- 确保与模板 API 的 'size' 参数一致
2026-01-28 10:03:11 +08:00
a28b427e21 feat(data-annotation): 添加任务预加载功能以提升用户体验
- 引入 UpsertAnnotationResponse 类型定义用于处理标注更新响应
- 移除废弃的 mergeTaskPages 函数并优化任务列表合并逻辑
- 新增 prefetchSeqRef 和 prefetching 状态管理预加载过程
- 实现 startPrefetchTasks 函数用于后台预加载剩余页的任务数据
- 更新 loadTasks 函数移除 refresh 模式并集成预加载机制
- 修改标注保存逻辑直接更新本地任务状态而非重新加载全部数据
- 在加载按钮中显示预加载状态提示用户当前操作进度
- 项目切换时重置预加载序列号确保状态一致性
2026-01-27 19:45:25 +08:00
1158647217 feat(annotation): 实现任务列表分页加载和优化排序功能
- 添加分页相关字段到EditorTaskListResponse类型定义
- 定义TASK_PAGE_START和TASK_PAGE_SIZE常量及NormalizedTaskList类型
- 实现mergeTaskItems、mergeTaskPages和normalizeTaskListResponse工具函数
- 添加taskPage、taskTotal、taskTotalPages和loadingMore状态管理
- 优化后端查询逻辑,使用case语句实现标注状态排序
- 集成外连接查询同时获取文件信息和标注结果
- 改进前端任务列表的数据合并和分页加载机制
2026-01-27 19:08:37 +08:00
e56211107e feat(annotation): 添加Label Studio文本编辑器的焦点管理功能
- 实现focusIframe函数用于聚焦iframe元素
- 在iframeReady和lsReady状态变化时自动聚焦编辑器
- 添加窗口聚焦事件监听器以保持编辑器焦点
- 在编辑器容器上添加鼠标点击事件以获取焦点
- 确保标签工作室准备就绪后正确设置焦点
- 优化用户体验通过自动焦点切换机制
2026-01-27 14:37:14 +08:00
e489a0023a refactor(annotation): 优化模板默认选择逻辑
- 添加 resolveTemplateTimestamp 函数解析模板时间戳
- 将默认模板选择逻辑从查找内置模板改为选择最新更新的模板
- 使用 reduce 方法实现按时间戳排序的模板选择
- 提高模板选择的准确性和时效性
2026-01-27 00:07:33 +08:00
977a930c97 feat(annotation): 支持音频和视频数据类型的标注任务
- 添加了音频和视频数据类型常量定义
- 实现了音频和视频标注模板的内置配置
- 扩展前端组件以支持按数据类型过滤标注模板
- 重构后端编辑器服务以处理音频和视频任务构建
- 更新数据库初始化脚本包含音频和视频标注模板
- 添加音频和视频数据类型的预览URL映射逻辑
2026-01-26 23:54:40 +08:00
47295e8cdf fix(annotation): 修复文本数据集段落切片显示条件
Some checks failed
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (java-kotlin) (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
- 添加 selectedDatasetId 条件确保段落切片仅在选择数据集后显示
- 防止在未选择数据集时错误显示段落切片配置选项
2026-01-26 13:49:58 +08:00
7cc3d34575 refactor(annotation): 优化段落切片配置的显示逻辑
- 移除非文本数据集的段落切片配置选项
- 简化条件渲染逻辑,仅在文本数据集时显示段落切片配置
- 统一两个组件中的段落切片配置显示规则
- 移除冗余的数据集选择和类型检查提示信息
- 优化编辑模式下的禁用状态处理
2026-01-26 12:19:49 +08:00
371df12a96 feat(annotation): 添加文本数据集段落切片功能
- 在前端组件中新增 segmentationEnabled 字段控制切片开关
- 为文本数据集添加段落切片配置选项,默认启用切片功能
- 在后端接口中新增 segmentation_enabled 参数传递给标注项目
- 实现切片逻辑控制,支持文本数据的自动段落分割
- 添加数据集类型判断,仅文本数据集支持切片配置
- 更新标注任务创建和编辑表单中的切片相关字段处理
2026-01-26 12:14:27 +08:00
fa160164d2 feat(annotation): 添加文本标注编辑器中的段落树导航和自动跳转功能
- 引入 Tree 和 Empty 组件用于段落导航展示
- 实现分段树形结构数据生成和展示功能
- 添加自动跳转到下一个待标注文件或段落的功能
- 优化文件选择逻辑,优先选择未标注的文件
- 实现段落切换时的状态管理和依赖更新
- 添加段落树节点选中和展开状态控制
- 优化界面布局和滚动区域的高度计算
2026-01-26 11:44:33 +08:00
be98a9534c feat(dataannotation): 隐藏自定义配置选项
- 在创建标注任务对话框中注释掉自定义配置按钮
- 在创建任务页面中注释掉自定义配置按钮
- 暂时移除用户自定义配置功能入口
2026-01-26 10:31:19 +08:00
250a13ff70 feat(annotation): 支持图像标注项目并添加内置标注模板
- 扩展标注编辑器支持 TEXT/IMAGE 数据类型
- 添加三个内置图像标注模板:目标检测、语义分割(掩码)、语义分割(多边形)
- 实现内置标注模板的数据库初始化功能
- 集成标注配置验证和模板管理服务
- 更新项目不支持提示信息以反映新的数据类型支持
2026-01-25 18:35:07 +08:00
e6d1e4763f feat(template): 添加标签显示名称映射功能
- 引入 COMMON_TAG_DISPLAY_NAMES 映射表,为常用标签提供中文显示名称
- 更新布局控件选项以使用中文显示名称
- 修改容器选项以使用中文显示名称
- 添加 getTagDisplayName 回调函数,统一处理标签名称显示逻辑
- 优化节点标题显示,结合标签类型和属性值展示更友好的名称
- 更新依赖数组以包含新的显示名称函数
2026-01-24 17:36:18 +08:00
03402e4559 fix(annotation): 修复段落导航栏布局问题
- 修改段落导航容器为 flex-nowrap 防止换行
- 为段落标签添加 shrink-0 类避免压缩
- 使用 flex-1 min-w-0 优化段落列表容器
- 添加 overflow-x-auto 和 whitespace-nowrap 实现横向滚动
- 为右侧控制区域添加 shrink-0 和 whitespace-nowrap 类
2026-01-24 16:28:07 +08:00
0e30e658e9 feat(annotation): 添加 JSONL 文件支持和文本键解析功能
- 添加 JSONL 文件扩展名常量定义
- 实现主文本键解析方法 _resolve_primary_text_key
- 添加 JSONL 记录解析方法 _parse_jsonl_records
- 修改任务数据构建方法以支持主文本键参数
- 实现主文本值解析方法 _resolve_primary_text_value
- 更新项目信息获取逻辑以支持 JSONL 多行记录处理
- 修改分段逻辑以支持 JSONL 多行或超长文本分段
- 调整标注处理逻辑以正确处理分段标注场景
2026-01-23 22:09:06 +08:00
8e06a36460 fix(annotation): 修复模板配置树编辑器组件渲染问题
- 为 Tree 组件添加 key 属性以确保正确的组件实例化
- 启用 defaultExpandAll 属性以默认展开所有节点
- 保持拖拽功能在结构锁定状态下的正常工作
2026-01-23 16:16:02 +08:00