Files
server-ops/daily/2026-06-20.md

88 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2026-06-20 运维实录
## 有声书服务全线搭建
### Audiobookshelf 部署
- Docker 部署 ghcr.io/advplyr/audiobookshelf:latest端口 13378
- Caddy 反代 podcast.xybkwd.top
- 手机端希声 App 同步收听
### 章节排序三层同步铁律
只改文件名不生效Audiobookshelf 按三层数据排序:
| 层 | 字段 | 规则 |
|:---|:---|:---|
| 文件系统 | 文件名 01-标题.mp3 | 数字前缀 |
| books.chapters | start(秒) | 连续递增 |
| books.audioFiles | index | 1→2→3→... |
### 下载→归档工作流
```
yt-dlp 下载(带 upload_date) → 排序 → 加前缀
→ audiobooks/节目名/
→ archive_old_audio.sh <节目> 3 (淘汰旧集到 archive_pending/)
→ sync_archive.sh (SCP到 D:/服务器备份/有声书/)
→ watcher 自动检测 → 希声同步
```
### 本地归档
- D:/服务器备份/有声书/<节目名>/ (D盘 392G)
- 脚本: archive_old_audio.sh / sync_archive.sh
### 有声书内容
| 节目 | 集数 | 来源 | 状态 |
|:---|:---|:---|:---|
| 渤海小吏·八王之乱 | 5集 | B站 | ✅ |
| 纵横四海 | 3集 | B站 | ✅ |
| 翟东升 | - | YouTube | ❌ 需cookies |
| Elon Musk | 99集 | 本地导入 | ✅ |
## 踩坑
1. 数据库误删 — 任何 DB/cache 操作必须先确认
2. 章节排序是 start 时间戳,不是文件名字母序
3. SCP 中文路径失败 — 需临时英文路径中转
4. 容器有 watcher不需要重启
5. B站用 -f worst 最小化下载,每集 ~40MB
6. YouTube 需要 cookies 认证
## 文档体系
- server-ops: TIMELINE + CHANGELOG + DECISION_LOG 全面补全
- dashboard: CHANGELOG v1.4.0
- nav-page: CHANGELOG v1.0.3
- inspiration-collector: CHANGELOG v2.2 + 文章20_服务器
- 服务清单 10→17 项
## 今日感悟
- "不可越过":管线通了就收手,知道什么时候够了
- "车马华服":客户端追求渲染,服务器追求完成
- 三层记忆WorkBuddy + 项目级 + 宏观,比空白强
## 23:15 阅读日报时间窗口修复
**问题**`daily_report_ai.py``load_today_data()` 使用 `date_str = datetime.now().strftime("%Y-%m-%d")` 严格按日历日过滤。22:00 后的晚间阅读(标记为当日日期)会被次日的严格日历过滤漏掉。
**修复**
- `parse_time_from_line` → 改为捕获完整 `datetime` 对象
- `load_today_data` → 改为 24 小时滚动窗口(`since_dt = now - 24h`
- 文件:`/home/ubuntu/weread-sync/daily_report_ai.py`
- 验证:`python3 -m py_compile` 通过
- 生效:明日 22:00 cron
**教训**:任何"每日"定时任务如果用日历日过滤必须考虑夜间时段的归属。滚动窗口过去N小时比日历日更鲁棒。
## 23:25 🔴 两大核心服务时间窗口铁律固化
### 日报 cron 分支分歧修复
- 根因:两条线推同一个 inspiration-collector 仓库撞车WorkBuddy推文章 vs cron推日报
- 修复:`run_daily_digest.sh` 增加 `git pull --rebase` before push
- 以前没出过是因为以前推文顺序在日报之后
### 阅读日报 24h 滚动窗口修复
- 问题:`daily_report_ai.py``load_today_data()` 严格按日历日过滤,晚间阅读漏入次日间隙
- 修复:改为 `since_dt = now - timedelta(hours=24)` 时间戳比较
- 经验:任何"每日"定时任务,滚动窗口比日历日更鲁棒
### 三层文档已同步
- 项目级weread-notes Gitea (commit 2508746)
- 宏观server-ops DECISION_LOG + daily
- 本地Claw MEMORY.md 铁律