由 Markdown 源文档同步生成 HTML,生成日期:2026-06-18
智能排菜系统安卓端客户端 PRD
1. Summary
智能排菜系统安卓端客户端用于餐厅现场 Pad 端操作,核心是给约 60 台称重台快速排菜,并维护当餐及未来日期的档口菜谱。系统不做菜品图片识别,不接后台账号体系,使用本地初始账号登录,通过实时接口自动同步和下发。
本 PRD 覆盖登录、功能首页、称重台排菜、设置菜谱、新增/编辑菜品、复制菜谱、系统设置、异常状态和开发评审问题。
2. Contacts
| 角色 | 负责人 | 参与内容 | 备注 |
| 产品 | 产品负责人 | 需求范围、交互口径、评审确认 | 本文档 owner |
| 设计 | 交互/视觉设计 | Pad 端高保真原型、交互状态 | 以最终版原型为准 |
| 安卓 | 客户端研发 | 页面实现、本地缓存、设备交互 | Android Pad 横屏优先 |
| 后端 | 服务端研发 | 菜品、菜谱、设备排菜接口 | 提供实时接口 |
| 设备 | 称重台/网关研发 | 下发协议、在线状态、回执 | 需确认单称/双称模型 |
| 测试 | QA | 功能、弱网、离线、回归测试 | 覆盖 60 台设备场景 |
3. Background
餐厅现场有多台称重结算台。运营人员需要在餐前或营业中看到每台称重台是否在线、当前排了什么菜、哪些称重台还未排菜,并能快速为单称或双称设备设置菜品。
除了设备排菜,餐厅还需要提前设置菜谱。菜谱按日期、餐次、档口维护,与具体称重台无关。排菜时可以从菜谱库或菜品库中选菜,也可以现场新增菜品。
当前约束如下:
| 约束 | 说明 |
| 无门店概念 | 客户端只关联当前项目,不区分门店。 |
| 初始本地账号 | 默认账号 admin,默认密码 123456,可在系统设置中本地修改。 |
| 自动同步 | 不提供手动同步按钮,保存、选择、移除等操作通过实时接口自动同步。 |
| 无审核流 | 新增菜品直接入库。 |
| 无图片识别 | 图片仅用于菜品展示,不做识别。 |
4. Objective
4.1 产品目标
| 目标 | 说明 |
| 提升排菜效率 | 运营人员可在一个 Pad 上管理约 60 台称重台。 |
| 降低学习成本 | 页面重点展示称重台名称、当前菜品、在线状态和排菜状态。 |
| 兼容单称/双称 | 单称一台设备对应一个菜;双称一台设备对应左称、右称两个菜位。 |
| 支持菜谱预配置 | 可设置当天及未来日期的餐次、档口菜谱。 |
| 支持现场补菜 | 找不到菜品时可立即新增,继续排菜或加入菜谱。 |
4.2 成功指标
| 指标 | 目标 |
| 排菜操作耗时 | 单个称位从选中到完成排菜不超过 10 秒。 |
| 未排菜发现效率 | 运营人员 3 秒内可识别未排菜设备数量和位置。 |
| 新增菜品完成率 | 新增菜品表单一次提交成功率不低于 95%。 |
| 弱网可用性 | 网络中断后操作可本地保存,恢复后自动同步成功率不低于 99%。 |
| 培训成本 | 一线运营人员 10 分钟内可独立完成排菜和设置菜谱。 |
5. Market Segments
| 用户 | 主要任务 | 痛点 |
| 现场运营人员 | 餐前排菜、营业中换菜、取消排菜 | 设备多,容易漏排;双称左右位容易混淆。 |
| 店长 | 维护当餐及未来日期菜谱 | 菜谱要按日期、餐次、档口设置,重复维护成本高。 |
| 实施/运维人员 | 配置项目、调试设备、处理弱网 | 需要快速设置配置链接、换肤、字号、密码。 |
6. Value Propositions
| 价值 | 用户收益 |
| 一屏掌握设备状态 | 每台称重台显示名称、在线状态、当前菜品、是否未排菜。 |
| 操作更少 | 选择菜品后自动保存和下发,不需要额外同步。 |
| 减少左右称误操作 | 双称卡片明确展示左称、右称,点击哪个称位就排哪个称位。 |
| 菜谱与排菜解耦 | 菜谱用于餐前计划,排菜用于设备现场执行,职责清晰。 |
| 现场补菜不中断 | 新增菜品使用统一右侧抽屉,名称必填,价格和图片可后补。 |
7. Solution
7.1 信息架构
flowchart TD
A["登录页"] --> B["功能首页"]
B --> C["排菜"]
B --> D["设置菜谱"]
B --> E["系统设置"]
C --> C1["称重台列表"]
C --> C2["排菜右侧抽屉"]
C2 --> C3["菜谱库/菜品库搜索"]
C2 --> C4["新增菜品抽屉"]
D --> D1["日期/餐次/档口"]
D --> D2["当前菜谱列表"]
D --> D3["添加菜品到菜谱抽屉"]
D --> D4["新增/编辑菜品抽屉"]
D --> D5["复制菜谱抽屉"]
E --> E1["配置链接"]
E --> E2["修改密码"]
E --> E3["换肤/字号"]
E --> E4["退出登录"]
7.2 登录
| 编号 | 需求 | 优先级 |
| LOGIN-01 | 系统启动后先进入登录页。 | P0 |
| LOGIN-02 | 默认账号为 admin,默认密码为 123456。 | P0 |
| LOGIN-03 | 账号密码错误时提示“账号或密码错误,请重新输入”。 | P0 |
| LOGIN-04 | 登录页提供“忘记密码”,点击后提示联系管理员或实施人员重置。 | P1 |
| LOGIN-05 | 登录成功后进入功能首页。 | P0 |
7.3 功能首页
| 编号 | 需求 | 优先级 |
| HOME-01 | 首页展示欢迎语、日期、星期、餐段和天气。 | P0 |
| HOME-02 | 首页提供两个主入口:排菜、设置菜谱。 | P0 |
| HOME-03 | 顶部提供“功能首页”“系统设置”“当前用户”入口。 | P0 |
| HOME-04 | 在任何主页面点击“功能首页”都返回首页。 | P0 |
| HOME-05 | 点击“系统设置”打开系统设置弹窗。 | P0 |
7.4 称重台排菜
7.4.1 列表展示
| 编号 | 需求 | 优先级 |
| ARR-01 | 排菜页左侧展示称重台列表,目标支持约 60 台。 | P0 |
| ARR-02 | 卡片展示称重台名称、在线/离线状态、当前菜品名称。 | P0 |
| ARR-03 | 单称设备的菜品图片和名称上下居中展示。 | P0 |
| ARR-04 | 双称设备分为左称、右称两个区域,分别展示菜品或未排菜。 | P0 |
| ARR-05 | 未排菜区域展示“暂未排菜”。 | P0 |
| ARR-06 | 离线设备展示“离线,恢复后可排菜”。 | P0 |
| ARR-07 | 顶部筛选包含:全部、在线、离线、未排菜。 | P0 |
| ARR-08 | 不在称重台卡片底部放“更换/排菜”按钮,点击卡片或称位进入排菜。 | P0 |
7.4.2 右侧排菜抽屉
| 编号 | 需求 | 优先级 |
| ARR-09 | 点击未排菜称位或已排菜称位,右侧推出排菜抽屉。 | P0 |
| ARR-10 | 右侧抽屉打开时,左侧列表被挤压而不是被覆盖;正常一行最多 4 个卡片,挤压后一行最多 3 个卡片。 | P0 |
| ARR-11 | 抽屉可通过右上角关闭按钮或点击空白区域关闭。 | P0 |
| ARR-12 | 抽屉顶部展示当前称重台名称。 | P0 |
| ARR-13 | 抽屉不重复展示左右称切换区域,当前选中称位由左侧卡片状态体现。 | P0 |
| ARR-14 | 抽屉顶部提供搜索框和“新增菜品”按钮。 | P0 |
| ARR-15 | 搜索框可同时搜索菜谱库和菜品库。 | P0 |
| ARR-16 | 菜品列表展示菜品图片、名称、单价,如 12.8元/100g。 | P0 |
| ARR-17 | 选择菜品后自动保存当前称位排菜并自动下发。 | P0 |
| ARR-18 | 当前称位已有菜品时,选择新菜品需要二次确认替换。 | P0 |
7.4.3 取消排菜
| 编号 | 需求 | 优先级 |
| ARR-19 | 已排菜的左侧称位卡片上显示取消排菜入口。 | P0 |
| ARR-20 | 取消排菜按钮放在左侧称位卡片内,不放在右侧抽屉。 | P0 |
| ARR-21 | 点击取消排菜后立即取消当前称位排菜,并自动同步下发。 | P0 |
| ARR-22 | 若设备离线或网络弱,取消操作本地保存,恢复后自动下发。 | P0 |
7.5 设置菜谱
7.5.1 日期、餐次、档口
| 编号 | 需求 | 优先级 |
| REC-01 | 设置菜谱页用于维护某日期、某餐次、某档口的菜谱,与称重台无关。 | P0 |
| REC-02 | 支持当天及未来日期设置,历史日期不可编辑。 | P0 |
| REC-03 | 日期选择按周展示,可通过左右箭头切换上一周/下一周。 | P0 |
| REC-04 | 日期行应尽量小,主空间留给菜品列表。 | P0 |
| REC-05 | 餐次包含早餐、午餐、晚餐。 | P0 |
| REC-06 | 档口支持下拉选择,例如热菜档、面档、小吃档、汤粥档、凉菜档。 | P0 |
| REC-07 | 页面顶部不需要额外餐段选择框。 | P0 |
7.5.2 当前菜谱列表
| 编号 | 需求 | 优先级 |
| REC-08 | 当前菜谱列表展示已选菜品数量。 | P0 |
| REC-09 | 菜品卡片展示菜名、分类、价格。 | P0 |
| REC-10 | 一行展示 5 到 6 个菜品,卡片间距保持一致。 | P0 |
| REC-11 | 每张菜品卡片提供“移除”按钮。 | P0 |
| REC-12 | 点击“移除”后直接从当前菜谱删除,并自动发布。 | P0 |
| REC-13 | 点击菜品卡片打开编辑菜品信息抽屉。 | P0 |
| REC-14 | 编辑后保存,当前菜谱自动发布。 | P0 |
7.5.3 操作按钮
| 编号 | 需求 | 优先级 |
| REC-15 | 操作按钮统一放在列表上方右侧一行。 | P0 |
| REC-16 | 操作按钮包含:复制菜谱、添加菜品到菜谱、新增菜品。 | P0 |
| REC-17 | 不提供“发布”按钮;选完、移除、新增、编辑后自动发布。 | P0 |
| REC-18 | 三个按钮风格统一,主按钮用于“添加菜品到菜谱”。 | P1 |
7.5.4 添加菜品到菜谱
| 编号 | 需求 | 优先级 |
| REC-19 | 点击“添加菜品到菜谱”打开右侧抽屉,左侧内容被挤压。 | P0 |
| REC-20 | 抽屉顶部提供搜索框。 | P0 |
| REC-21 | 搜索支持模糊搜索、全拼搜索、首字母搜索。 | P0 |
| REC-22 | 支持筛选:全部、已选、热菜、素菜、肉类、最近用过。 | P0 |
| REC-23 | 已在当前菜谱中的菜品展示“已选”和勾选状态。 | P0 |
| REC-24 | 未选菜品展示可添加状态。 | P0 |
| REC-25 | 点击底部“加入已选菜品”后加入当前菜谱并自动发布。 | P0 |
7.5.5 新增与编辑菜品
| 编号 | 需求 | 优先级 |
| DISH-01 | 新增菜品在排菜页和设置菜谱页统一使用右侧抽屉。 | P0 |
| DISH-02 | 新增字段包含:菜品名称、价格、每多少克、图片。 | P0 |
| DISH-03 | 菜品名称必填,价格和图片非必填。 | P0 |
| DISH-04 | “每多少克”默认 100g,可输入。 | P0 |
| DISH-05 | 价格输入框单位为“元”,克重输入框单位为“g”。 | P0 |
| DISH-06 | 输入价格和克重后展示单价效果,例如 12.8元/100g。 | P0 |
| DISH-07 | 图片支持拍照和从相册选择。 | P0 |
| DISH-08 | 编辑菜品信息时可修改名称、价格、克重和图片。 | P0 |
| DISH-09 | 从设置菜谱进入编辑时,保存后当前菜谱自动发布。 | P0 |
7.6 复制菜谱
| 编号 | 需求 | 优先级 |
| COPY-01 | 点击“复制菜谱”打开右侧抽屉。 | P0 |
| COPY-02 | 支持按天复制和按周复制两个模式。 | P0 |
| COPY-03 | 按天复制包含:来源日期、目标日期、包含餐次。 | P0 |
| COPY-04 | 按天复制的包含餐次支持:全部、早餐、午餐、晚餐,默认全部。 | P0 |
| COPY-05 | 按周复制的日期字段为:来源周日期、目标周日期。 | P0 |
| COPY-06 | 选择来源周日期或目标周日期时,交互体现选择的是该日期所在的周。 | P0 |
| COPY-07 | 周选择下拉按一周一组展示,例如 2026/06/08 - 2026/06/14。 | P0 |
| COPY-08 | 按周复制不在日期字段下方展示额外说明文字。 | P0 |
| COPY-09 | 按周复制的包含餐次与按天复制一致,支持全部、早餐、午餐、晚餐,默认全部。 | P0 |
| COPY-10 | 点击“保存当前设置”后执行复制并提示成功。 | P0 |
7.7 系统设置
| 编号 | 需求 | 优先级 |
| SET-01 | 系统设置可从顶部导航打开。 | P0 |
| SET-02 | 支持输入配置链接。 | P0 |
| SET-03 | 支持修改本地登录密码,需输入原密码和新密码。 | P0 |
| SET-04 | 支持换肤:蓝色、绿色、橙色。 | P1 |
| SET-05 | 支持字号:小、中、大。 | P1 |
| SET-06 | 支持退出登录,退出后返回登录页。 | P0 |
| SET-07 | 系统设置不展示项目关联列表,只保留客户端参数。 | P0 |
7.8 数据字段
称重台
| 字段 | 类型 | 必填 | 说明 |
| scaleId | string | 是 | 称重台 ID |
| scaleName | string | 是 | 称重台名称 |
| scaleType | enum | 是 | single 或 dual |
| onlineStatus | enum | 是 | online 或 offline |
| slots | array | 是 | 单称为 main,双称为 left/right |
| currentDishId | string | 否 | 当前称位菜品 |
| pendingStatus | enum | 否 | normal、pending、failed |
| lastSyncTime | datetime | 否 | 最近同步时间 |
菜品
| 字段 | 类型 | 必填 | 说明 |
| dishId | string | 是 | 菜品 ID |
| dishName | string | 是 | 菜品名称 |
| category | string | 否 | 分类 |
| price | number | 否 | 价格 |
| unitWeight | number | 否 | 计价克重,默认 100 |
| imageUrl | string | 否 | 菜品图片 |
| pinyin | string | 否 | 全拼搜索字段 |
| initials | string | 否 | 首字母搜索字段 |
菜谱
| 字段 | 类型 | 必填 | 说明 |
| recipeDate | date | 是 | 菜谱日期 |
| meal | enum | 是 | 早餐、午餐、晚餐 |
| stallId | string | 是 | 档口 ID |
| dishIds | array | 是 | 菜品 ID 列表 |
| updatedAt | datetime | 是 | 最近更新时间 |
| publishStatus | enum | 是 | published、pending、failed |
7.9 接口与同步
| 场景 | 接口方向 | 要求 |
| 获取称重台列表 | 客户端 -> 服务端 | 返回设备状态、单称/双称、当前排菜。 |
| 监听设备状态 | 服务端/设备 -> 客户端 | 在线、离线状态需实时或准实时更新。 |
| 排菜下发 | 客户端 -> 服务端/设备 | 选择菜品后自动下发,接口需幂等。 |
| 取消排菜 | 客户端 -> 服务端/设备 | 点击取消后自动下发空菜品状态。 |
| 新增菜品 | 客户端 -> 服务端 | 名称必填;图片可异步上传。 |
| 编辑菜品 | 客户端 -> 服务端 | 支持名称、价格、克重、图片更新。 |
| 设置菜谱 | 客户端 -> 服务端 | 添加、移除、编辑后自动发布。 |
| 复制菜谱 | 客户端 -> 服务端 | 支持按天和按周复制,包含餐次范围。 |
7.10 异常与状态
| 异常 | 处理 |
| 网络较弱 | 页面提示“网络较弱,变更将先本地保存,恢复后自动下发”。 |
| 设备离线 | 称重台显示离线;可记录待下发操作,恢复后自动同步。 |
| 搜索无结果 | 展示空状态,并提供新增菜品入口。 |
| 菜品名称为空 | 不允许保存,提示输入菜品名称。 |
| 克重为空 | 按默认 100g 处理。 |
| 价格为空 | 允许保存,价格展示为待补充。 |
| 替换已有排菜 | 需二次确认,避免误操作。 |
| 复制目标已有菜谱 | 需确认覆盖规则,见评审问题。 |
| 同步失败 | 标记为待处理或失败,允许自动重试。 |
8. Release
8.1 V1.0 范围
| 模块 | 范围 |
| 登录 | 初始账号、忘记密码提示、本地修改密码。 |
| 首页 | 排菜、设置菜谱入口,系统设置入口。 |
| 排菜 | 60 台称重台列表、单称/双称、筛选、右侧抽屉排菜、取消排菜、弱网暂存。 |
| 菜谱 | 日期周切换、餐次、档口、当前菜谱、添加菜品、新增菜品、编辑菜品、移除、自动发布。 |
| 复制菜谱 | 按天复制、按周复制、包含餐次。 |
| 系统设置 | 配置链接、密码、换肤、字号、退出登录。 |
8.2 暂不纳入 V1.0
| 范围 | 说明 |
| 图片识别 | 不做菜品 AI 识别。 |
| 门店/组织体系 | 本期无门店概念。 |
| 菜品审核 | 新增后直接入库。 |
| 后台账号体系 | 不与后台账号联动。 |
| 复杂权限 | 暂不区分多角色权限。 |
9. 评审前待确认问题
| 编号 | 问题 | 建议 |
| Q1 | 排菜选择菜品后是否完全无确认自动保存? | 未排菜直接保存;已有菜品需替换确认。 |
| Q2 | 取消排菜是否需要二次确认? | 建议不二次确认,但需 toast 提示并可在短时间内撤销,研发评审确认。 |
| Q3 | 菜谱编辑菜品时,价格是改全局菜品价还是只改当前菜谱价? | 建议本期改全局菜品价;如要单菜谱价,需增加字段。 |
| Q4 | 菜谱移除后是否可恢复? | 建议自动发布,短时间内提供撤销提示。 |
| Q5 | 复制菜谱目标已有菜品时是覆盖、合并还是跳过? | 建议默认合并去重,若目标已有菜谱则弹出确认。 |
| Q6 | 按周复制的周起始日是否固定周一? | 建议固定周一到周日。 |
| Q7 | 菜品分类是否由服务端维护? | 建议服务端维护分类,客户端只展示和筛选。 |
| Q8 | 称重台在线状态刷新方式是 WebSocket、轮询还是 MQTT? | 需后端和设备研发确认。 |
| Q9 | 离线待下发的冲突处理规则是什么? | 建议以最后一次操作为准,并保留操作日志。 |
| Q10 | 图片上传失败时是否允许先保存菜品? | 建议允许,图片后补。 |
10. 验收标准
| 场景 | 验收点 |
| 登录 | 使用默认账号可登录;错误账号有提示;忘记密码有提示。 |
| 首页 | 排菜和设置菜谱入口可进入;功能首页可返回;系统设置可打开。 |
| 排菜列表 | 60 台称重台滚动流畅;在线、离线、未排菜筛选正确。 |
| 单称排菜 | 点击单称卡片可打开抽屉;选择菜品后自动保存并展示。 |
| 双称排菜 | 左称、右称可分别排菜,互不影响。 |
| 取消排菜 | 已排菜称位左侧出现取消入口;点击后菜品清空并自动同步。 |
| 新增菜品 | 名称必填;价格和图片可为空;价格和克重显示单位;展示单价效果。 |
| 设置菜谱 | 可切换日期周、餐次、档口;添加、移除、编辑后自动发布。 |
| 添加菜品 | 搜索支持中文模糊、全拼、首字母;已选和可选状态清晰。 |
| 复制菜谱 | 按天/按周复制可保存;包含餐次支持全部、早餐、午餐、晚餐。 |
| 弱网 | 网络中断时操作本地保存;恢复后自动下发。 |
| 设置 | 配置链接、密码、主题、字号、退出登录可操作。 |