采购订单资料补全与简化 SYB 单号回填(复用现有字段) #326

Open
opened 2026-09-19 14:43:31 +08:00 by ila · 3 comments
Owner

线上发布完成(2026-09-19,待用户业务验收)

用户已授权合并main并发布线上。main=f66952f,线上current=/home/goauto/releases/20260919-f66952f-326;首页/资源/health通过,无迁移,无APK变化。下方未发布描述是实施阶段历史记录,详见发布评论。

当前交付状态:待验收(2026-09-19)

已实现并推送 feat/326-order-information:3a2472d(代码)+ f66952f(Wiki镜像)。Server/Web构建及相关测试通过,无数据库迁移。未合并main、未发布、未执行真实SYB写入,详见本次完成评论。

2026-09-19 用户确认后的范围(替代原方案的冲突表述)

用户要求内部系统简单易用:采购任务有 PDD 订单号、下单时间和订单金额即资料完整,不检查支付状态;后续只保留自动下单读取和 Admin 手工补录两种来源。用户确认“按照你的建议来做”。本次保留插件与 Agent 回填,停用另行安排。

当前代码核验

基线:main 741e4bf680f72a4f7eda8e2daada5e32561ed901,核验日期2026-09-19。

  • order_writeback.go 当前已经不检查地址后缀、付款状态和金额;不能把原案例“已创建不能勾选”直接归因于这些条件。本轮未查该线上任务事实,不声称已确定该案例根因。
  • manual.go ResolveUnknown 只处理 order_result_unknown,支持单号与时间,不支持金额;通用 manual 事务未调用 ensureOrderWriteback。
  • Web purchase-tasks/index.vue 只有未知结果处理弹窗,无法对 order_created 补金额,金额文案仍是“实付价格”。
  • lifecycle.go 自动下单已有订单号、时间、可选金额;order_backfill.go 的插件/Agent 上游定位仍使用地址后缀。本单不取消这些定位规则。

目标和最小方案

  1. 复用 pddOrderNo、orderSubmittedAt、pddOrderAmountCent,金额为整数分;不新增数据库字段,不新增持久化任务状态,不迁移历史数据。
  2. 保留 order_created 表示确实已创建订单。完整性由上述三字段推导:单号非空、时间有效、金额非空且非负为“信息完整”;缺项显示“订单信息待补全”。金额0与缺失区分。不得把缺金额变成 failed 或触发重新采购。不得仅为获得三字段而要求已付款。
  3. Admin 沿用任务详情和现有人工处理弹窗,补金额输入并允许已有订单资料补全;不新增独立页面、审批或角色。现有未知结果人工确认保留取消分支。执行中不并发修改设备正写入的订单事实;沿用既有权限及基本一致性保护,不新增审批门禁。具体入口/状态见 v1 草案,待用户审核。
  4. 手工保存与自动下单保存均在订单事实落库事务内保证 SYB 单号回填记录;金额/时间未齐全不阻挡已知订单号回填 SYB。
  5. SYB 入队资格:live + syb_order + 有效 SYB 明细关联 + 非空 PDD 订单号;不再要求 status=order_created,不以金额、时间、支付复核或地址后缀限制此阶段。列表 canSubmit、提交和 worker 使用一致的资格依据,避免可勾选后因关联失效跳过。
  6. SYB 协议保持 purchaseCode=订单号/type=pdd/cost=0/created为空;不上传金额或时间。保留现有防重复、在途租约、同号成功、异号冲突不覆盖的实现,不叠加新门禁。
  7. 页面金额统一叫“订单金额”,不把应付或历史实付金额冒充已付款。付款复核及物流“选为回填候选”不改。手工保存不自动确认已支付。
  8. 保留订单号唯一归属与既有单号不覆盖保护;不根据金额或时间猜测属于哪个采购任务。本单不解决手工订单沿用旧 CG 地址的上游归属问题。

范围/依赖

Server:purchase 资格、人工保存与事务入队、详情/列表完整性、测试。
Web:采购详情、既有人工处理弹窗与资料完整性/金额文案、测试。
Android、插件不改;后续停用另单。依赖 #305;复用 #325 已在 main 的金额字段链路。
不修改真实订单、不执行真实 SYB 写入、不发布线上;本轮无数据库迁移。业务更改获得本次实施授权,真实线上写入或发布另行确认。

设计证据与实施门禁

QuantUX v1(待审核):https://qux.ilapage.cn/#/apps/6aae32d6191a826306a7fea7.html
App ID:6aae32d6191a826306a7fea7,版本标识“#326 · v1 · 待审核”,创建2026-09-19。
覆盖:缺金额详情、补录三字段、保存成功、失败说明、空态/加载/禁用/权限边界。5屏、71控件、8条预置状态跳转;仅合成数据,不请求业务接口。结构回读通过。浏览器未登录时显示 QuantUX 登录页,需使用已登录账号查看,尚未完成渲染/点击验收。
ui-ux-pro-max 用于约束表单标签、保存反馈、错误保留输入;沿用现有 Admin 样式,不采用与项目无关的推荐视觉风格。
需求方案已由用户确认;原型确认人/时间:用户于2026-09-19在会话明确“原型通过,做#326”。由于扩展人工补录入口及状态展示,先完成原型审核,不以文字需求批准冒充原型批准;原型通过后已实施,见当前交付状态及完成评论。

验收与验证

  • 三字段齐全为信息完整;缺金额可补,订单号已知不能普通重试下单;0元不是空值。
  • 正式 SYB 任务有单号及有效关联即可回填,任务状态、时间/金额缺失、支付状态不影响该阶段资格。
  • 人工补录成功与队列在同一事务;失败不丢输入、不误报成功;重复保存不重复入队;请求重放不得悄悄覆盖其他值。
  • 列表和提交对无效关联判断一致;pending/running/succeeded 不重复写,conflict 不强制覆盖,unknown 复用现有回读机制。
  • 同单号不能绑定多个采购任务;不得覆盖不同既有单号。人工保存不能触发设备下单或付款。
  • 旧插件/Agent 接口继续兼容;不升级历史状态、不批量倒扫旧任务。
  • Server 单元/事务/worker 回归及 Web 既有采购页测试与构建;仅 fake/httptest 检查 SYB 参数,不真实写SYB。

文档/回退

实施后更新 Business-Rules-and-Glossary、Architecture-and-Code-Map、Android-Agent-API-Contract 的资格、完整性与人工录入契约;按 Wiki-first 一轮同步校验。当前仅设计,无已实现长期事实变更,不同步 Wiki。
回退采用对应完整代码提交,不只恢复单个 status 判断;已写入订单事实与外部SYB单号不能随代码回滚自动撤销。


原始建单记录(历史,仅用于追溯;冲突内容以上方最新方案为准)

原始需求

用户 2026-09-19 在采购管理核对线上任务(SYB 订单 260919DX79YRHA,状态「订单已创建」不能勾选)时确认:

  1. 自动采购下单前会修改地址,手工采购继续使用自动采购最后一个任务的地址;因此不能再用地址后缀判定回填资格。
  2. 希望采购任务只要已有 PDD 订单号、下单时间(用户初述还提到实付价格)就能回填 SYB。
  3. 后续明确:「只需要把pdd订单号更新到syb订单里」。

建单时间:2026-09-19。

目标与非目标

目标

  • 仍复用 #305 的 SYB 写入协议:只把 GoAuto 采购任务上的 PDD 订单号 写入对应 SYB 明细的 purchaseCode(type=pdd,cost=0,created 为空)。
  • 放宽入队/勾选资格:正式订单采购只要已落库 非空 PDD 订单号 与 下单时间,且仍关联有效 SYB 明细,即可建立或补偿回填记录。
  • 不再以采购任务状态必须是 order_created、支付复核必须已支付、地址后缀或金额字段作为单号回填门禁。

非目标

  • 不把实付/应付金额写入 SYB,不改 cost=0。
  • 不用金额缺失/冲突阻挡单号回填(用户初述的「实付价格」不作硬条件;#306/#305/#325 均禁止用金额当单号回写前置条件)。
  • 不改「选为回填候选」(已支付才能选)那条物流/候选流程。
  • 不改 Android 下单/核单、不改地址改写、不做自动支付。
  • 不发布时自动倒扫全部历史任务入队;历史仍靠采购管理勾选补偿。
  • 不强制覆盖 SYB 上已有的不同单号或非 pdd 平台。

前置依赖

  • 依赖 #305(e89de1a,2026-09-18 已发布线上)的队列、worker、Admin 批量/详情补偿与 SYB updateDetailPurchaseCode 协议。
  • 不依赖 #325;金额字段不进入本单资格。
  • 可与 #325 并行。

子项目影响

  • server/:orderWritebackEligible / ensureOrderWriteback / RequestOrderWriteback / worker 再校验与单测。
  • web/:若 orderWriteback.canSubmit 与原因文案随服务端变化,只改展示/勾选过滤,不新增页面。
  • android/:不改。

无新页面或导航变化,不做原型。

当前事实(代码)

orderWritebackEligible 当前为:

live + syb_order + status == order_created + 有 sybProductId + 非空 pddOrderNo。

不检查下单时间。金额与 paymentReviewStatus 已不作门禁。入队后 worker 写前回读 SYB;同单号+pdd 直接成功;空才写一次;不同单号/其他平台记 conflict 且不覆盖。

Admin 列表勾选由服务端 orderWriteback.canSubmit 决定;已 pending/running/succeeded 不能再勾。「重试」勾选仍只针对 failed && retryable。

方案

  1. 资格改为:live + syb_order + 有效 SYB 明细(stock_id/detail_id)+ 非空 PDD 订单号 + 有下单时间。不再要求 status == order_created。
  2. 入队时机不变:订单事实落库的同一事务内 ensureOrderWriteback(含 Agent order_created、人工/扩展回填成功);历史补偿仍走 POST /api/admin/v1/purchase-tasks/syb-order-writeback。
  3. 写入协议不变:POST /am/stock/detail/updateDetailPurchaseCode,只传单号;不传金额、不传下单时间(SYB 自行生成 purchaseTime)。
  4. 冲突与未知结果规则不变:不覆盖、崩溃恢复只回读不盲写。
  5. Web 仍以 canSubmit 决定勾选;若原因文案仍写「不符合正式SYB订单回填条件」,改为与新资格一致的短说明。

设计证据

无新页面。复用现有采购管理列表/详情的 SYB 单号回填区与 #305 协议。

验收

  • 有 PDD 订单号 + 下单时间的正式订单采购,无论支付复核是 pending/unpaid/paid、无论金额是否缺失,都可入队或被勾选补偿(在尚未 succeeded/在途租约时)。
  • 缺 PDD 订单号或缺下单时间:不入队、canSubmit=false。
  • 备货、演练仍不参与。
  • 去掉「下单时间」要求后对应用例必须变红;去掉金额/支付状态不影响绿。
  • fake/httptest:写入仍只带单号与 cost=0,不带金额。
  • 既有 conflict/未知结果/租约用例不受影响。
  • 不在本单执行真实 SYB 写入;线上补偿需另行授权。

验证

  • go test 覆盖 purchase 资格与 order writeback 相关包。
  • Web:若改了 canSubmit 文案或勾选过滤,跑既有 purchase-order-writeback e2e。
  • 不改 Agent,不跑真机下单。

风险与回退

  • 放宽资格会让更多已有订单号+时间的任务可被勾选入队;真实 SYB 写入仍属高风险,验证环节需明确授权。
  • SYB 写入仍会改变远端采购状态/时间;不覆盖冲突单号。
  • 回退:还原 orderWritebackEligible 为 status == order_created。

文档影响

有长期文档影响,需更新:

  • Business-Rules-and-Glossary(#305 入队资格)
  • Architecture-and-Code-Map(单号回填链路)
  • Android-Agent-API-Contract 中 #305 资格句(现写 live + syb_order + order_created + 有效单号)

写入协议本身不变;若 Wiki 仍写死绑 order_created,必须改成上述字段门禁。

## 线上发布完成(2026-09-19,待用户业务验收) 用户已授权合并main并发布线上。main=f66952f,线上current=/home/goauto/releases/20260919-f66952f-326;首页/资源/health通过,无迁移,无APK变化。下方未发布描述是实施阶段历史记录,详见发布评论。 ## 当前交付状态:待验收(2026-09-19) 已实现并推送 feat/326-order-information:3a2472d(代码)+ f66952f(Wiki镜像)。Server/Web构建及相关测试通过,无数据库迁移。未合并main、未发布、未执行真实SYB写入,详见本次完成评论。 ## 2026-09-19 用户确认后的范围(替代原方案的冲突表述) 用户要求内部系统简单易用:采购任务有 PDD 订单号、下单时间和订单金额即资料完整,不检查支付状态;后续只保留自动下单读取和 Admin 手工补录两种来源。用户确认“按照你的建议来做”。本次保留插件与 Agent 回填,停用另行安排。 ### 当前代码核验 基线:main 741e4bf680f72a4f7eda8e2daada5e32561ed901,核验日期2026-09-19。 - order_writeback.go 当前已经不检查地址后缀、付款状态和金额;不能把原案例“已创建不能勾选”直接归因于这些条件。本轮未查该线上任务事实,不声称已确定该案例根因。 - manual.go ResolveUnknown 只处理 order_result_unknown,支持单号与时间,不支持金额;通用 manual 事务未调用 ensureOrderWriteback。 - Web purchase-tasks/index.vue 只有未知结果处理弹窗,无法对 order_created 补金额,金额文案仍是“实付价格”。 - lifecycle.go 自动下单已有订单号、时间、可选金额;order_backfill.go 的插件/Agent 上游定位仍使用地址后缀。本单不取消这些定位规则。 ### 目标和最小方案 1. 复用 pddOrderNo、orderSubmittedAt、pddOrderAmountCent,金额为整数分;不新增数据库字段,不新增持久化任务状态,不迁移历史数据。 2. 保留 order_created 表示确实已创建订单。完整性由上述三字段推导:单号非空、时间有效、金额非空且非负为“信息完整”;缺项显示“订单信息待补全”。金额0与缺失区分。不得把缺金额变成 failed 或触发重新采购。不得仅为获得三字段而要求已付款。 3. Admin 沿用任务详情和现有人工处理弹窗,补金额输入并允许已有订单资料补全;不新增独立页面、审批或角色。现有未知结果人工确认保留取消分支。执行中不并发修改设备正写入的订单事实;沿用既有权限及基本一致性保护,不新增审批门禁。具体入口/状态见 v1 草案,待用户审核。 4. 手工保存与自动下单保存均在订单事实落库事务内保证 SYB 单号回填记录;金额/时间未齐全不阻挡已知订单号回填 SYB。 5. SYB 入队资格:live + syb_order + 有效 SYB 明细关联 + 非空 PDD 订单号;不再要求 status=order_created,不以金额、时间、支付复核或地址后缀限制此阶段。列表 canSubmit、提交和 worker 使用一致的资格依据,避免可勾选后因关联失效跳过。 6. SYB 协议保持 purchaseCode=订单号/type=pdd/cost=0/created为空;不上传金额或时间。保留现有防重复、在途租约、同号成功、异号冲突不覆盖的实现,不叠加新门禁。 7. 页面金额统一叫“订单金额”,不把应付或历史实付金额冒充已付款。付款复核及物流“选为回填候选”不改。手工保存不自动确认已支付。 8. 保留订单号唯一归属与既有单号不覆盖保护;不根据金额或时间猜测属于哪个采购任务。本单不解决手工订单沿用旧 CG 地址的上游归属问题。 ### 范围/依赖 Server:purchase 资格、人工保存与事务入队、详情/列表完整性、测试。 Web:采购详情、既有人工处理弹窗与资料完整性/金额文案、测试。 Android、插件不改;后续停用另单。依赖 #305;复用 #325 已在 main 的金额字段链路。 不修改真实订单、不执行真实 SYB 写入、不发布线上;本轮无数据库迁移。业务更改获得本次实施授权,真实线上写入或发布另行确认。 ### 设计证据与实施门禁 QuantUX v1(待审核):https://qux.ilapage.cn/#/apps/6aae32d6191a826306a7fea7.html App ID:6aae32d6191a826306a7fea7,版本标识“#326 · v1 · 待审核”,创建2026-09-19。 覆盖:缺金额详情、补录三字段、保存成功、失败说明、空态/加载/禁用/权限边界。5屏、71控件、8条预置状态跳转;仅合成数据,不请求业务接口。结构回读通过。浏览器未登录时显示 QuantUX 登录页,需使用已登录账号查看,尚未完成渲染/点击验收。 ui-ux-pro-max 用于约束表单标签、保存反馈、错误保留输入;沿用现有 Admin 样式,不采用与项目无关的推荐视觉风格。 需求方案已由用户确认;原型确认人/时间:用户于2026-09-19在会话明确“原型通过,做#326”。由于扩展人工补录入口及状态展示,先完成原型审核,不以文字需求批准冒充原型批准;原型通过后已实施,见当前交付状态及完成评论。 ### 验收与验证 - 三字段齐全为信息完整;缺金额可补,订单号已知不能普通重试下单;0元不是空值。 - 正式 SYB 任务有单号及有效关联即可回填,任务状态、时间/金额缺失、支付状态不影响该阶段资格。 - 人工补录成功与队列在同一事务;失败不丢输入、不误报成功;重复保存不重复入队;请求重放不得悄悄覆盖其他值。 - 列表和提交对无效关联判断一致;pending/running/succeeded 不重复写,conflict 不强制覆盖,unknown 复用现有回读机制。 - 同单号不能绑定多个采购任务;不得覆盖不同既有单号。人工保存不能触发设备下单或付款。 - 旧插件/Agent 接口继续兼容;不升级历史状态、不批量倒扫旧任务。 - Server 单元/事务/worker 回归及 Web 既有采购页测试与构建;仅 fake/httptest 检查 SYB 参数,不真实写SYB。 ### 文档/回退 实施后更新 Business-Rules-and-Glossary、Architecture-and-Code-Map、Android-Agent-API-Contract 的资格、完整性与人工录入契约;按 Wiki-first 一轮同步校验。当前仅设计,无已实现长期事实变更,不同步 Wiki。 回退采用对应完整代码提交,不只恢复单个 status 判断;已写入订单事实与外部SYB单号不能随代码回滚自动撤销。 --- ## 原始建单记录(历史,仅用于追溯;冲突内容以上方最新方案为准) ## 原始需求 用户 2026-09-19 在采购管理核对线上任务(SYB 订单 `260919DX79YRHA`,状态「订单已创建」不能勾选)时确认: 1. 自动采购下单前会修改地址,手工采购继续使用自动采购最后一个任务的地址;因此不能再用地址后缀判定回填资格。 2. 希望采购任务只要已有 PDD 订单号、下单时间(用户初述还提到实付价格)就能回填 SYB。 3. 后续明确:「只需要把pdd订单号更新到syb订单里」。 建单时间:2026-09-19。 ## 目标与非目标 **目标** - 仍复用 #305 的 SYB 写入协议:只把 GoAuto 采购任务上的 **PDD 订单号** 写入对应 SYB 明细的 `purchaseCode`(`type=pdd`,`cost=0`,`created` 为空)。 - 放宽入队/勾选资格:正式订单采购只要已落库 **非空 PDD 订单号** 与 **下单时间**,且仍关联有效 SYB 明细,即可建立或补偿回填记录。 - 不再以采购任务状态必须是 `order_created`、支付复核必须已支付、地址后缀或金额字段作为单号回填门禁。 **非目标** - 不把实付/应付金额写入 SYB,不改 `cost=0`。 - 不用金额缺失/冲突阻挡单号回填(用户初述的「实付价格」不作硬条件;#306/#305/#325 均禁止用金额当单号回写前置条件)。 - 不改「选为回填候选」(已支付才能选)那条物流/候选流程。 - 不改 Android 下单/核单、不改地址改写、不做自动支付。 - 不发布时自动倒扫全部历史任务入队;历史仍靠采购管理勾选补偿。 - 不强制覆盖 SYB 上已有的不同单号或非 pdd 平台。 ## 前置依赖 - 依赖 #305(e89de1a,2026-09-18 已发布线上)的队列、worker、Admin 批量/详情补偿与 SYB `updateDetailPurchaseCode` 协议。 - 不依赖 #325;金额字段不进入本单资格。 - 可与 #325 并行。 ## 子项目影响 - `server/`:`orderWritebackEligible` / `ensureOrderWriteback` / `RequestOrderWriteback` / worker 再校验与单测。 - `web/`:若 `orderWriteback.canSubmit` 与原因文案随服务端变化,只改展示/勾选过滤,不新增页面。 - `android/`:不改。 无新页面或导航变化,不做原型。 ## 当前事实(代码) `orderWritebackEligible` 当前为: `live` + `syb_order` + **`status == order_created`** + 有 `sybProductId` + 非空 `pddOrderNo`。 不检查下单时间。金额与 `paymentReviewStatus` 已不作门禁。入队后 worker 写前回读 SYB;同单号+pdd 直接成功;空才写一次;不同单号/其他平台记 conflict 且不覆盖。 Admin 列表勾选由服务端 `orderWriteback.canSubmit` 决定;已 pending/running/succeeded 不能再勾。「重试」勾选仍只针对 `failed && retryable`。 ## 方案 1. 资格改为:`live` + `syb_order` + 有效 SYB 明细(stock_id/detail_id)+ 非空 PDD 订单号 + 有下单时间。不再要求 `status == order_created`。 2. 入队时机不变:订单事实落库的同一事务内 `ensureOrderWriteback`(含 Agent `order_created`、人工/扩展回填成功);历史补偿仍走 `POST /api/admin/v1/purchase-tasks/syb-order-writeback`。 3. 写入协议不变:`POST /am/stock/detail/updateDetailPurchaseCode`,只传单号;不传金额、不传下单时间(SYB 自行生成 purchaseTime)。 4. 冲突与未知结果规则不变:不覆盖、崩溃恢复只回读不盲写。 5. Web 仍以 `canSubmit` 决定勾选;若原因文案仍写「不符合正式SYB订单回填条件」,改为与新资格一致的短说明。 ## 设计证据 无新页面。复用现有采购管理列表/详情的 SYB 单号回填区与 #305 协议。 ## 验收 - 有 PDD 订单号 + 下单时间的正式订单采购,无论支付复核是 pending/unpaid/paid、无论金额是否缺失,都可入队或被勾选补偿(在尚未 succeeded/在途租约时)。 - 缺 PDD 订单号或缺下单时间:不入队、`canSubmit=false`。 - 备货、演练仍不参与。 - 去掉「下单时间」要求后对应用例必须变红;去掉金额/支付状态不影响绿。 - fake/httptest:写入仍只带单号与 `cost=0`,不带金额。 - 既有 conflict/未知结果/租约用例不受影响。 - 不在本单执行真实 SYB 写入;线上补偿需另行授权。 ## 验证 - `go test` 覆盖 `purchase` 资格与 order writeback 相关包。 - Web:若改了 canSubmit 文案或勾选过滤,跑既有 `purchase-order-writeback` e2e。 - 不改 Agent,不跑真机下单。 ## 风险与回退 - 放宽资格会让更多已有订单号+时间的任务可被勾选入队;真实 SYB 写入仍属高风险,验证环节需明确授权。 - SYB 写入仍会改变远端采购状态/时间;不覆盖冲突单号。 - 回退:还原 `orderWritebackEligible` 为 `status == order_created`。 ## 文档影响 有长期文档影响,需更新: - Business-Rules-and-Glossary(#305 入队资格) - Architecture-and-Code-Map(单号回填链路) - Android-Agent-API-Contract 中 #305 资格句(现写 `live + syb_order + order_created + 有效单号`) 写入协议本身不变;若 Wiki 仍写死绑 `order_created`,必须改成上述字段门禁。
ila changed title from 放宽 SYB 单号回填资格:有 PDD 订单号和下单时间即可入队 to 采购订单资料补全与简化 SYB 单号回填(复用现有字段) 2026-09-19 15:03:26 +08:00
Author
Owner

开始实施:v1原型已由用户2026-09-19确认。基线741e4bf,独立worktree issue-326 / feat/326-order-information。只修改Server/Web、必要契约与测试,不改Android/插件,不迁移、不发布、不执行真实SYB写入。未配置Gitea MCP,沿用安全配置凭据调用API。

开始实施:v1原型已由用户2026-09-19确认。基线741e4bf,独立worktree issue-326 / feat/326-order-information。只修改Server/Web、必要契约与测试,不改Android/插件,不迁移、不发布、不执行真实SYB写入。未配置Gitea MCP,沿用安全配置凭据调用API。
Author
Owner

实施完成,待验收(2026-09-19)

原型v1已由用户确认,严格按修订后范围实施。当前无Gitea MCP,使用API回写。

交付

  • 分支 feat/326-order-information 已推送,工作区干净;代码3a2472d,文档f66952f。main仍741e4bf,未合并或发布。
  • 复用 pddOrderNo/orderSubmittedAt/pddOrderAmountCent,无新字段、表、状态、迁移、权限资源或APK变化。
  • Admin已有订单缺资料可“补全订单信息”;未知结果确认弹窗增加订单金额。三字段齐全显示信息完整,缺项显示待补全;0元有效,页面金额称订单金额,不推断已付款。已有非空字段只读,不覆盖不同事实。沿用原未知结果取消分支。
  • resolve-unknown兼容旧客户端省略金额;正式未知结果/已创建订单保存同事务保证SYB队列,队列失败整笔回滚。仅此人工操作新增入队逻辑,支付复核/其他人工流程不新增副作用。
  • SYB资格仅live + syb_order +非空订单号+有效明细,不检查任务状态、时间、金额、支付状态、地址后缀;列表批量读关联,提交/worker再校验。队列已有失败不自动重置,仍用既有手动补偿;在途、成功、冲突、未知恢复规则保持。
  • Agent/插件继续保留,未变更上游定位。订单号跨任务唯一保护保留,SYB只传单号,cost=0。没有历史倒扫或真实写入。

验证

  • go test -p 1 ./app/goauto/purchase ./app/goauto/clientapi ./app/goauto/sybclient:通过。
  • 新增Server测试覆盖0/1300分、旧客户端缺金额成功后补全、重复请求和变更重放冲突、非覆盖、队列事务故障回滚、不同任务状态且缺时间/金额worker可回填、有效关联一致性、负数/零时间/空单号/执行中/演练拒绝。既有订单号冲突、队列租约及SYB请求协议测试继续通过。
  • go build:通过,Windows测试构建仅保存临时目录,未部署。
  • pnpm build:prod:通过,既有CSS伪类与大chunk告警保留。
  • 生产构建预览上运行 purchase-order-writeback.spec.ts:6/6通过(原3项回归+0元/13.01元补录+失败保留输入/原样重试同requestId)。全部业务API被测试桩拦截;查看合成数据截图,详情显示和未支付状态正确。
  • 首轮Vite开发模式测试停在资源加载,未进入业务页;转为生产构建预览后6项全部通过。临时9536/9537服务已停止。
  • git diff --check通过。harness check --strict仍因main已有未登记docs/evidence/pdd-home-35727-summary.md失败;未修改该无关文件,不宣称严格检查通过。

Wiki

先在线更新并回读,再唯一一轮sync + sync --check,均通过:

  • Architecture-and-Code-Map:46067d78327476f14e6cfd202458a53f295bf763
  • Business-Rules-and-Glossary:975633525ff82f4be77b37b3d41f08aa05de6822
  • Android-Agent-API-Contract:e43e83af5442005139b3234963afd317609b44ac

未验证与交付边界

未查询/修改原案例线上任务,未执行真实SYB写入、采购、支付或生产部署。手工入口沿用既有unknown/已创建范围,不扩展执行中或取消任务编辑。下一步需用户授权合并main和发布Server/Web;先Server后Web,无迁移,无需新APK。工单保持打开待验收。

## 实施完成,待验收(2026-09-19) 原型v1已由用户确认,严格按修订后范围实施。当前无Gitea MCP,使用API回写。 ### 交付 - 分支 feat/326-order-information 已推送,工作区干净;代码3a2472d,文档f66952f。main仍741e4bf,未合并或发布。 - 复用 pddOrderNo/orderSubmittedAt/pddOrderAmountCent,无新字段、表、状态、迁移、权限资源或APK变化。 - Admin已有订单缺资料可“补全订单信息”;未知结果确认弹窗增加订单金额。三字段齐全显示信息完整,缺项显示待补全;0元有效,页面金额称订单金额,不推断已付款。已有非空字段只读,不覆盖不同事实。沿用原未知结果取消分支。 - resolve-unknown兼容旧客户端省略金额;正式未知结果/已创建订单保存同事务保证SYB队列,队列失败整笔回滚。仅此人工操作新增入队逻辑,支付复核/其他人工流程不新增副作用。 - SYB资格仅live + syb_order +非空订单号+有效明细,不检查任务状态、时间、金额、支付状态、地址后缀;列表批量读关联,提交/worker再校验。队列已有失败不自动重置,仍用既有手动补偿;在途、成功、冲突、未知恢复规则保持。 - Agent/插件继续保留,未变更上游定位。订单号跨任务唯一保护保留,SYB只传单号,cost=0。没有历史倒扫或真实写入。 ### 验证 - go test -p 1 ./app/goauto/purchase ./app/goauto/clientapi ./app/goauto/sybclient:通过。 - 新增Server测试覆盖0/1300分、旧客户端缺金额成功后补全、重复请求和变更重放冲突、非覆盖、队列事务故障回滚、不同任务状态且缺时间/金额worker可回填、有效关联一致性、负数/零时间/空单号/执行中/演练拒绝。既有订单号冲突、队列租约及SYB请求协议测试继续通过。 - go build:通过,Windows测试构建仅保存临时目录,未部署。 - pnpm build:prod:通过,既有CSS伪类与大chunk告警保留。 - 生产构建预览上运行 purchase-order-writeback.spec.ts:6/6通过(原3项回归+0元/13.01元补录+失败保留输入/原样重试同requestId)。全部业务API被测试桩拦截;查看合成数据截图,详情显示和未支付状态正确。 - 首轮Vite开发模式测试停在资源加载,未进入业务页;转为生产构建预览后6项全部通过。临时9536/9537服务已停止。 - git diff --check通过。harness check --strict仍因main已有未登记docs/evidence/pdd-home-35727-summary.md失败;未修改该无关文件,不宣称严格检查通过。 ### Wiki 先在线更新并回读,再唯一一轮sync + sync --check,均通过: - Architecture-and-Code-Map:46067d78327476f14e6cfd202458a53f295bf763 - Business-Rules-and-Glossary:975633525ff82f4be77b37b3d41f08aa05de6822 - Android-Agent-API-Contract:e43e83af5442005139b3234963afd317609b44ac ### 未验证与交付边界 未查询/修改原案例线上任务,未执行真实SYB写入、采购、支付或生产部署。手工入口沿用既有unknown/已创建范围,不扩展执行中或取消任务编辑。下一步需用户授权合并main和发布Server/Web;先Server后Web,无迁移,无需新APK。工单保持打开待验收。
Author
Owner

授权合并及线上发布完成

用户2026-09-19明确授权合并main并发布线上。无Gitea MCP,使用API回写。

  • main从741e4bf快进至f66952f并推送;从main重新执行purchase/clientapi/sybclient测试,全部通过。Linux amd64 Server及Web生产构建通过,Web既有CSS/chunk告警保留。
  • 新release=/home/goauto/releases/20260919-f66952f-326;前版/home/goauto/releases/20260919-741e4bf-325完整保留。校验上传哈希、继承已有config与真实static/var链接后原子切换current,重启goauto.service并校验/reload Nginx。
  • 预检及切换前采集/采购执行数0,SYB回填pending/running数0;不主动补偿历史任务。53项迁移和sys_job启停状态前后一致;无数据库迁移、权限资源新增、APK安装或真实采购操作。
  • Server SHA256=eb401429b0dbd106e2e687378b35e50bc97bd35fb991ec69e740d018445de814,Web tgz SHA256=6935cd58bbb397d6c58cf8296eb3c1874de4c2dec676f6d64fc3c3253135ebef;远端binary哈希核验通过。
  • 公网http://185.216.248.75:9527/首页200且与本地dist/index.html逐字节一致;10项首页引用JS/CSS均200且逐字节一致。两个采购API/页面chunk均200且匹配,其中页面chunk含补全订单信息、订单金额新文案与新逻辑。首次探针误取同名前缀API chunk,导致标签断言失败;定位到页面chunk后核验通过,不是部署缺失。
  • 公网/api/v1/health=200;goauto.service/nginx均active;最近3分钟日志panic/fatal/1146/1054计数均0。main工作区干净。
  • 未进行真实订单补录或SYB端到端写入,用户业务验收仍待完成。刷新采购管理即可查看。无需数据库迁移或新APK。

本次复用现有发布拓扑及运维方式,长期契约已在实施阶段更新并sync/check通过;发布事实仅记本工单,不重复Wiki同步。工单保持打开待验收。

## 授权合并及线上发布完成 用户2026-09-19明确授权合并main并发布线上。无Gitea MCP,使用API回写。 - main从741e4bf快进至f66952f并推送;从main重新执行purchase/clientapi/sybclient测试,全部通过。Linux amd64 Server及Web生产构建通过,Web既有CSS/chunk告警保留。 - 新release=/home/goauto/releases/20260919-f66952f-326;前版/home/goauto/releases/20260919-741e4bf-325完整保留。校验上传哈希、继承已有config与真实static/var链接后原子切换current,重启goauto.service并校验/reload Nginx。 - 预检及切换前采集/采购执行数0,SYB回填pending/running数0;不主动补偿历史任务。53项迁移和sys_job启停状态前后一致;无数据库迁移、权限资源新增、APK安装或真实采购操作。 - Server SHA256=eb401429b0dbd106e2e687378b35e50bc97bd35fb991ec69e740d018445de814,Web tgz SHA256=6935cd58bbb397d6c58cf8296eb3c1874de4c2dec676f6d64fc3c3253135ebef;远端binary哈希核验通过。 - 公网http://185.216.248.75:9527/首页200且与本地dist/index.html逐字节一致;10项首页引用JS/CSS均200且逐字节一致。两个采购API/页面chunk均200且匹配,其中页面chunk含补全订单信息、订单金额新文案与新逻辑。首次探针误取同名前缀API chunk,导致标签断言失败;定位到页面chunk后核验通过,不是部署缺失。 - 公网/api/v1/health=200;goauto.service/nginx均active;最近3分钟日志panic/fatal/1146/1054计数均0。main工作区干净。 - 未进行真实订单补录或SYB端到端写入,用户业务验收仍待完成。刷新采购管理即可查看。无需数据库迁移或新APK。 本次复用现有发布拓扑及运维方式,长期契约已在实施阶段更新并sync/check通过;发布事实仅记本工单,不重复Wiki同步。工单保持打开待验收。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#326