feat(backend): implement task creation and admin web
This commit is contained in:
+12
-3
@@ -69,8 +69,14 @@ Authorization、Cookie 或 panic 内容。
|
||||
SQLite 默认文件为被忽略的 `backend-api/var/cmroubao.db`,连接启用 foreign keys、
|
||||
5 秒 busy timeout、WAL 和 immediate transaction,并限制单连接以匹配单进程 MVP。
|
||||
数据库由 `cmd` 显式打开和关闭,不存在包级单例。Goose SQL 通过 `embed.FS` 加载,
|
||||
`cmd/migrate` 显式执行 `up/down/status`;T-201 只验证迁移链路,业务表由后续任务
|
||||
按 API 和领域模型建立。
|
||||
`cmd/migrate` 显式执行 `up/down/status`。API 启动前检查所有迁移均已应用,不在
|
||||
服务进程内自动改表;T-203 已用 `00002_tasks_and_assets.sql` 建立任务、资产、事件
|
||||
和幂等记录表。
|
||||
|
||||
T-204 管理会话完成前,T-203 的业务路由只允许 loopback 来源,Web 写操作还校验
|
||||
浏览器 Cookie 与表单字段的随机双提交 CSRF token;这不是正式登录,不能据此开放
|
||||
局域网监听。模板/API handler 仍调用同一 usecase,T-204 只替换主体和会话门禁,
|
||||
不重写业务规则。
|
||||
|
||||
### 2.2 Android App
|
||||
|
||||
@@ -350,9 +356,10 @@ IDLE
|
||||
| `id` | PK | 任务 ID |
|
||||
| `title` | NOT NULL | 原始标题 |
|
||||
| `description` | NOT NULL | 原始说明,可为空字符串 |
|
||||
| `sku` | NOT NULL | 原始 SKU,不得由模型改写 |
|
||||
| `image_asset_id` | FK, NOT NULL | 原始参考图 |
|
||||
| `quantity` | `> 0` | 权威数量 |
|
||||
| `max_budget` | `> 0`, nullable | 权威最高预算,币种为 CNY |
|
||||
| `max_budget` | `> 0`, nullable | 全部数量的权威最高商品总预算,币种为 CNY |
|
||||
| `status` | NOT NULL | 任务状态枚举 |
|
||||
| `created_by` | FK | 创建人 |
|
||||
| `claimed_by_device_id` | FK, nullable | 当前设备 |
|
||||
@@ -380,6 +387,8 @@ IDLE
|
||||
- `execution_events` 只追加,记录 step、事件类型、可读消息和时间;不保存密码或 token。
|
||||
- `assets` 保存文件相对路径、媒体类型、大小、哈希、创建者和保留时间。
|
||||
- 原图和截图必须通过鉴权接口读取,文件名不能直接作为公开 URL。
|
||||
- 任务参考图上传可接受 JPEG/PNG/WebP,但后端必须先真实解码、限制字节与像素,再
|
||||
统一规范化为匿名 JPEG;未来 Android 读取的资产不能依赖原始扩展名或声明 MIME。
|
||||
|
||||
## 六、API 和并发边界
|
||||
|
||||
|
||||
Reference in New Issue
Block a user