146 lines
6.9 KiB
Markdown
146 lines
6.9 KiB
Markdown
# 一期前端本地联调任务
|
||
|
||
## 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`。营业执照真实图片的桌面端和移动端浏览器查看、替换仍需前端执行人工验收。
|