QiuSW
|
375f20cdfe
|
feat: 视频上传改走 erpgo 幂等操作接口 (#27)
|
2026-09-30 09:42:58 +08:00 |
|
QiuSW
|
84bc32cf90
|
fix: 每批仅首次深度检查淘宝登录 (#22)
|
2026-09-29 11:34:40 +08:00 |
|
QiuSW
|
275b938b21
|
fix: 淘宝访问异常立即停批并减少重复访问 (#21)
|
2026-09-29 10:20:44 +08:00 |
|
QiuSW
|
3f1b27b4e2
|
feat: 接入 erpgo 店铺与商品查询并原子同步 (#20)
|
2026-09-28 17:50:48 +08:00 |
|
 QiuSWandClaude Opus 5
|
6cc334ab92
|
fix: 取视频链路与 Python 参考实现对齐,识别风控降级 (#15)
淘宝会在登录仍然有效的情况下停止下发视频资源:不跳登录页、不出验证码,
详情页里就是没有 mp4 地址。原实现识别不了,把它当成「这个同款没视频」,
继续跑满 20 个同款加重风控,最后写 video_status='none',
而断点规则会永久跳过 none,导致账号恢复后这批商品也不再重试。
与参考实现对齐:
- 详情页等待 4 秒改为 8 秒,提为 detail_wait_seconds
- 每个同款详情页前做一次 my_itaobao 深度守卫,在两次详情页之间插入
正常页面访问;守卫等待提为 guard_wait_seconds
- 详情页后补一次 Cookie 级快速守卫,复用 judgeLogin
- 淘宝首页导航等待 3 秒改为 6 秒。签名请求在该页面上下文里 fetch,
页面没加载完就发可能带不上 Cookie
- 下载失败重试,5xx 与连接错误重试 download_retries 次,
4xx 和 ffprobe 校验失败不重试
- 每次下载尝试各有独立的 180 秒超时。此前超时套在整个重试循环外面,
大视频首次跑到一半失败后剩余预算不足,重试等于不生效
新增风控降级识别:连续 risk_empty_threshold 个同款打开成功但取不到视频时,
判为疑似风控,中断整批任务并保持商品 pending,绝不写入 none。
停止原因通过 stopReason 枚举传给前端,不依赖中文文本分支。
数据订正提供显式按钮,不写进 migrations。刻意不做日期过滤:
synced_at 记录的是商品数据何时从货憨憨拉取,与 video_status 何时被写成
none 无关,每次「下载数据」都会把它刷成当天。某商品是否需要重做的长期
答案来自货憨憨每次全量拉取覆盖的 video_diagnosis,不来自本地时间戳。
淘宝与 Chrome 相关逻辑由假实现覆盖,真机验证尚未进行。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LbdtsD3ohhSMy3KPoCgARq
|
2026-09-03 14:29:03 +08:00 |
|
 QiuSWandClaude Opus 5
|
ce729cd1c8
|
fix: 数据目录跟随配置文件位置,避免视频被 build -clean 删掉
DefaultVideoDir 原先按 exe 所在目录算。wails dev 跑的是
build\bin\cmsp-dev.exe,视频就下载进了 build\bin\运行数据\视频,
而 `wails build -clean` 会清空该目录——已下载的视频会被一起删掉。
改为新增 DataRoot(),规则是「配置文件在哪,数据就在哪」:
打包后双击 exe config.yaml 在 exe 旁边 数据也在 exe 旁边
开发模式 config.yaml 在项目根目录 数据也在项目根目录
与 config.yaml、cmsp.db 已有的查找规则保持一致。
补测试断言视频目录不得落在 build\bin 下。
同时把 .gitignore 补上「浏览器运行状态.json」:该文件含 PID、
调试端口和本机 profile 路径,属于本机运行状态,不该进仓库。
负责人本机的既有数据已一并迁移:5 个视频文件与浏览器状态文件从
build\bin 移到项目根目录,config.yaml 的 video_dir 与数据库中
4 条 videos.local_path 同步更新,迁移后无失效路径。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LbdtsD3ohhSMy3KPoCgARq
|
2026-09-03 11:14:15 +08:00 |
|
 QiuSWandClaude Opus 5
|
51977e4dc1
|
fix: 开发模式下配置和数据库写错位置 (#8)
负责人在设置页保存了货憨憨账号,但项目根目录的 config.yaml 仍是空的,
以为保存没生效。实际是写到了 build\bin\config.yaml。
原因:DefaultPath 用 os.Executable() 定位。打包后双击 exe 时这是对的,
但 wails dev 跑的是 build\bin\cmsp-dev.exe,配置和数据库就落在那里,
开发的人在项目根目录怎么找都找不到。
改为按「exe 目录已有 → 工作目录已有 → 新建在 exe 目录」的顺序查找,
配置文件和数据库共用同一套规则(config.ResolveDataPath)。
这样打包后仍在 exe 旁边,开发模式则命中项目根目录那一份。
补两个测试:已存在的文件优先命中;目录不算文件。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LbdtsD3ohhSMy3KPoCgARq
|
2026-09-02 17:20:44 +08:00 |
|
 QiuSWandClaude Opus 5
|
2cefa67001
|
feat: 初始化 Wails v2 + Vue3 骨架与 SQLite 存储 (#4)
建立可运行、可构建的 Go 骨架,供后续 R1~R5 在其上叠加。
后端:
- main.go / app.go:Wails v2 窗口与 14 个前端可调方法。Wails 专有 API
只出现在这两个文件,internal/ 对 Wails 零依赖,便于将来迁移 v3
- internal/config:config.yaml 的读写、校验、脱敏。保存时按固定模板
渲染以保留注释,不用 yaml.Marshal
- internal/store:SQLite(modernc.org/sqlite,无需 CGO)。建表迁移、
商品仓储、KV。重复同步不会覆盖本地下载与上传状态
- internal/logx:9 条脱敏规则,覆盖淘宝 token、Cookie、Authorization、
密码和图片 base64;并发安全的内存日志缓冲
前端(Vue 3 + Naive UI,按已确认原型 v4):
- Sidebar:176px 可折叠,仅商品列表与参数设置两项,底部是登录状态的
唯一显示位置
- ProductListView:两行工具栏(四项筛选 + 重置搜索 / 四个操作按钮)、
商品表格、分页
- SettingsView:四张卡片,路径用文件与目录选择框
- LogWindow:运行日志子窗口,按级别过滤、自动滚动、导出
配置改用 YAML:分 huohanhan / taobao / download 三段。taobao 段刻意
没有账号密码字段,并有单元测试挡住后续加入。
构建相关:
- .gitignore 只忽略 build/bin/,不忽略 build/。Wails 把 build/ 当源码
目录(图标、manifest),忽略掉会让别人克隆后构建失败
- .gitignore 忽略 config.yaml、payloads/ 和 *.har(含真实手机号与凭据)
未实现的下载数据、下载视频、上传数据三个方法返回明确的「还没实现」,
不静默失败。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LbdtsD3ohhSMy3KPoCgARq
|
2026-09-02 15:59:54 +08:00 |
|