大容量ファイルの分割(search_job.py / index.html / main.py) #5

Closed
opened 2026-09-14 15:03:49 +00:00 by joe · 1 comment
Owner

800行超過ファイルの分割。

対象

  • search_job.py(約1140行)→ fetch/extract/store/orchestration に分離
  • index.html(約2060行)→ CSS/JS分離
  • main.py(約1080行)→ ルート別モジュール分割

方針

  • cron互換(search_job.py エントリーポイント)を維持
  • 段階的に実施し、各分割後に動作確認
800行超過ファイルの分割。 ## 対象 - search_job.py(約1140行)→ fetch/extract/store/orchestration に分離 - index.html(約2060行)→ CSS/JS分離 - main.py(約1080行)→ ルート別モジュール分割 ## 方針 - cron互換(search_job.py エントリーポイント)を維持 - 段階的に実施し、各分割後に動作確認
Author
Owner

完了(2026-09-27)

分離結果

対象 Before After
search_job.py 1335行 70行(ファサード+cron入口)+ app/crawler/ パッケージ(base 148 / definitions 180 / extract 367 / store 241 / job 419 行)
main.py 1230行 75行(app構築+mount)+ app/routers/ パッケージ(common/api_cars/api_ai/api_settings/api_profiles/api_sites/api_rules/api_verify)
index.html 2064行 230行 + static/css/index.css(869行) + static/js/index.js(964行)

動作確認

  • pytest 72テスト全パス(分割後の monkeypatch 対象を crawler.store / routers.common に追従修正)
  • cron互換: python3 search_job.py [--list|site] エントリーポイント維持(--list 正常出力・実行時 interval skip 正常)
  • uvicorn: 全エンドポイント 200(/ /api/cars /api/stats /api/profiles /api/settings /api/grade-rules /api/sites)
  • フロント: /static/css/index.css・/static/js/index.js 200 応答、index.js node パースOK
  • サーバ再起動済み(PID更新・挙動確認)

補足

  • search_job.py は全シンボルを再公開(tests/restore_source_urls 等の後方互換維持)
  • 分離中に発見・修正: record_history の datetime import 漏れ(元コードで譲されていた暗黙依存)
    クローズします。
## 完了(2026-09-27) ### 分離結果 | 対象 | Before | After | |---|---|---| | search_job.py | 1335行 | **70行**(ファサード+cron入口)+ `app/crawler/` パッケージ(base 148 / definitions 180 / extract 367 / store 241 / job 419 行) | | main.py | 1230行 | **75行**(app構築+mount)+ `app/routers/` パッケージ(common/api_cars/api_ai/api_settings/api_profiles/api_sites/api_rules/api_verify) | | index.html | 2064行 | **230行** + `static/css/index.css`(869行) + `static/js/index.js`(964行) | ### 動作確認 - pytest 72テスト全パス(分割後の monkeypatch 対象を crawler.store / routers.common に追従修正) - cron互換: `python3 search_job.py [--list|site]` エントリーポイント維持(--list 正常出力・実行時 interval skip 正常) - uvicorn: 全エンドポイント 200(/ /api/cars /api/stats /api/profiles /api/settings /api/grade-rules /api/sites) - フロント: /static/css/index.css・/static/js/index.js 200 応答、index.js node パースOK - サーバ再起動済み(PID更新・挙動確認) ### 補足 - search_job.py は全シンボルを再公開(tests/restore_source_urls 等の後方互換維持) - 分離中に発見・修正: record_history の datetime import 漏れ(元コードで譲されていた暗黙依存) クローズします。
joe closed this issue 2026-09-27 12:06:36 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
joe/findcar#5
No description provided.