chengma
|
63f8407780
|
feat: 支持勾选部分档口入库码匹配 (#235)
|
2026-08-15 09:41:45 +08:00 |
|
chengma
|
2778eed29f
|
feat: 安全回写档口入库码并支持核验恢复 (#234)
|
2026-08-15 09:10:10 +08:00 |
|
chengma
|
7665fd93ed
|
feat: 增加档口入库码独立页面 (#233)
|
2026-08-15 08:59:40 +08:00 |
|
chengma
|
0208dc6b76
|
fix: 增加 AI 匹配失败弹窗并补齐部署配置 (#229)
|
2026-08-14 17:48:58 +08:00 |
|
chengma
|
01469f74b2
|
fix: 修复 AI 服务商配置新增失败 (#222)
|
2026-08-14 11:04:51 +08:00 |
|
chengma
|
d64579e9b3
|
feat: 增加顺运宝批量 AI 规格匹配 (#202)
|
2026-08-14 10:30:08 +08:00 |
|
chengma
|
018da3f732
|
feat: 增加管理员 AI 模型配置 (#200)
|
2026-08-14 09:49:11 +08:00 |
|
chengma
|
8f2b3f725d
|
feat: 支持顺运宝多订单号搜索 (#217)
|
2026-08-13 14:58:19 +08:00 |
|
chengma
|
4752fef54f
|
feat: 支持人工修改蝦皮规格 (#215)
|
2026-08-13 12:14:02 +08:00 |
|
chengma
|
313e9f9151
|
feat: 收敛店铺管理和蝦皮分类搜索 (#212 #213)
|
2026-08-13 11:47:56 +08:00 |
|
chengma
|
8f707722ba
|
feat: 建立全局店铺跨渠道管理 (#208 #209 #210 #211)
|
2026-08-13 11:15:54 +08:00 |
|
chengma
|
ad1ccc2c60
|
feat: 完善 SYB 蝦皮主数据与软删除 (#203 #204 #205)
|
2026-08-13 10:39:21 +08:00 |
|
chengma
|
761058efc1
|
feat: 删除已停用的同步店铺 (#197)
|
2026-08-13 08:48:02 +08:00 |
|
chengma
|
8a8fff8480
|
feat: 按允许店铺筛选顺运宝同步 (#196)
|
2026-08-12 18:48:31 +08:00 |
|
chengma
|
69bcf6116a
|
feat: 支持采购任务追溯并安全重新创建 (#186)
|
2026-08-12 16:26:22 +08:00 |
|
chengma
|
07ca1b0afb
|
feat: 支持蝦皮批量创建 PDD 采集任务 (#185)
|
2026-08-12 16:12:35 +08:00 |
|
chengma
|
889f568554
|
feat: 增加蝦皮店铺名称搜索 (#182)
|
2026-08-12 15:09:35 +08:00 |
|
chengma
|
253be7cb61
|
fix: 采购价格上限按数量计算总价 (#181)
|
2026-08-12 14:43:18 +08:00 |
|
chengma
|
f693d2a6fc
|
fix: 统一顺运宝单条采集客户端选择 (#174)
|
2026-08-12 09:56:15 +08:00 |
|
chengma
|
b527204204
|
feat: 支持顺运宝批量创建采集任务 (#153)
|
2026-08-11 14:59:26 +08:00 |
|
chengma
|
9d4d6fc1e5
|
feat: 增加顺运宝店铺筛选 (#151)
|
2026-08-11 14:39:13 +08:00 |
|
chengma
|
c39f5a7912
|
feat: 增加蝦皮店铺图片筛选 (#150)
|
2026-08-11 12:04:38 +08:00 |
|
chengma
|
0588ef18c8
|
refactor: 切换蝦皮数据到目录接口 (#135)
|
2026-08-11 10:16:48 +08:00 |
|
chengma
|
3ac4467f6c
|
feat: 增加商品目录导入记录 (#134)
|
2026-08-11 10:11:15 +08:00 |
|
chengma
|
a9f22b9b0e
|
feat: 按创建人隔离采集采购任务 (#127)
|
2026-08-10 23:10:28 +08:00 |
|
chengma
|
546d9ef7e2
|
fix: 允许已采集 PDD 商品重新采集 (#121)
|
2026-08-10 19:38:40 +08:00 |
|
chengma
|
10bb892e6c
|
feat: 移除 Client 真实采购手工授权 (#114)
|
2026-08-10 18:37:35 +08:00 |
|
chengma
|
a26219091a
|
fix: 简化真实采购创建并恢复客户端选择 (#112)
|
2026-08-10 18:15:28 +08:00 |
|
chengma
|
66565d50cc
|
feat: 采购价格仅展示选定规格 (#113)
|
2026-08-10 17:56:03 +08:00 |
|
chengma
|
e1b32ea024
|
feat: 固定创建真实采购任务 (#112)
|
2026-08-10 17:52:48 +08:00 |
|
chengma
|
188725ff64
|
feat: 支持批量导入 PDD 商品链接 (#104)
|
2026-08-10 16:14:24 +08:00 |
|
chengma
|
3aaa40cfe0
|
feat: 增加真实采购任务安全模式 (#98)
|
2026-08-10 15:11:38 +08:00 |
|
chengma
|
5a77bde534
|
feat: 增加规格匹配建议与决策审计 (#90)
|
2026-08-10 12:41:17 +08:00 |
|
chengma
|
d1165b9e17
|
feat: 重构顺运宝规格主链路 (#88)
|
2026-08-10 12:24:23 +08:00 |
|
chengma
|
8cc8574e8a
|
feat: 准备 Admin 线上 HTTPS 部署 (#81)
|
2026-08-10 02:46:59 +08:00 |
|
chengma
|
d99c81310d
|
feat: PDD 批量采集支持可选客户端 (#74)
|
2026-08-10 00:49:51 +08:00 |
|
chengma
|
4433e3af37
|
feat: 完成规格映射与采购任务创建 (#69)
|
2026-08-09 22:55:14 +08:00 |
|
chengma
|
518e6df349
|
feat: 统一蝦皮与顺运宝 PDD 关联入口 (#68)
|
2026-08-09 22:40:58 +08:00 |
|
chengma
|
c6ef54dce1
|
feat: 建立顺运宝采购处理状态 (#67)
|
2026-08-09 22:32:19 +08:00 |
|
chengma
|
155dd3b4a2
|
feat: 统一 Admin 主列表分页 (#64)
|
2026-08-09 21:51:20 +08:00 |
|
chengma
|
d8a24247df
|
fix: 同步记录弹窗改为局部刷新 (#62)
|
2026-08-09 21:02:28 +08:00 |
|
chengma
|
3fd863da64
|
feat: 优化顺运宝同步反馈与记录刷新 (#61)
|
2026-08-09 20:41:24 +08:00 |
|
chengma
|
05a54b044d
|
feat: 统一顺运宝日期同步并记录历史 (#59)
|
2026-08-09 18:22:58 +08:00 |
|
chengma
|
008bb87620
|
feat: 支持管理员自助修改密码 (#57)
|
2026-08-09 16:49:28 +08:00 |
|
chengma
|
e0c0dac7a0
|
feat: 增加客户端采购员归属管理 (#54)
|
2026-08-09 16:02:25 +08:00 |
|
chengma
|
eea0d65ef8
|
feat: 实现 Admin 采购员账号管理 (#51)
|
2026-08-09 13:50:55 +08:00 |
|
chengma
|
0a7db404a1
|
feat: 实现 Admin 首次初始化与网页登录 (#50)
|
2026-08-09 13:36:41 +08:00 |
|
chengma
|
a18d4e67ae
|
feat: 顺运宝支持指定日期同步 (#53)
|
2026-08-09 13:24:02 +08:00 |
|
 chengmaandClaude Opus 5
|
6e6e99a5d7
|
fix: 进入顺运宝页面不再自动弹验证码框 (#48)
配了 ocr_url 也会在进入页面时被拦一次输验证码。根因是 OCR 自动登录
只接在「点同步」那条路径上,而进入页面走的是另一条:
SybList → 本地会话过期 → NeedLogin=true → 模板直接弹手工输入框,
压根不调 OCR。
改成 NeedLogin 只由 login_reason 驱动——也就是操作员主动点过同步、
且自动登录确实失败时才弹。这时弹框是他预期的。
打开页面现在纯粹是看数据,不触发任何对外部系统的动作;真正会登录的
只有「同步」一个按钮。这与 Client 侧「『获取任务』是唯一会产生外部
后果的命令」是同一条原则。
会话无效时改成顶部一行提示,按 ocr_url 配没配分两种文案:配了却提示
"需要手工输入"会让人以为配置没生效;没配却提示"会自动登录",点下去
弹出验证码框会让人莫名其妙。用 .hint 不用 .missing——这是状态说明
不是错误,红色留给「PDD 链接未填写」那种要立刻处理的。
EnsureSybSession 未改动:它只读 SQLite 缓存、本地判过期,不发外部
请求,页面渲染不会因此变慢。审查时我一度说它每次渲染都探测顺运宝,
那是错的,已核实。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-09 12:48:21 +08:00 |
|
 chengmaandClaude Opus 5
|
2e686b17a4
|
feat: 顺运宝登录接入验证码自动识别 (#47)
#46 的登录只有手工输验证码一条路,而会话 24 小时就过期——每天第一次
同步都得有人在场,将来也做不了定时同步。
docs/admin/08 §8 当时写死"不引入 OCR 服务",理由是"多一个必须先启动的
东西"。那条判断基于示例脚本里的 http://127.0.0.1:8000/ocr(本机服务)。
用户提供了托管地址后前提不成立,本工单推翻它——文档里改写并保留原文,
让后来人知道这个决定变过、为什么变。
OCR 优先、手工兜底:识别成功直接登录,失败或服务不可达降级到 #46 已有的
手工弹窗,并在弹窗里说明是"已尝试 N 次"还是"服务不可用"。手工路径不删,
外部服务挂了不该让整个同步功能不可用。
识别失败也是 code:200。实测拿无文字图片探测 https://ocr.ilapage.cn/ocr
返回 {"code":200,"message":"Success","data":""}——不是错误码。所以
Recognize 只负责"这次 HTTP 调用有没有问题",空 data 照常返回 (", nil),
业务校验交给调用方;空 data 和长度不对收敛到同一个 len(code) != 4,
一条规则覆盖两种情况。
不合格的验证码不拿去登录:白费一次尝试,且频繁错误登录可能触发风控。
审查时变异测试发现这条没有测试守着——原测试只断言"重新取图了"和
"最终登录成功",禁用长度校验后依然成立。已补 loginRecorder 记录每次
提交到 /am/auth/login 的 code,断言登录只被调用一次且提交的是合格的那个。
每次重试重新取图(同一张图再识别结果一样,且可能已被上次失败的登录作废);
OCR 用独立 HTTP 客户端不带顺运宝 Cookie;验证码图片只在内存里传,不落盘。
OCR 不可达立即降级、不占用重试次数——对着连不上的地址重试 5 次,
操作员要等 50 秒才看到手工输入框,结果注定一样。
测试全部用 httptest,不打真实的 ocr.ilapage.cn 和 shunyunbaoerp.com。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-09 12:35:02 +08:00 |
|