feat(client): 用户管理页 + E2E 门禁(E15/E16/E18)

- 新增系统用户管理页(创建/禁用启用/重置密码/角色)

- 引入 Playwright E2E:覆盖登录-报销-待办-票据-OCR-支付-登出

- 新增 ci-e2e 工作流(PR + nightly)
这个提交包含在:
2026-02-09 01:13:14 +08:00
父节点 4223d81eb4
当前提交 fc50ffc808
共修改 11 个文件,包含 953 行新增和 0 行删除
+27
查看文件
@@ -28,6 +28,11 @@ cd /home/shunli/Projects/hyb-oa/client
npm run dev
```
## 3.1 试运行/单域托管部署(推荐)
试运行/上线演练建议使用仓库内置部署包(server 托管 `client/dist`,同域 cookie 更稳定):
- `deploy/trialrun/runbook.md`
- `deploy/trialrun/checklist.md`
## 4. 鉴权与会话说明
- Access Token 仅保存在内存,不写入 `localStorage/sessionStorage`。
- Refresh Token 由后端通过 HttpOnly Cookie 维护。
@@ -54,6 +59,7 @@ npm run dev
- 待我处理:`expense.approve`。
- 票据中心:`invoice.upload` / `invoice.view_own` / `invoice.manage`。
- 审计工作台:`system.audit.view`(finance_mgr/admin)。
- 用户管理:`system.users`(hr/admin)。
- 个人设置:登录即可访问。
## 6. 页面现状(P3)
@@ -78,6 +84,27 @@ npm run dev
npm run typecheck
npm run build
npm run preview
npm run test:e2e
```
## 8.1 Playwright E2E(E15)
前置:本地启动 DB + server(建议 `SERVE_CLIENT_DIST=true` 单域托管),并启用 mock OCR:
```bash
cd /home/shunli/Projects/hyb-oa
docker compose up -d db
cd /home/shunli/Projects/hyb-oa/server
OCR_PROVIDER=mock OCR_POLL_CRON="*/5 * * * * *" npm run prisma:migrate:deploy
OCR_PROVIDER=mock OCR_POLL_CRON="*/5 * * * * *" npm run seed:dev
OCR_PROVIDER=mock OCR_POLL_CRON="*/5 * * * * *" SERVE_CLIENT_DIST=true npm run dev
```
执行:
```bash
cd /home/shunli/Projects/hyb-oa/client
npm install
npx playwright install --with-deps
npm run test:e2e
```
## 9. 仓库级最小门禁