Skip to content

⚠️ 自动镜像 · 此页由 docs-site/scripts/mirror-changelog.mjsdocs/changelogs/0.3.x.md 生成,请勿直接编辑此处;改源文件后 pnpm docs:build 会自动同步。

Changelog — 0.3.x

[0.3.0] - 2026-04-28

新增

数据模型重构(P0 — 核心架构升级)

  • 新增 organizations + organization_members 表,为多租户预留
  • 新增 ml_backends 表,模型即 HTTP 服务(对标 Label Studio ML Backend 协议)
  • 新增 predictions 表,annotations 彻底分离(核心架构决定)
  • 新增 prediction_metas 表,记录推理耗时 / token 数 / 成本(LLM 时代记账基础)
  • 新增 failed_predictions 表,失败推理也留痕
  • 新增 task_locks 表(防止多人同时标同一题)+ annotation_drafts 表(自动保存草稿)
  • projects 扩展 7 个字段:organization_id、label_config、sampling、maximum_annotations、show_overlap_first、model_version、task_lock_ttl_seconds
  • tasks 扩展 5 个字段:is_labeled(索引)、overlap、total_annotations、total_predictions、precomputed_agreement
  • annotations 扩展 6 个字段:project_id、parent_prediction_id(AI 接管率追踪核心)、parent_annotation_id、lead_time、was_cancelled、ground_truth
  • Alembic 迁移 0002_p0_restructuring:含角色/状态数据迁移 + 8 张新表 + 3 张表扩展

枚举系统

  • 新增 app/db/enums.py:UserRole / ProjectStatus / TaskStatus / MLBackendState / AnnotationSource / OrgMemberRole
  • 角色从中文字符串迁移为英文枚举("超级管理员""super_admin" 等)
  • 项目状态从中文迁移为英文枚举("进行中""in_progress" 等)
  • 种子脚本 seed.py 同步更新为英文枚举值

后端服务层(7 个新 service)

  • StorageService:MinIO presigned URL 上传/下载(boto3 S3 兼容协议)
  • MLBackendClient:ML 模型服务 HTTP 客户端(health / predict / predict_interactive / setup / versions)
  • MLBackendService:ML Backend CRUD + 健康检查 + 获取项目交互式后端
  • PredictionService:预测创建(含 PredictionMeta 成本记录)+ 失败记录 + 查询
  • AnnotationService:标注 CRUD + accept_prediction(从预测派生标注)+ 草稿管理 + 统计更新
  • TaskLockService:任务锁获取/释放/心跳续约/过期清理
  • TaskScheduler(get_next_task):Next-task 调度,支持 sequence / uniform / uncertainty 三种采样策略

API 层

  • 新增 5 组 Pydantic schemas:ml_backend / prediction / task / annotation / organization
  • 新增 ML Backend 路由(8 个端点):CRUD + health + predict-test + interactive-annotating
  • 新增文件上传路由(3 个端点):upload-init(presigned PUT)+ upload-complete + file-url(presigned GET)
  • Tasks 路由从 stub 改为完整实现(14 个端点):包括 GET next、predictions 查询、accept prediction、task lock CRUD
  • 新增批量预标注端点 POST /projects/{pid}/preannotate(触发 Celery 异步任务)
  • ProjectOut schema 扩展新增字段

Celery 异步任务

  • celery_app.py 配置(broker=Redis,task route: ml queue)
  • batch_predict 任务:逐批调用 ML Backend → 创建 Prediction + PredictionMeta → Redis Pub/Sub 进度推送
  • ProgressPublisher 服务:Redis 异步发布预标注进度

WebSocket

  • 新增 WS /ws/projects/{pid}/preannotate 端点,订阅 Redis Pub/Sub 推送预标注实时进度

前端基础设施

  • 新增 types/index.ts 扩展:Prediction / PredictionShape / MLBackend / TaskLock / TaskResponse / AnnotationResponse 等类型
  • 新增 constants/roles.ts:英文枚举 → 中文显示映射(ROLE_LABELS / PROJECT_STATUS_LABELS / TASK_STATUS_LABELS)
  • 新增 3 个 API 模块:ml-backends.ts / predictions.ts / files.ts
  • 新增 3 组 React hooks:
    • useMLBackends / useCreateMLBackend / useMLBackendHealth / useInteractiveAnnotate
    • usePredictions / useAcceptPrediction
    • usePreannotationProgress(WebSocket 订阅)/ useTriggerPreannotation
  • WorkbenchPage Annotation.source 对齐新枚举("human""manual""ai-accepted""prediction_based"

配置与基础设施

  • config.py 新增 ml_predict_timeout / ml_health_timeout / celery_broker_url
  • main.py 版本升至 0.2.0,注册 WebSocket 路由
  • docker-compose.yml 新增 celery-worker 服务

文档

  • 调研报告拆分:47KB 单文件 → docs/research/ 下 12 个独立文档(README 索引 + 按平台/主题分文件)
  • 便于持续开发中按需更新单个文档,无需编辑巨型文件

变更

  • Annotation.source 语义变更:"human"/"ai"/"ai-accepted""manual"/"prediction_based"(AI 预测不再混入 annotations 表)
  • 角色字段从中文字符串改为英文枚举(影响 JWT payload、前端显示)
  • 项目状态字段从中文改为英文枚举
  • 数据库从 4 张表扩展到 12 张表

Released under the MIT License.