Files
server-ops/CHANGELOG.md

168 lines
7.7 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.

# CHANGELOG - 服务器运维日志
## v1.0.0 (2026-06-14)
### Added
- 初始化仓库README、CHANGELOG、DECISION_LOG
- 每日运维总结机制确立
- 首份总结2026-06-14 服务器功能变动总结
## v1.1.0 (2026-06-15)
### Added
- — Cookie session auth proxy 完整源码和 systemd 服务文件
- — Python HTTPServerbcrypt 密码验证HMAC-SHA256 token 签名
- — systemd 服务port 9002开机自启
### Changed
- **安全认证升级**Caddy basicauth → auth_proxy Cookie session
- 所有保护服务gitea/dashboard/books/nav/brief/todo改为走 auth_proxy:9002
- 新增 auth.xybkwd.top 子域作为登录入口
- Session cookie: 7天过期HttpOnlySameSite=LaxDomain=.xybkwd.top
- 密码验证不变bcrypttoken 签名防篡改HMAC-SHA256
- — 去掉所有 basicauth改为 reverse_proxy localhost:9002
- 服务清单更新books (Calibre-Web) 状态同步
### Fixed
- 移动端重复登录问题basicauth 每 ~1 小时要求重新输入密码
- Cookie 跨子域失效:缺 Domain=.xybkwd.top 导致各子域不共享 cookie
- Set-Cookie 值带多余引号:浏览器拒绝该 cookie
### Security
- 认证安全性不变bcrypt + HMAC-SHA256无明文密码传输
- 公开服务blog/vaultwarden/memos不经过 auth_proxy不受影响
## v1.1.0 (2026-06-15)
### Added
- — Cookie session auth proxy 完整源码和 systemd 服务文件
- — Python HTTPServerbcrypt 密码验证HMAC-SHA256 token 签名
- — systemd 服务port 9002开机自启
### Changed
- **安全认证升级**Caddy basicauth → auth_proxy Cookie session
- 所有保护服务gitea/dashboard/books/nav/brief/todo改为走 auth_proxy:9002
- 新增 auth.xybkwd.top 子域作为登录入口
- Session cookie: 7天过期HttpOnlySameSite=LaxDomain=.xybkwd.top
- 密码验证不变bcrypttoken 签名防篡改HMAC-SHA256
- — 去掉所有 basicauth改为 reverse_proxy localhost:9002
- 服务清单更新books (Calibre-Web) 状态同步
### Fixed
- 移动端重复登录问题basicauth 每 ~1 小时要求重新输入密码
- Cookie 跨子域失效:缺 Domain=.xybkwd.top 导致各子域不共享 cookie
- Set-Cookie 值带多余引号:浏览器拒绝该 cookie
### Security
- 认证安全性不变bcrypt + HMAC-SHA256无明文密码传输
- 公开服务blog/vaultwarden/memos不经过 auth_proxy不受影响
## v1.2.0 (2026-06-15) — rollback
### Removed
- **auth_proxy 对主服务的拦截**:恢复 Caddy 直接反向代理到后端
- gitea → localhost:3000, dashboard → localhost:9000, books → localhost:8083
- nav/brief → file_server静态文件nav/api/* → todo 9001
- auth.xybkwd.top 仍保留 auth_proxy:9002 作为登录门户(不影响其他服务)
### Added
- 认证方案待修复Caddy v2.11 basic_auth bcrypt hash 格式需要重新调试
### Lesson Learned (Critical)
- **🔴 铁律:所有配置变更必须先 commit 到 git再部署到生产环境**
- 本次事故的根因:直接修改 /etc/caddy/Caddyfile 后未及时 git commit
导致回滚时需要从 git 历史中找回正确版本commit 6c35f31
- git 历史在此次事故中挽救了服务:回滚前险些无法恢复
## 2026-06-16
### 要闻流水线改造 v0.3
**改动:**
1. fetch 脚本时效过滤 — fetch_news.py (48h) / fetch_policy.py (72h) / fetch_research.py (72h)
2. 新增 archive_daily_brief.py — 每日要闻归档到 daily-brief 仓库(含跨日去重)
3. 新增 cn_merge.py — 合并本地国内新闻到流水线
4. 所有新闻条目增加 [MM-DD] 日期标记(支持多种时间格式解析)
5. crontab 新增22:40 归档 / 05 3,9,15,21 cn_merge
**架构变更:**
- 新增本地抓取层WorkBuddy 本地运行 local_fetch_cn.py通过 SCP 推送到东京
- 数据源扩展新华网3路+ 微博热搜,约 113 条/轮
- 浏览器展示和归档共享同一数据源news_summary.json
**涉及文件:**
- 东京 ~/scripts/: fetch_news.py, fetch_policy.py, fetch_research.py, cn_merge.py(新)
- 东京 ~/daily-brief/: archive_daily_brief.py(新), archive/2026/06/2026-06-16.md
- 本地 Claw/: local_fetch_cn.py(新), local_fetch_daemon.py(新), start_cn_fetch.bat(新)
### 要闻流水线改造 v0.4 — 扩源 + RAW分层 + 精选器
**改动:**
1. fetch_news.py v2.0 — 新增 5 个国际源BBC, The Guardian, CNBC, FT中文, Bloomberg12源/轮约342条
2. local_fetch_cn.py v2.0 — 清理失效源(人民网/观察者网/腾讯/澎湃保留新华网3路+微博
3. cn_merge.py v2.0 — 分两路输出全量→news_raw.json+RAW ndjson精选→news.json送AI摘要
4. 新增 selector.py — 多策略评分精选器(来源权重+时效+多样性16主题分类
5. 行情数据采集 — 新增 fetch_market_daily.py31品种日线OHLCVdaily-brief/market_data/
6. RAW存档机制 — 所有新闻全量写入 daily-brief/raw/YYYY-MM-DD.ndjson逐行JSON0 token
**架构变更:**
- 抓取层从~200条/轮扩张至~500条/轮RAW全量存档
- AI摘要层从全量处理改为精选80条token成本不变
- 新增行情数据采集线(事件线+价格线双轨归档)
**crontab 更新:**
- 50 23 * * * — 行情日线采集(新增)
- 10 0 * * * — RAW存档推送到Gitea新增
- 05 3,9,15,21 — cn_merge v2含selector精选更新
**涉及文件:**
- 东京 ~/scripts/: fetch_news.py, cn_merge.py (更新), selector.py (新)
- 东京 ~/daily-brief/: fetch_market_daily.py (新), raw/ (新目录)
- 本地 Claw/: local_fetch_cn.py (更新)
### Hotfix 2026-06-16 — 新华网RSS下线 + URL日期提取防线
**问题:** 新华网 RSS3路返回300条2022年12月旧闻且 published 字段全为空绕过48h时效过滤导致浏览页面显示4年前旧闻。
**修复:**
1. 全面移除新华网 RSS — xinhuanet.com 和 news.cn 域名全线瘫痪返回2022年旧闻
2. 清理新浪新闻 RSS — 返回2018年旧闻"光纤之父"高锟离世...),一并移除
3. 新增 URL 日期提取防线 — `parse_published_time` 增加从 link URL 提取日期(`/YYYY-MM/DD/`),作为 published 为空时的第二道防线
4. 清洗 RAW 存档 — 从 ndjson 中移除 1186 条新华网旧数据
5. 清洗 news.json — cn_merge 重新精选确认0条旧闻
**当前中文源:** 36氪东京RSS+ FT中文东京RSS+ 微博热搜(本地页面抓取)
**国内RSS生态现状** 全线死亡。新华网/新浪/人民/澎湃/凤凰/环球/第一财经/界面 — 均无可用RSS。
### 中文新闻源改造 v3.0 — 全面非RSS抓取2026-06-16 17:30
**背景:** 国内主流媒体 RSS 已全线死亡新华网返回2022旧闻、新浪返回2018旧闻
需改用非RSS方式获取中文新闻。
**改造内容:**
1. 本地 local_fetch_cn.py 全面重写为 v3.0
2. 移除所有 RSS 源均失效改为5路非RSS抓取
**新增中文源5路**
| 源 | 方式 | 条数/轮 |
|---|------|-------:|
| 新浪新闻API | JSON API (7频道) | 40 |
| 新华网频道页 | 静态HTML解析 | 61 |
| 人民网栏目页 | 静态HTML解析 | 31 |
| 观察者网 | 静态HTML解析 | 50 |
| 微博热搜 | API JSON | 30 |
| **合计** | | **~207** |
**技术要点:**
- 新浪API返回Unix时间戳 → 精确发布时间
- 新华网/人民网/观察者网从URL提取日期 → 48h时效过滤
- 观察到三种URL日期格式YYYYMMDD、YYYY_MM_DD、YYYY/MMDD
- extract_date_from_url() 统一解析所有格式
**国际源(东京 fetch_news.py 12源**
NYT, CNN, Al Jazeera, TechCrunch, BBC, The Guardian, CNBC, Bloomberg
+ 36氪, FT中文中文
每轮 ~300条
**中英文源合并后每轮:~500条 → RAW存档 → 精选80条**