鼎味肉市小程序新原型:用户动线
当前真相:本文件与同目录
stories.md、scenario-model.json、cases.json和 HTML 共同构成顾客小程序唯一当前真相包。旧版动线保留在上一级customer-miniapp/作为历史输入,不再追加当前产品行为。本轮把购买主路径重新收敛为“选 SKU → 一页确认 → 原生支付 → 结果”。当前 HTML 保留
cart.html(可选待选内容预览)与checkout.html(唯一确认页)两个职责清晰的路由;真实微信支付、回调校验和服务端幂等仍是实现阶段工作。同目录的
scenario-model.json、cases.json和fixture-contract.json已同步当前 CASE 的可见路径、状态边界和待选内容语义;支付契约、计划持久化和后端幂等仍未实现,不把静态覆盖文件当成线上实现证据。
0. 购买路径的总原则
0.1 页面跳转预算
“跳转”只统计用户主动进入的新全屏页面;底部抽屉、地址选择器和微信原生支付浮层不算新的业务页面。购买路径的预算如下:
| 起点 | 目标动线 | 用户主动跳转 | 说明 |
|---|---|---|---|
| 买肉页,直接加入 | buy → 订单确认 → 原生支付 → 支付结果 |
1 | 买肉页是实际商品列表,不经过完整购物车页 |
| 首页开始购买 | home → buy → 订单确认 → 原生支付 → 支付结果 |
2 | 首页只负责分流,不承担商品比较 |
| 买肉页,先看详情 | buy → product-detail → 订单确认 → 原生支付 → 支付结果 |
2 | 详情是可选确认层,多一次跳转是合理成本 |
| 计划采购 | plan → 订单确认 → 原生支付 → 支付结果 |
1 | 计划清单直接生成采购快照,不再先进入购物车 |
| 地址管理 | 我的 → 地址管理 |
1 | 这是服务任务,不嵌入每次购买的必经路由 |
| 支付后查看订单 | 支付结果 → 订单详情 |
1 | 这是购买完成后的服务动作,不计入购买主路径 |
设计目标不是消灭所有页面,而是把页面只放在“用户必须做出新决策”的地方:商品选择、最终确认和支付。购物车预览、地址选择、订单详情都不能在主路径中制造额外的决策层。
0.2 目标购买层级
商品列表 / 计划清单
↓ 选购完成
统一订单确认页:商品、数量、金额、地址、时段、Quote
↓ 唯一主动作
微信原生支付浮层
↓ 回调
支付结果页:成功 / 待支付 / 失败或取消
cart.html的职责降为“待选内容的快速预览”:在买肉页或计划页以抽屉/轻量层承载,不作为每次购买的必经全屏页面。checkout.html的职责升级为“统一订单确认页”:自由选购和计划采购都进入同一页面,商品行、金额、地址和配送时段在这里一次核对。address.html只承担地址管理;确认页内使用地址选择器或轻量编辑层,不把顾客送去一个完整地址页再返回。order-success.html是支付回调后的结果承载,不是顾客还要完成一次决策的结算页;order-detail.html只作为支付后的可选服务入口。- 当前原型用
checkout-payment打开原生样式支付模拟层,再由payment-confirm进入order-success.html;真实微信支付接入、回调校验和服务端幂等仍属于实现阶段,不把模拟结果当成线上支付证据。
1. 模块范围与路径目录
| 路径 ID | 用户目标 / 场景 | 类型 | 起点 | 终点 | Story / CASE | 原型区域 | source_refs | Spec |
|---|---|---|---|---|---|---|---|---|
| PATH-REDESIGN-HOME-DOORS | 首页完成“自己选 / 帮我安排”分流 | happy | home | buy / plan | S-001 / CASE-REDESIGN-001 | home.html | REQ-001/FR-019 | planned |
| PATH-REDESIGN-SESSION-GATE | 会话失效后关闭写入口 | permission | states | denied | S-007 / CASE-REDESIGN-002 | states.html | REQ-003/FR-004 | planned |
| PATH-REDESIGN-WEEKLY-PLAN | 配置一周餐次、保存菜谱、汇总 SKU 并进入统一确认 | happy | plan | checkout | S-003 / CASE-REDESIGN-003 | basket.html | REQ-003/FR-006 | planned |
| PATH-REDESIGN-PLAN-EMPTY | 无计划时安排第一顿或新建菜谱 | empty | plan | plan-recipe / home / buy | S-003 / CASE-REDESIGN-004 | basket.html / states.html | REQ-003/FR-006 | planned |
| PATH-REDESIGN-CART-CHECKOUT | 从待选内容预览进入统一确认 | optional | cart-preview | checkout | S-004 / CASE-REDESIGN-005 | cart.html | REQ-003/FR-010 | planned |
| PATH-DESIGN-PURCHASE-CONFIRM | 自选或计划内容在一页核对并发起支付 | happy | buy / plan / cart-preview | checkout | S-004 / DESIGN-STORY-PAYMENT | REQ-003/FR-010 | design-only | |
| PATH-DESIGN-CHECKOUT-CONFIRM | 核对商品、地址、配送时段和 Quote | happy / boundary | checkout | native-payment | S-004 / DESIGN-STORY-PAYMENT | REQ-003/FR-010 | design-only | |
| PATH-DESIGN-PAYMENT-RESULT | 处理支付成功、待支付、失败或取消 | happy / error | native-payment | order-success / checkout | DESIGN-STORY-PAYMENT | REQ-003/FR-010 | design-only | |
| PATH-DESIGN-ORDER-RECEIPT | 查看支付回执并选择后续动作 | happy | order-success | order-detail / home | DESIGN-STORY-PLAN-ORDER | REQ-003/FR-010 | design-only | |
| PATH-DESIGN-ORDER-DETAIL | 查看订单状态、履约进度和追溯边界 | happy / boundary | orders | order-detail / help | S-006 / DESIGN-STORY-PLAN-ORDER | REQ-003/FR-007/FR-010 | design-only | |
| PATH-DESIGN-ADDRESS-RETURN | 从服务入口管理地址并返回原页面 | happy / boundary | profile / address | original operation | S-006 | REQ-003/FR-007 | design-only | |
| PATH-REDESIGN-CART-UNKNOWN | UNKNOWN 时查询原操作 | boundary | states | original operation query | S-007 / CASE-REDESIGN-006 | REQ-003/FR-010 | planned | |
| PATH-REDESIGN-TRACE-SUMMARY | 商品详情与周期页展示可确认事实 | happy | product-detail / subscription | summary | S-002 / CASE-REDESIGN-007 | REQ-001/FR-021 | planned | |
| PATH-REDESIGN-TRACE-BOUNDARY | 履约前隐藏实际批次 | boundary | subscription | hidden until fulfillment | S-005 / CASE-REDESIGN-008 | REQ-003/FR-010 | planned | |
| PATH-REDESIGN-OFFLINE | 离线暂停写操作 | error | states | offline | S-007 / CASE-REDESIGN-009 | REQ-003/FR-009 | planned | |
| PATH-REDESIGN-NOT-READY | 未就绪不展示业务数据 | error | states | not-ready | S-007 / CASE-REDESIGN-010 | REQ-002/FR-005 | planned | |
| PATH-REDESIGN-SUBSCRIPTION-ACTIVE | 查看当前合约与下一次窗口 | happy | subscription | future-cycle settings | S-005 / CASE-REDESIGN-011 | REQ-001/FR-020 | planned | |
| PATH-REDESIGN-SUBSCRIPTION-EMPTY | 无合约时不伪造配送事实 | permission | subscription | sign-in / options | S-005 / CASE-REDESIGN-012 | REQ-003/FR-004 | planned | |
| PATH-REDESIGN-ACCOUNT-SERVICE | 查看本人服务入口 | happy | profile | service rows | S-006 / CASE-REDESIGN-013 | REQ-003/FR-007 | planned | |
| PATH-REDESIGN-ACCOUNT-GATE | 匿名访问受保护服务被拒绝 | permission | profile | sign-in gate | S-006 / CASE-REDESIGN-014 | REQ-003/FR-004 | planned | |
| PATH-REDESIGN-REPEAT | 有完成订单时发起复购建议 | happy / boundary | profile | buy | S-008 / CASE-REDESIGN-015 | REQ-009/FR-008 | planned | |
| PATH-REDESIGN-REPEAT-ABSENT | 无历史时隐藏复购入口 | permission | profile | profile | S-008 / CASE-REDESIGN-016 | REQ-003/FR-004 | planned |
1.1 设计阶段扩展路径(暂不计入当前场景覆盖)
| 路径 ID | 用户目标 / 场景 | 起点 | 终点 | 对应故事 | 状态 |
|---|---|---|---|---|---|
| PATH-DESIGN-RECIPE-SAVE | 上传照片、写配方、确认 SKU 和份量并保存 | plan / profile | my-recipes | DESIGN-STORY-RECIPE-SAVE | design-only |
| PATH-DESIGN-RECIPE-MANAGE | 从我的页预览或计划页顶部进入完整菜谱管理 | profile / plan | my-recipes | DESIGN-STORY-RECIPE-SAVE | design-only |
| PATH-DESIGN-PLAN-RESTORE | 离开后恢复家庭计划和已保存菜谱 | home / plan | plan | S-003 | design-only |
| PATH-DESIGN-PLAN-ORDER | 完成一周计划并进入统一订单确认 | plan | checkout | DESIGN-STORY-PLAN-ORDER | design-only |
| PATH-DESIGN-PLAN-SYNC | 计划变更后更新采购快照再确认 | plan / checkout | checkout | DESIGN-STORY-PLAN-ORDER | design-only |
| PATH-DESIGN-PLAN-REUSE | 已下单计划复制到下一周 | plan / order | next-week-plan | DESIGN-STORY-PLAN-ORDER | design-only |
| PATH-DESIGN-PAYMENT-RECOVERY | 支付取消、失败或待支付后恢复 | checkout / result | checkout / orders | DESIGN-STORY-PAYMENT | design-only |
2. PATH 详情锚点
PATH-REDESIGN-HOME-DOORS
首页 → .intent-bar 的 home-self-select / .home-focus 的 home-planner;终点分别是 buy.html / basket.html。已登录且有常买记录时,.quick-section 的常买 SKU 进入 buy.html#<sku-detail>,仍由商品行完成加入,不把快捷入口误画成已下单。
PATH-REDESIGN-WEEKLY-PLAN
计划页当前周状态 → plan-day-* 时间轴切换 → plan-period-* 午餐/晚餐切换 → 选中日 plan-meal-slot-* → plan-recipe-picker 选择或新建菜谱 → 计划自动保存 → plan-shopping-list 核对 SKU 需求 → plan-order-confirm 进入统一订单确认页 → 原生支付。
计划清单是“本周需要什么”的事实汇总,不是第二个购物车;进入确认页后只生成本次采购快照,不直接修改计划历史。
PATH-REDESIGN-PLAN-EMPTY
空计划说明 → plan-day-* → plan-meal-add-* → plan-recipe-picker → 选择已保存菜谱或上传照片、写配方、确认 SKU 和份量;如果顾客暂时不做计划,再由 empty-home 或 empty-buy 回到其他入口。不填充假计划。
PATH-DESIGN-RECIPE-SAVE
计划页空餐次 → “新建菜谱” → 上传照片 → 写配方文字 → 确认 SKU 和份量 → 保存到“我的菜谱” → 留在当前选择流程 → 安排到当前餐次。保存菜谱只产生可复用记录,不创建购物车、订单或支付事实。
PATH-DESIGN-PLAN-RESTORE
首页“继续本周计划”或计划 Tab → 恢复最近家庭计划 → 恢复菜谱记录、餐次和 SKU 汇总 → 从上次停留的空餐次或已安排餐次继续。
PATH-DESIGN-PLAN-ORDER
计划达到完成条件 → 主 CTA 从“继续安排”切换为“按本周计划下单” → 锁定计划版本 → 按 SKU 和份量生成采购快照 → 检查 SKU、地址和配送能力 → 直接进入 checkout.html 统一确认 → 原生支付。中间不再插入完整购物车页面。
PATH-DESIGN-PLAN-SYNC
已生成采购快照后顾客修改计划 → 计划状态变为“需要同步” → 重新按 SKU 汇总 → 重新检查 Quote 和配送能力 → 用户确认后再进入订单确认。不能静默覆盖已经生成的采购内容。
PATH-REDESIGN-CART-CHECKOUT
购物车入口只打开待选内容预览;页面由一张可编辑商品卡和底部“合计 + 去确认”组成。顾客可以编辑数量或点击唯一的 cart-checkout 进入 checkout.html;来源上下文只决定返回/继续入口,不在顾客画布中增加来源卡、流程说明或确认范围。该路径保留用于“我想先看已选内容”的辅助场景,但不再是买肉和计划采购的必经路径。
PATH-DESIGN-PURCHASE-CONFIRM
buy.html 或 basket.html 完成选择 → checkout.html 统一订单确认页。确认页按“配送卡、订单明细卡、支付卡”的顺序只编排三组订单信息,不在顾客画布里解释来源或设计理由:
- 配送卡:地址和配送时段置顶;点击后从底部选择,主页面各自只显示一个最终值;
- 订单明细卡:商品行只展示规格、数量和行金额,配送费与唯一应付合计在卡片底部收束;
- 支付卡:只确认微信支付方式;底部固定区只保留“确认并支付”动作,不重复渲染总额。
进入确认页不代表订单已创建、已支付或已绑定实际批次;数量、地址或时段变化都要重新校验 Quote。
PATH-DESIGN-CHECKOUT-CONFIRM
统一确认页 → 地址、时段、商品、数量和 Quote 均有效 → 点击 checkout-payment → 调用微信原生支付。确认页不再先经过一个购物车页面,再进入第二个只显示配送信息的页面;来源说明和实现解释留在评审侧栏。地址与时段通过底部选择层编辑,商品数量在确认页只读,配送时段和订单金额各自只有一个主页面事实位置;支付浮层仅作为后续平台确认层。
PATH-DESIGN-PAYMENT-RESULT
原生支付回调分为三种结果:
- 成功:进入
order-success.html,显示订单号、配送时段和后续查看入口; - 取消 / 失败:回到确认页,保留已选内容和失败原因,允许重新发起,但不创建第二笔订单;
- 待确认:显示“支付状态确认中”,使用原
operationId查询,不重复提交。
支付结果页不强迫顾客马上进入订单详情;“查看订单”和“回首页”是两个后续动作。
PATH-DESIGN-ADDRESS-RETURN
从“我的”进入 address.html?from=profile 管理配送地址;从统一确认页只使用地址选择器或轻量编辑层。确认页不把顾客送去完整地址页再返回,避免 checkout → address → checkout 的额外双跳。地址保存成功后回到确认页并重新校验配送范围与时段。
PATH-DESIGN-ORDER-RECEIPT
order-success.html → success-view-order → order-detail.html;也可以回首页继续浏览。订单详情承载订单快照、配送进度和履约后的追溯事实,不成为支付链路的必经页。
PATH-DESIGN-ORDER-DETAIL
profile.html → profile-orders → orders.html → order-row-* → order-detail.html;订单详情遇到包裹问题再进入 help.html#after-sales。订单详情只读取已经产生的订单快照,不把计划草稿或公开供给摘要写成履约事实。
PATH-REDESIGN-CART-UNKNOWN
UNKNOWN 说明 → unknown-query,使用原 operationId 查询,不生成第二笔订单、支付或写命令。
PATH-REDESIGN-TRACE-SUMMARY / PATH-REDESIGN-TRACE-BOUNDARY
商品目录和详情显示标准规格、固定价格与公开供给摘要;周期配送页显示计划供给边界。实际 Lot、包裹和检疫事实只能在履约后通过订单/包裹查看。
PATH-REDESIGN-OFFLINE / PATH-REDESIGN-NOT-READY
状态页 state-offline → offline-retry,离线时暂停写操作;状态页 state-not-ready → not-ready-home,不展示假价格、假库存、假订单或支付成功。
PATH-REDESIGN-SUBSCRIPTION-ACTIVE / PATH-REDESIGN-SUBSCRIPTION-EMPTY
周期配送页展示当前合约、下一次窗口和未来周期管理边界;无合约时只展示说明/方案入口,不伪造当前配送事实。
PATH-REDESIGN-ACCOUNT-SERVICE / PATH-REDESIGN-ACCOUNT-GATE
我的页 → 订单、地址、菜谱和唯一的帮助与规则入口。匿名态只读公开说明,受保护服务在认证后重新读取;我的页不承担下单确认。
3. 导航与页面职责
| 入口 | 路由 | 页面只负责什么 | 离开页面的主要动作 |
|---|---|---|---|
| 首页 | /pages/customer/home |
判断当前意图,给出两条主路,并为有记录的顾客提供常买 SKU 快速下单 | 按部位找肉、开始做计划、快速下单常买 SKU、查看热度菜谱 |
| 买肉 | /pages/customer/buy |
按分类展示可购买 SKU,并提供详情和加入动作 | 切换分类、看商品详情、加入待选内容、打开购物车预览 |
| 商品详情 | /pages/customer/product-detail |
确认单个 SKU 的规格、切法和固定价 | 加入待选内容、返回买肉 |
| 计划 | /pages/customer/basket |
编辑一周餐次、保存/复用菜谱、汇总 SKU 并发起计划下单 | 安排一顿、新建/选择菜谱、核对 SKU、进入统一确认 |
| 购物车预览 | /pages/customer/cart |
在需要时快速查看和编辑待选内容;不是购买必经页 | 返回浏览、进入统一确认 |
| 订单确认 | /pages/customer/checkout |
一次核对商品、数量、Quote、地址和配送时段,并发起支付 | 选择地址/时段、确认并支付;商品改量返回来源页 |
| 支付结果 | /pages/customer/order-success |
承载支付回调结果和后续入口 | 查看订单、回首页 |
| 我的订单 | /pages/customer/orders |
按时间查看订单状态和摘要 | 进入订单详情 |
| 订单详情 | /pages/customer/order-detail |
查看订单快照、配送进度和履约后追溯边界 | 查看售后帮助、查看地址快照 |
| 地址管理 | /pages/customer/address |
管理本人配送地址;不成为每次下单的必经页 | 保存地址、返回来源页 |
| 周期配送 | /pages/customer/subscription |
查看当前合约和未来周期边界 | 管理未来周期 |
| 我的 | /pages/customer/profile |
身份、Top 2 菜谱预览、地址、订单,以及一个帮助与规则入口 | 管理全部菜谱、查看帮助与规则或进入订单/地址 |
| 我的菜谱 | /pages/customer/recipes |
查看、创建、编辑、移除和复用家庭菜谱记录 | 排入计划、返回我的 |
| 帮助与规则 | /pages/customer/help |
集中承载售后、配送、称重和追溯说明 | 回到我的或进入订单上下文 |
底部固定五个 Tab:首页 / 买肉 / 计划 / 订阅 / 我的。计划固定在中间第三位,并以动作色高亮、抬高图标和更强文字权重强调;购物车不是第六个 Tab,而是待选内容的辅助入口。
4. 主路径
F-001 自选采购:从商品列表到支付
目标路径:home.html → buy.html → 选择分类与 SKU → 直接加入待选内容 → 打开购物车预览(可选)或直接进入 checkout.html → 核对商品、地址、配送时段和 Quote → 微信原生支付 → order-success.html。
从买肉页开始时,顾客只需一次主动页面跳转即可进入统一确认页;从首页开始时,买肉页是唯一的商品浏览页。商品详情是可选路径,不应被强制插入每个 SKU 的购买过程。
- 成功条件:顾客能在商品目录中选分类、识别 SKU、打开详情或直接加入,并看到数量反馈;确认页只出现一个“确认并支付”主动作。
- 事实约束:列表与详情显示标准规格固定价;确认页显示服务端 Quote;商品目录不提前承诺实际批次。
- 交互约束:商品图片/名称详情入口与加入按钮是两个明确动作;购物车预览可编辑,但不再制造一层必经结算。
- 支付约束:原生支付取消、失败或待确认时回到原确认上下文;重试必须复用原操作,不生成第二笔订单。
- 状态边界:目录加载中不填充假商品;商品下架、价格缺失、供给不可用或配送地址失效时,关闭确认动作并保留原因。
- 回流:从确认页返回买肉时,分类、已选数量和当前地址上下文不丢失。
F-002 开始做计划:从家庭菜谱到一周采购
home.html → basket.html → 查看当前周与七日时间轴 → 选择日期和午餐/晚餐 → 安排或替换菜谱 → 计划自动保存 → 展开采购清单核对 SKU → 按本周计划下单 → 直接进入 checkout.html → 核对 Quote、地址和配送时段 → 原生支付。
- 成功条件:顾客不需要手算肉量,能把照片/配方/SKU 菜谱排进餐次,计划离开后可恢复,完成后可以一次生成本周采购确认。
- 首要焦点:进入计划页第一眼是当前周、保存状态和继续动作,不是购物车摘要。
- 中段焦点:七日时间轴先承载全周概览,选中日承载餐次、照片、配方、SKU 和份量;菜谱保存只在选择上下文出现。
- 末段焦点:采购清单按 SKU 汇总需求量、购买量和包装余量;计划完成后主按钮切换为
按本周计划下单。 - 确认边界:计划清单生成采购快照后直接进入统一确认;确认页只读显示采购数量,需要改量时返回计划清单,不能在确认页静默改写已保存计划。
- 数量规则:同一 SKU 的多顿需求合并展示来源;标准规格为
500g/份时,不承诺可变重量精确购买。 - 失败边界:SKU 下架、价格变化、地址失效或供给不可用时,保留菜谱和计划记录,阻止生成无效采购快照。
- 回流:顾客离开后恢复家庭计划;采购快照与计划不一致时显示“需要同步”;已下单计划可以复制到下一周。
F-002B 保存与复用菜谱
basket.html 空餐次 → plan-recipe-picker → 我的菜谱 或 新建菜谱 → 上传照片 → 写配方文字 → 确认 SKU 和份量 → 保存 → 留在当前选择流程 → 排入餐次。
- 菜谱记录只包含照片、配方文字、SKU 和份量,不建立复杂食材映射。
- 保存菜谱不创建购物车、订单或支付事实;它是家庭可复用资产。
profile.html只展示最近 Top 2 菜谱预览和“管理全部”;完整管理进入recipes.html,安排到哪一天仍回到计划页。
F-002C 计划下单与下周复用
basket.html 达到完成条件 → 按本周计划下单 → 锁定计划版本 → 生成采购快照 → checkout.html 统一确认 → 原生支付 → 计划显示“已下单” → 复制到下一周生成新版本。
- “按本周计划下单”只负责生成本次采购快照和进入确认,不绕过最终事实核对。
- 订单、计划和采购快照各自保留;支付成功后计划不消失,计划变更不能静默改写已支付订单。
F-002D 计划页眼位与焦点分配
| 眼位 | 用户此刻要回答的问题 | 应该突出什么 | 应该弱化什么 | 主动作 |
|---|---|---|---|---|
| 第一眼 | 我在规划哪一周?进度到哪里? | 当前周、保存状态、已安排/待安排数量 | 家庭设置、购物车角标、规则全文 | 继续安排 / 开始安排 |
| 第二眼 | 这一餐吃什么?对应哪个 SKU? | 选中日、餐次、照片、配方、SKU 和份量 | 复杂配料、非肉类材料、订单事实 | 安排一顿 / 替换 |
| 第三眼 | 本周买多少?是否可以下单? | SKU 汇总、数量异常、同步状态、主 CTA | 推荐故事、装饰统计 | 按本周计划下单 |
F-003 回购:从订单记录重新核对
profile.html → 已登录且存在完成订单 → 点击订单复购入口 → 返回 buy.html 重新选择当前 SKU → 可进入详情并加入待选内容 → 统一确认与支付。
- 历史内容只是建议,不代表新订单。
- 当前地址、价格、配送窗口和库存/供给摘要必须重新读取。
F-004 周期配送:查看未来影响
home.html → subscription.html → 查看当前合约/下一次时间窗口 → 选择未来周期设置 → 保存前显示“只影响未来周期” → 返回订阅页。
- 未登录:进入登录/授权态;不开放匿名写操作。
- 无合约:显示可选方案行和规则说明,不显示假的当前合约。
F-005 我的与状态服务:身份、帮助和恢复
profile.html → 订单/地址/帮助/订阅服务入口 → 查看本人可读事实或进入授权门禁;异常状态统一进入 states.html,再从当前状态提供重新认证、重试或返回入口。
- 已登录:可以进入本人订单、地址、订阅和帮助;服务入口不暴露内部 actor、customerId 或权限快照。
- 未登录或会话过期:受保护写操作显示 permission gate,不自动重放原命令;浏览公开壳仍可继续。
loading、offline、not-ready、unknown、图片失败和支付恢复均沿用states.html的可解释状态,不以成功态填充业务数据。- 覆盖
PATH-REDESIGN-SESSION-GATE、PATH-REDESIGN-CART-UNKNOWN、PATH-REDESIGN-OFFLINE、PATH-REDESIGN-NOT-READY、PATH-REDESIGN-ACCOUNT-SERVICE、PATH-REDESIGN-ACCOUNT-GATE和PATH-REDESIGN-REPEAT-ABSENT。
PATH-REDESIGN-SESSION-GATE:会话失效门禁
states.html 显示会话失效原因和重新认证入口;不自动重放原写命令。
PATH-REDESIGN-ACCOUNT-GATE:匿名服务门禁
匿名顾客进入受保护的订单、地址或菜谱写入口时看到登录/授权要求;公开浏览入口仍可用。
PATH-REDESIGN-NOT-READY:能力未就绪
显示能力尚未开放和可用入口,不展示假业务数据或伪造成功结果。
PATH-REDESIGN-REPEAT:有历史订单的复购建议
从订单摘要回到当前 buy.html 重新核对 SKU、价格和配送事实;历史内容只作为建议,不直接创建新订单。
PATH-REDESIGN-REPEAT-ABSENT:无历史时隐藏复购
没有完成订单时不显示复购动作;顾客仍可从公开目录开始正常采购。
PATH-REDESIGN-SUBSCRIPTION-EMPTY:无周期合约
订阅页显示说明和可选方案,不伪造已生效合约、扣款或下一次配送窗口。
PATH-REDESIGN-TRACE-BOUNDARY:履约前隐藏实际批次
商品详情和周期配送只显示已确认的公开供给摘要;实际批次和包裹追溯延后到订单/履约事实。
5. 失败与边界路径
| 状态 | 用户看到什么 | 允许动作 | 禁止动作 |
|---|---|---|---|
loading |
结构骨架和“正在读取” | 等待、返回 | 假装已加载业务事实 |
empty |
“暂无内容”与回到入口 | 回首页/买肉/订阅 | 填充假商品、假计划 |
offline |
当前仅可看缓存,写操作暂停 | 重试连接、浏览已缓存 | 创建重复写命令 |
image-failed |
保留文字、替代图形或说明 | 重试图片、继续主流程 | 把图片缺失变成商品缺失 |
permission-denied |
重新认证或重试 | 重新认证、保留草稿 | 自动重放旧写命令 |
not-ready |
能力未就绪、无业务数据 | 返回可用入口 | 画成成功空态或成交 |
quote-changed |
金额或配送能力发生变化 | 回到确认页重新核对 | 用旧金额直接支付 |
payment-cancelled |
支付未完成,内容仍保留 | 返回确认、重新支付 | 再建一笔订单 |
payment-unknown |
正在确认支付状态 | 使用原 operationId 查询 |
新建第二个提交命令 |
6. 组件决策与动线关系
| 组件 | 使用位置 | 为什么这里使用 | 不使用的位置 |
|---|---|---|---|
| 首页主路径入口 | 首页 | 真正的二选一,帮助顾客从意图出发 | 商品、订单、服务入口 |
| 常买 SKU 快捷入口 | 首页 | 让有记录的顾客快速回到当前目录位置 | 匿名态不伪造个人常买;不替代商品行事实核对 |
| 分类侧栏 | 买肉 | 让顾客用电商/奶茶小程序熟悉的方式切换商品类别 | 首页主分流、订单确认 |
| SKU 商品卡 | 买肉 | 直接承载商品图、名称、规格、固定价和加入动作 | 首页主分流、确认页事实摘要 |
| 商品详情页 | 商品详情 | 只补充单个 SKU 的规格事实和加入动作 | 商品目录中堆叠长说明 |
| 购物车预览层 | 买肉、计划及其他非确认页 | 让顾客快速查看待选内容,随时关闭,不制造必经页面 | 确认页自身,不重复一份购物车 |
| 统一订单确认页 | 自选和计划采购 | 把商品、金额、地址、时段和 Quote 放在同一承诺层 | 计划编辑页、商品列表 |
| 地址选择器 | 订单确认页 | 在原上下文内更换地址,避免来回跳页 | 每次购买都跳完整地址管理页 |
| 原生支付浮层 | 订单确认页 | 使用平台熟悉的支付确认,不再造一层伪结算页面 | 商品列表、计划编辑页 |
| 订单结果 | 支付回调后 | 明确成功、待支付、失败和取消 | 支付前的确认页 |
| 信息行 | 订阅、我的、订单详情 | 并排比较事实与动作 | 首页主分流、买肉商品主列表 |
| 七日时间轴 | 计划 | 同时呈现一周日期与已安排/待安排状态 | 订单确认、商品目录 |
| 选中日餐次行 | 计划 | 只展开当前日期的餐次,承载菜谱、人数、肉量和编辑动作 | 首页主分流、订单确认 |
| 菜谱选择器 | 计划 | 为具体餐次选择已保存菜谱或推荐菜谱 | 首页主分流、买肉目录 |
| 新建菜谱入口 | 计划 / 我的菜谱 | 用照片、配方文字、SKU 和份量保存家庭记录 | 计划首屏、商品目录主列表 |
| 采购清单汇总行 | 计划 | 把多顿菜谱需求合并成可核对的 SKU 购买量 | 订单确认最终金额 |
| 计划下单 CTA | 计划 | 计划完成后按 SKU 生成采购快照并进入确认 | 计划未完成时、普通自由选购 |
| 固定底部五 Tab | 全部页面 | 保持位置记忆和页面职责 | 不增加购物车第六 Tab |
7. 原型交互覆盖
| 流程节点 | 页面/区域 | data-test |
|---|---|---|
| 首页两条主路 | home.html .intent-bar / .home-focus |
home-self-select, home-planner |
| 首页常买 SKU | home.html .quick-section |
home-frequent-* |
| 地址读取 | home.html 顶栏 |
home-address |
| 买肉分类 | buy.html 左侧分类栏 |
category-* |
| 买肉商品列表 | buy.html SKU 商品卡 |
sku-detail-*, sku-add-* |
| 商品详情 | product-detail.html |
detail-back, detail-add |
| 计划当前周与状态 | basket.html 计划页首屏 |
plan-week, plan-status, plan-continue |
| 计划日期切换 | basket.html 七日时间轴 |
plan-day-* |
| 计划时段切换 | basket.html 选中日面板 |
plan-period-lunch, plan-period-dinner |
| 计划餐次编辑 | basket.html 选中日菜谱卡 / 空餐次 |
plan-meal-slot-*, plan-meal-add-*, plan-replace-*, plan-adjust-*, plan-remove-* |
| 菜谱选择 | basket.html 菜谱选择器 |
plan-recipe-picker, plan-recipe-*, plan-recipe-confirm |
| 菜谱管理 | recipes.html 完整管理页 |
recipes-summary, recipes-new, recipe-management-list, recipe-editor |
| 肉品采购清单 | basket.html 汇总区 |
plan-shopping-list, plan-quantity-*, plan-source-*, plan-sync-warning |
| 计划进入确认 | basket.html 清单底部 |
plan-order-confirm;保留 data-legacy-test="plan-add-to-cart" 仅用于旧覆盖映射 |
| 购物车预览 | cart.html 或待选抽屉 |
cart-edit-*, cart-checkout(辅助路径) |
| 统一订单确认 | checkout.html |
checkout-items, checkout-address, checkout-slot-*, checkout-payment |
| 支付调用与结果 | checkout.html / order-success.html |
checkout-payment, payment-confirm, payment-cancel, payment-check-unknown, success-view-order |
| 未来周期 | subscription.html |
subscription-manage, subscription-option-* |
| 身份与服务 | profile.html |
profile-orders, profile-address, profile-help |
| 地址管理 | address.html |
address-save, address-return |
| 订单与详情 | orders.html / order-detail.html |
order-row-*, order-detail-* |
| 状态分支 | states.html |
state-loading, state-empty, state-offline, state-image-failed, state-permission, state-not-ready, state-unknown |
| 状态恢复动作 | states.html |
empty-home, empty-buy, offline-retry, image-retry, permission-refresh, unknown-query, not-ready-home |
| 底部主导航 | 全部顾客页面 | nav-home, nav-buy, nav-plan, nav-subscription, nav-profile |
| 全局购物车入口 | 首页/买肉/计划/订阅/我的 | home-cart, buy-cart, basket-cart, subscription-cart, profile-cart |
| 帮助与规则 | help.html |
help-after-sales, help-delivery-rules, help-trace |
| 菜谱预览与管理入口 | profile.html / basket.html |
profile-recipes-manage, plan-manage-recipes |
| 当前真相包索引 | index.html |
open-home, open-states, index-*;仅用于评审导航 |
7.1 设计阶段新增锚点(暂不计入浏览器覆盖)
| 设计节点 | 计划中的承载位置 | 需要表达的事实 |
|---|---|---|
| 我的菜谱来源 | 计划页菜谱选择器 | 已保存菜谱可以直接排入当前餐次 |
| 新建菜谱 | 计划页选择器或 recipes.html |
上传照片、写配方、确认 SKU 和份量 |
| 菜谱完整管理 | recipes.html |
查看、编辑、移除和排入计划 |
| 自动保存状态 | 计划页当前周区域 | 计划和菜谱记录已经保存,可离开后恢复 |
| 计划完成 CTA | 计划页采购清单之后 | 从继续安排切换为按本周计划下单 |
| 统一订单确认 | checkout.html |
自选和计划采购共用一页核对商品、金额、地址和时段 |
| 支付状态 | checkout.html / order-success.html |
成功、待支付、失败和取消必须与订单创建区分 |
| 采购快照同步 | 计划页 / 订单确认 | 计划变更后需要重新汇总和核对 |
| 下单后复用 | 计划页 / 首页 | 已下单、查看订单、复制到下一周 |
这些锚点已同步到 cases.json 与 scenario-model.json 的当前可见路径;真实后端契约和持久化仍需在实现阶段建立浏览器覆盖。
8. PATH 见证点
| PATH | 主 CASE / 结果 | 浏览器起点与可见动作 |
|---|---|---|
| PATH-REDESIGN-HOME-DOORS | CASE-REDESIGN-001 · 两条主路可见 | home.html → home-self-select 或 home-planner |
| PATH-REDESIGN-SESSION-GATE | CASE-REDESIGN-002 · 过期身份被拒绝 | states.html → state-permission → permission-refresh |
| PATH-REDESIGN-WEEKLY-PLAN | CASE-REDESIGN-003 · 计划日期、餐次、清单和确认承接可追踪 | basket.html → plan-week → plan-day-* → plan-meal-slot-* → plan-shopping-list → 目标 plan-order-confirm |
| PATH-REDESIGN-PLAN-EMPTY | CASE-REDESIGN-004 · 空计划可恢复 | basket.html → plan-day-* → plan-meal-add-* → plan-recipe-picker |
| PATH-REDESIGN-CART-CHECKOUT | CASE-REDESIGN-005 · 待选预览可进入确认 | cart.html 或待选抽屉 → cart-checkout |
| PATH-DESIGN-PURCHASE-CONFIRM | 设计验收 · 自选和计划共用确认页 | buy.html / basket.html → checkout.html → checkout-payment |
| PATH-DESIGN-PAYMENT-RESULT | 设计验收 · 支付状态可恢复且不重复提交 | checkout.html → 原生支付 → 成功/取消/待确认 |
| PATH-REDESIGN-CART-UNKNOWN | CASE-REDESIGN-006 · 只查询原操作 | states.html → state-unknown → unknown-query |
| PATH-REDESIGN-TRACE-SUMMARY | CASE-REDESIGN-007 · 商品详情事实可见 | product-detail.html → SKU 详情事实 |
| PATH-REDESIGN-TRACE-BOUNDARY | CASE-REDESIGN-008 · 批次不提前承诺 | subscription.html → 实际批次说明 |
| PATH-REDESIGN-OFFLINE | CASE-REDESIGN-009 · 写操作暂停 | states.html → state-offline → offline-retry |
| PATH-REDESIGN-NOT-READY | CASE-REDESIGN-010 · 未就绪不伪造业务数据 | states.html → state-not-ready → not-ready-home |
| PATH-REDESIGN-SUBSCRIPTION-ACTIVE | CASE-REDESIGN-011 · 当前合约与未来窗口 | subscription.html → subscription-manage |
| PATH-REDESIGN-SUBSCRIPTION-EMPTY | CASE-REDESIGN-012 · 无合约不伪造 | subscription.html → 登录/方案说明 |
| PATH-REDESIGN-ACCOUNT-SERVICE | CASE-REDESIGN-013 · 我的页服务入口 | profile.html → profile-orders / profile-address |
| PATH-REDESIGN-ACCOUNT-GATE | CASE-REDESIGN-014 · 匿名受保护服务门禁 | profile.html → 登录要求 |
| PATH-REDESIGN-REPEAT | CASE-REDESIGN-015 · 复购回到当前目录 | profile.html → 订单记录 → buy.html |
| PATH-REDESIGN-REPEAT-ABSENT | CASE-REDESIGN-016 · 无历史不显示复购 | profile.html → 无复购入口 |