Files
Genarrative/.hermes/skills/genarrative-admin-backoffice/references/admin-tracking-events-export-2026-05-07.md
历冰郁-hermes版 7e35231dfe
Some checks failed
CI / verify (pull_request) Has been cancelled
docs: sync genarrative shared skills
2026-05-08 17:39:49 +08:00

54 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 后台埋点数据页与本地启动验证记录2026-05-07
## 背景
本次在 Genarrative/百梦后台新增“埋点数据”页:
- 后端新增 `GET /admin/api/tracking/events`
- shared-contracts 新增 admin tracking query/list/entry DTO。
- 前端新增 `#tracking` 路由、导航、表格、详情面板与 `.xls` 导出。
- 导出使用浏览器端 HTML table + Excel MIME不引入 `xlsx` 依赖。
## 关键实现点
- 后台只读接口仍必须套 `require_admin_auth`
- SpacetimeDB 明细读取使用 HTTP SQL不新增 reducer、不改 schema。
- SQL 固定白名单列,不用 `SELECT *`
- Query 只允许 `eventKey/userId/scopeKind/scopeId/limit`
- `scopeKind` 只允许 `site/work/module/user`
- limit 默认 200最大 1000。
- SpacetimeDB HTTP SQL 响应要兼容 statement array + `rows`Option 可能表现为 `{ "some": value }`
- 前端导出 `.xls` 时给单元格加 `mso-number-format:'\\@';`,防止 Excel 把 ID 转科学计数法。
## 验证命令
```bash
cd <repo-root>
npm install # 若 node_modules 缺失
npm run admin-web:typecheck
npm run admin-web:build
npm run check:encoding
cd server-rs
cargo fmt -p api-server -p shared-contracts --check
cargo test -p api-server admin_tracking -- --nocapture
```
## 本地启动观察
启动命令:
```bash
cd <repo-root>
npm run api-server
npm run admin-web:dev -- --host 127.0.0.1
```
实际验证:
- api-server 监听 `127.0.0.1:3100`,健康检查为 `http://127.0.0.1:3100/healthz`
- admin-web 监听 `127.0.0.1:5173`,后台地址为 `http://127.0.0.1:5173/admin/`
- 请求 `http://127.0.0.1:5173/` 会 302 到 `/admin/`
- 不能默认用 3200 检查 api-server本地脚本通过 `GENARRATIVE_API_PORT=3100` 启动。
- 如果启动日志出现 SpacetimeDB `127.0.0.1:3101` connection refusedapi-server 仍可能已正常监听;这是依赖的本地 SpacetimeDB 未启动,埋点页读真实数据会受影响。