12 KiB
12 KiB
页面ToDo
背景与接口基线
- 后端架构:Clean Architecture(Api/Application/Domain/Infrastructure),Admin API 路由前缀
api/admin/v{version}/,Mini API 路由前缀api/mini/v{version}/,鉴权为 JWT + 权限码(PermissionAuthorize),长整型 ID 以字符串返回,前端需保持大数解析(可用json-bigint)。 - Admin 端已交付核心 API(Phase 1):
- 租户:注册/分页/详情、实名认证提交与审核、套餐订阅/续费/升降配、审核日志、公告/通知、账单、配额占用校验。
- 商户:入驻创建、证照上传、合同管理、审核流程、审核日志、类目列表。
- 套餐与配额:TenantPackage CRUD、订阅历史、配额占用校验。
- RBAC 模板:角色模板 CRUD、复制、租户初始化,权限码种子齐全。
- 门店:门店 CRUD、营业时间/配送区/节假日、能力开关(预约/排队)。
- 桌码:区域与桌码 CRUD、批量生成、二维码 ZIP 导出。
- 员工排班:员工 CRUD、门店角色绑定、排班 CRUD(默认未来 7 天)。
- 菜品:分类/SPU/SKU/规格/加料/媒资/定价 CRUD,上/下架;Mini 端可拉取门店菜单。
- 库存:SKU 库存与批次、调整/锁定/释放/售罄管理(表已具备,接口可用)。
- 自提档期:自提设置与时间窗 CRUD;Mini 端按日期查询档期。
- Mini 端基础:桌码扫码上下文(门店+桌台+公告)。
- 尚未交付的模块(前端需占位但标记阻塞):购物车、完整下单/支付/优惠、桌台账单、自配送与第三方配送抽象、预购自提核销、业务指标大盘。
- 业务关系(前端路由/权限需体现上下游约束):
- 租户 ↔ 商户:商户属于租户,租户未通过实名认证/订阅过期时,商户入驻审核需提示或限制;租户停用后商户与门店入口应灰显。
- 租户套餐/配额 ↔ 门店/员工/商品:套餐与配额决定可创建的门店数、员工数、商品数/库存操作等,前端在创建/批量操作时需展示剩余额度(调用配额校验接口),超额时阻止提交。
- RBAC ↔ 模块入口:权限码控制菜单与按钮显隐;角色模板可复制到租户,租户停用/配额不足时仍可查看权限但部分操作需禁用;商户/门店/商品等操作按钮需绑权限码,防止“看得见点不了”的体验分裂。
搭建顺序(推荐)
- 环境与基础设施:
pnpm i、配置.env的 API 基地址;axios 实例 + 拦截器(加 Authorization、全局错误/超时提示、TraceId 透传)。 - 全局框架:登录页、基础布局(侧边导航/头部/标签页)、动态路由/菜单与权限控制(基于角色模板权限码)。
- 通用组件:表格查询模板、表单/抽屉、批量操作、上传(对接文件上传 API/COS)、二维码下载、富文本/备注输入。
- 模块页面按优先级迭代(见下表);每个模块先做列表 → 详情 → 创建/编辑 → 审核/状态流转 → 导出/下载。
- 联调与观测:与 Swagger 一致的请求/响应模型,统一错误提示,必要时对长 ID 使用字符串展示;完成一模块后补充 E2E/组件级用例。
页面清单与依赖
| 模块 | 页面 | 关键功能 | 依赖 API | 优先级 |
|---|---|---|---|---|
| 认证/首页 | 登录/登出 | 账号登录、Token 缓存/续期、租户/角色选择 | Admin 鉴权接口(Swagger),权限码获取 | P0 |
| 控制台总览 | 展示租户数/门店数/商品数、待办项入口 | 后续可接统计接口(暂用静态/Mock) | P2 | |
| 系统权限 | 角色模板列表/详情 | 查看模板、权限码树、变更记录 | api/admin/v1/role-templates*(根据 RolesController 路由) |
P1 |
| 角色模板新建/编辑 | 复制模板、勾选权限、保存 | 同上 | P1 | |
| 租户初始化权限 | 选择模板批量初始化租户权限 | 角色模板复制/初始化接口 | P2 | |
| 租户管理 | 租户列表/搜索 | 分页、状态筛选、关键字搜索 | api/admin/v1/tenants GET |
P0 |
| 租户详情 | 基本信息、当前套餐/订阅、实名状态、公告/通知概览 | tenants/{id} GET |
P0 | |
| 注册租户 | 提交注册信息并初始化套餐 | tenants POST |
P1 | |
| 实名提交/审核 | 上传资料、查看审核记录、通过/驳回 | tenants/{id}/verification POST / tenants/{id}/review POST 等 |
P1 | |
| 订阅与配额 | 订阅创建/续费/升降配、配额占用校验历史 | tenants/{id}/subscriptions、tenants/{id}/quotas/check |
P1 | |
| 账单与通知 | 账单列表/详情/标记支付,公告/通知列表+已读 | tenants/{id}/billings、announcements、notifications |
P2 | |
| 审核日志 | 查看租户审核日志 | tenants/{id}/audits |
P2 | |
| 商户入驻 | 商户列表/详情 | 状态筛选、合同/证照查看、审核轨迹 | api/admin/v1/merchants GET |
P0 |
| 商户创建/编辑 | 录入基本信息、证照上传、合同录入 | merchants POST/PUT、merchants/{id}/documents、contracts |
P1 | |
| 商户审核 | 状态流转(待审/驳回/通过)、驳回原因 | merchants/{id}/review |
P1 | |
| 类目管理 | 类目列表/选择 | merchant-categories 列表接口 |
P2 | |
| 门店 | 门店列表/详情 | 基本信息、营业时间、配送区、能力开关 | stores CRUD |
P0 |
| 门店编辑 | 基础信息维护、配送区 GeoJSON、节假日 | stores PUT、stores/{id}/delivery-zones |
P1 | |
| 门店公告 | 门店公告/通知管理 | tenant-announcements (按租户/门店) |
P2 | |
| 桌码 | 区域与桌台列表 | 区域/桌码 CRUD、状态展示 | stores/{id}/tables、table-areas |
P1 |
| 批量生成与导出 | 按区域/容量生成,下载二维码 ZIP | stores/{id}/tables:batch、/export |
P1 | |
| 员工与排班 | 员工列表/编辑 | 员工信息、门店角色绑定 | store-employees CRUD |
P1 |
| 排班日历 | 未来 7 天排班视图、冲突提示、批量排班 | store-employee-shifts |
P1 | |
| 菜品与菜单 | 分类管理 | 分类 CRUD、排序 | product-categories |
P1 |
| 商品列表/详情 | SPU/SKU/规格/加料/媒资、上下架 | products、product-skus、publish/unpublish |
P0 | |
| 商品编辑 | 规格/加料组维护、媒资上传、定价 | 同上 | P1 | |
| 菜单预览 | 拉取门店全量菜单 JSON 预览 | Mini 菜单接口 api/mini/v1/stores/{id}/menu |
P2 | |
| 库存 | 库存列表 | SKU 库存、锁定/售罄状态 | inventory-items |
P1 |
| 批次管理 | 批次列表、调整、售罄 | inventory-batches |
P1 | |
| 库存调整 | 增减、预售/限购、锁定/释放记录 | inventory-adjustments、inventory-lock-records |
P2 | |
| 自提档期 | 自提设置 | 截单时间、容量、开关 | stores/{id}/pickup-settings |
P2 |
| 档期日历 | 日期选择、可用档期/余量展示 | stores/{id}/pickup-slots |
P2 | |
| 运营 | 公告/通知 | 公告列表/发布/上下架、已读状态 | tenant-announcements、tenant-notifications |
P2 |
| 账单/对账 | 账单列表、详情、标记支付 | tenants/{id}/billings |
P2 | |
| 待后端的占位 | 购物车、下单/支付、桌台账单、自配送/第三方配送、预购自提核销、业务指标报表 | 只做菜单占位或灰显入口,待后端接口就绪再实现 | 无 | P3 |
说明:表内路由根据当前 Controllers 约定推断,实际联调请以 Swagger
api/admin/swagger/index.html暴露的接口为准。
下一步行动(可直接执行)
- 初始化 axios/路由/权限骨架,完成登录页与基础布局。
- 先联调租户列表/详情/注册与商户列表/审核,确保 RBAC 与菜单权限生效。
- 依次落地门店→桌码→员工排班→商品→库存→自提档期页面,完成 Phase 1 闭环。
- 为未交付模块预留菜单占位(灰色状态 + “开发中”),避免导航缺口。
迭代执行序列(更细步骤)
- 环境与骨架(当天完成)
- 配置
.env:Admin API 基地址、超时、Token 存储键名。 - 初始化 axios 拦截器:附带 Authorization、长 ID 使用
json-bigint解析、全局错误提示、TraceId 透传。 - 路由/布局:登录页、基础布局(侧边栏 + 顶栏 + 页签),路由守卫检查 Token 与权限码。
- 配置
- 权限与菜单(P0)
- 角色模板列表/详情页:展示权限树、变更记录。
- 角色模板创建/编辑:复制模板、新增/删除权限码、保存。
- 菜单与按钮显隐:基于权限码动态生成侧栏,按钮加指令控制。
- 登录与首页(P0)
- 登录页:账号密码登录,Token 缓存与续期。
- 控制台总览:占位展示租户数/门店数/商品数、待办(实名/审核/续费),数据可先用 Mock。
- 租户管理(P0-P1)
- 租户列表:分页、状态/关键词筛选,列出套餐、实名状态、到期时间。
- 租户详情:基本信息、当前订阅、配额剩余、公告/通知概览、审核日志。
- 注册租户:表单提交注册;提交后跳转详情。
- 实名提交流程:资料上传、状态展示、提交/驳回/通过操作;显示审核记录。
- 订阅与配额:创建/续费/升降配、调用配额校验接口并展示剩余额度,超额禁止提交。
- 账单/公告/通知:账单列表/详情/标记支付,公告/通知列表和已读状态。
- 商户入驻(P0-P1)
- 商户列表:分页、状态筛选,显示所属租户、审核状态。
- 商户详情:基本信息、证照、合同、审核轨迹。
- 商户创建/编辑:信息录入、证照上传(COS 上传 API)、合同录入。
- 商户审核:待审/通过/驳回,填写驳回原因。
- 类目管理:类目列表选择,支持搜索。
- 门店管理(P0-P1)
- 门店列表:展示租户/商户、状态、能力开关(预约/排队)。
- 门店详情/编辑:基础信息、营业时间、配送区 GeoJSON、节假日;套餐/配额超额时禁用创建。
- 门店公告:公告列表/发布/上下架(若后端按租户共享则合并视图)。
- 桌码管理(P1)
- 桌码区域与桌台列表:区域 CRUD、桌台 CRUD,显示容量/状态。
- 批量生成:按区域/容量批量生成桌码。
- 二维码导出:ZIP 下载,支持按区域过滤。
- 员工与排班(P1)
- 员工列表/编辑:基础信息、门店角色绑定。
- 排班日历:未来 7 天排班视图,创建/编辑/删除,冲突提示。
- 菜品与菜单(P0-P1)
- 分类管理:列表/排序/CRUD。
- 商品列表:SPU/SKU 列表,支持状态/分类筛选、上下架。
- 商品编辑:规格/加料组、媒资上传、定价策略;保存后刷新 SKU 列表。
- 菜单预览:按门店拉取全量菜单 JSON,供验收与演示。
- 库存管理(P1-P2)
- 库存列表:SKU 库存、锁定/售罄状态,支持搜索/筛选。
- 批次管理:批次列表、批次调整(数量/售罄),展示策略(FIFO/FEFO)。
- 库存调整:增减、锁定/释放记录查看;展示幂等键与状态。
- 自提档期(P2)
- 自提设置:截单时间、容量、开关配置。
- 档期日历:选择日期,查看可用档期与剩余容量,支持新增/编辑/删除。
- 运营与账单(P2)
- 公告/通知:公告发布/上下架,通知列表与已读状态。
- 账单/对账:账单列表/详情、标记支付、导出。
- 占位与后续(P3)
- 购物车、下单/支付、桌台账单、自配送/第三方配送、预购自提核销、业务指标报表:菜单入口置灰或“开发中”,待后端接口完成后再实施。
- 联调与验收(每完成一模块即进行)
- 对照 Swagger 校验请求/响应;异常与权限错误统一提示。
- 大整数字段保持字符串展示;上传类接口校验文件大小/格式。
- 完成后补充基础用例(可用 Cypress/Playwright 或组件测试)覆盖核心流程。