Files
baiyue-firstleg/docs/phase1-frontend-integration-tasks.md
T
2026-07-30 18:01:36 +08:00

146 lines
6.9 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.
# 一期前端本地联调任务
## 1. 文档范围
本文只用于本地开发联调,不包含测试环境、生产环境、国内外部署和跨区域事件同步。
一期业务闭环:商户注册 → 登录 → 完善企业资料 → 上传营业执照 → 平台审核 → 审核通过后创建头程订单 → 编辑草稿 → 提交订单。
## 2. 本地联调入口
| 项目 | 地址 |
|---|---|
| 前端统一 API 地址 | `http://127.0.0.1:9000` |
| 局域网前端统一 API 地址 | `http://192.168.110.149:9000` |
| Swagger | `http://127.0.0.1:9000/swagger-ui.html` |
| MySQL | `127.0.0.1:3306`,本地密码 `123456` |
| Redis | `127.0.0.1:6379` |
| Nacos | `http://127.0.0.1:8848/nacos` |
前端不得直连 9100、9201 等业务端口,所有请求统一经过 Gateway 的 9000 端口。
当前允许的前端 Origin:
- `http://localhost:5173`、`http://localhost:5174`
- `http://127.0.0.1:5173`、`http://127.0.0.1:5174`
- `http://192.168.110.149:5173`、`http://192.168.110.149:5174`
如果前端实际 IP 或端口不同,修改 `scripts/local-env.ps1` 中的 `CORS_ALLOWED_ORIGINS`,然后只重启 Gateway。
## 3. 本地启动顺序
先启动 MySQL、Redis、Nacos,再在 IDEA 中启动以下应用:
1. `BaiyueIamApplication`,端口 9201
2. `BaiyueAuthApplication`,端口 9100
3. `BaiyueFirstlegApplication`,端口 9202
4. `BaiyueOrderApplication`,端口 9204
5. `BaiyueWarehouseApplication`,端口 9205
6. `FileServiceApplication`,端口 9206
7. `PrintServiceApplication`,端口 9207
8. `BaiyueGatewayApplication`,端口 9000,最后启动
一期最小主流程必须启动 Gateway、Auth、IAM、Order、File。为了让一期前端菜单、仓储选择、打印与完整 Swagger 不出现缺失,日常联调建议启动上面 8 个应用。
启动后检查:
```text
http://127.0.0.1:9000/actuator/health
http://127.0.0.1:9100/actuator/health
http://127.0.0.1:9201/actuator/health
http://127.0.0.1:9202/actuator/health
http://127.0.0.1:9204/actuator/health
http://127.0.0.1:9205/actuator/health
http://127.0.0.1:9206/actuator/health
http://127.0.0.1:9207/actuator/health
```
预期均返回 `status=UP`。
## 4. 联调账号
| 端 | 用户名 | 密码 |
|---|---|---|
| 平台端 | `platform_admin` | `ChangeMe123!` |
| 商户端 | `merchant_admin` | `ChangeMe123!` |
两端共用登录接口,但 JWT 中 `app_code`、租户、角色和按钮权限不同。平台 Token 不能访问商户接口,商户 Token 不能访问平台接口。
## 5. 前端公共能力任务
- 配置统一请求基地址,不在页面中写死业务服务端口。
- 成功登录后保存 `accessToken` 和 `refreshToken`,业务请求发送 `Authorization: Bearer <accessToken>`。
- 遇到 401 时尝试刷新一次 Token;刷新失败则清理会话并回到登录页,禁止无限重试。
- 统一解析 `{code,message,data,requestId,traceId,timestamp}`。
- HTTP 200 仍需判断业务 `code` 是否为 `0`。
- 统一处理 400、401、403、404、409、422、429、500、503。
- 根据登录返回的角色和权限生成菜单、按钮;按钮隐藏不是安全边界,后端仍执行权限校验。
- 商户页面不允许传入或切换 `tenantId`,租户从 JWT 获取。
- 平台查询租户业务时必须显式传目标 `tenantId`。
- 文件上传使用 `multipart/form-data`,不要手工设置 multipart boundary。
## 6. 一期页面任务
### 6.1 公共登录与注册
- 完成商户注册表单及前端校验。
- 完成平台、商户统一登录页。
- 完成 Token 刷新、退出登录和登录态恢复。
- 根据 `app_code` 进入平台端或商户端,禁止跨端复用页面权限。
### 6.2 商户端企业入驻
- 企业资料详情页:查询并编辑企业名称、法定名称、联系人、电话、邮箱。
- 资质页:上传营业执照,显示上传结果和资质审核状态。
- 资质图片预览/下载必须携带商户 Token。
- 企业未审核通过时,头程下单入口置灰,并展示后端返回的禁止原因。
状态展示:`PROFILE_REQUIRED`/`PENDING` 表示待完善或待审,`ACTIVE` 表示审核通过,`REJECTED` 表示已驳回。
### 6.3 平台端企业审核
- 待审核列表。
- 查询指定租户资质列表。
- 携带平台 Token 预览资质图片。
- 审核通过、审核驳回及审核意见输入。
- 按钮权限:`platform:customer:review`、`platform:customer:approve`、`platform:customer:reject`。
### 6.4 商户端头程订单
- 订单列表:关键字、状态、客户、目的仓、时间和分页筛选。
- 订单详情:订单、货物、发收货方、状态历史。
- 新建草稿、编辑草稿、提交订单。
- 仅 `DRAFT`、`REJECTED` 可编辑;一期主流程状态为 `DRAFT → SUBMITTED`。
- 商户详情不得展示 `internalNotes`;前端模型即使收到未知字段也不得渲染平台内部备注。
- 按钮权限:`merchant:order:create`、`merchant:order:edit`、`merchant:order:submit`。
## 7. 一期验收清单
- 8 个应用健康检查全部 `UP`。
- 平台账号、商户账号均能通过 Gateway 登录。
- 两类 Token 跨端访问返回 403。
- 商户能查询、编辑企业资料。
- 商户能上传真实 JPG/PNG 营业执照,非图片或超过 5MB 被拒绝。
- 平台能查询待审核记录、查看资质并通过或驳回。
- 企业审核前创建订单被拒绝,审核后可创建草稿。
- 商户可查询、编辑和提交自己的订单,不能读取其他租户订单。
- 商户订单详情不返回平台内部备注。
- 局域网前端 Origin 的 OPTIONS 预检返回 200,非白名单 Origin 返回 403。
- Swagger UI 和一期服务 API 文档均可通过 Gateway 打开。
## 8. 本次本地实测结果
2026-07-30 已完成本机验证:8 个健康检查均为 `UP`;平台/商户登录成功;IAM、Order、Firstleg、Warehouse、File、Print 状态接口及商户资料、订单列表、仓库列表均能通过 Gateway 返回成功;13 个 Swagger 页面/分组返回 200;`http://192.168.110.149:5173` 跨域预检返回 200,非白名单返回 403。
另创建本地联调订单并添加 1 条平台内部备注:平台详情可见 1 条,商户详情返回 0 条,租户端数据隔离验证通过。
2026-07-30 17:20 使用最新代码重新完成成熟度回归:
- 全仓 19 个 Reactor 项目构建成功,75 项单元及组件测试全部通过。
- 认证、个人资料、修改密码、成员、角色、按钮权限、租户隔离共 68 项真实 API 检查全部通过。
- 仓库、往来单位、订单草稿、可信快照、停用限制、重复提交、快递只读共 37 项真实 API 检查全部通过。
- Gateway Swagger UI、配置及 11 个业务分组共 13 个入口全部返回 200。
- 白名单 CORS 预检返回 200,非白名单返回 403。
详细报告见 `docs/phase1-business-maturity-regression-report.md`。营业执照真实图片的桌面端和移动端浏览器查看、替换仍需前端执行人工验收。