feat(review): journal_directory 启动自动 seed(部署即运行) #2

Merged
admin merged 1 commits from wjq/PlantAI-rag-new:feature/journal-seed-autoload into main 2026-10-11 21:12:57 +08:00
Contributor

概要

journal_directory(1056 条期刊目录)此前需手动跑 import_journals.py 入库,
新环境部署时易遗漏。本 PR 实现:服务启动时自动检测空表 + 自动 seed,
消除人工步骤。

修改内容

文件 变更
app/services/journal_seed.py(新增) 共享核心:schema/清洗/解析/upsert;extract_rows_from_xlsx() 含口径 779/277 与 id 冲突闸门;ensure_journal_directory_seeded() 空表才导,绝不抛异常
scripts/import_journals.py 瘦身为薄 CLI:对账报告/退出码 0/1/2/3 保留
app/config.py +seed_on_startup=True(REVIEW_SEED_ON_STARTUP 可关)
app/main.py lifespan:开关门控 → asyncio.to_thread 导入,不阻塞启动
tests/conftest.py(新增) 全局关 seed,防单测触碰真库
tests/test_seed.py(新增) 6 用例:空库/非空/xlsx 缺/幂等/开关 on/off
docs/pr-reports/2026-10-11-journal-seed-autoload.md(新增) 本 PR 详细报告

不动:source_v4.xlsx、journal_directory 路由/表 schema、db.py、前端。

测试结果

  • 后端 pytest:78 passed(+6 新增)
  • CLI 薄壳回归:exit=0,成功 1056 条(en=779/zh=277),幂等通过
  • 真机 8100(非破坏性 skip 路径):日志 already has 1056 rows, skip,total=779

部署验证(部署后执行)

bash review_service/restart.sh
# 非空库 → 日志:already has 1056 rows, skip
# 空库冷启动 → 日志:seeded 1056 rows (en=779, zh=277, N.Ns)
# 特殊部署:REVIEW_SEED_ON_STARTUP=false → 日志:seed skipped
curl 'http://127.0.0.1:8100/api/review/journals/directory?lang=en'
# 期望 total=779
## 概要 `journal_directory`(1056 条期刊目录)此前需手动跑 `import_journals.py` 入库, 新环境部署时易遗漏。本 PR 实现:**服务启动时自动检测空表 + 自动 seed**, 消除人工步骤。 ## 修改内容 | 文件 | 变更 | |---|---| | `app/services/journal_seed.py`(新增) | 共享核心:schema/清洗/解析/upsert;`extract_rows_from_xlsx()` 含口径 779/277 与 id 冲突闸门;`ensure_journal_directory_seeded()` 空表才导,绝不抛异常 | | `scripts/import_journals.py` | 瘦身为薄 CLI:对账报告/退出码 0/1/2/3 保留 | | `app/config.py` | +`seed_on_startup=True`(`REVIEW_SEED_ON_STARTUP` 可关) | | `app/main.py` | lifespan:开关门控 → `asyncio.to_thread` 导入,不阻塞启动 | | `tests/conftest.py`(新增) | 全局关 seed,防单测触碰真库 | | `tests/test_seed.py`(新增) | 6 用例:空库/非空/xlsx 缺/幂等/开关 on/off | | `docs/pr-reports/2026-10-11-journal-seed-autoload.md`(新增) | 本 PR 详细报告 | 不动:`source_v4.xlsx`、`journal_directory` 路由/表 schema、`db.py`、前端。 ## 测试结果 - 后端 pytest:**78 passed**(+6 新增) - CLI 薄壳回归:`exit=0`,成功 1056 条(en=779/zh=277),幂等通过 - 真机 8100(非破坏性 skip 路径):日志 `already has 1056 rows, skip`,`total=779` ## 部署验证(部署后执行) ```bash bash review_service/restart.sh # 非空库 → 日志:already has 1056 rows, skip # 空库冷启动 → 日志:seeded 1056 rows (en=779, zh=277, N.Ns) # 特殊部署:REVIEW_SEED_ON_STARTUP=false → 日志:seed skipped curl 'http://127.0.0.1:8100/api/review/journals/directory?lang=en' # 期望 total=779
wjq added 1 commit 2026-10-11 21:00:30 +08:00
admin merged commit 4add9f176b into main 2026-10-11 21:12:57 +08:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/PlantAI-rag-new#2