{
  "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,
    "ownership": true,
    "fullSections": true,
    "ucIds": true,
    "ucMarkers": true,
    "style": true,
    "prototypes": true,
    "images": true,
    "attachments": true,
    "comment": true
  },
  "bodyChars": 26097,
  "publicUrls": {
    "review": "https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v05/review.html",
    "prototype": "https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v05/prototype.html",
    "mobile": "https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v05/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": "d1a83a1dd7e4a59f6fc5d9edc1",
      "name": "原系统页面与样式规格-V0.5.md",
      "size": 7597
    },
    {
      "id": "689859f51c85182cae561448c4",
      "name": "商家移动端档口设置原型-V0.5.png",
      "size": 55922
    },
    {
      "id": "3b12ad8cdafac03372b43e960b",
      "name": "保存失败与恢复原型-V0.4.png",
      "size": 168626
    },
    {
      "id": "0e2bbf7330765b357a3f17d7bb",
      "name": "保存失败与恢复原型-V0.5.png",
      "size": 376444
    },
    {
      "id": "0b216b779229ba3d3bf3f200fe",
      "name": "现有系统交互原型-V0.5.html",
      "size": 1151151
    },
    {
      "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
    },
    {
      "id": "caadf21970f63a74dc04993ebd",
      "name": "PC档口打印设置原型-V0.5.png",
      "size": 361429
    },
    {
      "id": "028ee9186eb8981ea3cc6013a6",
      "name": "补打记录原型-V0.5.png",
      "size": 209119
    },
    {
      "id": "e969471e1bf684db47869d1e5f",
      "name": "用例页面状态验收映射-V0.5.csv",
      "size": 9661
    },
    {
      "id": "ec2d0277eb3a66e361d20af727",
      "name": "完整UseCase与流程-V0.5.md",
      "size": 28771
    },
    {
      "id": "0d25ba2877f148f13bf204f5e8",
      "name": "开关操作日志原型-V0.5.png",
      "size": 191999
    }
  ],
  "description": "<h2>需求摘要与当前评审入口</h2><p>按用户最新纠正：打印设置放在打印机所绑定档口的编辑页，按档口ID归属；按线上/线下场景及人工/自动补打独立控制。设备只维护绑定/模板/张数，不单独保存策略。换机不丢档口策略，换绑读取新档口策略；配置与执行日志保留档口和设备上下文。PC与商家移动端共用有效策略。本版按用户最新要求将完整Use Case、前置/后置/主/分支/异常、原系统样式与页面/状态规格直接写入正文，V0.1—V0.4仅历史参考。</p><p><a href=\"https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v05/review.html\">完整用例＋原系统样式＋现状/原型对照＋53条流程映射</a></p><p><a href=\"https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v05/prototype.html\">PC可操作原型</a> · <a href=\"https://img.kxunpt.cn/public/ai-marketing-platform/work_store/20261009-stall-printer-switch/v05/prototype.html?mode=mobile\">商家移动端可操作原型</a></p><p>验证：22项档口归属及交互检查通过；仅证明静态演练，不证明真实后端鉴权、事务、供应商或实机出纸。PC依据当前本地源码和归档真实截图；移动端依据已有评审原型，当前生产版本需清涛核对。</p><h1>VWCG-1414｜按业务场景控制小票打印：完整 Use Case 与原型规格 V0.5</h1>\n<p>2026-10-09｜负责人赖清涛｜Review / DoR: BLOCKED（原系统识别与上线契约待评审，见末章）</p>\n<h2>目标与范围</h2>\n<p>解决线上点餐、线下菜单消费共用打印机混打的问题。标品 PC 和商家移动端以档口ID作为策略归属，按“档口＋业务场景”独立开关；打印机仅是已绑定执行设备；人工/自动补打独立控制；配置操作及每次补打可查询日志。默认保持旧业务行为，不改订单、金额、支付、模板或既有打印份数，不增加打印机绑定关系。</p>\n<p>最新用户明确要求完整 Use Case 直接可见，图片不能替代前置/后置/主/分支/异常流程。V0.5正文为当前权威版本；V0.1—V0.4附件仅历史参考。</p>\n<h2>现有系统依据与证据边界</h2>\n<p>PC档口入口：<code>store/public/static/src/view/restaurantManagement/restaurantSetting/stallSet.vue</code>及<code>addStallRules.vue</code>。设备绑定：<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>保留所属餐厅/档口名称筛选、营业时间/负责人/位置/状态及编辑操作</td>\n</tr>\n<tr>\n<td>P02</td>\n<td>现有编辑档口整页addStallRules</td>\n<td>保留原表单、顶部保存；在原业务规则后新增“打印设置”分组、档口策略版本与日志入口，打印机只读</td>\n</tr>\n<tr>\n<td>P08</td>\n<td>系统管理→设备管理（只读上下文）</td>\n<td>不另存策略；查看绑定档口跳转P02，执行日志可按设备查询</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.5 / 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>P01</td>\n<td>保留现有档口名称、所属餐厅、四餐营业时间、负责人、位置、状态、编辑操作</td>\n<td>loaded</td>\n<td>AC01</td>\n</tr>\n<tr>\n<td>M2</td>\n<td>点目标档口“编辑”，进入原有编辑档口整页，在原表单后查看新增“打印设置”分组</td>\n<td>P02</td>\n<td>以档口ID加载策略/版本/修改人；已关联打印机只读展示，设备绑定/模板/张数仍在设备管理维护</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<tr>\n<td>A4@M2</td>\n<td>同一档口更换打印机</td>\n<td>档口策略及版本保持；仅执行设备改变，日志保留历史目标</td>\n<td>P02/P03</td>\n<td>binding-replaced</td>\n<td>AC49</td>\n</tr>\n<tr>\n<td>A5@M2</td>\n<td>打印机改绑另一档口</td>\n<td>读取新档口策略，不携带原档口开关；订单按自身档口重新匹配</td>\n<td>P01/P02/P03</td>\n<td>binding-moved</td>\n<td>AC50</td>\n</tr>\n<tr>\n<td>A6@M2</td>\n<td>档口未关联打印机</td>\n<td>可预配置并保存档口开关；提示实际打印/补打仍因无设备而阻断</td>\n<td>P02/M02/P03</td>\n<td>unbound-configurable</td>\n<td>AC51</td>\n</tr>\n<tr>\n<td>A7@M1</td>\n<td>从设备管理查看绑定档口</td>\n<td>设备页没有独立策略编辑，仅定位当前绑定档口的编辑页</td>\n<td>P08/P02</td>\n<td>stall-context</td>\n<td>AC52</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.5 / 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.5 / 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>订单入口只返回该订单、档口入口继承该档口上下文；打印机ID只用于执行记录筛选；返回路径保留原上下文。</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.5 / 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>归属纠正与绑定变化（本次V0.5核心）</h2>\n<ul>\n<li>打印策略及版本以商家/租户＋档口ID归属，不以打印机ID或SN归属。编辑入口在现有addStallRules整页的“打印设置”；设备管理不再提供另一份可编辑策略。</li>\n<li>执行链：订单.restaurant_id → 档口有效打印策略 → 按equipment.restaurant_id查当前关联打印机 → 按允许场景执行。</li>\n<li>同一档口换打印机，策略/版本保持；同一打印机换绑另一档口，读取新档口策略，不携带旧档口开关。绑定变化仍走原设备管理，不在打印设置中直接改绑。</li>\n<li>无打印机时允许预配置档口开关并明确“当前未绑定，不会实际打印”；实际订单/补打仍阻断未关联、多关联及无效设备。打印机异常不改变策略主键。</li>\n<li>配置日志以档口记录修改对象，可附当前绑定打印机快照；补打日志记录订单所属档口与实际执行打印机。历史日志不因换绑改写。</li>\n<li>新验收AC49：换机不丢策略；AC50：换绑只读新档口策略；AC51：无机可配但不能投递；AC52：设备页没有独立策略编辑入口。额外测试与映射见ownership-tests.json。</li>\n</ul>\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>上述状态码是拟议语义，不宣称当前接口已支持。数据库对象为按档口ID归属的策略及配置审计、补打请求、逐目标尝试；保留现有业务订单和支付状态。跨云打印调用不是可回滚数据库事务。</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.5</h1>\n<h2>本次纠正：归属与真实入口</h2>\n<p>源代码事实：<code>stallSet.vue::examine(row)</code>进入<code>/restaurantManagement/restaurantSettings/stallSet/addStallRules?isEdit=1&amp;id=&lt;档口ID&gt;</code>，实际为“编辑档口”整页；不是设备编辑弹窗。<code>equipment.restaurant_id</code>表示打印机绑定档口；<code>MealOrder::resolveReceiptPrinterConfig</code>先取订单restaurant_id，再查同档口设备。</p>\n<p>因此主入口为 <strong>餐厅管理 → 餐厅设置 → 档口设置 → 编辑 → 原有档口业务表单后的“打印设置”</strong>。策略按租户＋档口ID存储，打印机只读展示；设备管理保留绑定、SN、模板和张数，不增加第二份独立策略。移动端新增“我的 → 档口设置 → 目标授权档口 → 打印设置”；原有设备状态入口仍保留，仅可查看绑定档口或执行日志。</p>\n<h2>原型依据与边界</h2>\n<p>PC使用现有<code>stallSet.vue</code>档口表格、<code>addStallRules.vue</code>整页表单、<code>restaurantSettings.vue</code>三级页签，以及当前Vue2.7.16/ElementUI2.15.14的组件CSS、图标和官方Logo。本地源码快照HEAD <code>301815bd695483a5709d2fac4d6b7f29e1334b49</code>，不冒充最新发布。当前没有新采集的真实档口截图，Before只展示归档打印机绑定页作为绑定事实参考；After全部是可操作原型截图。移动样式沿用已有商户移动管理评审原型，不冒充生产截图。</p>\n<p>原型只演练新增档口打印配置、补打和日志；原有基础信息、照片、营业/订餐规则只读展示，不改真实档口业务，不连接正式接口。示例时间、名称和开关初始值均为合成数据。</p>\n<h2>色彩、字体、尺寸</h2>\n<table>\n<thead>\n<tr>\n<th>项目</th>\n<th>定义与来源</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>PC字体</td>\n<td>common.css：Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif；正文17px，Element表单/表格/按钮14px，页面标题18px、平台标题26px/600，辅助12px</td>\n</tr>\n<tr>\n<td>PC主色</td>\n<td>原Element蓝#409EFF；文字操作#2493E7，档口分组标题前的竖条#2493E7、5×20px；原档口表头#F5F5F5，边框#DCDFE6/分隔#EBEEF5，白底</td>\n</tr>\n<tr>\n<td>状态</td>\n<td>成功#67C23A，警告#E6A23C，失败#F56C6C；关闭开关#C0CCDA，状态必须伴随开启/关闭/失败原因文字</td>\n</tr>\n<tr>\n<td>按钮/表单</td>\n<td>现有按钮/输入40px高、圆角4px；表单label-width120px；档口编辑头部padding20px，与右侧“保存”同排；新打印分组使用同一sub-title，不另起品牌卡片系统</td>\n</tr>\n<tr>\n<td>PC布局</td>\n<td>保留原所属餐厅级联筛选＋档口名输入＋搜索、新建位置；保留档口表的名称/餐厅/四餐营业时间/负责人/位置/状态/编辑等列；宽表仅表内横滚，操作列固定右侧是原型便于审查的呈现建议</td>\n</tr>\n<tr>\n<td>编辑页</td>\n<td>复用现有整页，不再使用900px“编辑设备”弹窗；原基础资料左右栏（左表单、右照片）、营业时间、订餐规则顺序保留，随后新增打印设置。原型头部保存保持同一位置并提供返回；为长页演练作sticky呈现，属于可逆交互建议</td>\n</tr>\n<tr>\n<td>移动字体/色彩</td>\n<td>原移动原型字体：-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei；正文16px、页标题20px、辅助14px；#168FEA/#096DB9/#E8F5FE，画布#EFF7FC、白卡片14px圆角</td>\n</tr>\n<tr>\n<td>移动交互</td>\n<td>授权档口卡片→整页打印设置；屏边16px、卡间12px、设置行≥56px；按钮/输入及开关触控热区≥44px；底部取消/保存固定并留safe-area和100px内容留白，内容可完整上滚</td>\n</tr>\n<tr>\n<td>补打对话</td>\n<td>PC维持520px现有风格确认框；移动用整页/底部确认面板；关联打印机及份数只读，原因必填。与档口配置归属分开，不因换绑改写历史执行日志</td>\n</tr>\n</tbody></table>\n<h2>页面/按钮与业务体现</h2>\n<h3>P01 档口设置列表</h3>\n<p>沿用“区域设置/餐厅设置/档口设置”页签以及所属餐厅、档口名称搜索。目标行点击“编辑”进入P02；不是点击打印机行配置。下载二维码/叫号大屏保留位置但不在本原型执行范围。无搜索结果显示空态与重置方向，商家只见授权档口。</p>\n<h3>P02 编辑档口整页</h3>\n<p>页头“编辑档口·A档口”，左返回档口列表、右蓝色保存。原有基础资料/营业时间/订餐规则只读，新增“打印设置”位于其后。配置顶部明确“档口”“当前绑定打印机（只读）”“档口策略版本/修改人/时间”；三组线上/线下/补打开关逐行展示，与原页面同色同字体。任何修改先进入草稿，保存之前不改变有效策略。</p>\n<p>保存成功显示绿色就地提示及新档口版本；失败保留草稿与旧配置，版本冲突拒绝覆盖并提供重新加载确认；无权限只读。未绑定打印机可维护档口策略，提示不会实际打印；未绑定/多绑定/离线仍由打印执行/补打前置检查阻断。返回/Escape/取消有草稿时确认，不误写原营业或订餐规则。</p>\n<p>“打印日志”在本档口打印设置下，进入P06自动带档口ID；开关日志以档口为修改对象，当前绑定打印机可作快照，不能作为策略主键。</p>\n<h3>设备管理边界</h3>\n<p>设备页仍管理设备、绑定档口、模板和张数。原型不修改真实设备；仅提供“查看绑定档口”定位P02，以及“执行日志”只读查询。这里没有可单独保存的开关；不能把设备的编辑动作重新指向设备级策略。</p>\n<h3>P03—P06 订单、补打与日志</h3>\n<p>订单详情先显示所属档口，再按最新绑定匹配唯一打印机；判断顺序为档口策略→合法绑定/在线条件→打印。场景或人工补打关闭、无权限、未关联、多关联、离线、上次结果未知均明确说明，不盲重投。补打原因必填，已受理不等于打印成功。</p>\n<p>补打记录保留订单所属档口、实际设备ID/名称/SN快照、人工/自动、原因、份数/次数、受理号、策略版本和结果。设备换绑后历史记录不修改；配置日志查询以档口限定，执行日志可按实际打印机进一步筛选。详情可回授权订单，关闭后保留来源筛选。</p>\n<h3>M01—M06 移动端</h3>\n<p>“我的”新增档口设置，保留设备状态；进入授权档口卡片→编辑档口·打印设置。配置归属、版本、8开关、保存失败/取消/冲突与PC一致，不因从手机设置形成另一份配置。订单→详情→补打沿用已有移动路径；日志用卡片而非压缩PC宽表。若从设备卡片进入，只定位其当前绑定档口，不携带设备级策略。</p>\n<h2>状态与用例映射</h2>\n<ul>\n<li>UC001：P01/M01读授权档口→P02/M02读版本→修改草稿→保存中→保存成功及操作日志；取消/失败/冲突/无权限/读取失败均有明确反馈；未绑定只影响实际执行。</li>\n<li>UC002：P03/M03读订单所属档口与当前绑定→P04/M04校验原因/开关/权限/设备→P05/M05已受理/明确成功/失败/待确认，拒绝和跳过有原因，不再次扣款。</li>\n<li>UC003：P06/M06按档口操作/补打记录分签，筛选/分页/空/失败/无权限/记录详情和关联订单；保留上下文。</li>\n<li>UC004：后台收到事件→订单.restaurant_id→档口策略→匹配当前打印机→允许/跳过/异常。P07只是原型审查工具，生产不新增用户弹窗。</li>\n</ul>\n<p>新增归属回归AC49—52：换机不丢档口策略；换绑读取新档口策略；无机可配置但不能投递；设备页不再有独立策略编辑。原49条流程映射及四种用例前后/主/分支/异常全部继续保留，不能因本次纠正缩回示意图。</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.5演练，不是上线截图）</h2><p><strong>P02：现有编辑档口整页内新增打印设置，策略归档口</strong></p><p><img src=\"https://devops.aliyun.com/projex/api/workitem/file/url?fileIdentifier=caadf21970f63a74dc04993ebd\" 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=689859f51c85182cae561448c4\" 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=0e2bbf7330765b357a3f17d7bb\" 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=028ee9186eb8981ea3cc6013a6\" 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=0d25ba2877f148f13bf204f5e8\" alt=\"P06：开关操作日志，修改前后值及操作者可追溯\" style=\"max-width:900px;width:100%;height:auto\" /></p>",
  "url": "https://devops.aliyun.com/projex/project/dd2f708d1702891ff45b6f5d99/req#openWorkitemIdentifier=f0cf33b7553bedbdaadd882f25"
}