feat: add legacy device migration flow
This commit is contained in:
@@ -2074,3 +2074,11 @@
|
||||
- 边界:本任务不创建购买页、软件订单、支付回调、存量迁移请求/设备凭证,也不改变通用生成 API 或点数账本。
|
||||
- 验证:本地已应用 licensing 迁移。`py -3.12 manage.py test apps.licensing --keepdb --noinput --verbosity 2` 通过 14 条测试,包含套餐快照、续期、撤销、审计、后台权限和两个独立数据库连接并发抢占单席位;`manage.py check` 与 `makemigrations --check --dry-run` 通过。测试仅保留既有 allauth MySQL 条件唯一约束 `models.W036` 警告。
|
||||
- 下一步:领取 T-627,实施存量迁移权益、网页登录确认和产品专用设备凭证,继续保持通用生成 API 兼容。
|
||||
|
||||
## 2026-07-21 完成:T-627 存量用户迁移权益、网页确认与设备凭证
|
||||
|
||||
- 实现:新增 `LegacyMigrationGrant`、`MigrationRequest`、`DeviceCredential` 与 `licensing.0003_alter_licenseevent_action_legacymigrationgrant_and_more`。迁移资格只能由 admin 专用入口显式按用户和套餐授予,保存资格快照;不接注册流程,因此新注册用户不会自动获得迁移权益。
|
||||
- 流程:客户端以旧 API Key + 当前 `X-Device-Session` 调用 `POST /api/v1/client/migration-requests`,获得短时确认链接和一次性 `device_credential_token`。数据库只保存待签发凭证 hash/前缀。portal 同账号确认后在事务内分配席位、签发绑定到迁移请求的凭证;重复确认与轮询返回既有状态,不重复占席或签发。用户可在 `/migration/devices` 自助解绑,服务会吊销凭证、释放席位并写授权事件。
|
||||
- 安全与兼容:跨账号确认返回 403,缺设备会话返回 401,跨设备查询按 404 处理;确认 URL 不含凭证明文。旧生成、余额、模型目录、异步任务和点数账本未改,设备凭证尚未参与生成授权。
|
||||
- 验证:本地已应用 licensing 迁移。T-627 迁移专项 3 条测试通过,覆盖资格边界、缺会话、跨账号、过期/重复、确认/轮询、凭证 hash 和自助解绑;此前 T-626 14 条 licensing 基础回归通过。`manage.py check` 与 `makemigrations --check --dry-run` 通过;测试仅保留既有 allauth MySQL 条件唯一约束 `models.W036` 警告。
|
||||
- 下一步:领取 T-628,建立蝦皮圈专属调用入口与影子授权校验,不影响通用 `/api/v1/generate/*`。
|
||||
|
||||
Reference in New Issue
Block a user