NexusCore リファクタリングバックログ
最終更新: 2026-05-10 前提: 216ファイル評価のコードレビュー結果に基づく 基準: P0 = 影響大/工数小、P1 = 影響大/工数中、P2 = 影響中/工数中 コア層品質: avg 4.08/5(104ファイル、~734KB) – 高品質 API/CLI層品質: avg 3.7/5(39ファイル、~330KB) – 改善余地あり P0/P2/P1-1/P1-2/P1-3 完了 — バックログ全項目完了
優先度P0(すぐやる)
P0-1. _get_user_id_from_auth() のDRY違反解消
- 問題: 同一ヘルパー関数が4箇所以上に重複定義されている
- 影響: コード修正時の整合性リスク、テスト重複
- 対象ファイル:
src/nexuscore/api/routes/runs.pysrc/nexuscore/api/routes/api_keys.pysrc/nexuscore/api/routes/projects.pydocs/api/CR-FASTAPI-005_完了報告.md(参照確認)
- 修正方針:
src/nexuscore/api/dependencies/auth.py(既存、11KB)に統合- 各routeファイルから重複定義を削除し、
from nexuscore.api.dependencies.auth import get_user_id_from_authに置換 - FastAPIの
Depends()インジェクションで統一
- 推定工数: 1-2時間
- テスト影響: 既存テストのimport修正のみ
P0-2. server.py(非推奨Flask)の削除または明示的な非推奨マーク
- 問題:
src/nexuscore/api/server.py(11.5KB、評価2/5)が非推奨のまま残存。FastAPI移行後もFlaskサーバーが残っており、新規Contributorが混乱する - 影響: アーキテクチャの二重化、メンテナンスコスト
- 対象ファイル:
src/nexuscore/api/server.py - 修正方針(いずれかを選択):
- Option A(推奨):
archive/に移動し、fastapi_app.pyを唯一のエントリポイントにする - Option B: ファイル先頭に
DeprecationWarningを追加し、READMEに移行ステータスを明記
- Option A(推奨):
- 推定工数: 30分(Option A)、1時間(Option B)
- 前提:
fastapi_app.py(8KB)で全機能が代替済みであることの確認が必要
P0-3. dependencies/ と deps/ の統合
- 問題:
src/nexuscore/api/dependencies/(auth.py)とsrc/nexuscore/api/deps/(orchestrator.py)が似た目的で並存。FastAPIの依存性注入パッケージとして混乱 - 対象ファイル:
src/nexuscore/api/dependencies/__init__.pysrc/nexuscore/api/dependencies/auth.py(11.3KB)src/nexuscore/api/deps/__init__.pysrc/nexuscore/api/deps/orchestrator.py(5.3KB)
- 修正方針:
deps/の内容をdependencies/に統合deps/orchestrator.py->dependencies/orchestrator.pydeps/ディレクトリを削除- 全routeファイルのimportパスを更新
- 推定工数: 1時間
- 依存: P0-1(auth.pyの修正と競合する可能性)
優先度P1(次にやる)
P1-1. Flask -> FastAPI移行の完了
- 完了: 2026-05-10
- 結果: OAuth認証3エンドポイントをFastAPI版
api/routes/auth.pyに移行。UIビュー(dashboard/logs/projects)は「FastAPI migration 対象外」とコード内に明記済みのためFlaskのまま保持。views_api_test.pyはシミュレーションのみのため archive/ に移動。 - 問題:
src/nexuscore/webapp/配下にFlask由来のviews群が残存し、FastAPI(src/nexuscore/api/)と混在状態 - 影響: フレームワーク二重化によるメンテナンスコスト増大
- 対象ファイル:
src/nexuscore/webapp/views_dashboard.py(18KB)src/nexuscore/webapp/views_projects.py(24.3KB)src/nexuscore/webapp/views_logs.py(15.8KB)src/nexuscore/webapp/views_api_test.py(7.4KB)src/nexuscore/webapp/auth.py(4.9KB)src/nexuscore/webapp/celery_app.py(9.6KB)
- 方針決定が必要:
- Option A(推奨): Flask viewsをFastAPI routesに段階的に移行
- Phase 1:
views_dashboard.py->api/routes/dashboard.py - Phase 2:
views_projects.py-> 統合(既存api/routes/projects.pyと統合) - Phase 3:
views_logs.py->api/routes/logs.py - Phase 4: webapp/ 配下のFlask固有コードを削除
- Phase 1:
- Option B: FlaskをAPI専用、FastAPIをWebhook/外部API専用として並行維持
- Option A(推奨): Flask viewsをFastAPI routesに段階的に移行
- 推定工数: 2-3日(Option A)、0日(Option B、現状維持)
- 注意:
webapp/models.py(7.3KB)、webapp/celery_app.py(9.6KB)はFlask依存が深い可能性あり
P1-2. unified_gradio_ui.py のモノリス分割
- 問題:
src/nexuscore/ui/unified_gradio_ui.py(31KB、評価3/5)が単一ファイルで巨大 - 影響: 可読性低下、テスト困難、変更競合リスク
- 対象ファイル:
src/nexuscore/ui/unified_gradio_ui.py - 修正方針:
- UIコンポーネント単位で分割:
src/nexuscore/ui/dashboard_tab.pysrc/nexuscore/ui/projects_tab.pysrc/nexuscore/ui/runs_tab.pysrc/nexuscore/ui/logs_tab.pysrc/nexuscore/ui/settings_tab.pysrc/nexuscore/ui/app_factory.py(Gradio app生成・統合)
unified_gradio_ui.pyは各タブをインポートして統合する薄いラッパーにする
- UIコンポーネント単位で分割:
- 推定工数: 4-6時間
- テスト影響: UIテストのimportパス修正
P1-3. webapp/ 内のOrchestratorヘルパー統合
- 問題:
orchestrator_helper.py(3.3KB)とorchestrator_inline.py(2.8KB)が似た目的で並存 - 対象ファイル:
src/nexuscore/webapp/orchestrator_helper.pysrc/nexuscore/webapp/orchestrator_inline.py
- 修正方針:
- 両ファイルの役割を確認(helper = 非同期委譲、inline = 同期実行?)
- 重複部分を統合し、単一の
orchestrator_bridge.pyにする
- 推定工数: 2-3時間
- 依存: P1-1(Flask移行の進行に依存)
優先度P2(余裕があれば)
P2-1. explainability.py のドキュメンテーション改善
- 問題:
src/nexuscore/orchestrator/explainability.py(評価3/5)のドキュメンテーション不足 - 影響: 機能理解・保守性への影響は中程度
- 対象ファイル:
src/nexuscore/orchestrator/explainability.py - 修正方針:
- モジュールレベルdocstring追加
- 各クラス・メソッドのdocstring追加(引数・戻り値・使用例)
- READMEまたはdocsに使用ガイド追加
- 推定工数: 1-2時間
P2-2. math_ops.py の評価見直し
- 問題:
math_ops.py(評価2/5)が非常にシンプルな関数群。評価基準に対してスコアが低すぎる可能性 - 修正方針:
- 実際のファイル場所を特定して内容確認(コード検索で見つからず、旧パスの可能性)
- シンプルなユーティリティ関数群であれば、他のutilsモジュールに統合を検討
- もし使用されていなければ削除も検討
- 推定工数: 30分-1時間
P2-3. clean_output.py の改善
- 問題:
src/nexuscore/utils/clean_output.py(評価3/5)が単純な文字列処理 - 修正方針:
- docstring・型ヒントの追加
- エッジケースのテスト追加
- 同モジュール内の他ユーティリティとの統合可能性を検討
- 推定工数: 30分
P2-4. run_view.py の重複整理
- 問題:
run_view.pyが3箇所に存在:src/nexuscore/cli/run_view.pysrc/nexuscore/api/utils/run_view.pysrc/nexuscore/api/routes/run_view.pysrc/nexuscore/api/schemas/run_view.py
- 修正方針:
- 各ファイルの役割を確認(CLI表示、APIユーティリティ、APIルート、APIスキーマ)
- 名前の重複による混乱を解消(役割に応じたリネーム)
- 共通ロジックがあれば
api/utils/に抽出
- 推定工数: 1-2時間
高品質ファイル(変更不要・参考モデル)
以下のファイルは評価5/5を達成しており、コードベースの品質モデルとして参照すること。
エージェント層
src/nexuscore/agents/base_agent.pysrc/nexuscore/agents/constitutional_council_agent.pysrc/nexuscore/agents/guardian_agent.pysrc/nexuscore/agents/tester_agent.py
LLM/プロバイダー層
src/nexuscore/llm/llm_router.pysrc/nexuscore/llm/anthropic_provider.pysrc/nexuscore/llm/openai_provider.py
コア/インフラ層
src/nexuscore/core/errors.pysrc/nexuscore/core/job_state_machine.pysrc/nexuscore/core/orchestrator.pysrc/nexuscore/core/retry_policy.pysrc/nexuscore/core/retry_utils.pysrc/nexuscore/core/sandbox_executor.py
解析/チェッカー層
src/nexuscore/analyzer/unified_analyzer.pysrc/nexuscore/diff/semantic_diff.pysrc/nexuscore/guard/tree_sitter_checker.py
設定
src/nexuscore/config/unified_config.py
工数サマリー
| 優先度 | 項目 | 推定工数 | リスク |
|---|---|---|---|
| P0-1 | _get_user_id_from_auth DRY解消 | 1-2h | 低 |
| P0-2 | server.py 削除/非推奨化 | 0.5-1h | 低 |
| P0-3 | dependencies/ と deps/ 統合 | 1h | 低 |
| P0合計 | 2.5-4h | ||
| P1-1 | Flask -> FastAPI移行完了 | 2-3日 | 中 |
| P1-2 | unified_gradio_ui.py 分割 | 4-6h | 中 |
| P1-3 | Orchestratorヘルパー統合 | 2-3h | 低 |
| P1合計 | 3-4日 | ||
| P2-1 | explainability.py doc改善 | 1-2h | 低 |
| P2-2 | math_ops.py 評価見直し | 0.5-1h | 低 |
| P2-3 | clean_output.py 改善 | 0.5h | 低 |
| P2-4 | run_view.py 重複整理 | 1-2h | 低 |
| P2合計 | 3-6h | ||
| 総計 | 約4-5日 |
依存関係
P0-1 (auth DRY) ──┐
├──> P0-3 (deps統合) ──> P1-1 (Flask移行)
P0-2 (server.py) ─┘ │
v
P1-2 (Gradio分割) ──> P1-3 (helper統合)
P2-1~P2-4 は独立実行可能(P0/P1に依存しない)
推奨実行順序
- Day 1午前: P0-1 + P0-2(auth DRY解消 + server.py整理)
- Day 1午後: P0-3(deps統合)
- Day 2-3: P1-1(Flask移行、段階的に)
- Day 4午前: P1-2(Gradio分割)
- Day 4午後: P1-3 + P2項目から優先度の高いもの
Flask -> FastAPI移行の方針
推奨: 移行を完了させる(Option A)
理由:
fastapi_app.pyが既に稼働しており、逆行する意味がない- Flask views(
webapp/)の機能は FastAPI routes(api/routes/)で概ね代替済み - 二重化によるメンテナンスコストが継続的に増大
- 移行不完全による新規Contributorの混乱を防ぐ
移行ステップ:
- 各Flask viewのエンドポイントとFastAPI routeの対応表を作成
- 未移行のエンドポイントを特定
- 1エンドポイントずつ移行し、テストで動作確認
- 全エンドポイント移行後、Flask依存を削除
requirements.txtからflaskを削除(段階的に)
v1バックログ完了(2026-05-10)
全10項目完了。次期バックログは → REFACTORING_BACKLOG_V2.md