本周主要精力都集中在 telefast:一边把大表分区迁移推进到收尾阶段,一边把实体自动分类从设计文档做到了可回写生产;tg-stats 则集中在后台录入体验和国家字段的锁定逻辑。其余项目本周没有改动。
分区这条线从迁移 0015 创建 channel_posts / chat_messages 的 v2 分区表开始,接着补了 0016 空库转换的最终化迁移,并确保转换过程中由数据护栏显式报错。随后落地了分区管理模块、ensure_partitions 边界工具、迁移 CLI 的 copy/index/validate/swap 编排,以及 scheduler 每日分区预建任务;未分区场景下保持幂等跳过。维护窗口手册也在本周反复修订,覆盖前置检查、执行、观察、回滚和收尾,并补了源侧对账的 IS NOT NULL 过滤、purge 条目的 SKIP_MIGRATIONS、拷贝前建 PK,以及分区 autovacuum 的 WITH 参数警示。
本地按手册做了一次全流程演练,收尾执行释放了 283GB 空间。执行过程中还修了几个具体问题:子分区换名要补齐,否则 ensure_partitions 依赖的最终命名对不上;群消息需要补 posted_at 非空守卫;admin 的 msg_id 检索必须带频道条件,以适配分区表的索引策略。另外写了存储基准脚本,用于迁移前后查询对比。
分类方向先出了 design doc,再按 M1 最小闭环、M2 全量回写保守版 B 两份实施计划推进。classifier 包本周从骨架长到能跑完整流程:telemetr 搜索客户端与分类映射表、sweep 分层抽样与命中校验、数据集组装与分层划分、ONNX embedding 与向量存取、线性分类器训练与产物保存、评测指标与报告渲染,以及全量文本与标签的流式导出。导出支持断点续跑,处理了半行截断并改用追加模式。
回写侧做了决策与 CSV 导出,遵循保守阈值和直标优先;生产回写导入 SQL 带 manual 守卫并保持幂等。Web 端加了实体分类人工纠正钩子,人工标注优先。数据库上,迁移 0019 新增实体分类标签表,0020 给 entities 增加分类来源、置信度和时间列。
GPU 全流程脚本覆盖重训、评测、全量预测,本周针对 Colab 免费实例做了内存安全化:显式 CUDA provider、小分块、GPU 冒烟测试,并支持 --max-chars 提速与 batch 256。
性能上最明显的一笔是段 B 派单查询从 25s 降到 30ms,做法是部分索引加会话关闭时的 mergejoin。entities 补了 (peer_type, member_count) 排序索引,后台列表分页随之提速;同时默认关闭 PostgreSQL JIT,避免编译开销拖慢后台列表页。Compose 侧把 max_locks_per_transaction、vacuum_cost_limit 纳入 PG_* 环境变量管理,db 服务补了 shm_size 1g 防并行查询 DSM 段失败,生产服务重启策略改为 unless-stopped。
分类/国家元数据改成多语言 JSONB(0017 迁移加多语言种子),0018 删除旧单语言列;API 按请求语言返回分类和国家名称,后台管理同步适配。后台还改走 sqladmin 官方扩展点,统一了中文界面与操作反馈,实体列表移除 ID 列、调大默认每页条数,平均阅读量改用 K/M/B 缩写,支持按创建时间排序与筛选,分类/国家筛选改成点选式,用户/机器人表单移除了分类与国家字段并加了钩子守卫。
worker 本周补了几处容易拖垮整单同步的保护:头像下载/上传加超时,防止挂起后击杀整单;维护队列积压可观测,tier 任务加过期防护;派单前置过滤掉无可用持有者的实体,修复孤儿频道饿死调度。telemetr 对照脚本修了 --channel 崩溃和 resolve 需要裸频道 ID 的问题;harvest 计数去重,sweep 支持 --peer-types;读取阶段的网络异常统一映射,保证长跑不中断。
本周新增 country_locked 字段,AI 增强与投稿同步不再覆盖已锁定的国家,并在 AI 增强、预览和上游同步三处补齐守卫。围绕人工补国家做了一套工作流:筛选、批量设置、行内编辑、按创建时间排序,同时补了 9 语种翻译。后台实体列表的分类支持行内编辑并自动锁定,国家/分类/用户下拉改成可搜索的 autocomplete;Google 搜索页的关键词支持全选/取消全选,布局改为三列。
数据侧,收录同步的用户名查询改走 lower 索引,消除了大表全表扫描;收录审核的预分类改为先落库后入队,修复预填分类静默丢失;非字符串的 metadata username 做了归一化;compose 增加 AI 分类定时兜底任务。测试上修复了 pytest 收集遗漏并同步过期断言,套件 759 个用例全绿。
本周 telefast 的主线是“先把数据底座换掉,再让分类结果写回来”,分区迁移和分类回写都到了可演练、可回滚的程度;tg-stats 则是把人工录入的边界条件收紧。下周大概率会围绕演练中发现的问题继续补护栏。