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

56 lines
6.6 KiB
Markdown
Raw Permalink 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.
# 商城订单详情开发与验证记录
操作时间2026-09-08。操作类型新增详情、提取共用操作、修复底栏。影响模块用户商城订单接口、订单列表、详情路由。数据库与缓存继续连接既有远程服务本轮无迁移、无本机数据库容器、无订单或库存写入。
## 操作前后
已打开最新21-订单详情原图,检查状态、配送进度、联系人、商品、费用、订单信息及操作入口。原订单列表只能打开操作弹层,没有独立详情。新增`/shop/orders/:identity`,点击商城订单或“查看详情”进入;直接深链需登录,登录后返回原订单。气瓶订单仍沿用旧入口,本轮未把商城详情冒充气瓶完整详情。
详情独立读取本人订单。商品名称、数量、单价与收货信息来自成交快照;资料缺失明确显示空态,不读取当前商品/地址覆盖历史。仅展示真实记录的下单、支付、发货及收货时间,电话按原图脱敏,应付金额不标为已实付。
## 代码变更
| 文件(仓库相对路径) | 职责/函数及行数 |
| --- | --- |
| backend/api/internal/logic/client/user/shop_detail.go | 新增73行GetShopOrder本人详情shopOrderState共用动作与状态 |
| backend/api/internal/logic/client/user/shop.go | ListShopOrders复用shopOrderState原响应及操作规则保持兼容 |
| backend/api/internal/logic/client/user/shop_detail_test.go | 新增73行归属条件、成交快照、白名单、非法订单和状态动作 |
| backend/api/internal/routers/client.go、client_test.go | 新增受JWT保护的GET shop/orders/:identity及路由检查 |
| apps/user_app/lib/domain/models/shop_order_detail.dart | 新增89行ShopOrderDetail、ShopOrderLine整数分金额、成交数量、时间与OrderSummary适配 |
| apps/user_app/lib/data/repositories/client_repository.dart | shopOrderDetail独立读取校验返回identity及会话一致性 |
| apps/user_app/lib/ui/features/orders/order_action_handler.dart | 新增217行从原订单页提取确认、支付、退款及退款原因对话框不重复实现交易规则 |
| apps/user_app/lib/ui/features/orders/orders_page.dart、order_list.dart | 列表点击进入详情;保留“查看操作”,详情返回刷新订单和退款列表 |
| apps/user_app/lib/ui/features/orders/shop_order_detail_page.dart | 新增302行_load、_act、_copy、_footer独立加载、操作前刷新、复制反馈、底栏布局 |
| apps/user_app/lib/app/router.dart | 新增受会话守卫保护的/shop/orders/:identity |
| apps/user_app/test/ui/shop_order_detail_test.dart、test/data/shop_order_detail_test.dart | 新增137/70行失败重试、复制、确认取消、过期动作、金额、响应归属 |
| apps/user_app/test/support/a1_fixture.dart、tool/a1_visual_test.dart | 明确独立测试Fixture及图21多尺寸截图 |
| scripts/compare-user-app-a1.ps1 | 加入图21现14组并排设计证据 |
## 接口及交互边界
- `GET /heqi/client/v1/user/shop/orders/:identity`在SQL中同时限定公开identity和JWT对应user_account_id未命中返回1112未登录HTTP401。
- 响应显式列出订单信息和商品快照字段不返回内部主键、用户外键或完整任意JSON快照。商品已改价/删除不会改变成交明细。暂无历史图片的订单继续显示缺失状态。
- 商城状态16发布pay/cancel18发布refund18且物流20发布confirm_receipt取消订单不发布动作详情与列表共用定义。服务端动作接口仍负责最终状态及所有权校验。
- 详情操作前重新读取订单,原动作已失效时不提交。取消/收货必须确认,未知错误显示失败并重读,不伪造成功。支付与退款复用原请求号策略;本轮没有执行真实支付或退款。
- 操作栏放在Scaffold底栏避免SnackBar遮挡按钮按容器宽度约束两个按钮修复原主题最小宽度导致申请退款独占整行的问题。
## 验证
- Go全量`go test ./...``go vet ./...`与API构建通过路由与业务测试覆盖本人过滤、历史名称/金额、字段白名单、缺失订单及五组状态动作。
- Flutter analyze通过全量95项测试通过。原订单取消、确认收货、退款刷新回归保留新增详情测试覆盖深链、首读失败重试、复制内容、确认取消、失败重试、已失效动作不提交、整数分及跨账号迟到响应。
- 图20两种标签和21的320/360/390/430宽度与1.0/1.3字号共24项布局检查通过。查看图21的390普通和320大字体截图后修复按钮布局图21再次8项通过并实际查看修复截图。
- Web Release与Android Debug构建通过Android仍提示既有插件Kotlin和SDK XML版本兼容警告未影响当前产物。构建通过不代表真机相机/语音或支付验收完成。
- 本机API进程6884运行新后端端口1242618571提供Web。读取此前已取消测试订单`EC1788842040900189900`商品9/10各2件单价10400/10500分总金额41800分动作列表为空。不存在订单返回1112匿名访问HTTP401。
- 浏览器390×844实际验证深链跳登录并回原订单显示已取消、历史联系人与地址、两项商品、418元费用和订单备注点击复制显示“已复制订单号”。订单及库存未改变。
- 浏览器返回商城订单列表后再点击“查看详情”,重新进入同一订单并独立读取;没有回退到旧操作弹层。浏览器错误/警告日志为空。
## 视觉结果与待办
整页验收仍failed。原图是气瓶配送中的示例商城分支尚不能提供押金、配送员、预计送达、供气合同、服务联系与地图轨迹历史商品图缺失时间轴结构和页面密度仍有差异。未填入设计示例时间、照片、合同或实付数据。58图中现14张部分实现、44张无完整页面、0张严格全功能1:1通过。
证据:[图21并排](视觉验收/A1/21_并排对照.png)、[390截图](视觉验收/A1/21_390_1.0.png)、[320大字体](视觉验收/A1/21_320_1.3.png)。后续需继续补气瓶订单详情与配送业务,不能仅将路由存在视为完成。
## 维护方式
订单列表与详情的允许动作只能修改shopOrderState并补状态测试写操作继续保留服务端锁和幂等边界。公共字段扩展使用白名单不直接透传模型或JSON快照详情显示历史资料的含义不得变成当前商品信息。运行`flutter test test/ui/orders_page_test.dart test/ui/shop_order_detail_test.dart test/data/shop_order_detail_test.dart`与Go用户逻辑/路由测试后使用图21多视口截图核对布局。