Skip to content

v0.9.3

Choose a tag to compare

@Mrslippe Mrslippe released this 08 Sep 18:52
· 626 commits to main since this release

DDtoolkit v0.9.3

个人向 VTuber 帖子 / 账号证据归档工具 —— 定时抓取 B 站与微博动态、账号统计并归档到本地 SQLite,桌面端浏览与管理。

本版主线是抓取调度重构(更省请求、更快拿到数据)与一批长期存在的正确性修复
(解除订阅删不掉、列表卡片宽度乱跳、账号信息抓不到),并补齐了界面细节与工程文档。

🐛 关键修复

  • 解除订阅一直失败 —— 账号之下 4 张子表(统计快照/直播场次/礼物日/分类校正)挂外键但 ORM 未级联,foreign_keys=ON 下 DELETE FROM accounts 被挡回、整次事务回滚(接口 500、V 删不掉)。改为统一的 services/purge.py 清理清单,两个删除端点共用;测试库同步开启外键校验,这类问题以后跑测试就会红。
  • 收录新 V 后账号信息抓不到 —— 启动链自动档占着锁时,手动任务只能"抢锁失败→跳过"。新增「手动任务优先」协议:自动档起跑见手动即跳过、持锁见手动请求则在轮次断点交还锁并等其跑完再续跑(两把锁独立、按平台隔离)。
  • 右栏帖子宽度不对(有的宽有的窄) —— 一条 CSS 规则因滚动组件插层而静默失效,列表列宽退化成"内容多宽就多宽"(短标题页缩到 566px、含长串的页被撑到 1350px 并裁掉封面)。改为后代选择器 + 正文 min-width:0 + 长串折行,并把「列表卡片列宽契约」写进 UI 探针(改回去立刻报错)。
  • 添加平台账号后并不抓取 —— 前端提示"正在后台抓取"却要等下一轮定时档。现在加完账号立刻后台抓该 V 账号信息,并回填新账号的第三方历史。
  • 只改图标不触发重建 —— Tauri 构建脚本未声明图标依赖,改图标后 cargo 认为"无事发生"。build.rs 补 rerun-if-changed。

⚡ 抓取调度重构

  • 三个定时档合并为一个「综合档」:动态流(每 V 主账号 1 页 + 限 2 帖,15 分钟)与账号流(全量账号信息)同档并发,墙钟 ≈ max(两条流) 而不是相加(实测 66s → 36s)。
  • 账号信息改为数据驱动:不再每 5/15 分钟刷(账号字段变化慢),按 accounts.last_fetched_at 判定,超过 24 小时才抓;启动时同样按此判断,重启/休眠后行为一致。
  • 双粒度并发:任务级(动态流 ∥ 账号流)+ 平台级(bilibili ∥ weibo,平台内部串行)——单平台请求速率不变,某平台风控只冷却该平台。
  • 外部数据批次排队而非跳过:T4 被手动任务挡下时等待其结束(最多 30 分钟)再执行,不再当天丢数据。

🎨 界面

  • 顶栏状态行:浮片材质 + 深玫瑰徽章(A2 定稿),容器"只在有事时出现",字号 13px。
  • 标题字体统一阿里妈妈方圆体(移除已删字体残留);滚动条粉色只属于指针悬停。
  • 帖子详情抽屉单图去重、关闭钮补焦点环。
  • 任务栏 LOGO 不再模糊:ICO 目录首项改为 48px 任务栏专用层,小尺寸(≤48px)用专用稿(docs/design/svg/LOGO-small.svg),并按尺寸补偿描边。

📚 文档

  • 新增 docs/GLOSSARY.md(术语表:名词 → 含义 → 代码路径 → 依赖,含"需求→代码入口"速查)与 docs/ARCHITECTURE.md(运行时形态 / 9 表 ER / 抓取分层 / 数据来源地图)。
  • 数据层与抓取文档全面对齐到 v0.9.x;docs/ 目录整理(新增索引 docs/README.md,发布说明归档 docs/releases/)。

📦 资产

  • DDtoolkit_0.9.3_x64-setup.exe — Windows NSIS 安装包(用户级安装)
  • DDtoolkit-portable-win64.zip — 便携版(解压即用,含后端 onedir)

数据目录:安装版 %APPDATA%\com.ddtoolkit.app;便携版可设 DDTOOLKIT_DATA_DIR 自定义。

⚠️ 从 v0.9.1 升级请先卸载旧版再安装(旧安装目录残留了被打平的后端文件);从 v0.9.2 起可直接覆盖安装。

🔧 技术栈

  • 后端:Python 3.14 + FastAPI + SQLAlchemy 2.0 + SQLite(WAL) + APScheduler + Alembic(迁移链 e007)
  • 前端:Vite + React 18 + TypeScript + Tailwind v4 + ECharts 6 + Radix
  • 桌面壳:Tauri v2(拉起后端 + 注入空闲端口 + 进程看门狗)

⚖️ 许可

MIT License(见 LICENSE)。字体:思源黑体(Noto Sans SC,OFL 1.1)+ 阿里妈妈方圆体(官方许可免费商用+嵌入)。