Commit Graph
93 Commits
Author SHA1 Message Date
QiuSW ba7d2a6b72 feat(#280): remember image search device 2026-09-15 09:57:17 +08:00
QiuSW 56706a0b45 fix(#280): show image search association marker 2026-09-15 09:45:50 +08:00
QiuSW c80d0c91d5 feat: add image search batch dialog to syb products (#280) 2026-09-15 09:07:45 +08:00
QiuSW be491c7692 feat: expose image search batch API to web (#280) 2026-09-15 09:02:08 +08:00
QiuSW 804448ede0 feat: show image search link marker in shopee detail (#279) 2026-09-15 08:59:37 +08:00
QiuSW 5a7e219230 feat: add image-search linked filter to shopee list (#279) 2026-09-15 08:58:35 +08:00
QiuSW aed295c8c1 fix(syb): reduce parse status to success or failed (#272) 2026-09-12 11:36:43 +08:00
QiuSWandClaude Opus 5 503b3cbbc5 fix(goauto): create syb_product_filter on existing databases #269
Three defects that only a real MySQL run could show.

The table had no version-local migration. Adding the model to
migrations.Migrate covers databases built from scratch, but every existing
one already has the older versions recorded in sys_migration, so that list
never runs again there. cmd/migrate's post-migration table check caught it:
"迁移后仍缺少表:syb_product_filter". The new version file creates the table
and seeds the same eight rules with FirstOrCreate on the normalized key, so
running both paths against one database cannot duplicate them.

Keyword and NormalizedKeyword were typed text, which MySQL refuses to put in
a key specification without a prefix length (Error 1170), so the unique index
could not be built at all. They are sized 200 now, matching how SYBShop sizes
its own matching key. SQLite accepts text in an index, which is why the whole
test suite passed while the real migration failed.

The 只看启用 filter is removed rather than kept: hiding a disabled structural
rule would conceal the one state on this page that matters most, since a
disabled "#" means roughly 65% of 档口 rows start entering the system again.
Keyword search stays.

Verified against the local MySQL database: migration applies, eight rules
present with traditional Chinese preserved (印花大學T normalizes to 印花大學t),
menu row created under 采采管理.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NTDbDcwbDw1TSAcE6wfh2F
2026-09-11 17:00:11 +08:00
QiuSWandClaude Opus 5 20f59b68bd fix(goauto): record SYB filter hits per rule, not per kind #269
UpdateHits wrote one aggregate per kind, so every structural rule stored
the same number. The disable-confirmation dialog quotes that number
("停用「#」后…约 N 条明细会恢复入库"), and on real data "#" matches 8498
rows while "-" matches 6392 — the dialog would have warned with a figure
2100 rows off for one of them.

Match now returns the rule that matched instead of a char/keyword pair,
so the caller can attribute each hit to one rule, and UpdateHits writes
every rule's own count. Rules that matched nothing are written as 0 so a
previous run's number is never left behind.

The management page is reformatted to the repo's usual Vue layout and
gains the search / 只看启用 / 重置 controls the approved prototype shows.
Cancelling the disable confirmation now just reverts the switch instead
of throwing an unhandled rejection.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NTDbDcwbDw1TSAcE6wfh2F
2026-09-11 16:27:13 +08:00
QiuSW 652bf30f5a feat(goauto): add SYB product variation filters (#269) 2026-09-11 16:20:26 +08:00
QiuSW 2b01974fe5 feat(syb): confirm one-click replacement from latest collection #258 2026-09-10 15:47:27 +08:00
QiuSW b1594dc7bd feat(syb): link latest device collection and match specs #253 2026-09-10 11:34:22 +08:00
QiuSW 9088e6b734 fix(shopee): bound matching waits and recover drawer loading #254 2026-09-10 09:37:02 +08:00
QiuSW c6a962d522 fix(syb): persist validated pages and report partial sync success (#239) 2026-09-08 09:35:36 +08:00
QiuSW 71f7751754 fix(client-api): support HTTP and HTTPS by default (#237) 2026-09-07 17:25:55 +08:00
QiuSW 57b0f1595f feat(client-api): add scoped editable client keys (#237) 2026-09-07 16:20:46 +08:00
QiuSW 29ba16e4f9 feat(syb): allow purchaser manual sync (#236) 2026-09-07 15:03:31 +08:00
QiuSW bf58ad0005 merge: integrate main and purchase fixes for release (#234) 2026-09-07 11:58:24 +08:00
QiuSW 1900dab32e feat(web): remember batch purchase device per user (#233) 2026-09-07 11:25:12 +08:00
QiuSW 58e058f8ac feat: 一键匹配并确认蝦皮颜色尺码 (#194)
(cherry picked from commit 041cd8d03f)
2026-09-03 15:05:53 +08:00
QiuSW 2c263e687e feat(device): 后台自动恢复设备身份 (#201) 2026-09-03 11:16:03 +08:00
QiuSW 379a83fe94 feat(device): 安全恢复原设备身份 (#201) 2026-09-03 10:41:20 +08:00
QiuSW 81c1a7ead2 fix: add scheduled job execution history (#199) 2026-09-02 23:12:48 +08:00
QiuSW d7924619b6 feat: 增加蝦皮规格定时与手动自动匹配 (#195) 2026-09-01 23:41:11 +08:00
QiuSW 041cd8d03f feat: 一键匹配并确认蝦皮颜色尺码 (#194) 2026-09-01 22:20:48 +08:00
QiuSW 55c2b6b254 Revert "feat(web): SYB 列表页就地人工修正解析结果 (#190)"
This reverts commit 16c9216a5a.
2026-09-01 17:42:17 +08:00
QiuSWandClaude Opus 5 16c9216a5a feat(web): SYB 列表页就地人工修正解析结果 (#190)
解析失败或存疑时,列表行动作原先跳转打开详情抽屉,用户还需在抽屉内
再找一次「人工修正」。改为直接打开修正弹层,减少两次跳转。

- runPurchaseNextAction 的 reparse 分支改为 openCorrect(row)
- openCorrect 支持列表行与详情抽屉两个来源,fromList 决定保存后
  刷新列表还是刷新抽屉
- 动作按钮文案「查看并处理」改为「人工修正」
- 修正抽屉内 @click="openCorrect" 会把 MouseEvent 当作 row 传入的
  缺陷,改为 @click="openCorrect()"

后端与 ManuallyConfirmed 通道已存在(4a1b4af),本次不改服务端。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 16:56:57 +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 6ab2f62f39 feat(web): 内联展示商品详情抽屉 (#186) 2026-09-01 11:23:09 +08:00
QiuSW b31896ef75 fix(web): restore cached tab state (#187) 2026-09-01 10:33:27 +08:00
QiuSW c07c3451f1 fix(admin): decouple SYB collection eligibility (#183) 2026-09-01 09:02:24 +08:00
QiuSW dce4a4fc2a fix(web): support request IDs over HTTP (#182) 2026-09-01 00:51:29 +08:00
QiuSW 9cdb6bb962 feat(purchase): allow absolute price ceiling (#180) 2026-08-31 21:27:50 +08:00
QiuSW 55ded8b598 feat(web): add 100-row pagination option (#177) 2026-08-31 17:47:45 +08:00
QiuSW d00f1591c2 feat(web): configure AI confidence threshold (#175) 2026-08-31 17:30:04 +08:00
QiuSWandClaude Sonnet 5 5338dd0072 fix(web): give AI spec-suggestion calls a timeout above the AI provider's
request.js's shared axios instance times out every admin call at 10s,
but AI matching settings allow the server to wait up to 600s
(aimatching.maxTimeoutSecs) for a real chat/completions round trip.
For shopee product 49915704844 the size dimension had no deterministic
match and genuinely called the model; the frontend cut the connection
before the server replied, which the browser reports as a generic
network failure ("服务器连接异常") that has nothing to do with the
actual cause. Override the timeout on just these two calls instead of
the shared default, which stays tight for every other (fast) admin
request.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VkjpksKeizaRpYXfgD74Lf
2026-08-31 16:37:04 +08:00
QiuSWandClaude Sonnet 5 21b38c4444 feat(goauto): suggest color/size specs via AI, human-confirmed save (#172)
Add batch AI suggestion for Shopee color/size spec mapping: a
specContextVersion snapshot guards both the new suggest endpoints and
must be echoed back, short id binding keeps the model from ever
returning a value outside the server-supplied PDD candidates, and
suggestions only prefill the draft above AutoConfirmMinConfidence -
low-confidence answers show the reason but stay unapplied. Every
AI-sourced mapping is still written as pending by the existing
SetMapping rule and needs an explicit operator confirm, same as
before for manual edits.

Server: server/app/goauto/aimatching/suggest.go (batch provider call),
server/app/goauto/shopeeproduct/{context_version,ai_suggest}.go (spec
context version + suggest-colors/suggest-sizes), wired into
handler.go/router.go/service.go.
Web: shopee-products AI 匹配 button on both tabs, low-confidence rows
left for manual pick, pending AI mappings get an explicit 确认 action.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VkjpksKeizaRpYXfgD74Lf
2026-08-31 16:18:42 +08:00
QiuSW 1d0b0ce086 feat(web): preview PDD color images (#168) 2026-08-31 15:55:06 +08:00
QiuSW 1340ba0612 feat(web): show color images in PDD product list (#168) 2026-08-31 15:27:29 +08:00
QiuSW 78f5895a09 feat(web): prefill recent PDD products in picker (#168) 2026-08-31 15:15:12 +08:00
QiuSW 09d9d2227a feat(goauto): continue orders from PDD product detail (#161) 2026-08-31 11:36:31 +08:00
QiuSW 4e05048044 feat(web): support batch PDD collection from SYB products (#162) 2026-08-31 10:29:19 +08:00
QiuSW f0f5f5bd14 feat(goauto): manage authenticated agent releases (#143) 2026-08-29 21:34:32 +08:00
QiuSW 56443c995b feat(goauto): parameterize purchase price guard (#146) 2026-08-29 21:24:55 +08:00
QiuSW 148ba96521 feat(goauto): add managed purchase rules (#127) 2026-08-29 21:20:55 +08:00
QiuSW cc326ebc6c feat(#155): reuse failed collection tasks by attempt 2026-08-29 16:05:37 +08:00
QiuSW 11c407d582 feat(#148): match purchase specs asynchronously 2026-08-29 11:51:32 +08:00
QiuSW c9e9539de0 fix(#147): move purchase matching outside transaction 2026-08-29 11:09:48 +08:00