Skip to content

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

Changelog — 0.2.x

[0.2.0] - 2026-04-27

新增

认证与权限

  • JWT 签发与校验 (python-jose),Token 有效期可配置,payload 含 sub(email)和 role
  • bcrypt 密码哈希(直接使用 bcrypt 库,规避 passlib 与 Python 3.14 不兼容问题)
  • GET /api/v1/auth/login 实现真实账号密码校验并返回 Bearer Token
  • GET /api/v1/auth/me 实现,依赖 get_current_user 返回当前登录用户信息
  • RBAC 权限依赖工厂 require_roles(*roles),不满足条件返回 403
  • 后端所有业务接口统一加 Bearer 鉴权,/health/auth/login 豁免

数据库迁移

  • Alembic 异步迁移环境配置(async_engine_from_config + connection.run_sync
  • 初始 migration 0001_initial_schema:创建 usersprojectstasksannotations 四张表,含 FK、索引
  • 修复 local alembic/ 目录遮蔽已安装包的 import 问题(统一用 uv run alembic

种子数据

  • 幂等种子脚本 apps/api/scripts/seed.py(重复执行安全)
  • 预置 6 个用户:超级管理员 admin@example.com、项目管理员、质检员、标注员 ×3,分属 3 个数据组
  • 预置 2 个项目:P-0001 智能门店货架商品检测(image-det)、P-0002 自动驾驶路面障碍分割(image-seg)

前后端联调

  • 前端 API 层 (apps/web/src/api/):client.ts fetch 封装(自动附加 Bearer)、auth.tsprojects.tstasks.tsusers.ts
  • TanStack Query hooks:useProjectsuseProjectStatsuseProjectuseCreateProjectuseTaskuseAnnotationsuseCreateAnnotationuseSubmitTaskuseUsersuseInviteUser
  • Zustand authStorepersist 中间件,token + user 持久化到 localStorage)
  • Vite dev proxy /api/v1http://localhost:8000
  • CORS 更新:allow_origin_regex=r"http://localhost:\d+" 兼容 preview 随机端口
  • Dashboard、Users、Workbench 三个页面全部替换为真实 API,移除 mock 数据依赖
  • ProjectOut schema 补充 updated_at 字段

登录页与路由守卫

  • 登录页 LoginPage.tsx:邮箱/密码表单、密码显示切换、登录失败错误提示、测试账号提示卡
  • App.tsx 路由守卫:无 token 时渲染登录页,登录成功后直接跳转主界面
  • TopBar 右上角显示真实用户姓名/角色(来自 authStore),新增退出登录按钮
  • client.ts 全局 401 拦截:任意接口返回 401 自动调用 logout(),清除 token 并跳回登录页

图标

  • Icon 组件新增 eyeOffwarninglogout 三个图标

开发环境

  • .claude/launch.json 配置 web(autoPort)和 api(固定 8000)双服务启动
  • Vite 端口改为环境变量驱动(process.env.PORT),兼容 preview_start 自动分配端口

修复

  • tsconfig.json ignoreDeprecations 值改为 "5.0" 以兼容 TypeScript 5.6
  • UsersPage.tsx 移除未使用的 ProgressBar import,消除编译警告
  • appStore currentProject 类型从 mock Project 改为 ProjectResponse | null

Released under the MIT License.