2026-05-30 赛博日记

生成时间:2026-05-30 23:58

📝 今日概要

完成 TAPD 用例同步功能修复,从本地 SQLite 迁移至 Web API,并实现标签同步与 Cookie 自动刷新机制。

🔍 核心技术进展

TAPD 用例同步架构迁移

  • 问题定位:用例库已迁移至 Web API,但同步代码仍从本地 SQLite 读取,导致"本地用例不存在"错误
  • 技术方案
    • Electron testcase.service.ts 改为通过 webTestDataApi.getTestcase / updateTestcase 读写
    • 使用 metadata.tapd_case_uid 建立与 TAPD 的数字 UID 关联
    • 从 TAPD 拉取后自动写入 tapd_case_uid 关联字段
  • 来源:memory/2026-05-30.md、claude_2026-05-30.md

标签同步格式修复

  • 硬核发现:TAPD API 的 Labels 字段不接受字符串展示名,必须使用标签库的数字 UID
    • 错误格式:{"Name": "已整理", "DisplayName": "已整理"} → HTTP 200 但标签不落库
    • 正确格式:{"Name": "34451", "DisplayName": "已整理"} → 标签正确同步
  • 实现方案
    • 新增 tapd_browser/testx_api.py 中的 search_case_labels / resolve_labels_patch 方法
    • 从 TAPD 标签库按 DisplayName 匹配本地标签名
    • 推送前自动解析标签,不存在的标签跳过并给出警告
  • 来源:memory/2026-05-30.md、claude_2026-05-30.md
  • 自动刷新机制
    • 同步失败时检测 403、鉴权错误等疑似 Cookie 过期
    • 自动执行 refresh_cookies.py 从本机 Chrome 读取
    • 刷新成功后自动重试同步一次
  • 用户体验改进
    • 同步过程全屏半透明遮罩 + 旋转 loading 动画
    • 文案动态变化:“正在从 TAPD 拉取…” / “TAPD 凭证可能已过期,正在从 Chrome 刷新 Cookie…”
    • 成功后提示"(已自动刷新 Cookie)"
  • Cookie 有效期分析
    • 以最短字段为准:_wt 约 1~2 天,t_i_token 约 3 天,tapdsession 不定
    • 建议每 1~2 天主动刷新一次,或同步失败时再刷新
  • 来源:memory/2026-05-30.md、claude_2026-05-30.md
  • 性能分析
    • 读取 cookies.txt(738 字节)耗时 < 1ms,瓶颈在网络请求(数百 ms~数秒)和 Chrome 刷新(秒级)
    • 迁移至 config.json 不会带来可感知加速
  • 架构决策
    • 继续使用 cookies.txt,职责清晰(登录凭证与界面设置分离)
    • cookies.txt 已在 .gitignore,减少误提交风险
    • 主进程内存缓存 Cookie 可略微优化,但体感差异不大
  • 来源:memory/2026-05-30.md

💡 深度洞察与经验教训

  • 洞察:API 格式陷阱 TAPD API 返回 HTTP 200 并不表示请求成功。Labels 字段即使返回 200,格式错误时数据不会落库,导致"静默失败"。需要结合实际返回数据验证,而不能只看 HTTP 状态码。

  • 洞察:跨设备 Cookie 的不稳定性 浏览器 Cookie 是会话级凭证,不是为跨设备长期使用设计的。换设备后大概率不能直接用,与 IP、环境、WAF 安全头强相关。每台设备应各自维护 Cookie,不要指望云端统一分发作为长期方案。

  • 教训:架构迁移的不彻底性 用例库迁移至 Web API 后,TAPD 同步代码仍走本地 SQLite,导致功能失效。迁移时应全面检查所有读写路径,不能只改主流程而忽略周边功能(如同步、导入导出)。

  • 教训:自动重试的边界判断 同步失败时自动刷新 Cookie 需严格判断错误类型。403、鉴权错误可以刷新,但"用例不存在"“未关联 UID"等业务错误不应触发刷新,避免误操作。

🚀 未来行动设想

  • 考虑在 Electron 设置中添加"同步前自动刷新 Cookie"选项,平衡自动化与手动控制
  • 长期方向:后端集成 TAPD OAuth,Electron 只调自有 API,不再依赖浏览器 Cookie
  • 标签同步失败时提供更详细的错误信息,显示哪些标签在 TAPD 标签库中不存在

📊 自动化统计

  • 捕获 Memory 数:2 个(2026-05-30.md、claude_2026-05-30.md)
  • 笔记更新数:0 个(note-gen-sync/ 最近 24 小时无修改)