docs(readme): 同步译文清洗功能 + Phase 1.8 路线图
- 关键特性列表新增 🧹 译文清洗(源头防御 + 批量脚本)
- LLM 智能增强章节补 '译文清洗(text_clean)' 小节:
源头防御 + 批量清洗两层防护 + 4 条清洗规则
- 排版任务描述里的 '加粗' 改为 '层次'(加粗 = ** 脏数据来源)
- 运维工具表格加 clean_translations.py 用法
- 路线图加 Phase 1.8(2026-06-16)
纯文档改动,服务器前端不需要 rebuild
This commit is contained in:
25
README.md
25
README.md
@@ -55,6 +55,7 @@
|
||||
- 📌 **收藏 + 关键词订阅**:用户级书签,服务端定时按关键词命中推送(预留 Telegram 通道)
|
||||
- 📊 **管理看板**:源健康度 / 翻译配额 / LLM 状态,全部可视化
|
||||
- 🔍 **智能搜索建议** *(新)*:`GET /api/v1/search/suggestions?q=prefix` 实时返回高频词续接词(输入"美国"→ ["美国", "美国政府", "美国签证"]);zhparser 中文分词 + GIN 数组索引,前端 debounce 250ms 自动补全
|
||||
- 🧹 **译文清洗** *(新)*:清洗 LLM 输出里残留的 markdown 加粗标记(`**FBI**` → `FBI`)— pipeline 写库前源头防御 + `app/scripts/clean_translations.py` 批量清洗历史脏数据(1453 条 / 179K 字符实测)
|
||||
后端用 zhparser 中文分词 + PG 全文搜索 + 候选词固化表,前端 debounce 250ms 自动补全
|
||||
- 🔄 **热加载**:源/提示词改了不用重启,worker 每天 00:30 重建 job
|
||||
- 🚀 **一键部署**:SSH 推公钥 + 一键 `git pull` 流程
|
||||
@@ -563,7 +564,7 @@ docker compose exec api alembic upgrade head
|
||||
|
||||
| 任务 | 输出字段 | LLM 类型 | 用途 |
|
||||
|---|---|---|---|
|
||||
| **排版** | `articles.body_zh_formatted` | chat | 重写译文为网页排版(分段/加粗/列表) |
|
||||
| **排版** | `articles.body_zh_formatted` | chat | 重写译文为网页排版(分段/层次/列表) |
|
||||
| **分类** | `articles.category` | chat(返 JSON) | 给文章打 1-3 个分类标签 |
|
||||
| **插图** | `articles.image_ai_url` | image | 文生图,英文 prompt 拼自 `title` |
|
||||
| **点评** | `articles.commentary` | chat | 100-200 字评论,客观有深度 |
|
||||
@@ -599,6 +600,26 @@ docker compose exec api alembic upgrade head
|
||||
每个任务独立 try/except,失败标 `*_status='failed'`,**不影响**其他任务。
|
||||
`enrichment_loop` 扫 `*_status` 是 `pending/failed/n/a` 的文章,自动重试 failed。
|
||||
|
||||
### 译文清洗(`text_clean`)
|
||||
|
||||
LLM 翻译时偶尔把 markdown 加粗标记(`**FBI**` / `***FBI***` / `*FBI*`)原样带进译文,
|
||||
前端展示就成了 `**FBI**局长` 这种脏数据。**两层防护**:
|
||||
|
||||
- **源头防御** — `app/services/translation/text_clean.py` 提供 `clean_markdown_asterisks`,
|
||||
`pipeline.translate_article` 在写库前自动清洗,新翻译不会再产生 `**`。
|
||||
- **批量清洗** — `app/scripts/clean_translations.py` 扫所有含 `*` 的文章,
|
||||
清洗 5 个字段(`title_zh` / `body_zh_text` / `body_zh_html` / `body_zh_formatted` / `summary_zh`)。
|
||||
评论字段(`commentary` / `commentary_meituan`)不动 — 那是另两条 LLM 产物链。
|
||||
|
||||
清洗规则(从长到短、循环到稳定、兜底删零散 `*`):
|
||||
1. `***text***` → `text` (粗+斜)
|
||||
2. `**text**` → `text` (粗)
|
||||
3. `*text*` → `text` (斜)
|
||||
4. 兜底:残留的 `*` / `**` / `***` 一律删除
|
||||
|
||||
`body_zh_formatted`(LLM 排版产物)用 BeautifulSoup 只清洗文本节点,
|
||||
保留 `diary-para` class 和内联 style,不影响前端渲染。
|
||||
|
||||
### 智能搜索建议(autocomplete)
|
||||
|
||||
搜索框输入前缀(如"美"),下拉弹出**高频词续接词**:
|
||||
@@ -772,6 +793,7 @@ python scripts\deploy_pull.py # 我帮你跑,你说"拉一下"即可
|
||||
| `scripts/deploy_pull.py` | 免密拉取 + 失败回滚 | `python scripts\deploy_pull.py` |
|
||||
| `scripts/server_init.py` | 服务器系统级初始化(推公钥 + 7 项运维) | `REMOTE_PASS=xxx python scripts/server_init.py` |
|
||||
| `scripts/push_ssh_key.py` | 单推 SSH 公钥(SSH key fingerprint 去重) | `REMOTE_PASS=xxx python scripts/push_ssh_key.py` |
|
||||
| `docker compose exec worker python -m app.scripts.clean_translations` | 批量清洗译文 `**` 残留(支持 `--dry-run` / `--limit` / `--source-slug` / `--field`) | 服务器上 |
|
||||
| `docker compose logs -f worker` | 看 worker 日志 | 服务器上 |
|
||||
| `docker compose exec api alembic upgrade head` | 跑 migration | 服务器上 |
|
||||
|
||||
@@ -854,6 +876,7 @@ PowerShell 默认 GBK,运行前先 `chcp 65001` 切 UTF-8。
|
||||
- [x] **Phase 1.5**:LLM 智能增强(排版/分类/插图/点评) ✅ 2026-06-08
|
||||
- [x] **Phase 1.6**:API Push 短新闻(`POST /api/v1/ingest` + 三层去重 + per-token 限速) ✅ 2026-06-14
|
||||
- [x] **Phase 1.7**:中文源头 RSS 优化(详情页隐藏译文 + 翻译循环跳过省配额) ✅ 2026-06-14
|
||||
- [x] **Phase 1.8**:译文清洗(`text_clean` 源头防御 + `clean_translations.py` 批量脚本;首页/详情页 Agnes 标签 + 美团评论完整显示) ✅ 2026-06-16
|
||||
- [ ] **Phase 2**:PWA 离线缓存 / 关键词订阅推送(Telegram)
|
||||
- [ ] **Phase 3**:Android 客户端(API Token 已预留)
|
||||
- [ ] **Phase 4**:自动分类/点评/实体识别(目前是 LLM 一次性,无 ML pipeline)
|
||||
|
||||
Reference in New Issue
Block a user