QiuSW
a6cc1c6d5d
fix(migrations): support MySQL 8.4 checks ( #140 )
2026-08-29 08:47:06 +08:00
QiuSW
9d23b44811
fix(upload): preserve multipart boundaries ( #139 )
2026-08-29 00:01:37 +08:00
QiuSW
6f611a04ef
feat(goauto): collect cropped color images ( #133 )
2026-08-28 23:31:23 +08:00
QiuSW
5feb4e8571
feat(web): enforce server-driven GoAuto menus ( #138 )
2026-08-28 22:16:51 +08:00
QiuSW
72f54f76ac
feat(goauto): add configurable module menus ( #137 )
2026-08-28 21:21:40 +08:00
QiuSW
679f4691a4
feat(goauto): add stock purchase task type ( #135 )
2026-08-28 20:53:51 +08:00
QiuSW
0f522d5339
feat( #132 ): continue purchase after replacement
2026-08-28 18:32:17 +08:00
QiuSW
33d4bb17ad
feat( #130 ): collect replacement products from Agent
2026-08-28 18:20:24 +08:00
QiuSW
92385c4a8d
feat( #131 ): activate product replacements safely
2026-08-28 17:56:17 +08:00
QiuSW
696e0bca52
feat( #129 ): add PDD product replacement model
2026-08-28 17:33:15 +08:00
QiuSW
5c6655f706
feat( #119 #120 #121 ): implement SYB inner-code workflow
2026-08-28 10:24:15 +08:00
QiuSW
e117fd222d
feat( #115 ): move PDD recognition aliases into rules
2026-08-27 18:19:33 +08:00
QiuSW
3619435a97
refactor( #116 ): separate read-only aliases from actions
2026-08-27 18:02:32 +08:00
QiuSW
bc9c637522
fix( #113 ): restore hidden PDD spec headings
2026-08-27 17:29:24 +08:00
QiuSW
daf7406ec9
fix: expand all whitelisted PDD share links ( #109 )
2026-08-27 15:32:40 +08:00
QiuSW
20775cc1bf
fix: resolve PDD share links on Agent ( #108 )
2026-08-27 15:04:19 +08:00
QiuSW
28c3cb5138
feat: collect current PDD page from Agent ( #101 )
2026-08-27 10:53:48 +08:00
QiuSW
eec63a0653
feat: sync agent task history ( #99 )
2026-08-26 16:10:12 +08:00
QiuSW
5f2dd05ebd
feat: add safe agent purchase retry ( #95 )
2026-08-26 14:37:01 +08:00
QiuSW
7b6cc00503
feat(agent): implement #91 controlled recollection
2026-08-26 10:17:45 +08:00
QiuSW
b885a4ef66
feat(agent): implement #90 task history
2026-08-26 09:26:38 +08:00
QiuSW
ae9a9fef6f
fix: add purchaser role permissions ( #85 )
2026-08-25 14:25:22 +08:00
QiuSW
a622d718e0
fix( #84 ): restore collection selection in locate mode
2026-08-25 11:05:56 +08:00
QiuSW
7b488e2c68
fix( #82 ): separate PDD linking from mapping
2026-08-25 10:21:10 +08:00
QiuSW
0794dc580b
feat( #80 ): add SYB product process stages
2026-08-25 09:44:02 +08:00
QiuSW
af3dd5563b
fix( #79 ): retry transient SYB read failures
2026-08-24 17:31:34 +08:00
QiuSW
a2cc9a144f
feat( #75 ): 增加 SYB 每小时自动同步
2026-08-24 16:02:16 +08:00
QiuSW
0fccbc99c1
feat( #74 ): 优化 SYB 商品筛选和列表布局
2026-08-24 15:10:47 +08:00
QiuSW
634bd46729
fix( #73 ): speed up SYB purchase preview
2026-08-24 11:48:56 +08:00
QiuSW
166adc6fa8
feat( #70 ): import cmautobuy product catalog
2026-08-23 23:59:12 +08:00
QiuSW
67d8f32eaf
feat( #69 ): add Shopee PDD specification mapping
2026-08-23 23:23:42 +08:00
QiuSW
9490bddf8f
feat( #67 ): add Shopee order snapshots to purchase tasks
2026-08-22 10:41:05 +08:00
QiuSW
22a024be64
fix( #64 ): bound purchase spec selection retries
2026-08-22 09:07:13 +08:00
QiuSW
ec9f47f2ab
fix( #63 ): keep AI matching out of purchase queries
2026-08-21 18:02:58 +08:00
QiuSW
0e3be46c4c
feat( #62 ): extend AI matching timeout
2026-08-21 17:23:02 +08:00
QiuSW
6181d97f39
feat( #62 ): add AI specification matching settings
2026-08-21 17:04:49 +08:00
QiuSW
aebe80f305
fix( #61 ): use safe purchase spec entry
2026-08-21 16:08:57 +08:00
QiuSW
01d852011a
feat( #58 ): batch retry failed purchase tasks
2026-08-21 14:20:40 +08:00
QiuSW
7e4f404265
feat( #44 ): create purchase tasks from SYB products
2026-08-21 10:17:31 +08:00
QiuSW
9ee03ec30f
fix( #56 ): add go-admin success envelope
2026-08-20 23:33:52 +08:00
QiuSW
182ef3940a
feat( #55 ): add purchase admin query APIs
2026-08-20 23:31:23 +08:00
QiuSW
b0f33bf679
fix( #54 ): unify device state across task domains
2026-08-20 22:53:15 +08:00
QiuSW
afeb2723ea
fix( #53 ): parameterize purchase rule actions
2026-08-20 17:53:10 +08:00
QiuSW
65ae41fd6f
feat( #34 ): implement purchase task state machine
2026-08-20 17:22:52 +08:00
QiuSW
978f42806a
feat( #33 ): define purchase task data and API contract
2026-08-20 16:49:43 +08:00
QiuSW
903280fada
fix( #52 ): align SYB sync count columns with MySQL
2026-08-20 16:19:54 +08:00
QiuSW
32edb91a31
fix( #52 ): expose SYB preflight failure stages
2026-08-20 16:09:28 +08:00
QiuSW
badb78fa68
feat( #50 ): run SYB imports asynchronously
2026-08-20 15:24:50 +08:00
QiuSW
6c7a7298e3
feat( #49 ): complete SYB shop management
2026-08-20 11:54:11 +08:00
QiuSW and Claude Opus 5
1b67495e71
feat( #49 ): add shop HTTP API, SYB discovery and the import filter
...
Stage B steps 3 and 4.
The filter runs after loadDailyList has proved the day's snapshot whole,
never before. Filtering first would let drift among other shops' orders
hide a hole in the ones we do want. OrderCount stays the unfiltered total
alongside AcceptedCount and ShopSkipped, so a shop missing from the
allow-list shows up as a number rather than as absent data.
An empty allow-list is a refusal, not "import everything" — the latter
looks exactly like a filter that works. Mutation-tested, along with the
detail-level shop re-check that catches a list and detail response
disagreeing about which shop an order belongs to.
ShopBreakdown counts orders per shop including skipped ones, under the
stored display name rather than SYB's spelling, so one shop cannot appear
under two spellings. #50 renders it.
Discovery lives in sybimport, not sybshop: it needs the SYB client, and
sybimport already depends on sybshop for the filter, so the reverse would
be an import cycle. It reads the list endpoint only and never adds a
shop — widening what gets imported stays an explicit action.
Read and write routes are registered separately. GoAuto inherits
go-admin's per-path permission model, so "配置仅管理员" is expressible but
not enforced in code; the grant is configured in 系统管理.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-20 11:31:44 +08:00