refactor(backend): collector/エラーコード/worker の保守性改善とテスト補強#316
Conversation
BE レビュー(report/BE_report_20260609_2152.md)の採用項目を実装。 - collector: 3 プラットフォーム fetcher の記事 dict 整形を _build_article に集約し、 日付切り出しと verify_user_exists のエンドポイント分岐を畳み込み(挙動不変) - github_link router: start/retry の GitHub 認可ガードを require_github_user 依存へ共通化 - worker: execute_task のタスク種別ハードコード分岐をハンドラレジストリ経由の データ駆動ディスパッチへ汎用化し「黙って completed」失敗モードを構造的に除去。 dispatch seam の patch 対象を GitHubLinkHandler.run へ移行、guard テストを registry 登録チェックへ書き換え - test: infer_error_code の全分岐回帰テストと messages.json 文言ドリフト結合ガードを追加 認可順序の変更により未連携ユーザーの /run 系は rate limit より前に 403 を返す (レスポンス契約は不変)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (8)
📝 WalkthroughWalkthroughThis PR refactors task dispatch and authorization by introducing a shared GitHub-user authorization guard ( ChangesTask Dispatch and Authorization Refactoring
Blog Collector Service Refactoring
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
概要
バックエンドのリファクタリングレビュー(
report/BE_report_20260609_2152.md)の採用項目を実装。重複の集約・認可ガードの共通化・worker ディスパッチの汎用化・エラーコード推定のテスト補強を行う。変更内容
collector の重複集約(Medium)
services/blog/collector.pyの zenn/note/qiita 3 fetcher が重複させていた 8 キー記事 dict の構築を_build_articleに集約。repositories/blog.py:_apply_article_payloadが期待するキー集合との契約を docstring に明記x[:10] if x else Noneを_truncate_dateに集約(3→1)verify_user_existsの 3 連 if を_VERIFY_ENDPOINTS(platform→(URL, params))テーブル + 単一 httpx 呼び出しへ畳み込み(挙動不変)github_link router の認可ガード共通化(Medium)
github_id is None → 403 AUTH_REQUIREDをrequire_github_user依存へ集約worker ディスパッチの汎用化(Low・承認のうえ実施)
execute_taskのif task_type == GITHUB_LINKハードコード分岐をget_handler(task_type).run(...)のデータ駆動ディスパッチへ。種別追加時に execute_task 無変更、ハンドラ未登録なら早期 return するため「分岐書き忘れで黙って completed」事故を構造的に除去worker._run_github_link→GitHubLinkHandler.runへ移行。guard テストtest_all_task_types_have_dispatch_branch(source grep)をtest_all_task_types_have_registered_handler(レジストリ登録チェック)へ強化テスト補強(Test Add)
tests/test_errors.py(新規):infer_error_codeの全分岐を parametrize で固定 +messages.json文言ドリフト結合ガード(GitHub 未検出メッセージがINTERNAL_ERRORに劣化する脆さを検知)+ async ラッパテスト挙動変更(要周知)
require_github_user依存化により、未連携ユーザーのPOST /api/github-link/run・/run/retryは rate limit より前に 403 を返す(認可→レート制限の自然な順序)。API レスポンス契約(403/コード/メッセージ)は不変破壊的変更
なし(DTO・API パス・env・依存追加なし)
検証
make lint-backend: ✅ passmake test-backend: ✅ 428 passed(rate_limit テスト 1 件が認可順序変更で fail → 正規ヘルパへ修正し再 pass)make dupe-check: 77→77(解消分は jscpd 閾値未満で件数不変)Follow-ups
_run_github_linkシムは execute_task から未使用化(直接呼び出しテスト専用)→ 将来撤去余地あり(任意・別 PR)🤖 Generated with Claude Code
Summary by CodeRabbit
Bug Fixes
Refactor
Tests