{
  "schema_version": "2.0",
  "id": "C-13-partial-error",
  "name": "拍照听写 · 部分照片识别失败",
  "module": "听写-拍照听写",
  "ui_family": "dictation",
  "viewport": {
    "width": 390,
    "height": 844
  },
  "purpose": "逐张标出失败图片，成功结果保留；可单独重试、重拍或删除失败照片后继续。",
  "entry": {
    "from": [
      "C听写首页",
      "本来源词表、共用设置或同页支线状态"
    ],
    "preconditions": [
      "已登录；不要求先选课本",
      "图片／词条为本地示例，演示状态不是生产识别结果"
    ],
    "rule_status": "confirmed"
  },
  "ui_elements": [
    {
      "id": "C-13-partial-error.ui.0",
      "label": "已拍数量／逐张状态",
      "description": "已拍数量／逐张状态",
      "rule_status": "proposed"
    },
    {
      "id": "C-13-partial-error.ui.1",
      "label": "照片缩略图或列表",
      "description": "照片缩略图或列表",
      "rule_status": "proposed"
    },
    {
      "id": "C-13-partial-error.ui.2",
      "label": "单张查看、删除、重拍",
      "description": "单张查看、删除、重拍",
      "rule_status": "proposed"
    },
    {
      "id": "C-13-partial-error.ui.3",
      "label": "批次识别及返回保留",
      "description": "批次识别及返回保留",
      "rule_status": "proposed"
    }
  ],
  "interactions": [
    {
      "id": "RETRY-ONE",
      "trigger": "重试这张",
      "condition": "该图片失败",
      "effect": "只重试这一张，成功图片不重跑，词表在全部处理完成前不被替换",
      "destination": "C-13-recognizing",
      "payload": [
        "批次ID、photoId、图像引用、方向、来源页、识别版本及结果"
      ],
      "rule_status": "proposed",
      "source": "用户拍多张需求的详细设计补全",
      "prototype_behavior": "本地示例可操作；相机、相册和OCR均未接入"
    },
    {
      "id": "RETAKE-ONE",
      "trigger": "重拍",
      "condition": "失败照片存在",
      "effect": "只替换这张照片，其他成功图片结果保持",
      "destination": "C-13",
      "payload": [
        "批次ID、photoId、图像引用、方向、来源页、识别版本及结果"
      ],
      "rule_status": "proposed",
      "source": "用户拍多张需求的详细设计补全",
      "prototype_behavior": "本地示例可操作；相机、相册和OCR均未接入"
    },
    {
      "id": "HANDLE",
      "trigger": "处理照片",
      "condition": "有失败项",
      "effect": "回照片列表处理，不能静默丢弃失败页",
      "destination": "C-13-photos",
      "payload": [
        "批次ID、photoId、图像引用、方向、来源页、识别版本及结果"
      ],
      "rule_status": "proposed",
      "source": "用户拍多张需求的详细设计补全",
      "prototype_behavior": "本地示例可操作；相机、相册和OCR均未接入"
    }
  ],
  "back_behavior": {
    "destination": "实际来源页",
    "preserve": [
      "未确认输入",
      "本来源词条及选择",
      "词条改动、读音状态、排序",
      "重拍／补拍模式、旧词表、页码",
      "共用播报偏好、滚动位置"
    ],
    "rule_status": "proposed"
  },
  "data_source": [
    {
      "name": "相机／系统相册、OCR、词库、音源、TTS、共用听写服务",
      "data": [
        "图片与识别请求ID",
        "英文原文及修订记录",
        "稳定词条ID、词义ID",
        "标准音／合成音状态",
        "服务失败与重试"
      ],
      "contract_status": "pending"
    }
  ],
  "data_model": [
    {
      "id": "entryDraft",
      "type": "object",
      "description": "entry来源隔离photo/search/textbook；items及selected稳定ID；输入、照片模式、页码、receipt；不与教材选词混写",
      "rule_status": "proposed"
    },
    {
      "id": "word",
      "type": "object",
      "description": "id/en/cn/ipa/pageNo/pageRefs/audioStatus:standard/unconfirmed/confirmed/error；修订拼写需重置旧audio确认",
      "rule_status": "proposed"
    },
    {
      "id": "imageRequest",
      "type": "object",
      "description": "requestId、图片引用、方向、有效识别区域、action:replace/append；取消／离开后丢弃迟到结果",
      "rule_status": "proposed"
    },
    {
      "id": "photoBatch",
      "type": "object",
      "description": "batchId、action:replace/append、orderedPhotos[{photoId,imageRef,turns,quality,status,payload,requestVersion}]；按照片及词条顺序合并，结果保留稳定photoIds引用；取消旧请求不覆盖后来重拍",
      "rule_status": "proposed"
    }
  ],
  "states": [
    {
      "id": "partial-error",
      "description": "拍照听写 · 部分照片识别失败",
      "rule_status": "proposed"
    }
  ],
  "prototype_states": [
    {
      "id": "partial-error",
      "label": "拍照听写 · 部分照片识别失败",
      "scope": "prototype_only"
    }
  ],
  "default_preview_state": "partial-error",
  "acceptance_criteria": [
    {
      "given": "该图片失败",
      "when": "重试这张",
      "then": "只重试这一张，成功图片不重跑，词表在全部处理完成前不被替换；目标 C-13-recognizing",
      "rule_status": "proposed"
    },
    {
      "given": "失败照片存在",
      "when": "重拍",
      "then": "只替换这张照片，其他成功图片结果保持；目标 C-13",
      "rule_status": "proposed"
    },
    {
      "given": "有失败项",
      "when": "处理照片",
      "then": "回照片列表处理，不能静默丢弃失败页；目标 C-13-photos",
      "rule_status": "proposed"
    }
  ],
  "pending_from_source": [
    "正式OCR在反光、弯页和手写体下的准确性需服务验收；原型不承诺识别率",
    "图片留存、用户删除与请求日志保留到23设置及服务契约确认；不在草稿永久保存原图",
    "词数／补拍页数限制依据性能、计费及音频时长评估；本轮不虚设任意上限"
  ],
  "additional_unspecified": [
    "拍单词表OCR的权益和次数在17会员模块确认，不混同纸笔答案批改的会员门槛",
    "合成读音不可用时禁选该词，保留词条让用户重试；音源供应商与英文口音待正式音频配置"
  ],
  "implementation_constraints": [
    "屏幕内产品UI不显示页编号、实现字段或Mock开关",
    "图片采集与答题纸拍照不可混淆；前者准备题目，后者批改答案",
    "实际音频播放完成才可确认，不以按钮点击替代试听成功",
    "photo/search分别保留草稿；C-3开始时快照所选词、音源及固定题序",
    "相同词合并以已匹配词条及词义身份为准；仅拼写相同但词义不同不自动合并；保留用户修订",
    "不重画C-3～C-12下游，保留实际来源返回和复听上下文",
    "拍完不立即识别；拍摄／相册返回同一批次，点击完成进入照片列表",
    "每张照片有稳定photoId、方向、清晰度、请求版本和结果；只对重拍／旋转的照片重新识别",
    "部分照片失败保留其余成功结果，显示失败页并允许单张重试、重拍或删除；全部保留照片成功后才汇总词表",
    "删除最后一张后显示空状态，识别禁用，不能自动塞回示例照片",
    "同一批次相同词去重；补拍与已有词表也去重，保留原手工修订、选择和来源照片引用"
  ],
  "prototype_limitations": [
    "相机和相册使用示例单词表，旋转仅演示方向；不请求实际摄像头或读用户照片",
    "OCR、词典、标准音、合成音均为本地样例；固定匹配结果不构成API契约",
    "共用后续听写同v0.9模拟定时和识别；服务器保存及跨设备恢复尚未实现"
  ],
  "sources": [
    "https://xzx.huajian.io/",
    "英语默写代码/xzx-pages/pages/C-13.html",
    "英语默写代码/xzx-pages/pages/C-14.html",
    "英语默写代码/xzx-pages/pages/C-15.html",
    "当前首页UI及用户确认"
  ],
  "user_confirmed_rules": [
    {
      "id": "ENTRY-SHARED",
      "description": "拍照与搜词只准备词表，后续复用C-3～C-12设置、三种作答、批改、报告和分享；全部浅色，慢15秒／正常8秒／快5秒自动推进。",
      "rule_status": "confirmed",
      "source": "用户此前听写确认及本轮要求"
    },
    {
      "id": "ENTRY-AUDIO",
      "description": "未匹配标准读音时先核对拼写，再试听并确认合成读音；无法提供读音的词不能选入听写。",
      "rule_status": "confirmed",
      "source": "用户2026-10-12确认"
    },
    {
      "id": "PHOTO-MERGE",
      "description": "重拍识别成功后替换；补拍追加并自动合并相同单词，取消或失败保留原词表。",
      "rule_status": "confirmed",
      "source": "用户2026-10-12选择自动合并"
    },
    {
      "id": "SEARCH-ENGLISH",
      "description": "搜词仅支持纯英文单词或短语，并支持批量粘贴；中文搜索不在本轮范围。",
      "rule_status": "confirmed",
      "source": "用户2026-10-12确认"
    },
    {
      "id": "PHOTO-MULTI",
      "description": "C-13支持连续拍多张或相册多选，先管理照片再统一识别；相同单词仍按已确认规则自动合并。",
      "rule_status": "confirmed",
      "source": "用户2026-10-12本轮要求拍多张"
    },
    {
      "id": "GROWTH-WORD",
      "description": "积累单词统计成功导出的练习卷、已提交听写／客观练习、有效朗读涉及的词库单词，跨课本去重；答案卷不计，短语句子不拆词；表示接触，不表示掌握。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "GROWTH-CORRECT",
      "description": "同一稳定错题首次改对计一次；同轮末尾再练答对也计入；首答正确率保持原成绩。反复错后再对不重复累计。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "KEEP",
      "description": "三类记录与错题长期保留，不按会员截断，支持主动删除；自建词表历史独立保留。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "PRICE",
      "description": "年卡68元、终身98元；手动续费，无自动续费。价格由正式商品配置校验。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "PLATFORM",
      "description": "中国区iOS使用系统内购，国内安卓使用微信或支付宝；恢复权益、延迟到账与取消／失败都有独立状态。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "QUOTA",
      "description": "每账号免费累计3个成功导出文件、累计5轮听写／读单词／课文跟读批改评测，共用总额度，不按天恢复。失败不扣，同轮重试重读不重复扣。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "BENEFIT",
      "description": "客观练习不限次；免费开放6个专题、答案卷带水印；会员不限次数，手写／纸笔批改需会员。到期不重置已用免费总额度。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "WRONG",
      "description": "错题本仅做管理、来源／类型筛选、详情、移除及按原来源再练。听写与五种客观题收录，朗读低分独立。AI排期留25。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "INVITE",
      "description": "新用户经邀请完成注册即奖励邀请人7天会员，每月最多3次；年卡／赠送时长顺延，终身只记邀请不叠加时长；老用户重复邀请不奖励。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "CANCEL",
      "description": "验证身份并二次确认后立即注销；退出登录保留账号资产；退款按真实渠道与正式条款处理。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    },
    {
      "id": "HELP",
      "description": "先做帮助文章与邮箱联系版式；客服邮箱尚未确定；不编造可用邮箱。",
      "rule_status": "confirmed",
      "source": "用户2026-10-13回复"
    }
  ],
  "source_entry": "photo",
  "parent_page_id": "C-13-recognizing",
  "module_base": "拍照听写",
  "tabs": [
    "听写"
  ],
  "product": "英语默写AI版",
  "handoff_version": "0.12.3",
  "page_id": "C-13-partial-error",
  "date": "2026-10-13",
  "references": {
    "interface": "C-13-partial-error.interface.md",
    "prototype": "C-13-partial-error.prototype.html",
    "design": "UI-DESIGN.md"
  },
  "source_of_truth": {
    "visual": "C-13-partial-error.prototype.html 屏幕内产品 UI",
    "behavior": "原 UE 明确要求及当前用户已确认规则；proposed 与 pending 不构成已确认业务契约",
    "viewer_chrome": "手机外壳、项目导航、演示选择器、说明与页面编号属于预览宿主"
  }
}
