Files
DataMate/frontend
Jerry Yan 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
..
2026-01-09 08:46:01 +08:00

🚀 快速开始

npm install       # 安装依赖
npm run dev       # 启动项目
npm run mock      # 启动后台Mock服务(可选)

📁 项目结构

frontend/
├── public/                               # 📖 文档中心
│   └── xxx/         # 标注工作台(可分离部署)
│
├── src/                                # 🎨 前端应用
│   ├── apps/                          # 多前端应用
│   │   ├── console/                   # 数据工作台&运营控制台
│   │   │   ├── next.config.js
│   │   │   ├── package.json
│   │   │   └── src/
│   │   └── annotation-studio/         # 标注工作台(可分离部署)
│   │
│   ├── assets/                      # 共享UI组件/SDK
│   │   ├── xxx/                   # 数据工作台&运营控制台
│   │   │   ├── next.config.js
│   │   │   └── src/
│   │   │
│   │   │
│   │   └── xxx/                   # 数据工作台&运营控制台
│   │       ├── package.json
│   │       └── src/
│   │
│   ├── components/                        # 构建与环境配置
│   │   ├── CardView.tsx                  # 数据工作台&运营控制台
│   │   ├── DetailHeader.tsx                   # 数据工作台&运营控制台
│   │   ├── RadioCard.tsx                   # 数据工作台&运营控制台
│   │   ├── SearchControls                   # 数据工作台&运营控制台
│   │   ├── TagList         # 标注工作台(可分离部署)
│   │   └── TaskPopover         # 标注工作台(可分离部署)
│   │
│   ├── hooks/                        # 构建与环境配置
│   │   ├── console/                   # 数据工作台&运营控制台
│   │   ├── next.config.js
│   │   ├── next.config.js
│   │   ├── next.config.js
│   │   ├── next.config.js
│   │   ├── next.config.js
│   │   └── annotation-studio/         # 标注工作台(可分离部署)
│   │
│   ├── mock/                        # 构建与环境配置
│   │   ├── console/                   # 数据工作台&运营控制台
│   │   ├── next.config.js
│   │   ├── next.config.js
│   │   ├── next.config.js
│   │   ├── next.config.js
│   │   └── annotation-studio/         # 标注工作台(可分离部署)
│   │
│   ├── pages/                        # 构建与环境配置
│   │   ├── console/                   # 数据工作台&运营控制台
│   │   │   ├── next.config.js
│   │   │   ├── package.json
│   │   │   └── src/
│   │   └── annotation-studio/         # 标注工作台(可分离部署)
│   │
│   ├── providers/                        # 构建与环境配置
│   │   ├── console/                   # 数据工作台&运营控制台
│   │   │   ├── next.config.js
│   │   │   ├── package.json
│   │   │   └── src/
│   │   └── annotation-studio/         # 标注工作台(可分离部署)
│   │
│   ├── routes/                        # 构建与环境配置
│   │   └── next.config.js
│   │
│   ├── types/                        # 构建与环境配置
│   │   ├── next.config.js
│   │   ├── next.config.js
│   │   ├── next.config.js
│   │   ├── next.config.js
│   │   └──  next.config.js
│   │
│   └── utils/                        # 构建与环境配置
│       ├── next.config.js
│       ├── next.config.js
│       └── next.config.js
│
├── eslint.config.js/                            # 🔧 后端服务架构
├── index.html/                            # 🔧 后端服务架构
├── package.json/                            # 🔧 后端服务架构
├── README.md                           # 项目说明
├── tailwind.config.ts                        # 更新日志
├── vite.config.ts                             # 开源协议
└── pom.xml                            # Maven根配置