feat: associate generation calls with devices
This commit is contained in:
@@ -2058,3 +2058,11 @@
|
||||
- 文档:同步 `api.md`、`routes.md`、`04-architecture.md`、`env.md`、`current-state.md` 和任务状态;新增生产需设置的 `DEVICE_IDENTIFIER_PEPPER`、`DEVICE_SESSION_TTL_SECONDS`、`DEVICE_ACTIVITY_UPDATE_SECONDS`。
|
||||
- 验证:本地执行 `py -3.12 manage.py migrate licensing --noinput`,应用 `licensing.0001_initial`;`py -3.12 manage.py test apps.licensing apps.api.tests.ApiKeyAuthenticationTests apps.api.tests.BalanceApiTests --keepdb --noinput --verbosity 2` 通过,21 tests OK;`py -3.12 manage.py makemigrations --check --dry-run` 无变化;`py -3.12 manage.py check` 通过;`./init.ps1` 通过。测试保留既有 allauth MySQL 条件唯一约束 `models.W036` 警告。
|
||||
- 下一步:领取 T-625,将有效设备会话关联到调用记录和遥测,但继续保持只观测、不阻断。
|
||||
|
||||
## 2026-07-21 完成:T-625 蝦皮圈设备使用关联与迁移观测
|
||||
|
||||
- 实现:`CallRecord` 新增可空 `client_device` 外键和 `(client_device, created_at)` 索引,迁移为 `billing.0010_callrecord_client_device_and_more`。标题、图片、异步图片提交和图片理解在 API Key 鉴权后可选解析 `X-Device-Session`,仅把服务端验证的设备传给既有预扣服务写入调用记录;异步 worker 不重复解析会话,既有任务轮询保持 API Key 所属用户校验。
|
||||
- 安全与兼容:未携带设备会话的调用保持既有响应、账务和任务语义。显式提供伪造或过期会话返回 `401 device_session_invalid`,吊销设备或跨账号会话返回 `403`,均发生在审核/预扣/上游调用前。`generation_route_usage` 只新增 `product_code`、内部 `client_device_id` 和 `device_session_present`,不记录原始设备 ID、公钥、令牌、API Key、prompt 或图片。
|
||||
- 后台与文档:`CallRecordAdmin` 增加只读设备展示与筛选;同步 `api.md`、`routes.md`、`04-architecture.md`、`current-state.md` 和任务看板,明确本期只做关联观测,不实施订阅授权拦截。
|
||||
- 验证:本地已应用 billing 迁移;新增 4 条测试覆盖四个生成入口关联、无头兼容、伪造/跨账号会话拒绝、遥测脱敏和异步轮询。`py -3.12 manage.py test` 定向新增 4 条通过;随后 licensing 加关键标题/vision/同步图片/异步提交/遥测回归共 14 条通过;`manage.py check` 和 `makemigrations --check --dry-run` 通过。测试仅保留既有 allauth MySQL 条件唯一约束 `models.W036` 警告。
|
||||
- 下一步:领取 T-626,建立套餐、权益、席位和审计的基础模型与后台,不接入生成授权或购买流程。
|
||||
|
||||
Reference in New Issue
Block a user