feat: 管理后台接真实接口并加 Playwright e2e

This commit is contained in:
Nixevol
2026-09-30 09:20:01 +08:00
parent a22912d95a
commit b75b67928b
24 changed files with 1299 additions and 71 deletions
+26 -3
View File
@@ -701,13 +701,15 @@
- 实际做法:`web/src/api/admin.ts` 统一导出接口函数,内部调用 `mock.ts`;`http.ts` 已实现带 `X-Nixmsg-Request: 1` 的真实请求封装,供 W4 切换。
- 原因:A 线管理接口尚未合入,页面与契约可并行开发。
- 备选:用 MSW 拦截 fetch;当前集中换 `admin.ts` 更简单。
- 假登录口令:`admin` / `adminpassword`(仅本地 mock,不进后端)。
- 假登录口令:`admin` / `adminpassword`(仅本地 mock,不进后端)。
- **W4 起已切换**:生产与 e2e 走真实 `/api/admin`;组件 Vitest 通过 `vi.mock("@/api/admin")` → `admin-mock.ts` 仍用假数据。登录页假数据提示已去掉。
2. **列表分页用页码映射 cursor 偏移**
- 原条款:admin-api 使用 `cursor`/`limit` 游标分页。
- 实际做法:假数据把 `page` 编成数字偏移 cursor(`String((page-1)*limit)`),`n-data-table` remote 分页照常。
- 原因:Naive UI 表格以页码交互;契约游标对前端透明即可。
- 备选:W4 若后端 cursor 非偏移编码,在 `admin.ts` 内适配,页面仍用页码。
- 备选:W4 若后端 cursor 非偏移编码,在 `admin.ts` 内适配,页面仍用页码。
- **W4**:后端 cursor 为不透明字符串;首页(空 cursor)主路径 e2e 通过。翻到第 2 页若用数字偏移可能无效,未改页面交互;后续若要稳定翻页,应在 `admin.ts` 缓存服务端 `next_cursor`。
3. **帮助图标不用独立图标库**
- 原条款:DEVELOPMENT 2.4 用 `n-tooltip`;协作规则要求只用 Naive UI。
@@ -727,7 +729,28 @@
- 原因:与重置密码、解锁同级的行内动作更贴桌面工作流。
- 备选:无。
## SDK 一 S1
### W4 2026-09-30
1. **接真实接口并适配 A 线字段**
- 原条款:TASKS W4;admin-api 令牌 `id` 示例为数字。
- 实际做法:`admin.ts` 全部改为 `requestAdmin`;令牌 `id` 类型改为 `string`(对齐 A1 TEXT);`talk-password` 用 `PUT`;概览可选 `endpoints_self`;建群省略空 `id`(A3 不接受自定义 id)。不改服务器。
- 原因:与已合并 A 线实现一致。
- 备选:无。
- 影响:组件测用 `admin-mock.ts`;页面逻辑不变。
2. **未完成投递由 e2e 用 MQTT seed 造出**
- 原条款:DEVELOPMENT 第 13 节后台主路径「看到未完成记录」;管理 messages 只读。
- 实际做法:Playwright 流程里用管理接口开通第二端后,运行 `web/e2e/seedpending`(MQTT hello + 未来 `send_at_ms` 的 send),再打开投递记录页断言 `scheduled`。测完杀进程并删临时目录。
- 原因:管理 API 不能写消息;不改服务器业务代码。
- 备选:插入 SQLite(并发/锁风险);或依赖已有记录(空库无)。
- 影响:e2e 依赖本机 `go` 与 Chromium。
3. **Playwright 挂入 `task itest` / `task w:e2e`**
- 原条款:TASKS W4「端到端测试在 task itest 里通过」;Taskfile 由总控维护、各线写 `taskfiles/<线>.yml`。
- 实际做法:新增 `taskfiles/w.yml`;主 `Taskfile.yml` 显式 `includes.w`(本机 Task 3.53 下 `taskfiles/*.yml` glob 未挂上各线任务)并把 `itest` 在 `go test ./test/...` 后追加 `task: w:e2e`。Playwright 的 `webServer` 先于 `globalSetup` 启动,故用 `e2e/start-stack.mjs` 同时起临时 nixmsg 与 Vite;代理目标 `NIXMSG_PROXY_TARGET`(开发默认仍 7443)。浏览器用 `pnpm exec playwright install chromium`,不改全局配置。
- 原因:满足 W4 验收且隔离安装。
- 备选:仅文档要求手跑 e2e;未采用。
- 影响:`task itest` 变长;需本机 Go/Node/Chromium。
### S1.1 传输层可注入假实现(Go / JS)