文件
hyb-oa/client/README.md
T
wangsli 7a6f5573a6 feat(client): 完成 P3 业务页联动闭环(D6/D8/D10/D11)
- 待办:列表/详情 + approve/reject/return/transfer(D6)
- 报销:列表/详情 + create/submit/withdraw/pay(D8)
- 票据:列表/上传/OCR轮询/绑定/预览(D10)
- 统一:Api types + 错误映射 + react-query缓存失效(D11)
2026-02-08 23:08:41 +08:00

2.3 KiB
原始文件 Blame 文件历史

hyb-oa Client Runbook (P1-5)

1. 前置条件

  • Node.js >= 20
  • 后端服务可用(http://127.0.0.1:3000)

2. 安装与启动

cd /home/shunli/Projects/hyb-oa/client
npm install
npm run dev

默认前端地址:http://127.0.0.1:5173

3. 本地联调建议顺序

cd /home/shunli/Projects/hyb-oa

docker compose up -d db

cd /home/shunli/Projects/hyb-oa/server
npm run prisma:migrate:deploy
npm run seed:dev
npm run dev

cd /home/shunli/Projects/hyb-oa/client
npm run dev

4. 鉴权与会话说明

  • Access Token 仅保存在内存,不写入 localStorage/sessionStorage。
  • Refresh Token 由后端通过 HttpOnly Cookie 维护。
  • 前端在 401 时自动调用 /api/auth/refresh 并重试一次请求。
  • 登录与刷新请求都会附带 x-device-fingerprint。

5. 菜单与权限(当前壳层)

  • 仪表盘:登录即可访问。
  • 我的报销:expense.view_own 或 expense.view_all。
  • 待我处理:expense.approve。
  • 票据中心:invoice.upload / invoice.view_own / invoice.manage。
  • 审计工作台:system.audit.view(finance_mgr/admin)。
  • 个人设置:登录即可访问。

6. 页面现状(P3)

  • 待我处理:列表 + 详情 + approve/reject/return/transfer 动作。
  • 我的报销:分页列表 + 详情 + submit/withdraw/pay 联调入口。
  • 票据中心:分页列表 + 上传 + OCR 轮询 + 绑定 + 签名预览。
  • 审计工作台:分页筛选已落地。

7. 状态管理与错误语义

  • 引入 @tanstack/react-query 统一查询缓存与失效策略。
  • 错误文案统一映射在 client/src/api/errorMessages.ts。
  • API 层保留后端错误码原文,前端仅做可读化。

6. 风格资源复用策略(锁定)

  • 视觉 Token 来源:/home/shunli/Projects/hyb-web。
  • 采用“复制到 client + 单向同步”,不做跨仓软链与自动联动。
  • 如需同步风格,请记录来源 commit 并通过评审。

8. 可用脚本

npm run dev
npm run typecheck
npm run build
npm run preview

9. 仓库级最小门禁

cd /home/shunli/Projects/hyb-oa
./scripts/check-minimal.sh

说明:

  • 会执行 client 的 typecheck/build 与 server 的静态检查。
  • 不启动服务,不替代发版前的 server/scripts/regression-all.sh。