Files
platforms/docs/开发进度_用户端APP全量功能开发.md
czl231 3ef33b531d 已完成用户APP首期功能开发
交付用户端首期页面、配套接口、后台资源及测试文档。用户APP构建、静态分析和三个管理后台构建通过;完整测试仍有2项失败,后端模型注释检查未通过,详见交付记录。
2026-09-13 00:57:32 +08:00

184 lines
40 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 用户端 App 全量功能开发进度
更新时间2026-09-13。58张设计中36张已有页面实现其中34张部分实现、2张首期功能闭环22张尚无对应独立完整页面0张通过严格1:1全功能验收。一级入口存在或弹出“暂未开放”均不计为功能完成。最新浏览器实查见[58页清单](验收清单_用户端58页功能与视觉_20260911.md)。
## 已确认范围
- 2026-09-12图26“我的记录”新增`/records`独立页并行聚合本人供气订单和报修工单显示本月真实数量、六类入口、最近记录与类型筛选。设备操作、告警记录缺首期接口点击明确“暂未开放”发票记录明确属于二期点击显示“即将开放”。内置浏览器从个人中心实际点入读取远程数据并完成筛选和两类提示验证。图26仍为部分实现不判严格1:1验收通过。
- 2026-09-11图19支付确认新增`/payment/:business/:identity`,商城和气瓶订单的应付金额、订单号、商品快照、钱包余额和可支付动作均重读服务端。余额支付接入六位支付密码、二次确认和幂等号;气瓶余额支付与商城支付记录补齐原子交易事实。优惠券缺接口,页面显示“暂未开放”并可查看原因;微信/支付宝读取服务端商户配置就绪状态未配置时明确显示“暂未开放”并禁用。钢瓶场景使用真实位图费用明细区分气费、可退押金和配送费。定向功能测试、8组多尺寸视觉、Flutter analyze/Web构建通过。内置浏览器使用远程真实已取消订单展示真实金额、禁用状态和优惠券弹层当前账号无待付款订单未提交远程扣款。见[支付确认日志](开发日志_订单支付确认_20260911.md)。
- 2026-09-11图28、39、40钱包批次图28提现和银行卡从占位改为真实路由图39接入服务端可提现余额、到账卡、提现记录、支付密码、幂等申请和二次确认图40接入脱敏银行卡列表、绑定、默认到账卡和安全解绑。API新增`POST wallet/banks/:identity/default`并为银行卡增加默认标记。Flutter全量170项、analyze、Web构建及Go全量测试/vet/build通过内置浏览器只读检查真实远程余额和银行卡未提交资金或银行卡写操作。押金、优惠券、待退款和外部渠道回执仍缺三页均未通过严格1:1。见[钱包提现与银行卡日志](开发日志_钱包提现与银行卡_20260911.md)。
- 2026-09-11图03第二轮按最新原稿重新压缩首页服务卡、设备卡、四宫格、安全记录和公告列表公告展示服务端真实摘要与创建日期最多显示两条并进入全文。查看设备、分组控制、一键报修已接现有真实路由扫码、蓝牙、安全告警和气瓶详情点击后明确提示首期“暂未开放”。游客服务归属保持设计卡片并登录回跳。8组多宽度/文字缩放、161项Flutter测试、analyze和Web Release构建通过内置浏览器读取远程公告并验证未开放弹层。设备遥测接口缺失图03仍为部分实现不判严格1:1通过。
- 2026-09-11图05第二轮按原稿重校顶部更多菜单、故障图标、描述框、三格照片、联系地址、橙色燃气泄漏提示和固定底部操作。更多菜单可查看本人报修工单或打开报修说明紧急电话只在用户明确点击后调用系统拨号器失败提示手动拨打119。视觉夹具保持真实空照片状态0/3不伪造原稿中的阀门照片。8组多宽度/文字缩放截图、12项报修定向测试及162项Flutter全量测试通过analyze与Web Release构建通过内置浏览器验证必填提示、报修说明和本人报修工单跳转。原生语音、拍照时间与定位仍需真机验收因此图05保持部分实现。
- 2026-09-11本轮全量Flutter回归160项通过。设备分组和登录短信状态改动后同时完成 `flutter analyze`、Web构建、Go全量测试、`go vet ./...` 和API构建。内置浏览器确认设备空态、分组闭环、登录成功和未开放提示不以测试全绿替代58页功能与视觉验收。
- 2026-09-11图01再次按保持事实源宽高比的390×844官方并排图复核共同区域已对齐品牌、标签、输入、按钮、记住状态、忘记密码和协议修复视觉夹具按钮中文方框。后端返回Mock短信`not_sent`时不再显示虚假倒计时改为“短信验证码暂未开放”。内置浏览器真实密码登录成功。注册入口按明确要求保留真实短信未配置图01保持blocked。
- 2026-09-11图03恢复未开放设备区域结构新增device_status_placeholder.dart首页保留四个指标名称并展示不可查询状态调整说明与安全/气瓶入口可见状态。四种宽度×1.3文字测试通过Flutter analyze通过。不填写原稿模拟遥测不把占位状态计作设备能力完成。原始批次A1仍未验收通过后续继续补一级页面差异。
- 本轮浏览器验证新版Web首页的扫码添加、蓝牙连接、分组控制显示“暂未开放”点击扫码添加显示“该功能暂未开放目前无法使用。”。一键报修不显示未开放标记。此为状态提示验证不改变这些功能尚未实现的结论。
- 2026-09-11未开放提示规则接入feature_entry.dart新增显式UnavailableStage默认首期“暂未开放”只有传入明确二期状态才显示“即将开放”和后续版本说明无处理回调的图标入口直接显示状态个人中心_pending列表显示“暂未开放”。不因缺接口推定二期。两项widget测试覆盖默认状态、二期说明和已开放回调均通过这不代表缺失业务功能已完成。其余自定义入口和设置文案仍需继续统一。
- 2026-09-11商城图11继续视觉调整shop_page.dart的商品卡片改为图片/名称入口、16号价格、右下角收藏去掉稿外购买按钮购买仍经详情进入结算明确卡片边框和间距。Flutter analyze和Web构建通过内置浏览器390×844核对原稿服务栏、真实素材、规格和销量等未完成仍为部分实现。上传图片跨域缓存问题已修复商城/详情已验证可显示,详见商品图片日志;购物车显示仍待本轮完整验收。
- 2026-09-11商品图片最终复核内置浏览器中商城卡片和商品详情均已显示“示例配送商品 10”的远程上传图片。公开接口确认该商品有非空 `image_url`,其余当前商品的 `image_url` 为空所以显示“暂无商品图片”数据库和App读取链路正常剩余差异是后台尚未为每个商品配置正式素材。
- 按首期补齐要求新增平台后台商品图片上传预览控件及专用上传/公开读取接口Go测试和后台类型检查通过真实绑定与App显示尚待内置浏览器联调见[商品图片开发日志](开发日志_商城商品图片上传_20260911.md)。
- 2026-09-11充值页面接入协议版本确认确认失败不创建充值契约测试通过真实记录联调仍待完成见[充值协议接入](操作日志_用户端APP_充值协议接入_20260911.md)。
- 2026-09-11阅读确认接口新增客户端版本匹配及幂等内容核对用户逻辑测试通过充值留痕尚待接入见[协议版本确认](操作日志_用户端APP_协议版本确认_20260911.md)。
- 2026-09-11补充充值配置后端边界测试覆盖未配置渠道、协议缺失、配置路径与鉴权失败见[充值配置边界测试](操作日志_用户端APP_充值配置边界测试_20260911.md)。
- 2026-09-11补齐充值重试1112、查询异常及账号切换分支验证仅明确不存在允许原请求重发其余不发单流程测试通过。
- 2026-09-11充值原订单重试增加入账前置查询已到账不再次拉起支付见[充值重试入账检查](操作日志_用户端APP_充值重试入账检查_20260911.md)。
- 2026-09-11充值页320/390窄屏及1.3倍字体无溢出测试通过全量Flutter135项通过视觉1:1仍未通过见[充值窄屏回归](操作日志_用户端APP_充值窄屏回归_20260911.md)。
- 2026-09-11对照图38补充自定义选项、清空金额及确认按钮金额交互测试通过浏览器旧构建路由问题已复现完整验收未完成见[充值金额控件](操作日志_用户端APP_充值金额控件_20260911.md)。
- 2026-09-11修复充值已到账后余额刷新失败被误报未确认回归测试通过见[充值到账提示修复](操作日志_用户端APP_充值到账提示修复_20260911.md)。
- 2026-09-11充值表单已接入路由及钱包入口缺协议禁用支付、待确认订单查询测试通过尚未部署和视觉核对图38仍不计验收见[充值表单接入](操作日志_用户端APP_充值表单接入_20260911.md)。
- 2026-09-11补充充值待确认请求安全存储和恢复流程3项测试通过尚待页面接入见[充值请求恢复](操作日志_用户端APP_充值请求恢复_20260911.md)。
- 2026-09-11接入钱包充值记录页支持分页、去重、刷新和断网恢复交互测试及静态检查通过充值表单与图38视觉验收仍待完成见[充值记录页面](操作日志_用户端APP_充值记录页面_20260911.md)。
- 2026-09-11补充充值渠道配置查询及客户端严格金额、协议和到账状态校验新增3项测试通过图38界面仍待接入见[充值配置校验](操作日志_用户端APP_充值配置校验_20260911.md)。
- 2026-09-11补充充值结果、记录及请求号恢复查询修复同请求号变更金额或渠道的冲突远程独立事务验证一次入账并整体回滚。图38页面和渠道交互仍未完成见[充值接口记录](操作日志_用户端APP_充值查询与幂等_20260911.md)。
- 2026-09-11修复登录输入连接切换及重复点击清空密码新构建浏览器已验证遮蔽输入直接登录回到钱包未新增此前的Web输入空值异常。详见[登录输入记录](操作日志_用户端APP_登录输入连接_20260911.md)。
- 设置支付密码已接通首次设置、旧密码修改与验证码找回增加并发更新保护、一次性验证码和五次输错锁定远程独立夹具回滚验证通过。真实短信供应商仍未配置首次设置和找回仅完成Mock联调不计真实短信可用。见[支付密码日志](操作日志_用户端APP_支付密码_20260908.md)。
- 图21已接入商城及气瓶订单详情。气瓶分支读取真实状态历史、配送费、气站、配送员姓名、成功支付记录和本人合同正文待签收支持本人确认、事务释放占用及幂等重试。常规宽度时间轴按原图横向排列配送轨迹、押金、受控联系、完整合同及严格视觉仍待补图21只计部分实现。见 [订单详情日志](操作日志_用户端APP_订单详情_20260908.md)、[供气详情日志](操作日志_用户端APP_供气订单详情_20260908.md)。
- 图15已新增受保护收藏列表、真实分类数量、取消收藏、管理批量取消及从收藏加购商城和详情收藏按钮、个人中心入口均接通。下架商品保留但不可加购服务端版本防止过期请求复活收藏。远程此前仅定向新增ec_favorite表及注释原图中的月销和商品素材仍有差异详见 [收藏日志](操作日志_用户端APP_商品收藏_20260908.md)。
- 图13购物车已有真实条目、数量、单选全选、失效提示、管理删除以及图12加入购物车和多商品结算。条件版本更新避免重试累加订单事务消费对应购物车行失败整体回滚。仍缺优惠、押金、配送承诺、服务保障配置和严格视觉还原。见 [购物车日志](操作日志_用户端APP_购物车_20260908.md)。
- 2026-09-11图13按最新原稿补齐服务归属配送卡、商品规格/押金状态、服务保障区和固定结算栏层级真实归属、金额、数量、推荐及后台封面继续来自接口。押金、配送时效和保障规则缺服务端能力入口显示“暂未开放”严格1:1仍未通过。见 [视觉与状态日志](开发日志_购物车视觉与首期状态_20260911.md)。
- 图13推荐区、图15“猜你喜欢”入口已接入真实在售商品分页、换一换、详情和条件加购排除本人购物车收藏场景另排除本人收藏同类优先。窄屏大字体购物车金额单独成行详情返回重读购物车。此轮无数据库迁移见 [推荐商品日志](操作日志_用户端APP_推荐商品_20260908.md)。
- 2026-09-11图15按最新原稿去除多余顶部按钮压缩筛选与商品卡使推荐入口进入首屏规格缺失和月销量缺口分别显示“规格暂未配置”“月售暂未开放”。内置浏览器验证真实收藏、分类筛选、后台封面及推荐弹层。正式商品素材和销量接口未补齐仍为部分实现。见 [收藏视觉日志](开发日志_我的收藏视觉与真实推荐_20260911.md)。
- 2026-09-08图05更新编号步骤、故障表单、三格照片和可操作的第一步联系地址预览当时64项用户端测试及8组该页视觉检查通过。其后语音输入已接入真实设备识别、真实采集信息、紧急电话和精细样式仍待验收详见 [视觉对齐日志](操作日志_用户端APP_报修视觉对齐_20260908.md)、[语音输入日志](操作日志_用户端APP_报修语音输入_20260908.md)。
- 图05已有三步故障/联系地址/确认提交表单故障类型与联系人快照落库预约选填重复提交返回首次工单。照片选择、预览、上传和工单关联已接入报修草稿已按账户及API环境持久化恢复保留原请求号成功提交后清理。语音已接入并有自动回归真实设备识别及采集定位/拍摄时间未验收。远程此前仅新增cs_ticket三个字段照片复用既有证据表草稿无数据库变更。见 [报修提交日志](操作日志_用户端APP_报修提交_20260907.md)、[照片日志](操作日志_用户端APP_报修照片_20260907.md)、[草稿日志](操作日志_用户端APP_报修草稿_20260907.md)。
- 工单列表可打开独立详情读取真实地址、预约、处理结果及本人提交照片取消与确认完成均需用户确认服务端校验所有权和状态并支持重复操作。图42尚缺工程师联系、完整进度、改期和补充资料仍为部分实现。见 [工单操作日志](操作日志_用户端APP_工单操作_20260907.md)。
- 商城订单取消、确认收货已接入页面,后端新增动作发布及幂等边界保护;详情见 [订单操作日志](操作日志_用户端APP_订单操作_20260907.md)。图20仍为部分实现。
- 2026-09-11图20二次实现订单中心改为设计稿三标签和紧凑卡片补订单号/商品搜索、固定状态筛选、气站与规格、气瓶取消入口后端列表补气站名称气瓶待付款状态与可取消动作统一。商城新订单会把后台商品封面固化到成交快照历史空快照不伪造补图。再次购买、申请售后和电子发票按既定后续阶段保留入口并提示“即将开放”。165项Flutter测试、Go全量测试/vet/build、160组布局图与内置浏览器真实远程数据走查通过气瓶商品图片模型及原稿三笔同状态数据仍缺图20继续记为部分实现。见 [订单中心日志](开发日志_订单中心视觉与气瓶操作_20260911.md)。
- 2026-09-11图25二次实现个人中心读取真实实名认证和紧急联系人数量压缩资产、家庭及常用功能布局使全部设计入口在390×844首屏可见重复维修/退出按钮移除原功能保留在报修入口和设置页。当前远程账号头像为空、联系人0人页面如实显示首字头像和0人头像拍照/相册上传入口已在内置浏览器打开。未接入功能保留“暂未开放”标签与弹层。Flutter全量166项测试、160项视觉fixture及Web release构建通过图25仍因资产和消息等业务缺失保持部分实现。见 [个人中心日志](开发日志_个人中心视觉与真实资料_20260911.md)。
- 后续功能入口不隐藏,点击解释当前未开放;设备控制与遥测仍归 B不模拟在线、关阀或电量。
- 37 邀请注册补入 A2。现有 /register、ClientRecord 和旧 API 均保留。
- 头像与昵称编辑已在浏览器通过实际选图、上传、保存、受保护图片读取验证测试资料已恢复。2026-09-08 Android Debug APK构建通过之前Maven下载与缓存阻塞已解除原生相机、语音和iOS设备仍未验收。详情见 [纠偏日志](操作日志_用户端APP_头像与视觉纠偏_20260907.md)、[语音输入日志](操作日志_用户端APP_报修语音输入_20260908.md)。
- 使用 backend/api/etc/heqi_dev.yaml 中既有远程 PostgreSQL、Redis。本地仅运行 API 与 Flutter Web地址管理已执行三个字段的定向新增迁移未执行全库迁移、清库或 mock-data。
- 远程只读检查已确认基础角色、管理员、指定测试账号、上架商品存在Redis PING 通过。
## 逐页状态
状态针对最新设计的独立页面;“未开始”不表示旧仓库没有同类基础接口。所有接口相对于 /heqi/client/v1/user测试位于 apps/user_app/test视觉测试统一为 tool/a1_visual_test.dart。未落地的路由和接口不编造为已存在。
| 设计图 | 批次 | 状态 | 已有路由/入口 | 对应接口 | 测试 | 视觉截图 |
| --- | --- | --- | --- | --- | --- | --- |
| 01-登录页.png | A1 | 部分实现 | /login密码登录、协议、忘记密码、注册入口及安全回跳短信未发送明确暂未开放 | POST auth/login、auth/verification-code、auth/reset-passwordGET public/contents | login_page_test.dart 9项、8组多尺寸视觉、内置浏览器真实密码登录 | [390×844](视觉验收/A1/01_390_1.0.png)、[官方对照](视觉验收/A1/01_并排对照.png)、[浏览器截图](视觉验收/01-登录页_实现_20260911.jpg)注册入口和真实短信使整页保持blocked |
| 02-1-安全案例.png | D | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 02-2-法律法规.png | D | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 02-3-气价信息.png | D | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 02-智能角阀功能介绍.png | D | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 03-首页.png | A1 | 部分实现 | /home | GET public/contents、service-relation | primary_pages_test.dart、service_relation_card_test.dart | [390×844](视觉验收/A1/03_390_1.0.png)、[对照](视觉验收/A1/03_并排对照.png) |
| 04-智能角阀控制.png | B | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 05-一键报修.png | B | 部分实现 | /repair | POST ticketsGET addresses | repair_page_test.dart、ticket_create_test.go | [390×844](视觉验收/A1/05_390_1.0.png)未通过严格1:1 |
| 06-1-扫码添加确认.png | B | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 06-2-蓝牙连接设备.png | B | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 06-3-手动输入设备码.png | B | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 07-气瓶基本信息.png | B | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 08-设备分组控制.png | B | 部分实现 | `/device-groups`;分组新增、改名、删除、设备归组真实可用;群控与安全检查暂未开放 | 内置浏览器427宽真实新建、归组、改名、删除闭环 | Go权限/幂等与Flutter交互、大字体测试通过同状态视觉验收受真实数据限制 | [并排对照](视觉验收/08-设备分组_并排对照_20260911.jpg)、[日志](开发日志_设备分组_20260911.md) |
| 09-安全告警与报警器.png | B | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 10-紧急联系人.png | B | 部分实现 | 本人联系人资料新增、编辑、归档及五人上限;授权和通知未开放 | 内置浏览器390宽真实资料操作布局仍有差异 | API边界与前端重试测试通过未完成全页验收 | 开发日志_紧急联系人_20260911.md |
| 11-燃气商城.png | A1 | 部分实现 | /shop | GET public/productsPOST shop/orders | primary_pages_test.dart、primary_repository_test.dart | [390×844](视觉验收/A1/11_390_1.0.png)、[对照](视觉验收/A1/11_并排对照.png) |
| 12-商品详情.png | C | 部分实现:后台商品图、预览、价格库存、数量、分享、收藏、加购结算、服务归属及设计分组;规格/参数读取后台配置,配送预约与保障标准显示“暂未开放” | /products/:identity | GET public/products/:identity、GET service-relation既有商品图片与属性后台资源 | product_detail_page_test.dart、product_detail_test.go、router_test.dartFlutter全量171项、视觉8视口与内置浏览器真实商品核对 | [390×844](视觉验收/A1/12_390_1.0.png)、[并排图](视觉验收/A1/12_并排对照.png)、[日志](开发日志_商品详情视觉与后台数据_20260911.md) |
| 13-购物车.png | C | 部分实现 | /cart、/cart/checkout详情加入购物车、推荐区 | GET shop/cart、GET/PUT shop/cart/items/:identityGET shop/recommendationsPOST shop/orders | cart_page_test.dart、cart_test.dart、cart_test.go、product_recommendations_test.dart、recommendation_test.go | [截图](视觉验收/A1/13_390_1.0.png)、[对照](视觉验收/A1/13_并排对照.png)未通过严格1:1 |
| 14-提交订单.png | A2 | 部分实现:地址、气站与商品、数量、费用、备注、钱包余额和下单后支付衔接;预约/优惠/押金显示“暂未开放”,二期发票显示“即将开放” | /checkout/:identity、/cart/checkout、/payment/shop/:identity | GET addresses、service-relation、walletPOST shop/orders、cart/checkout可选 expected_payable_amount | checkout_test.go、shop_address_selection_test.dart、cart_page_test.dartFlutter全量171项、视觉8视口及内置浏览器真实数据核对 | [390×844](视觉验收/A1/14_390_1.0.png)、[并排图](视觉验收/A1/14_并排对照.png)、[日志](开发日志_提交订单视觉与支付衔接_20260911.md) |
| 15-我的收藏.png | C | 部分实现 | /favorites商城/详情收藏、个人中心入口、推荐弹层 | GET shop/favoritesGET/PUT shop/favorites/items/:identityGET shop/recommendations | favorite_test.go、favorite_test.dart、favorites_page_test.dart、product_recommendations_test.dart | [截图](视觉验收/A1/15_390_1.0.png)、[对照](视觉验收/A1/15_并排对照.png)未通过严格1:1 |
| 16-押金管理.png | A2 | 部分实现:真实汇总、状态筛选、押金明细、规则查看和管理后台;远程当前为空数据 | /deposits | GET deposits后台 deposit_policy/deposit_record | deposit_page_test.dart、8组视觉变体、Go路由/逻辑测试、内置浏览器真实空态 | [并排图](视觉验收/A1/16_并排对照.png)、[日志](开发日志_押金管理首期底座与真实空态_20260911.md);退瓶、验收、扣减、退款流水未完成 |
| 17-退瓶退押金.png | A2 | 已实现首期闭环:选择本人可退气瓶、上门地址、预约时段、瓶况确认、二次确认、取消、后台回收/验收/扣减/余额入账 | /deposits/return?deposit=:identity | POST/GET/cancel deposit-returns后台 confirm-pickup/inspect/complete-refund | deposit_return_page_test.dart、预约边界与路由测试、8组视觉变体真实账号无可退气瓶故未提交业务记录 | [并排图](视觉验收/A1/17_并排对照.png)、[日志](开发日志_退瓶退押金首期闭环_20260911.md);安检最新结论接口仍缺,页面标“暂未开放” |
| 18-气瓶下单.png | C | 已实现首期闭环 | /gas/order首页“气瓶下单”入口 | GET /gas/order-optionsPOST /gas/orders支付成功转正式押金 | gas_order_create_page_test.dart、预约边界、路由测试、8组视觉变体 | [并排图](视觉验收/A1/18_并排对照.png)、[日志](开发日志_气瓶下单首期闭环_20260911.md);远程账号押金规则未配置,真实页明确显示“押金规则暂未配置”并禁止下单 |
| 19-支付确认.png | A2 | 部分实现 | /payment/:business/:identity余额/微信/支付宝、渠道就绪状态、六位支付密码、二次确认;优惠券暂未开放 | GET shop/gas orders/:identity、wallet、wallet/recharge-optionsPOST shop/gas orders/:identity/pay | payment_confirmation_page_test.dart、wallet_order_payment_test.go、8组视觉及内置浏览器真实取消订单只读走查 | [390×844](视觉验收/A1/19_390_1.0.png)、[对照](视觉验收/A1/19_并排对照.png);真实待付订单、外部支付页和回调仍待验收 |
| 20-订单中心.png | A1 | 部分实现 | /orders三业务标签、搜索、状态筛选、真实字段、详情与服务端允许动作后续功能明确提示 | GET shop/orders、gas/orders、refunds、ticketsPOST gas/orders/:identity/cancel既有支付/退款/商城取消与收货 | orders_page_test.dart 6项、gas_order_list_test.go、checkout_test.go内置浏览器远程列表/搜索/详情/二期提示 | [气瓶390×844](视觉验收/A1/20_390_1.0.png)、[气瓶对照](视觉验收/A1/20_并排对照.png)、[商城对照](视觉验收/A1/20-shop_并排对照.png)气瓶图片模型和同状态数据仍缺未通过严格1:1 |
| 21-订单详情.png | A2 | 部分实现:配送状态、地址、气站商品、费用、支付方式、合同、服务操作及本人签收;首期配送轨迹/受控联系/押金显示“暂未开放”,二期售后显示“即将开放” | /gas/orders/:identity、/shop/orders/:identity | GET gas/orders/:identity、GET gas/contracts/:identity、POST gas/orders/:identity/confirm-receipt | gas_detail_test.go、gas_order_detail_test.dart、shop_order_detail_test.dartFlutter全量171项、视觉8视口与内置浏览器真实订单核对 | [商城对照](视觉验收/A1/21_并排对照.png)、[供气并排图](视觉验收/A1/21-gas_并排对照.png)、[日志](开发日志_供气订单详情视觉与功能状态_20260911.md) |
| 22-配送详情.png | A2 | 部分实现:本人订单、配送状态、预约、配送员、有效资质、气站/配送点、商品、地址、脱敏联系人和安全交付提示;车辆及受控联系明确“暂未开放” | /gas/orders/:identity/delivery | GET gas/orders/:identity/delivery | delivery_detail_test.go、delivery_detail_page_test.dart、8组视觉变体内置浏览器真实订单核对 | [并排图](视觉验收/A1/22_并排对照.png)、[日志](开发日志_配送详情与隐私化轨迹_20260912.md);配送车辆后台配置、真实员工头像资源、受控电话/消息仍缺 |
| 23-配送轨迹.png | A2 | 部分实现:本人订单鉴权、约百米隐私化坐标、地图路线、履约节点、更新时间、刷新、配送员与未开放能力提示 | /gas/orders/:identity/delivery/track | GET gas/orders/:identity/delivery/track复用配送端轨迹上报 | 坐标约化/状态节点Go测试、delivery_track_page_test.dart、8组视觉变体内置浏览器从22页进入并刷新 | [390×844](视觉验收/A1/23_390_1.0.png)、[并排图](视觉验收/A1/23_并排对照.png)、[日志](开发日志_配送详情与隐私化轨迹_20260912.md)远程样例仅1个轨迹点受控电话和配送问题上报仍缺 |
| 24-电子发票.png | C | 部分实现:已完成订单保留入口、读取本人真实订单、展示订单号/商品/商品金额/押金排除说明和完整二期表单结构;所有申请动作明确“即将开放”且不写入 | /invoice/:business/:identity订单列表和详情入口 | 复用GET gas/shop orders/:identity未新增伪开票接口 | invoice_preview_page_test.dart、订单入口回归、8组视觉变体内置浏览器从真实已完成订单进入并点击提交提示 | [390×844](视觉验收/A1/24_390_1.0.png)、[并排图](视觉验收/A1/24_并排对照.png)、[日志](开发日志_电子发票二期入口_20260912.md);开票、抬头、税务回执、预览下载均属于二期 |
| 25-个人中心.png | A1 | 部分实现 | /me真实头像入口、实名认证、联系人数量、资产/服务/家庭/常用入口及缺项提示 | GET auth/profile、auth/avatar、wallet、emergency-contacts既有订单/设备/合同/地址/收藏/报修动作 | profile_edit_page_test.dart、client_models_test.dart、160项多尺寸视觉内置浏览器真实资料/提示/头像菜单 | [390×844](视觉验收/A1/25_390_1.0.png)、[对照](视觉验收/A1/25_并排对照.png)远程为空头像和0联系人押金/券/消息等仍缺 |
| 26-我的记录.png | D | 部分实现 | /records供气和报修聚合、筛选及详情 | 本人订单与工单查询 | 页面测试、内置浏览器检查 | 设备与告警记录待补严格1:1待验收 |
| 27-用气统计.png | D | 部分实现 | /usage设备、周期、图表、明细及后台计量管理 | GET user/usage-statistics平台dev_usage_stat | 内置浏览器后台列表/新建表单、App无设备空态后台类型检查通过 | 历史日期、安全趋势、真实计量闭环及严格1:1待验收 |
| 28-我的钱包.png | A2 | 部分实现 | /wallet、/records/wallet、/wallet/recharge、/wallet/withdraw、/wallet/banks | GET wallet、wallet/bills充值、本人银行卡和提现接口 | 金额、会话、分页、隐私、银行卡及提现二次确认测试;内置浏览器真实只读检查 | [对照](视觉验收/A1/28_并排对照.png)、[日志](开发日志_钱包提现与银行卡_20260911.md);押金/券/待退款及严格1:1待补 |
| 29-地址管理.png | A2 | 部分实现:增删改与默认切换可用,范围判定/定位待补 | /addresses、/addresses?select=1 | GET/POST addressesPUT/DELETE addresses/:identityPOST addresses/:identity/default | addresses_page_test.dart、address_test.go、真实远程读写恢复 | [390×844](视觉验收/A1/29_390_1.0.png)、[日志](操作日志_用户端APP_地址管理_20260907.md) |
| 30-消息中心.png | D | 部分实现 | /messages四类总览、筛选、已读及真实对象跳转 | GET messages、PUT messages/read订单、工单、已发布公告事实聚合 | 页面2项、8组视觉内置浏览器远程读取、单条已读、订单详情与筛选 | [对照](视觉验收/A1/30_并排对照.png)安全事件、通知偏好、不可变历史消息及严格1:1待补 |
| 31-设置.png | D | 部分实现 | /settings、/settings/password、/settings/payment-password | 登录及支付密码、已发布协议、真实版本、图片缓存及退出 | 改密版本保护、原子验证码、五次锁定、远程回滚及页面布局测试 | [对照](视觉验收/A1/31_并排对照.png)、[支付密码日志](操作日志_用户端APP_支付密码_20260908.md)真实短信、通知、权限、注销及严格1:1待补 |
| 32-供气合同.png | A2 | 部分实现 | /records/contracts个人中心入口与深链 | 本人列表、正文、受控PDF、状态历史搜索筛选申请变更、气站答复、取消/确认 | 列表/附件/历史/申请权限及幂等测试远程申请答复确认回滚Web下载哈希一致8组布局 | [对照](视觉验收/A1/32_并排对照.png)、[申请日志](操作日志_用户端APP_合同申请与个人中心复核_20260908.md)原生保存、签署、地址快照、续签提醒及严格1:1待补 |
| 33-家庭成员与设备共享.png | D | 部分实现:独立家庭页、手机号邀请、受邀账号接受/拒绝、待确认撤回、成员移除、按设备查看/告警/控制授权及不可变审计;紧急联系人不自动获权 | /family个人中心入口 | GET /family、POST/DELETE /family-members、PUT device-permissions、GET/POST family-invitations | Go逻辑/路由/CLI测试Flutter页面2项及8组宽度/字体视觉测试;远程邀请和撤回真实联调;内置浏览器可见操作 | [并排图](视觉验收/A1/33_并排对照.png)、[日志](开发日志_家庭成员与设备共享首期闭环_20260913.md)远程账号无设备且无第二账号接受和真实设备权限执行未做双账号联调成员头像资源也未接入故暂不判完整闭环或严格1:1 |
| 34-我的设备.png | B | 部分实现 | 本人已分类设备列表、搜索、分类、分组和档案;遥测、扫码及控制暂未开放 | 内置浏览器427宽后台启用到App显示、归组、删组回退联调 | 查询隔离、分类、分组与大字体测试通过源图为5设备状态当前远程空状态未判1:1 | [并排对照](视觉验收/34-我的设备_并排对照_20260911.jpg)、[日志](开发日志_我的设备列表_20260911.md) |
| 35-安全记录详情.png | B | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 36-申请售后.png | C | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 37-邀请注册.png | A2 | 未开始 | /register旧基础 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 38-余额充值.png | A2 | 部分实现,真实支付不可用 | /wallet/recharge、/wallet/recharge-records | 充值配置、创建、记录及请求恢复;协议确认代码 | 金额、恢复、页面及配置测试 | 浏览器已实查,缺卡片/插图且渠道不可用未通过1:1 |
| 39-余额提现.png | A2 | 部分实现 | /wallet/withdraw余额、到账卡、金额、支付密码、记录和二次确认 | GET/POST wallet/withdrawalsGET wallet/banks | wallet_account_test.dart、withdrawal_page_test.dart、8组多尺寸视觉浏览器只读检查 | [对照](视觉验收/A1/39_并排对照.png)外部到账回执及严格1:1待补 |
| 40-银行卡管理.png | A2 | 部分实现 | /wallet/banks脱敏列表、绑定、默认卡、解绑 | GET/POST/DELETE wallet/banksPOST wallet/banks/:identity/default | 接口契约、路由、8组多尺寸视觉浏览器打开添加表单 | [对照](视觉验收/A1/40_并排对照.png);银行验证回执和短信供应商待补 |
| 41-个人资料.png | A2 提前修复 | 部分实现 | /profile/edit点击个人中心头像或资料行 | GET/PUT auth/profile、GET auth/avatar、POST /upload/avatar、GET service-relation/addresses | profile_edit_page_test.dart、avatar_upload_test.dart、profile_test.go、avatar_test.go | [390×844](视觉验收/A1/41_390_1.0.png)、[对照](视觉验收/A1/41_并排对照.png) |
| 42-报修工单详情.png | A2 | 部分实现 | /tickets/:identity订单内报修标签 | GET tickets、POST tickets/:identity/cancel、confirm | ticket_detail_page_test.dart、ticket_actions_test.go | [390×844](视觉验收/A1/42_390_1.0.png)未通过严格1:1 |
| 43-1-安全宣传.png | D | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 43-2-安全视频.png | D | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 43-3-法律法规.png | D | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 43-4-平台公告.png | D | 部分实现 | `/contents/:identity`;读取本人可见的已发布公告正文 | GET public/contents/:identity按发布状态、类型和identity读取 | content_detail_test.go、safety_contents_page_test.dart、内置浏览器真实公告正文 | 尚缺摘要、已读、时间、图片与严格1:1见开发日志_安全内容中心_20260911.md |
| 43-安全内容中心.png | D | 部分实现 | `/contents`;公告、安全宣传、法律法规筛选与标题搜索,视频暂未开放 | GET public/contents、public/contents/:identity | 内容权限、下架、搜索与页面测试 | 内置浏览器真实公告列表尚缺分页、运营内容和严格1:1 |
| 44-自动关阀设置.png | B | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 45-电子保修卡.png | D | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 46-设备健康月报.png | D | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 47-安全知识考试.png | D | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 48-服务评价.png | C | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
| 49-预约安全巡检.png | C | 未开始 | 尚未建立独立页 | 待该批次核对 | 未建立该页验收 | 未生成 |
共58张34张部分实现、22张尚无对应完整页面、2张已完成首期功能闭环、0张严格验收通过。历史A1五页记录仅代表当时批次不代替当前逐页状态。
## 本批次验证
- 改动前:用户端 analyze 无问题、33 项测试通过Go 全量测试通过。
- 改动后:用户端 analyze 无问题、44 项测试通过40 组页面截图和滚动溢出检查通过320/360/390/430 × 844文本 1.0/1.3。Web Release 构建通过。
- 共享包 analyze 与 3 项测试通过;服务端 App analyze 与 21 项测试通过。
- Go test ./...、go vet ./...、go build 通过;新增协议重复确认测试定向通过。
- 平台 contract:check 通过 48 个资源;未修改模型、注册路由、后台资源或权限菜单,无需生成契约变更。
- 远程真实联调:密码登录,公开内容、分页商品、用户资料、钱包、地址、商城/供气订单、服务归属全部返回 code=0。
- Mock 商品下单两次复用同一 request_no只生成同一订单且只扣库存一次取消后库存恢复。保留已取消订单 identity01a07bc0-6237-7ec2-8cbc-1c05f16ad10b。未调用支付、退款或资金删除。
- 浏览器实测:游客首页与未开放弹窗、受保护订单登录回跳、本人订单、脱敏个人资料、钱包摘要、商品搜索、未记住会话刷新失效及重复进入报修通过。
## 视觉结论与差异
见 [A1 视觉验收记录](视觉验收/A1/视觉验收记录_A1.md)。截图生成和不溢出通过不等于设计一致性通过。
设计图尺寸比例并不完全相同,对照左侧保持原图等比缩放,右侧固定 390×844不是强行拉伸后的像素差分。Fixture 仅在 test/tool 中,未进入运行代码。远程商品缺图、无已发布 agreement不能用设计稿的人像、金额、宣传图或协议正文充当真实数据。
## 已知限制及下一步
- 已按并排核对将验证码发送改为独立按钮、订单改为三类主 Tab 并保留退款入口、个人中心资产区收敛为三列。商家图片、原品牌资产和宣传位当前没有对应可用素材,原图完整设备/配送状态也没有同状态数据,因此严格视觉一致性仍未标“已验收”。
- 商城/订单虽有分页 HTTP 契约,兼容仓储暂时顺序读完各页再筛选,大数据量下需在 A2 改为逐页加载与服务端筛选。
- 页面内幂等号在结果未知时保留,跨页面销毁/应用重启的持久化重试归 A2当前旧地址接口没有 request_no不把新增地址声称为完整幂等闭环。
- allowed_actions 由服务端生成,实际写入仍重新校验状态、归属、库存、支付与退款规则;完整详情与细粒度错误码归 A2。
- 远程没有已发布协议,真实协议版本留痕用 SQL Mock 验证,未在远程伪造运营内容。正式投用前由平台发布真实用户协议与隐私政策。
- 无 Android 设备/模拟器、无 macOS未进行 Android/iOS 实机验收;本次没有新增移动插件。
- 本次曾误建 heqi-a1-postgres、heqi-a1-redis未建表或导入数据。Docker daemon 后来不可用,删除未能确认;不要启动 Docker 或动现有其他容器来绕过用户的远程环境要求。
下一起点:先完成 A1 剩余视觉收敛,再进入 A2包含 37 邀请注册。每批保留测试、真实接口与视觉证据,不创建空白页面占位。