开发周报:2026-10-05 ~ 2026-10-11

Posted by songjian on October 12, 2026 · 2 mins read

本周概览

本周重心几乎全在 telefast 上:公共 API 第一期从设计走到可用,TG 榜单站的数据底盘也同步搭了起来,另外还铺开了实体语言/国家自动标注这条线。旁边的 xx-panel-admin 主要在处理安全债和前端部署链路,xx-panel-saas 则刚开了一个新坑。

telefast:公共 API 第一期落地

这是本周最大的一块。10-08 一天之内,公共 API 从包骨架(健康检查起步)一路做到成型的接口面:

  • 基础设施:统一错误模型与异常处理器、API Key 鉴权中间件与缓存、请求计量 / 速率限制 / 配额回滚,以及可观测性指标与抓取配置。
  • 接口:频道解析、信息与批量、搜索(标题 trgm 索引,OR 查询能命中索引并补上列表信封)、相似频道、提及、历史走势、帖子列表、频道统计、广告情报等端点陆续补齐。广告汇总改成了窗口内实时口径,since/until 归一为 UTC naive 避免 500,limit 统一接入 API_MAX_LIMIT,裸 peer 前缀返回 422。
  • 配套:管理后台加了 API Key 管理,接口文档改为免鉴权并声明 x-api-key 安全方案,接入 public_api 部署链路。

速度之外也顺手补了不少边界:整数输入范围校验返回 422、rate_limit 维度 429 埋点补齐、last_used 记账失败不阻断请求、仅对已提交计数的请求做配额补偿。这类修补看着琐碎,但决定了对外接口能不能真正放开。

telefast:榜单站与配额调度

10-09 集中做了 telefast_rank 的设计与 M1(数据底盘)实现。core 侧建了 ranking_pool / boards / runs 三张表与迁移;worker 侧完成了北京时间日界窗口工具、榜单池规则评估、帖子指标聚合(发帖/曝光/互动)、涨粉差分聚合(含快照基准与降级)、批次写入(rank_change 幂等)与保留清理,并接上 ARQ 任务、调度 cron 和手动脚本。web 端补了 admin 视图(池管理 / 结果 / 运行 / 手动触发)。失败路径也做了收口——刷新失败先回滚再落 failed 状态。

配额调度同样动过:账号小时配额上调(GetFullChannel 900 / GetHistory 1500),配额耗尽的任务改为精确推迟到配额恢复时刻,而不是傻等或空转。

telefast:语言 / 国家自动标注

10-10 这条线从设计文档(含一轮评审修正:枚举对齐、字典补 vn、kill switch 表述)推进到落地:

  • core 侧给 entities 加了语言/国家标注列与语言代码枚举;
  • worker 侧写了语言检测纯函数(脚本规则 + 简繁判别)和国家推断纯函数(语言先验 + 高精度词表),再接上编排与 tier 任务集成,榜单池的中文特征也升级为「语言优先、CJK 回退」;
  • 存量数据用分批、幂等、可重算的回填脚本处理;
  • API 加了语言/国家过滤(含 search),admin 补了对应列、筛选与人工纠错钩子;
  • 最后收了一个繁体词表覆盖与标注健壮性的修补。

telefast:性能与稳定性修补

分散在周初,但收益直接:

  • entities 增 (peer_type, created_at) 索引,用户列表页查询从 1.3s 降到毫秒级;admin 列表 count 去排序,用户列表 count 从 3.2s 降到 0.3s;
  • 0007 迁移改为并发建索引,避免部署时阻塞 entities 写入;channel_posts 增 (entity_id, posted_at) 复合索引;
  • 应用连接加 lock_timeout=30s,避免长锁等待被 job_timeout 中途取消;
  • 心跳续租容忍任务自身持锁,不再误杀同步任务;租约行加 DB 空闲事务超时与 release 锁超时,防止被锁死账号;
  • 榜单表关系级联与批次索引、admin 触发兜底。

xx-panel-admin:安全债与前端部署

这块主要是还债。安全上把阿里云短信的 AccessKey 从硬编码改为环境变量,删掉了不再使用的含硬编码密钥的初始化器,database.yml 去掉了 root 默认密码回退;因为 Git 历史已清理,AGENTS.md 里也提醒要轮换旧密钥。

前端部署链路反复调了几轮:先暂停自动发布并去掉 --delete(线上前端比仓库新且更全),再从线上同步 theme1/theme4,最后恢复 push 自动发布但改为按主题逐个 rsync(仅 theme1-4),并做了一次整目录 --delete 同步让服务器与仓库完全一致。同时把 frontend/ 排除出 .dockerignore 之外——前端由 Caddy 从宿主机目录提供,不进镜像。

代码侧补了 Panel 的 belongs_to :user(表里有 user_id、User 侧早有 has_many :panels),重写了 api/pm 请求测试并补了登录与面板模型冒烟测试。最后做了部署收尾:搬迁前端、删除 ansible、精简 entrypoint、新增 README。

xx-panel-saas:新项目起步

10-09 初始化了 xx-panel-saas 骨架:Rails 8.1.4 / Ruby 4.0.7 / PostgreSQL 18,前端用 Tailwind + Hotwire,配好 CI 与 Dependabot。目前还只是脚手架,没有业务代码。

小结

这周的节奏是「对外接口 + 对内榜单」两条线并行推进,语言/国家标注作为横切能力一次性打通了 core、worker 和 API 三层。telefast 的公共 API 已经具备放开的条件,接下来更值得关注的是榜单站 M1 之后的实际数据表现,以及语言标注的准确率能不能撑住 API 过滤。xx-panel 这边,安全债算是清了一批,但密钥轮换还得确认落实。


devlog