⚠️ 自动镜像 · 此页由
docs-site/scripts/mirror-changelog.mjs从docs/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 TokenGET /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:创建users、projects、tasks、annotations四张表,含 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.tsfetch 封装(自动附加 Bearer)、auth.ts、projects.ts、tasks.ts、users.ts - TanStack Query hooks:
useProjects、useProjectStats、useProject、useCreateProject、useTask、useAnnotations、useCreateAnnotation、useSubmitTask、useUsers、useInviteUser - Zustand
authStore(persist中间件,token + user 持久化到 localStorage) - Vite dev proxy
/api/v1→http://localhost:8000 - CORS 更新:
allow_origin_regex=r"http://localhost:\d+"兼容 preview 随机端口 - Dashboard、Users、Workbench 三个页面全部替换为真实 API,移除 mock 数据依赖
ProjectOutschema 补充updated_at字段
登录页与路由守卫
- 登录页
LoginPage.tsx:邮箱/密码表单、密码显示切换、登录失败错误提示、测试账号提示卡 App.tsx路由守卫:无 token 时渲染登录页,登录成功后直接跳转主界面TopBar右上角显示真实用户姓名/角色(来自authStore),新增退出登录按钮client.ts全局 401 拦截:任意接口返回 401 自动调用logout(),清除 token 并跳回登录页
图标
- Icon 组件新增
eyeOff、warning、logout三个图标
开发环境
.claude/launch.json配置 web(autoPort)和 api(固定 8000)双服务启动- Vite 端口改为环境变量驱动(
process.env.PORT),兼容 preview_start 自动分配端口
修复
tsconfig.jsonignoreDeprecations值改为"5.0"以兼容 TypeScript 5.6UsersPage.tsx移除未使用的ProgressBarimport,消除编译警告appStorecurrentProject类型从 mockProject改为ProjectResponse | null