Commit Graph
3 Commits
Author SHA1 Message Date
QiuSW 375f20cdfe feat: 视频上传改走 erpgo 幂等操作接口 (#27) 2026-09-30 09:42:58 +08:00
QiuSWandClaude Opus 5 656b7a8c49 feat: 专属 Chrome 管理与淘宝登录检查 (#9)
由 Codex (gpt-5.6-sol) 实施,Claude 审核。MVP2 第一块。

internal/taobao/chrome.go
- EnsureBrowser 按四项条件判断能否复用已有实例:PID 存在、进程命令行
  属于本程序专属 profile、CDP 端口可访问、存在 page 类型目标
- 启动前遍历整个端口段,发现已有 Chrome 但状态文件丢失时报错而不是
  再起一个,避免同一 profile 出现两个实例损坏登录数据
- CloseBrowser 必须先校验 PID 归属才允许 taskkill,防止误杀使用者
  自己的 Chrome

internal/taobao/cdp.go
- 基于 gorilla/websocket 的最小 CDP 客户端(该依赖原本就在模块图里,
  由 Wails 引入,此处仅从 indirect 提为直接依赖)
- CookieNames 的结构体只声明 Name 和 Domain,Cookie 的值根本不会
  进入内存,比"取到但不使用"更彻底

internal/taobao/login.go
- 两层判定:四个必需 Cookie 齐全,且我的淘宝页面标题与正文不含
  六个阻断词
- 昵称只作展示,不参与判定。这是对参考 Python 实现的一处有意偏离:
  参考实现要求解析出昵称才算有效,但该解析依赖淘宝页面文案,
  淘宝一改版就会永远解析不到,导致登录永远判为无效、全局停止门
  永久触发、工具彻底不可用。放宽的代价可控:误判为已登录时后续
  MTOP 请求会失败,那条链路本就有 token 失效处理。

app.go 只在点击按钮时启动 Chrome,startup 不自动启动。

前端:设置页两个按钮接真实方法并显示检查结果;侧栏淘宝状态灯
监听 taobao:status 事件。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LbdtsD3ohhSMy3KPoCgARq
2026-09-03 09:13:40 +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