Commit Graph
175 Commits
Author SHA1 Message Date
QiuSWandClaude Opus 5 c14f5f528b fix(server): keep agent diagnostics on order-check failures #271
normalizeOrderUnknownFailure replaced the agent's message with a canonical
sentence, so the diagnostic #210 added never reached the database. Across the
61 PURCHASE_ORDER_PAYMENT_REPEATED failures on production between 2026-09-07
and 09-11, not one carried paymentBackAttempts or
consecutivePaymentSamplesAfterBack, which left three very different causes
indistinguishable: the Back never left the payment activity, the page rendered
slower than the ~1.1s window the agent allows, or the page was already the
order page and no marker matched. Those need different fixes, and there was no
way to tell which one to make.

The canonical sentence stays authoritative and leads the message — agent text
is free-form and the wording per error code has to stay stable — but the agent
evidence is now appended behind it, flattened to one line (control characters
and U+FEFF removed, whitespace collapsed) and truncated to the column's 1000
runes with the canonical part kept whole. The sibling "failed" branch already
stored agent text verbatim, so this adds no new trust assumption.

That branch also only wrote the failure onto the task, never the attempt, so
every attempt it produced carried a NULL error_code and was invisible to
attempt-level statistics — the spec-panel failures on production are exactly
that. It now writes both.

This restores observability only; it does not reduce how often
PAYMENT_REPEATED happens. Tuning the agent's sampling window is deliberately
left out until the next production failure shows real values.

Wiki updated first: Android-Agent-API-Contract@ba259178.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NTDbDcwbDw1TSAcE6wfh2F
2026-09-12 11:13:02 +08:00
QiuSWandClaude Opus 5 c24e8a4439 docs: refresh stale wiki mirrors picked up by the same sync run
Unrelated to #269. These three pages were changed online by other work and
the local mirror had drifted (02 and 03 from 2026-09-10, 06 from 2026-09-04).
The sync that mirrored the #269 pages regenerates every mapping, so it brought
these along; they are committed separately to keep the ticket's own commit
limited to its files.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NTDbDcwbDw1TSAcE6wfh2F
2026-09-11 17:15:38 +08:00
QiuSWandClaude Opus 5 40a254dc41 docs: mirror SYB product filter rules and admin API #269
Wiki updated online first, then mirrored:
- SYB-ERP-Interface-Contract@f1792b7f — filter order after shop admission,
  OR-not-AND with the 8498/6392/6386/8504 figures from the 2026-09-11
  production check, empty variationSku kept, per-rule hit counts, and the
  no-add/no-delete rule for structural criteria.
- Android-Agent-API-Contract@38869285 — the syb-product-filters endpoints,
  the server-side refusal of char add/delete, and the live lastHitCount
  requirement for the disable confirmation.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NTDbDcwbDw1TSAcE6wfh2F
2026-09-11 17:15:38 +08:00
QiuSW 79929036bb docs: clarify metadata-only partial collection eligibility #259 2026-09-10 16:10:13 +08:00
QiuSW 8cfd32babe docs: record one-click replacement contract and boundaries #258 2026-09-10 15:52:03 +08:00
QiuSW 305062dba0 docs: record normalized color matching rule #257 2026-09-10 14:56:01 +08:00
QiuSW ca997f6108 docs: record SYB quick-link behavior and API #253 2026-09-10 11:39:34 +08:00
QiuSW 08d939a9b8 docs: sync dynamic match timeout contract #254 2026-09-10 09:43:53 +08:00
QiuSW fdd26afaf0 docs: record online deployment for #237 and #239 2026-09-08 10:26:01 +08:00
QiuSW d403f3b3a0 docs(syb): define page commits and partial success contract (#239) 2026-09-08 09:39:59 +08:00
QiuSW 9d5242b371 docs(local): record verified client key migration and service startup (#237) 2026-09-07 17:45:38 +08:00
QiuSW ac3c63ead6 docs(client-api): record approved HTTP compatibility (#237) 2026-09-07 17:29:28 +08:00
QiuSW 76c94e33e0 docs(client-api): sync key contracts and deployment prerequisites (#237) 2026-09-07 17:15:02 +08:00
QiuSW 29ba16e4f9 feat(syb): allow purchaser manual sync (#236) 2026-09-07 15:03:31 +08:00
QiuSW ff2d0ca0e5 fix(syb): recover bounded today pagination overlaps (#235) 2026-09-07 14:25:47 +08:00
QiuSW 1900dab32e feat(web): remember batch purchase device per user (#233) 2026-09-07 11:25:12 +08:00
QiuSW 3efe4f64a5 docs: sync purchase direct-link entry contract (#232) 2026-09-07 10:55:26 +08:00
QiuSW 9320e5528c docs(purchase): sync retry page entry contract (#226) 2026-09-05 17:08:20 +08:00
QiuSW b306f417d5 docs(agent): sync in-place retry contract (#225) 2026-09-05 16:50:01 +08:00
QiuSW 8f5ff4525e docs(purchase): sync retry business rule (#225) 2026-09-05 16:50:00 +08:00
QiuSW d84f6ddf21 fix(purchase): reuse validated probe mappings (#223) 2026-09-05 15:21:17 +08:00
QiuSW e4051ed8df feat(purchase): reuse probed PDD page (#219) 2026-09-05 10:34:35 +08:00
QiuSW 96cc2ab700 docs(purchase): 更新 Agent 重试契约 (#217) 2026-09-05 09:03:07 +08:00
QiuSW bd386cfae4 fix(syb): 修正规格颜色尺码反序 (#216) 2026-09-04 19:33:35 +08:00
QiuSW c09ddc8474 feat(purchase): 强制真机探测规格后匹配 (#215) 2026-09-04 19:03:16 +08:00
QiuSW 683aa9c671 fix(agent): 验证采购规格点击并锁定面板滚动 (#214) 2026-09-04 18:23:47 +08:00
QiuSW fc28632d48 fix(purchase): 允许无 SKU 采集证据创建采购 (#200) 2026-09-03 09:56:38 +08:00
QiuSW e85f237f09 feat(purchase): 放行有结果的 AI 规格匹配 (#200) 2026-09-03 09:34:13 +08:00
QiuSWandClaude Opus 5 4eac72919d docs: 同步业务规则镜像,放开 AI 匹配与规格映射前置 (#190)
线上 Wiki 页 Business-Rules-and-Glossary 已更新并回读,
revision a6f63cc745cf0e0df7ca94521a70fb6af3adea26。

- 批量 AI 匹配的进入条件按 #190 放开:解析状态、第三维度、
  蝦皮缺目标值、缺可售 SKU 组合均不再阻断
- 规格映射失效与确定性匹配失败改为降级 unresolved 走规格探测,
  规则不具备 spec-probe 能力时仍拒绝创建

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 17:58:39 +08:00
QiuSW 4a1b4af29d fix: trust manually confirmed SYB specs (#188) 2026-09-01 16:04:35 +08:00
QiuSW 776db137be fix: require saved spec match before purchase (#188) 2026-09-01 15:32:26 +08:00
QiuSW 5446ebeaae fix: tighten batch AI matching eligibility (#188) 2026-09-01 14:49:00 +08:00
QiuSW 3ef0f72ff9 feat: batch AI match SYB purchase specs (#188) 2026-09-01 12:13:33 +08:00
QiuSW 3aab1f013d feat(goauto): 完善替代采集与颜色图片详情 (#184 #185) 2026-09-01 09:55:27 +08:00
QiuSW c07c3451f1 fix(admin): decouple SYB collection eligibility (#183) 2026-09-01 09:02:24 +08:00
QiuSW 7be57bfe6b feat(agent): allow configured HTTP transport (#181) 2026-09-01 00:12:43 +08:00
QiuSW 9cdb6bb962 feat(purchase): allow absolute price ceiling (#180) 2026-08-31 21:27:50 +08:00
QiuSW 4343ab5c94 fix(purchase): configure spec probe aliases and show targets (#174) 2026-08-31 17:11:52 +08:00
QiuSW ff0cf99be3 fix(goauto): preserve unknown order evidence (#167) 2026-08-31 14:28:59 +08:00
QiuSW a3628df292 fix(agent): reject review-page spec entry misroutes (#166) 2026-08-31 11:47:33 +08:00
QiuSW 09d9d2227a feat(goauto): continue orders from PDD product detail (#161) 2026-08-31 11:36:31 +08:00
QiuSW 866aea102f fix(goauto): preserve exact spec failure evidence (#164) 2026-08-31 11:16:45 +08:00
QiuSW 67f3a74956 fix(goauto): safely normalize specification values (#160) 2026-08-31 09:40:17 +08:00
QiuSW 1ec895b8e6 docs(goauto): document rules and agent releases (#127 #143 #144 #146) 2026-08-29 21:57:08 +08:00
QiuSW 7afe5ae9ce fix(#145): stabilize SYB daily pagination 2026-08-29 18:08:42 +08:00
QiuSW 77a2b2506e fix(android): recognize sold-out purchases (#158) 2026-08-29 17:07:24 +08:00
QiuSW 16948a9e94 feat(#157): retry purchase tasks in place 2026-08-29 16:52:23 +08:00
QiuSW 7c18159d70 fix(#156): reconcile purchaser permissions at startup 2026-08-29 16:30:23 +08:00
QiuSW cc326ebc6c feat(#155): reuse failed collection tasks by attempt 2026-08-29 16:05:37 +08:00
QiuSW 78ab8716a6 fix(#154): return safely from WeChat to PDD 2026-08-29 15:15:25 +08:00