BE/FE refactaring#243
Conversation
|
概要 フロントエンドのカスタムフック・ページコンポーネントのリファクタリング。責務の分離・重複テストの整理・不足テストの追加を行い、コードの見通しを改善した。 変更内容 フック抽出
コンポーネント分割
テスト整理・追加
関連 Issue closes # 確認事項
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Comment |
- flake.nix に opentofu パッケージを追加し、dev shell から `tofu` を提供
- .github/workflows/terraform-ci.yml を opentofu-ci.yml にリネームし、
hashicorp/setup-terraform を opentofu/setup-opentofu@v1 に差し替え
- 旧 .terraform.lock.hcl を削除(初回 tofu init で registry.opentofu.org
ベースに再生成する想定)
- Makefile に infra-fmt / infra-validate-{dev,stg,prod} を追加
- .claude/rules/infra/terraform.md を opentofu.md にリネームし内容更新
- README / infra/README / runbook の terraform 表記を tofu / OpenTofu に更新
GCS backend 互換のため state はそのまま流用可能。Branch protection の
status check 名は terraform-* から opentofu-* に変わる点に注意。
b6ca4be to
3fff13e
Compare
58f1b52 to
9363d69
Compare
refactor(backend): 非同期タスク責務分離・スキル分類整理・LLM 遅延化
概要
backend_refacter スキルでのレビュー結果(
.ghpr/BackendRefactorReview.md)に沿って、High → Medium → Lowの順で保守性リファクタを実施。動作仕様は変更せず、ルーター・ワーカー・スキル分類の責務分離と単体テストの重複削除を行った。
変更内容
High
AsyncTaskCacheServiceに集約 (services/tasks/dispatch_service.py新設)3 ルーター (
blog/intelligence/career_analysis) の generate+retry に散らばっていた「キャッシュ pending 化 → dispatch → 失敗時 dead_letter」フローを 1サービスに集約。
_RETRYABLE_TERMINAL_STATUSESをservices/tasks/base.pyへ移動しis_in_progress/is_retryable_terminalヘルパで統一。services/tasks/handlers/パッケージ新設)TaskHandler抽象 + レジストリで_get_task_recordの if/elif を排除。GitHubAnalysisHandler/BlogSummarizeHandler/CareerAnalysisHandlerに各タスクの実装を移動。
position_scorer.pyの責務分離 (335 → 215 行)スキル分類辞書 5 件 (
_LANG_SKILL_MAP等) をskill_taxonomy/ownership_map.pyに切り出し。position_scorer.pyはスコア算出ロジックのみに縮約。github_collector.pyの後方互換シム除去_detect_from_root_files等の再エクスポート 7 件を削除し、テストをgithub.repo_analyzer直参照に変更。test_intelligence.pyの重複テスト 13 件を削除(pom.xml /go.mod のみ残置)、
test_worker_timeout.pyをタイムアウト伝播 2 件に縮約。Medium
llm_summarizer._client/career_analysis._llm_clientのモジュールロード時即時化を@lru_cache経由の遅延ロードに変更。テストでもLLM_PROVIDER切替が効くようになる。
_find_missing_skillsのchecks辞書をposition_weights.jsonのrequirement_skill_mapに外出し。要件追加時にコード変更が不要に。seed.pyを JSON 化 (545 行 → 35 行)資格 249 件・技術スタック 128 件のデータを
db/seeds/qualifications.json/technology_stacks.jsonに分離し、seed.pyはローダーに縮約。Low
skill_extractor._extract_from_repoをadd()クロージャで 5 ソース共通化。github_callback_redirectの HTMLResponse 構築重複を_build_callback_html_responseヘルパに集約。blog/collector.pyのhttpx.AsyncClient(timeout=...)即値を_FETCH_TIMEOUT_SECONDS/_VERIFY_TIMEOUT_SECONDS定数化。バグ修正(リファクタ副産物)
career_analysis.generateの dispatcher 失敗時に dead_letter を設定していなかった不整合を、AsyncTaskCacheService.dispatch集約に伴い 3 ルーターで挙動統一。関連 Issue
closes #
確認事項
cd backend && .venv/bin/python -m ruff check app tests alembic_migrationsがパスすることcd backend && .venv/bin/python -m pytest -q testsがパスすること(342 件 PASS)/api/intelligence/analyze//api/blog/summarize//api/career-analysis/generateの dispatch + retry が従来通り動作すること