{
  "subject": "修复：金斯瑞预订小票取餐日期误用下单时间",
  "description": "# 修复金斯瑞预订小票取餐日期错误\n\nUse Case ID：UC-JSR-RECEIPT-001；版本v1；DoR: READY。\n\n## 目标与来源\n9月12日创建、预约9月14日11:30 - 19:30取餐的同一订单，后台日期正确，小票却打印9月12日11:05:59。已读取有道群聊及两张原图，并在本地确认bind_time错误映射；最新origin/master同样存在该映射。用户明确授权创建任务、独立分支修复并合并master，上线由用户执行。\n\n## 角色、范围与权限\n角色：订餐人、餐厅操作员、现有打印服务。仅在现有订单/餐厅权限内生成小票。\n范围：store的orderPrint查询与普通/紧凑小票取餐时间展示。修复对象为OrderSourceEnum::ORDERFOOD（4），依据ai_api Checkout的预订订单创建映射；其他来源保留bind_time。\n不改变订单资金、日期字段写入、统计口径、取餐柜二维码、打印状态机、重试次数、接口权限；不改ai_api，不执行生产部署、数据修复或批量重打。\n\n## 触发、前置、后置\n触发：已支付预订单通过现有自动打印或补打路径生成内容。前置：订单保留meal_date和取餐时段快照，现有打印条件满足。成功后置：票面取餐日期/完整时段与后台一致。失败后置：保持现有打印错误处理，不写伪造日期。\n\n## 主流程\nM1：读取订单原有字段，并补选source、meal_date、take_time_start、take_time_end。\nM2：source=4时使用订单meal_date；两个取餐时段都有值时追加起止时段，与后台规则一致；不从当前档口配置反算历史订单。\nM3：普通模板和紧凑模板共用同一取餐时间，长内容按现有32列换行助手处理。\nM4：订餐时间仍取pay_time，后续真实打印、状态流转沿用现有流程。\n\n## 分支与异常/恢复\nA1：无时段或仅一个时段时只显示预约日期，对齐后台现有规则。\nA2：非source=4订单保留原bind_time输出，source缺失亦保留旧行为。\nA3：equipmentType=30继续隐藏取餐时间；模板1-5均覆盖。\nE1：预约日期为空、哨兵值或非法日期时显示“-”，禁止回退为下单日或今天。\nR1：由现场根据原订单确认数据异常；本修复不修改历史数据。\nE2：打印平台失败，继续既有处理/重试流程。R2：已有补打入口重新生成相同预约日期；不新增批量重打或重复放柜行为。\n\n## 业务规则及数据/API\nBR1：仅打印层修正日期语义；BR2：预约日期优先订单快照，禁止改bind_time；BR3：非预约及点餐机行为保持；BR4：支付时间/金额/二维码/打印状态机不变。\n数据：ydy_meal_order现有四个字段，字段已被现有业务查询和页面使用，无DDL。\nAPI：[不适用：不新增或修改外部接口契约]。页面：后台详情模板不变。\n\n## 验收标准与测试矩阵\nAC1/UT1：跨日9/12→9/14在五种模板中日期和完整时段正确，不能出现bind_time值；订餐时间保持9/12。\nAC2/UT2：当天、跨月、跨年、无时段/单边时段与规则一致。\nAC3/UT3：空/非法/哨兵日期输出“-”，无虚构日期。\nAC4/UT4：非预约来源及缺来源保留bind_time；equipmentType=30不显示取餐时间；金额、二维码、模板/字段回归不变。\nAC5/IT1：打印查询确实选出四个新字段；长取餐字段每行不超过32列，内容完整；相同订单重复渲染内容稳定。\nAC6/E2E1：用户上线后核对问题单纸票应为9/14及其取餐时段。真实纸票验收由上线人执行，不作为本地已通过测试。\n\n## 性能与安全\n同一订单打印不增加SQL查询次数或网络请求，仅增加选列与字符串处理；权限、门店条件及金额零变更。测试使用脱敏fixture，禁用外网、无业务数据库、无真实打印。执行PHP7.3语法、定向PHPUnit、现有打印回归、独立代码审查。\n\n## 计划、交付与待确认\n计划开始/完成：2026-09-12；预计工时4小时（无AI分析、实现、回归及交付口径）。执行负责人姜阳。\n交付：独立任务分支、修复及测试提交、关联MR、master合并及远端SHA回读、测试记录。用户指定master覆盖默认release预合并流程。\n开发P0待确认项已关闭：目标master由用户指定；非预约和缺日期/单边时段策略以上述最小兼容规则冻结。生产部署版本和真实纸票为用户上线验收项，不声明已上线。\n",
  "documentFormat": "MARKDOWN",
  "assignedTo": "63564e8c287a2b849f983b4a",
  "spaceId": "dd2f708d1702891ff45b6f5d99",
  "workitemTypeId": "ba102e46bc6a8483d9b7f25c",
  "customFieldValues": {
    "79": "2026-09-12",
    "80": "2026-09-12"
  }
}