feat(tasks): implement atomic claims and leases
This commit is contained in:
+11
-1
@@ -3,6 +3,8 @@
|
||||
Go 1.23.0、Gin 1.11.0 和 SQLite 构成的单进程采购任务服务。当前提供参考图上传与
|
||||
规范化、任务创建/列表/详情/取消 API、服务端渲染管理页面、健康检查和显式数据库
|
||||
迁移,并使用 ADMIN 服务端会话和 BUYER + 预授权设备联合身份隔离管理与执行接口。
|
||||
App 设备接口已支持 readiness heartbeat、原子领取、安全幂等重放、参考图授权、
|
||||
start/运行续租/release 和取消安全确认。
|
||||
|
||||
## 环境
|
||||
|
||||
@@ -19,6 +21,9 @@ Go 1.23.0、Gin 1.11.0 和 SQLite 构成的单进程采购任务服务。当前
|
||||
| `CMROUBAO_ASSET_DIR` | `var/assets` | 规范化参考图片的受控本地目录 |
|
||||
| `CMROUBAO_TLS_CERT_FILE` | 无 | TLS certificate;必须和 private key 同时设置 |
|
||||
| `CMROUBAO_TLS_KEY_FILE` | 无 | TLS private key;非 loopback 监听必须设置 |
|
||||
| `CMROUBAO_CLAIM_LEASE` | `10m` | CLAIMED 租约;允许 `1m` 至 `30m` |
|
||||
| `CMROUBAO_RUNNING_LEASE` | `90s` | RUNNING/等待确认租约;允许 `30s` 至 `10m` |
|
||||
| `CMROUBAO_READINESS_TTL` | `2m` | 设备就绪 heartbeat 新鲜度;允许 `30s` 至 `10m` |
|
||||
|
||||
不会自动读取 `.env`。本地配置和 `var/` 运行数据不得提交。
|
||||
|
||||
@@ -60,7 +65,7 @@ API 启动前会检查全部 migration 已应用;发现 pending migration 会
|
||||
|
||||
- `GET /tasks`:任务列表、搜索和状态筛选。
|
||||
- `GET /tasks/new`:上传参考图并创建任务。
|
||||
- `GET /tasks/{id}`:查看原始约束和任务状态,待领取任务可取消。
|
||||
- `GET /tasks/{id}`:查看原始约束和任务状态;未执行任务立即取消,执行中请求安全停止。
|
||||
- `GET/POST /login`、`POST /logout`:建立或撤销 8 小时 ADMIN 会话。
|
||||
|
||||
未登录管理页面会跳转 `/login`,未授权管理 API 返回 `401`。Cookie 认证的管理 API
|
||||
@@ -68,6 +73,11 @@ API 启动前会检查全部 migration 已应用;发现 pending migration 会
|
||||
Cookie 与 BUYER Bearer token 不能互换。两类登录在凭证校验前按来源地址独立限流:
|
||||
5 分钟最多 10 次,超限返回 `429` 和 `Retry-After`,成功后清零。
|
||||
|
||||
设备任务路由为 `/api/v1/devices/heartbeat`、`/api/v1/tasks/claim-next` 及 task-scoped
|
||||
`reference-image/start/heartbeat/release/cancel-ack`。除设备 heartbeat 外,任务读取
|
||||
和迁移都受当前用户、设备、claim generation、`X-Claim-Token` 与服务端租约约束;
|
||||
原 claim token 只由 App 生成和保存,服务端数据库只存 SHA-256。
|
||||
|
||||
默认 loopback 可使用 HTTP 开发。局域网监听必须同时设置 certificate/private key,
|
||||
服务直接使用 TLS 启动,不会降级为明文。完整 API 合约见
|
||||
[`../docs/api.md`](../docs/api.md)。
|
||||
|
||||
Reference in New Issue
Block a user