{
  "creator": {
    "name": "李潇",
    "id": "63575519287a2b849fa9a642"
  },
  "modifier": {
    "name": "李潇",
    "id": "63575519287a2b849fa9a642"
  },
  "gmtCreate": 1782991467000,
  "gmtModified": 1782991467000,
  "serialNumber": "VWCG-1070",
  "subject": "小程序我的页面支付码支持绑盘",
  "description": "## 需求背景\n\n当前小程序“我的”页面已有向商家付款的支付码。业务希望该支付码除消费支付外，也可用于绑盘场景：用户展示支付码，绑盘设备扫描后完成用户与餐盘的绑定。\n\n## 需求目标\n\n- 小程序“我的”页面展示的支付码可以被绑盘设备识别并用于绑盘。\n- 绑盘设备扫描用户支付码后，后端能够按支付码找到对应用户/人员，并完成餐盘绑定。\n- 保持现有支付码有效期、余额校验、餐盘重复绑定等业务规则。\n\n## 需求内容\n\n### 1. 支付码用于绑盘\n\n- 用户在“我的”页面打开支付码。\n- 绑盘设备扫描支付码后，将支付码、餐盘编号、设备编号等参数提交后端。\n- 后端根据支付码识别当前用户对应的 staff_uuid。\n- 使用现有人盘绑定逻辑完成餐盘绑定。\n\n### 2. 编码兼容\n\n- 小程序支付码内容可能包含 C 前缀，例如 Cxxxx。\n- 后端绑盘时应兼容带 C 前缀和不带 C 前缀的支付码输入。\n- 与现有消费支付码规则保持一致，不应因为前缀差异导致“个人二维码无效”。\n\n### 3. 业务校验\n\n- 支付码过期时提示支付码已失效。\n- 支付码不存在时提示个人二维码无效。\n- 餐盘已绑定时提示此餐盘已绑定。\n- 余额不足时沿用现有提示：余额不足，请手机端充值后再绑盘。\n\n## 验收要点\n\n- 在小程序“我的”页面展示支付码，绑盘设备扫描后可完成当前用户与餐盘绑定。\n- 带 C 前缀和不带 C 前缀的支付码均能按统一规则识别。\n- 支付码过期、无效、餐盘已绑定、余额不足等异常场景有明确提示。\n- 绑定成功后，后端绑定记录中 staff_uuid、plate_code、bind_time、meal_times 等字段正确。\n- 不影响现有扫码支付、消费机支付码支付功能。\n\n## 需求拆分说明\n\n本需求只覆盖“设备扫用户支付码绑盘”。“用户在我的页面扫一扫扫餐盘码绑盘”另建需求跟进。\n\n## 负责人\n\n兰海军",
  "formatType": "MARKDOWN",
  "assignedTo": {
    "name": "兰海军",
    "id": "635755195dc8531eeb2e33d9"
  },
  "status": {
    "name": "待处理",
    "nameEn": "To Do",
    "displayName": "待处理",
    "id": "100005"
  },
  "space": {
    "name": "【产品线】智慧营养健康餐厅",
    "id": "dd2f708d1702891ff45b6f5d99"
  },
  "workitemType": {
    "name": "产品类需求",
    "id": "9uy29901re573f561d69jn40"
  },
  "logicalStatus": "NORMAL",
  "customFieldValues": [
    {
      "fieldName": "优先级",
      "fieldFormat": "list",
      "values": [
        {
          "identifier": "04f8224daf4e1e1050bca2cd4c",
          "displayValue": "中"
        }
      ],
      "fieldId": "priority"
    }
  ],
  "updateStatusAt": null,
  "trackers": null,
  "participants": null,
  "verifier": null,
  "sprint": null,
  "labels": null,
  "versions": null,
  "id": "665789ae4cbb119f5c00ae633f",
  "idPath": null,
  "statusStageId": "1",
  "categoryId": "Req",
  "parentId": null
}