{
  "serialNumber": "VWCG-1414",
  "id": "f0cf33b7553bedbdaadd882f25",
  "subject": "标品小票打印分场景开关与补打审计（PC／商家移动端）",
  "assignedTo": {
    "name": "赖清涛",
    "id": "643cc26b2ca4e1cd30923389"
  },
  "status": {
    "name": "待处理",
    "nameEn": "To Do",
    "displayName": "待处理",
    "id": "100005"
  },
  "space": {
    "name": "【产品线】智慧营养健康餐厅",
    "id": "dd2f708d1702891ff45b6f5d99"
  },
  "type": {
    "name": "产品类需求",
    "id": "9uy29901re573f561d69jn40"
  },
  "sectionCounts": {
    "前置条件": 4,
    "后置条件": 4,
    "主流程": 4,
    "分支流程": 4,
    "异常/恢复流程": 4
  },
  "checks": {
    "title": true,
    "assignee": true,
    "status": true,
    "project": true,
    "type": true,
    "fullSections": true,
    "ucIds": true,
    "ucMarkers": true,
    "style": true,
    "prototypes": true,
    "images": true,
    "attachments": true,
    "comment": true
  },
  "bodyChars": 25681,
  "publicUrls": {
    "review": "https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v04/review.html",
    "prototype": "https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v04/prototype.html",
    "mobile": "https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v04/prototype.html?mode=mobile"
  },
  "attachments": [
    {
      "id": "7a406956f3fe5915dd15f40427",
      "name": "device-create-xprinter-fields.png",
      "size": 396119
    },
    {
      "id": "4d9b8f4517c9474aac73734b3b",
      "name": "线下菜单消费打印开关-执行说明.md",
      "size": 3227
    },
    {
      "id": "0963c774a8c07853267f60963b",
      "name": "小票打印开关与日志-产品需求V0.3.md",
      "size": 15375
    },
    {
      "id": "a8a73bc49ec895b3eb08618429",
      "name": "线下菜单消费打印开关-示意图.png",
      "size": 141530
    },
    {
      "id": "ccaf4170095d067242983d4ef0",
      "name": "device-list-xprinter.png",
      "size": 452074
    },
    {
      "id": "99c5a0d8356ed33ea628007169",
      "name": "小票分场景开关与日志-示意图V0.3.png",
      "size": 332234
    },
    {
      "id": "ad15db50542497bb3ff221d534",
      "name": "用例页面状态验收映射-V0.4.csv",
      "size": 8864
    },
    {
      "id": "1d697c1d359d58cd05fed3f41f",
      "name": "开关操作日志原型-V0.4.png",
      "size": 184156
    },
    {
      "id": "264a88987b8dc12dfea2630f97",
      "name": "补打记录原型-V0.4.png",
      "size": 195828
    },
    {
      "id": "28f26f71fee363a314cf1961ce",
      "name": "现有系统交互原型-V0.4.html",
      "size": 1143720
    },
    {
      "id": "7813bb136586ddbeb4efbca3f2",
      "name": "PC打印策略原型-V0.4.png",
      "size": 165109
    },
    {
      "id": "3b12ad8cdafac03372b43e960b",
      "name": "保存失败与恢复原型-V0.4.png",
      "size": 168626
    },
    {
      "id": "bf8f588a2536ed9124412f0280",
      "name": "原系统页面与样式规格-V0.4.md",
      "size": 8803
    },
    {
      "id": "0407267ce82459b1d328a97ddd",
      "name": "完整UseCase与流程-V0.4.md",
      "size": 26370
    },
    {
      "id": "63568a8dd3a7e1c1db1f0b4909",
      "name": "商家移动端策略原型-V0.4.png",
      "size": 55415
    }
  ],
  "description": "<h2>需求摘要与当前评审入口</h2><p>每个档口、每台合法绑定小票打印机，按线上/线下业务场景及人工/自动补打独立控制；开关操作和每次补打均留可查询日志。PC与商家移动端共用有效策略。本版按用户最新要求将完整Use Case、前置/后置/主/分支/异常、原系统样式与页面/状态规格直接写入正文，V0.1—V0.3仅历史参考。</p><p><a href=\"https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v04/review.html\">完整用例＋原系统样式＋现状/原型对照＋49条流程映射</a></p><p><a href=\"https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v04/prototype.html\">PC可操作原型</a> · <a href=\"https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v04/prototype.html?mode=mobile\">商家移动端可操作原型</a></p><p>验证：29项原型检查通过，另有8项阅读页视口/页签检查；仅证明静态演练，不证明真实后端鉴权、事务、供应商或实机出纸。PC依据当前本地源码和归档真实截图；移动端依据已有评审原型，当前生产版本需清涛核对。</p><h1>VWCG-1414｜按业务场景控制小票打印：完整 Use Case 与原型规格 V0.4</h1>\n<p>2026-10-09｜负责人赖清涛｜Review / DoR: BLOCKED（原系统识别与上线契约待评审，见末章）</p>\n<h2>目标与范围</h2>\n<p>解决线上点餐、线下菜单消费共用打印机混打的问题。标品 PC 和商家移动端按“档口＋合法绑定打印机＋业务场景”独立开关；人工/自动补打独立控制；配置操作及每次补打可查询日志。默认保持旧业务行为，不改订单、金额、支付、模板或既有打印份数，不增加打印机绑定关系。</p>\n<p>最新用户明确要求完整 Use Case 直接可见，图片不能替代前置/后置/主/分支/异常流程。V0.4正文为当前权威版本；V0.1—V0.3附件仅历史参考。</p>\n<h2>现有系统依据与证据边界</h2>\n<p>PC：<code>store/public/static/src/view/system/device/deviceManagement.vue</code>、<code>device/index.vue</code>、<code>router/system/index.js</code>、<code>assets/common.css</code>、<code>view/home.vue</code>、订单列表/详情源码与归档真实截图。实体仓库HEAD <code>301815bd695483a5709d2fac4d6b7f29e1334b49</code>；本地旧分支，不能冒充最新生产发布。复用已安装Vue 2.7.16、Element UI 2.15.14及图标字体、官方Logo；不改业务仓库。</p>\n<p>商家移动端：沿用已评审商户移动管理端的“我的→设备、订单→详情→补打”、蓝色、卡片、字体和44px触控规范。该来源是已有原型，不是本次新获取的生产截图。本机业务8080/CDP9222无监听；当前真实部署样式和来源枚举需清涛对照发布版本评审。原型使用合成数据，仅浏览器本地演练，不调用业务/支付/云打印接口。</p>\n<h2>角色与权限</h2>\n<table>\n<thead>\n<tr>\n<th>角色</th>\n<th>查配置</th>\n<th>改策略</th>\n<th>人工补打</th>\n<th>查日志</th>\n<th>数据范围</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>食堂管理员</td>\n<td>授权</td>\n<td>单独授权</td>\n<td>单独授权</td>\n<td>单独授权</td>\n<td>授权食堂/档口</td>\n</tr>\n<tr>\n<td>档口商家</td>\n<td>本档口</td>\n<td>单独授权</td>\n<td>单独授权</td>\n<td>单独授权</td>\n<td>本人授权档口</td>\n</tr>\n<tr>\n<td>运营只读</td>\n<td>授权</td>\n<td>无</td>\n<td>无</td>\n<td>单独授权</td>\n<td>授权范围</td>\n</tr>\n<tr>\n<td>系统重试</td>\n<td>读策略</td>\n<td>无</td>\n<td>仅自动规则</td>\n<td>写自身结果</td>\n<td>原任务目标</td>\n</tr>\n</tbody></table>\n<p>前后端同样校验。原型角色切换仅演练，不是正式权限认证；正式角色ID映射待评审。</p>\n<h2>独立开关</h2>\n<table>\n<thead>\n<tr>\n<th>Key（拟议字段，非既有接口事实）</th>\n<th>分组</th>\n<th>控件文案</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>online_dine</code></td>\n<td>线上点餐</td>\n<td>堂食订单打印</td>\n</tr>\n<tr>\n<td><code>online_pickup</code></td>\n<td>线上点餐</td>\n<td>自提订单打印</td>\n</tr>\n<tr>\n<td><code>online_locker</code></td>\n<td>线上点餐</td>\n<td>取餐柜订单打印</td>\n</tr>\n<tr>\n<td><code>offline_menu</code></td>\n<td>线下消费</td>\n<td>菜单消费打印</td>\n</tr>\n<tr>\n<td><code>offline_fixed</code></td>\n<td>线下消费</td>\n<td>定额消费打印</td>\n</tr>\n<tr>\n<td><code>offline_custom</code></td>\n<td>线下消费</td>\n<td>自定义消费打印</td>\n</tr>\n<tr>\n<td><code>manual</code></td>\n<td>补打策略</td>\n<td>人工补打</td>\n</tr>\n<tr>\n<td><code>auto</code></td>\n<td>补打策略</td>\n<td>失败自动补打</td>\n</tr>\n</tbody></table>\n<p>仅显示已启用且可以可靠识别的业务。称重、AI识别、点餐机等其他场景须证明分类互斥后按同一结构扩展，不凭设备名称或支付方式猜来源。人工补打需同时满足场景开关、人工补打开关、权限；自动补打需同时满足场景开关、自动开关和原合法重试规则。日志不能被关闭。</p>\n<h2>页面地图与原系统落位</h2>\n<table>\n<thead>\n<tr>\n<th>ID</th>\n<th>原系统入口/新增位置</th>\n<th>关键控件与业务体现</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>P01</td>\n<td>系统管理→设备管理→设备列表</td>\n<td>保留设备类型筛选、设备表、小票配置/状态、编辑/删除；Xprinter行新增“打印策略”“日志”文字操作</td>\n</tr>\n<tr>\n<td>P02</td>\n<td>编辑设备900px弹窗</td>\n<td>基础配置沿用；新增“打印策略”“操作日志”页签，顶部只读设备/档口和版本，底部取消/保存</td>\n</tr>\n<tr>\n<td>P03</td>\n<td>订单管理→消费订单→查看</td>\n<td>保留订单/菜品/支付信息；增加打印概况、补打小票、补打记录</td>\n</tr>\n<tr>\n<td>P04</td>\n<td>订单详情内补打确认弹窗520px</td>\n<td>订单/匹配打印机/份数只读，原因必填，取消/确认补打，表单内错误</td>\n</tr>\n<tr>\n<td>P05</td>\n<td>订单详情补打记录</td>\n<td>逐请求/尝试时间、人工/自动、原因、份数/次数、状态；可回查结果</td>\n</tr>\n<tr>\n<td>P06</td>\n<td>设备管理新增打印日志页签</td>\n<td>开关操作/补打记录分签，范围/时间/操作人/结果/订单号筛选，查询/重置，分页10条，详情只读</td>\n</tr>\n<tr>\n<td>P07</td>\n<td>仅原型审查工具：事件模拟</td>\n<td>对应UC004系统事件；生产不新增业务弹窗。可演练有效策略、已受理/跳过/失败/待确认</td>\n</tr>\n<tr>\n<td>M01</td>\n<td>商家移动端 我的→设备</td>\n<td>保留已有设备卡片及状态；打印机卡新增“打印策略”“日志”</td>\n</tr>\n<tr>\n<td>M02</td>\n<td>打印机→打印策略整页</td>\n<td>分组开关，每行≥56px、点击热区≥44px，底部安全区取消/保存，返回时未保存确认</td>\n</tr>\n<tr>\n<td>M03/M04</td>\n<td>订单→详情→补打</td>\n<td>详情卡片、底部补打确认面板，唯一打印机只读，原因与错误在同面板</td>\n</tr>\n<tr>\n<td>M05/M06</td>\n<td>订单补打记录/打印机日志</td>\n<td>卡片化日志，筛选底部面板/原生控件；无PC宽表挤到手机，支持返回来源</td>\n</tr>\n</tbody></table>\n<p>原型 <code>prototype.html</code> 可切PC/移动端、角色、故障条件；每个按钮的演练和状态都能按下述Use Case定位，审查工具明确与生产页面分开。</p>\n<h2>UC-STALL-PRINT-SWITCH-001｜维护指定档口打印机的分场景打印策略</h2>\n<ul>\n<li>Use Case ID：UC-STALL-PRINT-SWITCH-001</li>\n<li>版本/状态：V0.4 / Review；DoR: BLOCKED（末章明确负责人）。</li>\n<li>主要角色：具备目标档口打印策略修改权限的管理员/商家。</li>\n<li>触发：需要保留线上打印，关闭线下菜单消费打印，或调整其他独立开关。</li>\n</ul>\n<h3>前置条件</h3>\n<ol>\n<li>已登录，账号有效，拥有目标档口查看及打印策略修改权限。</li>\n<li>已选择授权食堂/档口，目标为有效且唯一关联的小票打印机；未配置或多关联须先按原系统规则处理。</li>\n<li>已有配置及版本成功读取；只展示该档口已启用且能可靠分类的消费场景。</li>\n<li>原业务模板、张数及订单规则保留；演练中的初始开关仅为样例，不充当正式迁移默认值。</li>\n</ol>\n<h3>后置条件</h3>\n<p>成功：</p>\n<ul>\n<li>仅本次修改的场景/补打开关持久化，新版本和最后修改人/时间可读。</li>\n<li>配置和成功操作审计一致提交；另一端重新读取/刷新后值一致。</li>\n<li>尚未提交的打印按有效策略重新判定；已受理任务不声称可撤回。</li>\n</ul>\n<p>失败/取消：</p>\n<ul>\n<li>旧有效配置仍生效；未保存草稿不影响实际打印。</li>\n<li>错误留在表单内，保留草稿并给出重试或刷新入口；无成功提示。</li>\n<li>越权、失效绑定不修改数据；审计失败不提交配置。</li>\n</ul>\n<h3>主流程</h3>\n<table>\n<thead>\n<tr>\n<th>步骤</th>\n<th>用户/系统动作</th>\n<th>页面/控件</th>\n<th>系统响应与数据变化</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>M1</td>\n<td>系统管理→设备管理→设备列表，筛选Xprinter打印机</td>\n<td>P01</td>\n<td>选择设备类型；列表显示设备/小票配置/状态/新增“打印策略、日志”文字操作</td>\n<td>loaded</td>\n<td>AC01</td>\n</tr>\n<tr>\n<td>M2</td>\n<td>点目标行“打印策略”，打开900px编辑设备弹窗并选中打印策略页签</td>\n<td>P02</td>\n<td>上方只读设备和关联档口，加载配置、版本、最近修改人</td>\n<td>loaded</td>\n<td>AC02</td>\n</tr>\n<tr>\n<td>M3</td>\n<td>将“线下消费→菜单消费打印”关闭，其余开关保持</td>\n<td>P02</td>\n<td>蓝色开关变灰且文字“已关闭”；“有未保存修改”出现，底部保存可用</td>\n<td>dirty</td>\n<td>AC03</td>\n</tr>\n<tr>\n<td>M4</td>\n<td>点击“保存”，表单进入保存中</td>\n<td>P02</td>\n<td>保存按钮显示“保存中…”，开关/取消临时禁用，阻止重复请求</td>\n<td>saving</td>\n<td>AC04</td>\n</tr>\n<tr>\n<td>M5</td>\n<td>保存成功</td>\n<td>P02</td>\n<td>绿色就地提示“已保存”，显示新版本；追加含前后值的成功操作日志</td>\n<td>saved</td>\n<td>AC05</td>\n</tr>\n<tr>\n<td>M6</td>\n<td>从商家移动端 我的→设备→打印机→打印策略，点击刷新</td>\n<td>M02</td>\n<td>移动端显示同一设备的菜单消费已关闭，线上各项值保持；日志可追溯</td>\n<td>synced</td>\n<td>AC06</td>\n</tr>\n</tbody></table>\n<h3>分支流程</h3>\n<table>\n<thead>\n<tr>\n<th>分支/分支点</th>\n<th>条件</th>\n<th>行为与返回/结果</th>\n<th>页面</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>A1@M3</td>\n<td>需要恢复打印</td>\n<td>开启对应场景并保存；只恢复后续合法打印，不集中补打历史抑制订单</td>\n<td>P02/M02</td>\n<td>saved</td>\n<td>AC07</td>\n</tr>\n<tr>\n<td>A2@M3</td>\n<td>编辑后点取消/关闭/返回</td>\n<td>弹出“存在未保存修改，是否放弃？”；继续编辑返回草稿，放弃丢弃草稿不落库</td>\n<td>P02/M02</td>\n<td>discard-confirm</td>\n<td>AC08</td>\n</tr>\n<tr>\n<td>A3@M2</td>\n<td>只读角色查看</td>\n<td>展示当前值、明确“无修改权限”；所有开关和保存禁用，日志仍按权限可查</td>\n<td>P02/M02</td>\n<td>readonly</td>\n<td>AC09</td>\n</tr>\n</tbody></table>\n<h3>异常/恢复流程</h3>\n<table>\n<thead>\n<tr>\n<th>异常/恢复</th>\n<th>条件</th>\n<th>用户提示、数据处理及恢复</th>\n<th>页面</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>E1@M2/R1</td>\n<td>配置读取失败</td>\n<td>显示加载失败及“重新加载”，隐藏可编辑表单；恢复后重新读取</td>\n<td>P02/M02</td>\n<td>load-error</td>\n<td>AC10</td>\n</tr>\n<tr>\n<td>E2@M4/R2</td>\n<td>保存失败或超时</td>\n<td>保留草稿和旧有效状态；就地红色错误、“重试保存”；超时先回读结果，不盲目重复</td>\n<td>P02/M02</td>\n<td>save-error</td>\n<td>AC11</td>\n</tr>\n<tr>\n<td>E3@M4/R3</td>\n<td>其他人已修改，版本冲突</td>\n<td>提示“配置已被他人修改，请重新加载后再修改”；不覆盖新版本；确认重新加载会丢草稿</td>\n<td>P02/M02</td>\n<td>conflict</td>\n<td>AC12</td>\n</tr>\n<tr>\n<td>E4@M4/R4</td>\n<td>配置审计写入失败/权限被撤销/设备解绑</td>\n<td>审计失败回滚并禁保存；权限/解绑拒绝，提示重新选择或联系管理员</td>\n<td>P02/M02</td>\n<td>audit-error/forbidden</td>\n<td>AC13</td>\n</tr>\n</tbody></table>\n<h2>UC-STALL-PRINT-SWITCH-002｜人工补打和失败自动补打，追踪每次请求结果</h2>\n<ul>\n<li>Use Case ID：UC-STALL-PRINT-SWITCH-002</li>\n<li>版本/状态：V0.4 / Review；DoR: BLOCKED（末章明确负责人）。</li>\n<li>主要角色：有补打权限的管理员/商家；自动任务以系统身份执行。</li>\n<li>触发：某个已支付订单需要补打，或系统处理明确失败的打印任务。</li>\n</ul>\n<h3>前置条件</h3>\n<ol>\n<li>订单属于账号授权档口，订单满足原有可打印状态，无重复支付或重建订单。</li>\n<li>按订单所属档口自动匹配唯一有效打印机；不允许随意切换到其他档口或新增多机关系。</li>\n<li>原业务场景允许打印且人工/自动对应开关开启；人工还需补打权限。</li>\n<li>目标可用；上次结果未知或已受理未结时先查询，不盲目再次投递。</li>\n</ol>\n<h3>后置条件</h3>\n<p>成功：</p>\n<ul>\n<li>产生可追溯的补打请求及逐目标尝试，记录原因、份数、次数、操作者/系统、配置版本。</li>\n<li>云受理号与状态可查；明确区分已受理、打印成功、失败、结果待确认。</li>\n<li>订单金额、支付、模板和既有打印张数配置不被本需求改变。</li>\n</ul>\n<p>失败/取消：</p>\n<ul>\n<li>被禁止或校验不通过时不发送打印，不增加实际投递次数；记录拒绝/跳过原因。</li>\n<li>相同请求重试复用原结果；无法判定受理结果时停在待确认。</li>\n<li>未保存补打请求日志前不对外投递，失败可定位且不得静默继续。</li>\n</ul>\n<h3>主流程</h3>\n<table>\n<thead>\n<tr>\n<th>步骤</th>\n<th>用户/系统动作</th>\n<th>页面/控件</th>\n<th>系统响应与数据变化</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>M1</td>\n<td>订单管理→消费订单→查看目标订单</td>\n<td>P03/M03</td>\n<td>订单详情显示所属档口、场景、唯一匹配打印机、现有份数和上次打印结果</td>\n<td>detail</td>\n<td>AC14</td>\n</tr>\n<tr>\n<td>M2</td>\n<td>点击“补打小票”</td>\n<td>P04/M04</td>\n<td>弹出补打确认框/移动底部面板，打印机及份数只读；选择补打原因</td>\n<td>confirm</td>\n<td>AC15</td>\n</tr>\n<tr>\n<td>M3</td>\n<td>选择“缺纸恢复/票据遗失/其他”，其他时填写说明</td>\n<td>P04/M04</td>\n<td>必填原因；缺失时表单内红字，不能提交</td>\n<td>valid/invalid</td>\n<td>AC16</td>\n</tr>\n<tr>\n<td>M4</td>\n<td>点击“确认补打”</td>\n<td>P04/M04</td>\n<td>请求处理中按钮及关闭动作禁用；生成幂等请求和待提交日志，校验最新策略</td>\n<td>submitting</td>\n<td>AC17</td>\n</tr>\n<tr>\n<td>M5</td>\n<td>云服务接受请求</td>\n<td>P05/M05</td>\n<td>提示“已受理，等待打印结果”；补打记录新增行，显示人工、原因、份数、尝试次数</td>\n<td>accepted</td>\n<td>AC18</td>\n</tr>\n<tr>\n<td>M6</td>\n<td>回查服务结果或刷新记录</td>\n<td>P05/M05</td>\n<td>有明确结果才变为打印成功/打印失败；不能回查则显示结果待确认</td>\n<td>success/failed/unknown</td>\n<td>AC19</td>\n</tr>\n</tbody></table>\n<h3>分支流程</h3>\n<table>\n<thead>\n<tr>\n<th>分支/分支点</th>\n<th>条件</th>\n<th>行为与返回/结果</th>\n<th>页面</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>A1@M2</td>\n<td>用户取消</td>\n<td>关闭确认框回订单详情，不产生补打请求</td>\n<td>P04/M04</td>\n<td>cancelled</td>\n<td>AC20</td>\n</tr>\n<tr>\n<td>A2@M1</td>\n<td>发生明确失败且自动补打开启</td>\n<td>系统按原合法重试规则触发；同场景开关仍生效，日志身份显示系统</td>\n<td>P05/M05</td>\n<td>auto-attempt</td>\n<td>AC21</td>\n</tr>\n<tr>\n<td>A3@M5</td>\n<td>某目标部分成功</td>\n<td>逐目标展示结果，仅重试明确未成功目标；当前标品唯一目标，不借此扩展多机绑定</td>\n<td>P05/M05</td>\n<td>partial</td>\n<td>AC22</td>\n</tr>\n<tr>\n<td>A4@M1</td>\n<td>场景或人工补打开关关闭</td>\n<td>按钮禁用并显示具体关闭项；提供有配置权限者前往打印策略的入口，不绕过</td>\n<td>P03/M03</td>\n<td>blocked</td>\n<td>AC23</td>\n</tr>\n</tbody></table>\n<h3>异常/恢复流程</h3>\n<table>\n<thead>\n<tr>\n<th>异常/恢复</th>\n<th>条件</th>\n<th>用户提示、数据处理及恢复</th>\n<th>页面</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>E1@M3/R1</td>\n<td>原因未填/其他未说明</td>\n<td>就地红字关联字段，保留输入并聚焦错误位置</td>\n<td>P04/M04</td>\n<td>invalid</td>\n<td>AC16</td>\n</tr>\n<tr>\n<td>E2@M1/R2</td>\n<td>未关联、多关联、离线、已解绑</td>\n<td>显示具体原因且禁止提交；管理员修复后刷新重新匹配</td>\n<td>P03/M03</td>\n<td>device-error</td>\n<td>AC24</td>\n</tr>\n<tr>\n<td>E3@M4/R3</td>\n<td>重复点击、网络重试、人工和自动并发</td>\n<td>同一请求不新增投递；处理中返回既有请求并提示查询记录</td>\n<td>P04/P05</td>\n<td>duplicate</td>\n<td>AC25</td>\n</tr>\n<tr>\n<td>E4@M4/R4</td>\n<td>日志持久化失败/服务明确拒绝</td>\n<td>日志失败不发请求；服务拒绝记录失败及原因，保留可追溯请求</td>\n<td>P04/P05</td>\n<td>failed</td>\n<td>AC26</td>\n</tr>\n<tr>\n<td>E5@M5/R5</td>\n<td>受理超时/结果未知/超过自动重试上限</td>\n<td>结果待确认，停止盲重投；先查询云状态，超限转人工核实，不承诺物理恰好一次</td>\n<td>P05/M05</td>\n<td>unknown</td>\n<td>AC27</td>\n</tr>\n</tbody></table>\n<h2>UC-STALL-PRINT-SWITCH-003｜查看开关操作日志与补打记录</h2>\n<ul>\n<li>Use Case ID：UC-STALL-PRINT-SWITCH-003</li>\n<li>版本/状态：V0.4 / Review；DoR: BLOCKED（末章明确负责人）。</li>\n<li>主要角色：具备日志查看权限的管理员/商家/运营只读人员。</li>\n<li>触发：查询谁更改了开关，或追查订单补打原因、次数和结果。</li>\n</ul>\n<h3>前置条件</h3>\n<ol>\n<li>已登录并有日志查看权限，查询范围限定在授权商家/食堂/档口。</li>\n<li>从打印机“日志”、设备管理“打印日志”或订单“补打记录”进入；保留来源上下文。</li>\n<li>记录已经产生；没有记录时进入真实空状态而非造数据。</li>\n</ol>\n<h3>后置条件</h3>\n<p>成功：</p>\n<ul>\n<li>按筛选条件分页返回完整记录，能看变更前后值或补打各次结果及原因。</li>\n<li>订单入口只返回该订单、设备入口继承该打印机上下文；返回路径保留原上下文。</li>\n<li>日志只读，敏感字段脱敏，不提供关闭审计/编辑/删除按钮。</li>\n</ul>\n<p>失败/取消：</p>\n<ul>\n<li>无权限不显示其他租户/档口记录；查询失败不显示伪造结果。</li>\n<li>筛选条件保留，重试能恢复；空结果与读取失败明确区分。</li>\n</ul>\n<h3>主流程</h3>\n<table>\n<thead>\n<tr>\n<th>步骤</th>\n<th>用户/系统动作</th>\n<th>页面/控件</th>\n<th>系统响应与数据变化</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>M1</td>\n<td>从设备行点“日志”或订单详情点“补打记录”</td>\n<td>P06/P05/M06/M05</td>\n<td>进入日志页，设备/订单自动限定；开关操作和补打记录分两个页签</td>\n<td>loaded</td>\n<td>AC28</td>\n</tr>\n<tr>\n<td>M2</td>\n<td>设置时间、档口/打印机、操作人、结果；补打支持订单号</td>\n<td>P06/M06</td>\n<td>标签清楚；查询/重置按钮，日期合法性校验，不扩大权限范围</td>\n<td>filter</td>\n<td>AC29</td>\n</tr>\n<tr>\n<td>M3</td>\n<td>点击查询并翻页</td>\n<td>P06/M06</td>\n<td>加载中骨架/遮罩，结果分页10条，显示总条数</td>\n<td>loading/loaded</td>\n<td>AC30</td>\n</tr>\n<tr>\n<td>M4</td>\n<td>打开记录详情</td>\n<td>P06/M06</td>\n<td>开关逐项前后值及版本；补打逐次状态、原因、云受理号/时间；关闭返回筛选列表</td>\n<td>record-detail</td>\n<td>AC31</td>\n</tr>\n</tbody></table>\n<h3>分支流程</h3>\n<table>\n<thead>\n<tr>\n<th>分支/分支点</th>\n<th>条件</th>\n<th>行为与返回/结果</th>\n<th>页面</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>A1@M2</td>\n<td>筛选无结果</td>\n<td>显示“暂无符合条件的记录”，提供“重置筛选”</td>\n<td>P06/M06</td>\n<td>empty</td>\n<td>AC32</td>\n</tr>\n<tr>\n<td>A2@M1</td>\n<td>从订单进入补打记录</td>\n<td>只读订单号条件，查询该订单所有人工/自动尝试，按时间倒序</td>\n<td>P05/M05</td>\n<td>scoped</td>\n<td>AC33</td>\n</tr>\n<tr>\n<td>A3@M4</td>\n<td>点击关联订单</td>\n<td>有订单查看权限则打开详情；无权限则说明原因且不越权跳转</td>\n<td>P03/M03</td>\n<td>permission</td>\n<td>AC34</td>\n</tr>\n</tbody></table>\n<h3>异常/恢复流程</h3>\n<table>\n<thead>\n<tr>\n<th>异常/恢复</th>\n<th>条件</th>\n<th>用户提示、数据处理及恢复</th>\n<th>页面</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>E1@M3/R1</td>\n<td>查询失败/网络中断</td>\n<td>就地错误及“重试查询”；保留筛选，不将失败当空数据</td>\n<td>P06/M06</td>\n<td>query-error</td>\n<td>AC35</td>\n</tr>\n<tr>\n<td>E2@M2/R2</td>\n<td>结束日期早于开始日期</td>\n<td>日期字段红字，禁止请求；修正后查询</td>\n<td>P06/M06</td>\n<td>invalid</td>\n<td>AC36</td>\n</tr>\n<tr>\n<td>E3@M1/R3</td>\n<td>日志查看权限撤销/越权参数</td>\n<td>无权限页，不暴露记录数量或详情；返回授权入口</td>\n<td>P06/M06</td>\n<td>forbidden</td>\n<td>AC37</td>\n</tr>\n</tbody></table>\n<h2>UC-STALL-PRINT-SWITCH-004｜系统按订单来源与有效打印策略执行首次打印</h2>\n<ul>\n<li>Use Case ID：UC-STALL-PRINT-SWITCH-004</li>\n<li>版本/状态：V0.4 / Review；DoR: BLOCKED（末章明确负责人）。</li>\n<li>主要角色：支付成功后既有打印触发链路及打印服务。</li>\n<li>触发：线上点餐或线下消费产生符合原规则的首次打印事件。</li>\n</ul>\n<h3>前置条件</h3>\n<ol>\n<li>订单已达到现有合法打印时点，支付/订单状态以现有业务为准。</li>\n<li>订单来源、就餐方式/消费类型能确定唯一叶子场景，不能把联网在线/离线或支付方式当业务来源。</li>\n<li>目标档口和打印机绑定合法；有效配置可读；迁移映射已经评审。</li>\n</ol>\n<h3>后置条件</h3>\n<p>成功：</p>\n<ul>\n<li>命中允许场景且原规则可打印时按既有模板/份数投递；关闭时跳过并记策略原因。</li>\n<li>系统运行记录可解释“是否投递及原因”；云服务受理与物理出纸明确分开。</li>\n<li>不会影响同机其他档口、其他场景；不重复支付或创建重复订单。</li>\n</ul>\n<p>失败/取消：</p>\n<ul>\n<li>未知场景/无效绑定/配置不可用不盲投，保留原订单及可追溯异常。</li>\n<li>失败任务进入可解释状态，只在策略允许且结果明确时重试。</li>\n</ul>\n<h3>主流程</h3>\n<table>\n<thead>\n<tr>\n<th>步骤</th>\n<th>用户/系统动作</th>\n<th>页面/控件</th>\n<th>系统响应与数据变化</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>M1</td>\n<td>收到原业务合法打印事件</td>\n<td>P03/P07</td>\n<td>订单详情可看到来源、所属档口及首次打印状态；原型仅模拟该事件</td>\n<td>event</td>\n<td>AC38</td>\n</tr>\n<tr>\n<td>M2</td>\n<td>确定场景和打印目标</td>\n<td>P07</td>\n<td>事件模拟面板展示分类结果及唯一目标；真实系统无额外弹窗</td>\n<td>classified</td>\n<td>AC39</td>\n</tr>\n<tr>\n<td>M3</td>\n<td>提交前读取当前有效策略</td>\n<td>P07</td>\n<td>展示“允许/跳过”及命中开关版本；草稿不参与判断</td>\n<td>decision</td>\n<td>AC40</td>\n</tr>\n<tr>\n<td>M4</td>\n<td>允许则调用既有打印，关闭则跳过</td>\n<td>P05/P07</td>\n<td>订单打印记录分别显示已受理或已跳过及原因</td>\n<td>accepted/skipped</td>\n<td>AC41</td>\n</tr>\n<tr>\n<td>M5</td>\n<td>受理结果回查</td>\n<td>P05/P07</td>\n<td>明确成功/失败/待确认；失败进入UC002自动补打判定</td>\n<td>result</td>\n<td>AC42</td>\n</tr>\n</tbody></table>\n<h3>分支流程</h3>\n<table>\n<thead>\n<tr>\n<th>分支/分支点</th>\n<th>条件</th>\n<th>行为与返回/结果</th>\n<th>页面</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>A1@M3</td>\n<td>目标场景关闭</td>\n<td>不投递、不伪报打印失败、不在恢复开启后追打历史；其他场景继续</td>\n<td>P05/P07</td>\n<td>skipped</td>\n<td>AC43</td>\n</tr>\n<tr>\n<td>A2@M1</td>\n<td>原规则本就不打印</td>\n<td>仍不打印；开启新开关不能把不符合原规则的订单强制打印</td>\n<td>P05/P07</td>\n<td>skipped</td>\n<td>AC44</td>\n</tr>\n<tr>\n<td>A3@M3</td>\n<td>保存时已有排队任务</td>\n<td>尚未受理的按最新有效配置重新判断；已经受理提示无法保证撤回</td>\n<td>P05/P07</td>\n<td>in-flight</td>\n<td>AC45</td>\n</tr>\n</tbody></table>\n<h3>异常/恢复流程</h3>\n<table>\n<thead>\n<tr>\n<th>异常/恢复</th>\n<th>条件</th>\n<th>用户提示、数据处理及恢复</th>\n<th>页面</th>\n<th>状态</th>\n<th>验收</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>E1@M2/R1</td>\n<td>来源未知或分类重叠</td>\n<td>进入分类待核实；不随意归到线上/线下；保留订单及原因</td>\n<td>P05/P07</td>\n<td>unknown-scene</td>\n<td>AC46</td>\n</tr>\n<tr>\n<td>E2@M3/R2</td>\n<td>配置读取失败/绑定无效</td>\n<td>不盲投；记录失败，恢复后重新读取最新配置再决定是否发送</td>\n<td>P05/P07</td>\n<td>config-error</td>\n<td>AC47</td>\n</tr>\n<tr>\n<td>E3@M4/R3</td>\n<td>云服务拒绝或受理结果不明</td>\n<td>明确失败可按UC002处理；未知先回查，不能用成功请求码代替出纸证明</td>\n<td>P05/P07</td>\n<td>failed/unknown</td>\n<td>AC48</td>\n</tr>\n</tbody></table>\n<h2>核心规则、状态和数据</h2>\n<ul>\n<li>BR01：一个订单按来源+业务类型命中唯一场景；原规则不打印时，新开关不能强行打印。联网在线/离线和支付方式不能代替业务来源。</li>\n<li>BR02：开关只影响指定档口/合法打印目标/命中场景；关闭线下菜单不能误关线上点餐或其他档口。</li>\n<li>BR03：配置版本+审计同一事务保存。读取成功后编辑，保存前只是草稿；并发版本冲突拒绝覆盖。</li>\n<li>BR04：保存成功后对尚未向云服务提交的任务按新策略判定；已受理/正在打印不能承诺撤回。再次开启不集中追打历史抑制任务。</li>\n<li>BR05：补打不改支付，不重建订单；唯一目标由原系统绑定匹配，不开放跨档口任选打印机。被关闭场景不能被自动重试绕过。</li>\n<li>BR06：先持久化补打请求再投递；同请求重试幂等，人工/自动并发同订单目标防重；供应商无去重/结果查询能力时不能承诺物理打印恰好一次。</li>\n<li>BR07：首次打印、人工补打、自动补打分开标识；状态为待提交→处理中→已受理→明确成功/明确失败/结果待确认，关闭策略为已跳过，权限/校验不通过为已拒绝。</li>\n<li>BR08：配置与执行日志不允许业务用户关停/编辑/删除。日志不可用时新人工补打不得投递；失败状态保留可追踪请求，不删除历史。</li>\n</ul>\n<h3>日志字段</h3>\n<table>\n<thead>\n<tr>\n<th>日志</th>\n<th>必填字段</th>\n<th>页面显示</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>开关操作</td>\n<td>事件/请求ID、操作人ID/姓名、时间、端、商家/食堂/档口/打印机、改动项、前后值、前后版本、结果/原因</td>\n<td>列表显示人/时间/对象/项/前后值/结果，详情展开版本和请求号</td>\n</tr>\n<tr>\n<td>补打</td>\n<td>请求/尝试ID、订单、来源/场景、目标、人工/自动、人或系统、时间、原因、份数、真实投递次数、服务受理号、策略版本、状态/结果时间/错误</td>\n<td>订单关联卡片/表格，逐次明细；拒绝/跳过不计入成功出票</td>\n</tr>\n</tbody></table>\n<p>日志不保存密码、token、打印机云密钥、小票全文或未脱敏联系方式。默认倒序、分页10条。时间展示Asia/Shanghai，日志保留/归档期由清涛评审。</p>\n<h3>API与数据契约（能力定义，具体路径/字段待技术评审）</h3>\n<table>\n<thead>\n<tr>\n<th>能力</th>\n<th>输入/前置</th>\n<th>输出/错误/一致性</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>读策略</td>\n<td>已鉴权、档口/打印机ID</td>\n<td>场景支持列表、当前值、版本、最后修改人/时间；无权限/无绑定/读取失败区分</td>\n</tr>\n<tr>\n<td>存策略</td>\n<td>目标ID、变更项、expectedVersion、requestId</td>\n<td>新版本+审计成功才成功；冲突409语义、权限403语义、持久化失败不改旧值</td>\n</tr>\n<tr>\n<td>人工补打</td>\n<td>订单、唯一匹配目标、原因、requestId、版本</td>\n<td>记录ID、受理/待确认状态；幂等复用，关闭/无权限/设备异常/未填原因明确拒绝</td>\n</tr>\n<tr>\n<td>查询日志/状态</td>\n<td>授权范围、时间/场景/操作者/结果/订单、page/pageSize</td>\n<td>records/total；结果未知不能映射成功；越权不泄露数量</td>\n</tr>\n</tbody></table>\n<p>上述状态码是拟议语义，不宣称当前接口已支持。数据库对象为策略、配置审计、补打请求、逐目标尝试；保留现有业务订单和支付状态。跨云打印调用不是可回滚数据库事务。</p>\n<h2>验收标准与自动化测试矩阵</h2>\n<p>每个上表AC的Given=对应前置/分支/异常条件，When=对应动作，Then=同一行可观察响应/数据结果；<code>traceability.csv</code>逐条保留映射，不用一张总截图冒充全部通过。</p>\n<table>\n<thead>\n<tr>\n<th>套件</th>\n<th>目标</th>\n<th>覆盖</th>\n<th>证据</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>UI-CONFIG</td>\n<td>PC与移动端读/改/保存/取消/刷新/角色</td>\n<td>AC01—13</td>\n<td>原型自动化、关键状态截图；正式接口与DB回读待开发</td>\n</tr>\n<tr>\n<td>UI-REPRINT</td>\n<td>原因必填、受理、明确结果、禁止/离线/多绑定/重复</td>\n<td>AC14—27</td>\n<td>原型自动化+日志回读；供应商/实机验收待开发</td>\n</tr>\n<tr>\n<td>UI-LOG</td>\n<td>双日志、筛选/分页/上下文、空/失败/无权限</td>\n<td>AC28—37</td>\n<td>原型自动化、详情截图；真实审计一致性待开发</td>\n</tr>\n<tr>\n<td>POLICY</td>\n<td>八开关组合、首次打印/人工/自动、来源分类/结果未知</td>\n<td>AC38—48及AC21/23</td>\n<td>原型模拟决策测试；真实代码与自动任务待开发</td>\n</tr>\n<tr>\n<td>VISUAL</td>\n<td>桌面1440×1000、移动390×844；默认/弹窗/错误/日志</td>\n<td>设计规格中的组件和状态</td>\n<td>实际浏览器截图、无根水平溢出、可达控件/键盘/控制台</td>\n</tr>\n</tbody></table>\n<p>后端权限、事务、幂等、供应商状态和物理打印不能由静态原型证明。现阶段测试只证明文档/原型路径与模拟行为，发布必须补正式API/并发/权限/设备回归。</p>\n<h2>性能、安全、发布与待确认</h2>\n<ul>\n<li>安全：服务端鉴权和租户/档口隔离，前端隐藏不是权限控制；请求防重，日志字段最小化，无跨域生产调用。</li>\n<li>性能：配置读取沿用缓存版本策略，不新增逐单跨端轮询；日志分页和组合索引；响应时间/业务峰值/日志容量的量化阈值需结合当前发布版本评审，本次不捏造已测性能结果。</li>\n<li>发布：历史行为对照→迁移预演→测试档口实机→小范围灰度→两端/日志/自动任务冒烟。配置/功能回滚不抹掉已受理打印或历史审计。</li>\n</ul>\n<table>\n<thead>\n<tr>\n<th>P0待确认</th>\n<th>必须形成的结论</th>\n<th>负责人/时点</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>实际发布基线</td>\n<td>当前PC/移动端真实版本及页面、支持场景、唯一分类条件、订单详情补打入口</td>\n<td>赖清涛，开发前</td>\n</tr>\n<tr>\n<td>迁移与生效</td>\n<td>新设备默认值、旧行为映射、配置读取失败策略、已排队/已受理边界</td>\n<td>赖清涛，开发前</td>\n</tr>\n<tr>\n<td>补打授权与服务能力</td>\n<td>关闭场景能否人工例外（当前方案禁止），次数/间隔、去重/回查能力</td>\n<td>赖清涛组织产品/技术，开发前</td>\n</tr>\n<tr>\n<td>正式权限/日志/性能</td>\n<td>权限ID映射、日志保留/归档、容量/并发/响应阈值</td>\n<td>赖清涛协调相关负责人，开发前</td>\n</tr>\n</tbody></table>\n<p>文档和原型是完整评审包，不是生产可用证明。以上P0未关闭时DoR保持BLOCKED，不开始业务实现。</p>\n<h1>原系统样式与页面交互规格 V0.4</h1>\n<h2>证据分层</h2>\n<ul>\n<li>PC真实截图：既有VWCG-999设备列表/新建打印机配置归档；源码：现有Vue2/Element UI设备管理、订单、全局CSS与home.vue。源码与截图存在版本差异（平台标题/900px小票预览弹窗），以当前本地源码作为原型组件基线，发布版本仍待清涛核对。</li>\n<li>移动端：复用2026-09-15商户移动管理端已有评审原型，不冒充已部署系统。蓝色、卡片、字体、底部导航和触控尺度从该原型提取。</li>\n<li>新增设计：打印策略页签、操作/补打日志入口、原因与状态反馈。无真实新增功能截图，所有After截图标为V0.4原型。</li>\n</ul>\n<h2>样式Tokens：原值、使用方式与继承范围</h2>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>PC定义/来源</th>\n<th>移动端定义/来源</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>字体族</td>\n<td>common.css：Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif</td>\n<td>原移动原型：-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif</td>\n</tr>\n<tr>\n<td>字号</td>\n<td>全局17px；Element表格/表单/按钮14px；头部平台名26px/600；弹窗标题18px；辅助文案12px</td>\n<td>正文/按钮16px，页标题20px/600，说明14px；订单号/时间用等宽数字，不人为改字距</td>\n</tr>\n<tr>\n<td>主色/操作</td>\n<td>Element默认按钮/活动开关#409EFF；common.css文字操作#2493E7</td>\n<td>原移动原型#168FEA，深色#096DB9，浅底#E8F5FE</td>\n</tr>\n<tr>\n<td>正文/次要文字</td>\n<td>Element #303133/#606266/#909399；继承common的黑字与原组件具体定义</td>\n<td>#17283A/#52687D/#8193A4</td>\n</tr>\n<tr>\n<td>背景/边界</td>\n<td>白底，表头#F5F7FA，边框#DCDFE6，分割线#EBEEF5</td>\n<td>画布#EFF7FC，白卡片，边框rgba(24,76,118,.1)</td>\n</tr>\n<tr>\n<td>状态</td>\n<td>成功#67C23A，警告#E6A23C，失败#F56C6C；关闭开关#C0CCDA，禁用#C0C4CC</td>\n<td>继承移动#16875E/#A86300/#D34A4F及浅底；辅以文字，颜色不是唯一信号</td>\n</tr>\n<tr>\n<td>圆角/尺寸</td>\n<td>按钮/输入4px、40px高；开关40×20px；表格原Element行；打印机弹窗900px；补打弹窗520px</td>\n<td>卡片14px、行≥56px；触控热区≥44px，开关外包44px点击区域；底部safe-area</td>\n</tr>\n<tr>\n<td>页头/侧栏</td>\n<td>home.vue：白色页头60px，左右30px，Logo高30px，左导航沿用#2063EE→#2493E7；现有一/二级导航结构</td>\n<td>顶部返回+标题，底部工作台/订单/菜品/我的；设置用整页，不把PC900px弹窗压缩成手机宽表</td>\n</tr>\n<tr>\n<td>间距</td>\n<td>主区20px，弹窗左右28px，表单项20px，分组间16px；列表原生密度</td>\n<td>屏边16px，卡片内16px、卡间12px，底部动作区内16px</td>\n</tr>\n</tbody></table>\n<p>本原型直接嵌入当前已安装Vue2.7.16/ElementUI2.15.14、其CSS和woff图标，复用官方Logo；不引入第二套组件库、远端CDN或新品牌配色。外层“原型演练”工具条是审查工具，不进入正式产品。</p>\n<h2>页面与按钮的精确定义</h2>\n<h3>P01 PC设备列表</h3>\n<p>保留左菜单系统管理、顶部设备管理、设备列表/设备版本页签、类型筛选、设备名/编号/地址/类型/小票配置/创建时间/状态等字段。设备地址、创建时间、当前版本、设备及物联网状态等原字段保留；宽度不足仅表内横向滚动。Xprinter行操作区扩为260px并固定右侧，顺序“编辑、打印策略、日志、删除”；新策略/日志为蓝色文字操作，不新增大色块卡片。“打印策略”打开P02策略页签；“日志”到P06并带入档口/打印机。非打印机无策略入口。新建/删除/设备版本不属本原型执行范围，保留位置、禁用并解释，不模拟修改业务设备。</p>\n<h3>P02 PC编辑设备</h3>\n<p>900px居中白色原Element弹窗，最多viewport−32px。标题“编辑设备”，页签“基础配置/打印策略/操作日志”；基础配置保留设备名、编号、类型、SN、型号、模板、张数、地址、关联档口，原型只读并说明，不把新增开关塞进系统级全局配置。</p>\n<p>策略页：顶部一行设备/档口与版本、修改人；三组线上/线下/补打，每个开关独占行、左文案右开关+开启/关闭文字；不重复加总开关。修改后蓝色就地提示“有未保存修改”；底部右侧取消（白底灰边）/保存（蓝底白字）。保存禁用条件：无修改、无权限、读取失败、保存中、绑定失效。取消/叉号/Escape有草稿时均先确认，焦点回触发按钮。</p>\n<p>操作日志页直接限定当前目标，前后值可展开详情；不要求用户再选同一设备。保存成功绿色提示、新版本、最近修改人回显；失败红色提示在页内持续显示，并提供重试；冲突提示和“重新加载”分开，不能静默覆盖草稿。</p>\n<h3>P03—P05 订单详情与补打</h3>\n<p>消费订单列表保持原表格，“查看”进入详情。详情上部保留订单/支付/菜品，下方新增打印概况与“补打小票/补打记录”。未关联、多关联、离线、场景关闭、补打关闭、无权限或结果待确认时，按钮禁用，旁边明确原因，不让用户反复点击猜。</p>\n<p>补打确认框520px：订单号/档口/自动匹配打印机/打印份数只读；原因下拉必选，选其他显示最多100字说明；取消不生成记录，确认处理中按钮loading并防重复。错误关联原因字段、焦点移至错误位置。受理后返回记录页，主提示“已受理，等待打印结果”，绝不写“打印成功”除非结果已确认。记录详情显示每次人工/系统的请求、原因、份数、次数、时间、结果及策略版本。</p>\n<h3>P06 PC打印日志</h3>\n<p>设备管理新增“打印日志”页签；内部“开关操作/补打记录”双页签。筛选：起止时间、授权档口/打印机、操作者/关键词、状态；补打加订单号。查询主按钮，重置次按钮，10条分页。开关表列时间/端/人/对象/改动/前后/结果/详情；补打表列时间/订单/场景/方式/原因/份数/次数/状态/详情。横向滚动只限表格容器，页面根不横溢出。详情只读，不添加编辑/删除日志按钮。</p>\n<h3>M01—M06 商家移动端</h3>\n<p>我的→设备→打印机卡“打印策略/日志”；订单→查看→补打小票/补打记录。沿用已有蓝色卡片与底部导航；设置是整页分组，底部固定取消/保存，正文保留动作区高度，键盘/安全区不遮挡。补打用满宽底部面板/全屏对话，不需要横向缩放；设备及份数只读。日志是卡片而非宽表，筛选一行/折叠面板、每条含详情。返回行为保留订单或设备上下文，未保存先确认。PC与移动端共享演练存储、版本和日志。</p>\n<h2>通用状态规格</h2>\n<table>\n<thead>\n<tr>\n<th>状态</th>\n<th>用户可见</th>\n<th>操作/恢复</th>\n<th>映射</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>默认/加载</td>\n<td>明确当前目标；列表/表单loading，控件暂禁用</td>\n<td>成功后显示真实读取值，不能先显示默认开关</td>\n<td>UC001 E1、UC003 M3</td>\n</tr>\n<tr>\n<td>空设备/空业务</td>\n<td>暂无已关联小票打印机/该档口未启用此业务</td>\n<td>回设备列表或刷新，无可保存假表单</td>\n<td>UC001前置</td>\n</tr>\n<tr>\n<td>空日志</td>\n<td>暂无符合条件的记录</td>\n<td>重置筛选</td>\n<td>UC003 A1</td>\n</tr>\n<tr>\n<td>未保存/取消</td>\n<td>未保存提示、放弃确认框</td>\n<td>继续编辑/放弃修改</td>\n<td>UC001 M3/A2</td>\n</tr>\n<tr>\n<td>保存中/成功</td>\n<td>loading、防重复；已保存+版本</td>\n<td>刷新可读，另一端同步</td>\n<td>UC001 M4—M6</td>\n</tr>\n<tr>\n<td>保存失败/审计失败</td>\n<td>红色就地原因、旧配置仍有效</td>\n<td>重试；审计失败不落配置</td>\n<td>UC001 E2/E4</td>\n</tr>\n<tr>\n<td>冲突</td>\n<td>已被他人修改、当前版本</td>\n<td>重新加载确认，不自动覆盖</td>\n<td>UC001 E3</td>\n</tr>\n<tr>\n<td>无权限</td>\n<td>只读说明或无权限页，不泄露记录</td>\n<td>返回授权范围</td>\n<td>UC001 A3、UC003 E3</td>\n</tr>\n<tr>\n<td>补打校验失败</td>\n<td>原因必填/其他必说明红字</td>\n<td>输入修正，草稿保留</td>\n<td>UC002 E1</td>\n</tr>\n<tr>\n<td>离线/未关联/多关联</td>\n<td>明确阻断原因与唯一匹配边界</td>\n<td>管理员处理后刷新</td>\n<td>UC002 E2</td>\n</tr>\n<tr>\n<td>已受理/待确认</td>\n<td>中性蓝/警告文字，禁止盲重投</td>\n<td>查询结果，明确结果后才重试</td>\n<td>UC002 M5/E5</td>\n</tr>\n<tr>\n<td>明确成功/失败</td>\n<td>成功绿、失败红+原因，保留每次记录</td>\n<td>失败按策略处理，不改金额</td>\n<td>UC002 M6、UC004 M5</td>\n</tr>\n</tbody></table>\n<p>所有状态可由原型演练工具到达；系统事件面板P07只演示后台判定，不伪装生产已有UI。原型测试不替代真实鉴权/事务/供应商或实机出纸验收。</p>\n<p>补充尺寸：PC策略弹窗距顶部7vh，正文最大高度calc(100vh − 210px)并独立滚动，页脚操作区不随正文消失；手机设置页底部动作固定在视口下缘，宽度不超过430px并留safe-area，页面底部预留100px滚动空间，其他行可完整滚到操作区上方。移动端输入/选择控件至少44px高，开关保持40×20px视觉但点击热区扩为44px；截图分别给首屏和下滚区域，不将长截图中固定动作条误解为业务中间区域。</p>\n<h2>现有系统依据（归档真实截图）</h2><p>现有打印机列表和配置位置；不是新增功能截图。</p><p><img src=\"https://devops.aliyun.com/projex/api/workitem/file/url?fileIdentifier=ccaf4170095d067242983d4ef0\" alt=\"现有系统打印机列表归档真实截图\" style=\"max-width:900px;width:100%;height:auto\" /></p><p><img src=\"https://devops.aliyun.com/projex/api/workitem/file/url?fileIdentifier=7a406956f3fe5915dd15f40427\" alt=\"现有打印机配置及关联档口归档真实截图\" style=\"max-width:900px;width:100%;height:auto\" /></p><h2>原型截图与状态（V0.4演练，不是上线截图）</h2><p><strong>P02：现有编辑设备结构中的打印策略，菜单消费关闭</strong></p><p><img src=\"https://devops.aliyun.com/projex/api/workitem/file/url?fileIdentifier=7813bb136586ddbeb4efbca3f2\" alt=\"P02：现有编辑设备结构中的打印策略，菜单消费关闭\" style=\"max-width:900px;width:100%;height:auto\" /></p><p><strong>M02：商家移动端打印策略，底部保存与页面滚动</strong></p><p><img src=\"https://devops.aliyun.com/projex/api/workitem/file/url?fileIdentifier=63568a8dd3a7e1c1db1f0b4909\" alt=\"M02：商家移动端打印策略，底部保存与页面滚动\" style=\"max-width:390px;width:100%;height:auto\" /></p><p><strong>P02/E2：保存失败，草稿保留且旧配置有效</strong></p><p><img src=\"https://devops.aliyun.com/projex/api/workitem/file/url?fileIdentifier=3b12ad8cdafac03372b43e960b\" alt=\"P02/E2：保存失败，草稿保留且旧配置有效\" style=\"max-width:900px;width:100%;height:auto\" /></p><p><strong>P05：补打记录，已受理与实际出纸分开</strong></p><p><img src=\"https://devops.aliyun.com/projex/api/workitem/file/url?fileIdentifier=264a88987b8dc12dfea2630f97\" alt=\"P05：补打记录，已受理与实际出纸分开\" style=\"max-width:900px;width:100%;height:auto\" /></p><p><strong>P06：开关操作日志，修改前后值及操作者可追溯</strong></p><p><img src=\"https://devops.aliyun.com/projex/api/workitem/file/url?fileIdentifier=1d697c1d359d58cd05fed3f41f\" alt=\"P06：开关操作日志，修改前后值及操作者可追溯\" style=\"max-width:900px;width:100%;height:auto\" /></p>",
  "url": "https://devops.aliyun.com/projex/project/dd2f708d1702891ff45b6f5d99/req#openWorkitemIdentifier=f0cf33b7553bedbdaadd882f25"
}