| モジュール | 主な機能 | 行数 |
|---|---|---|
app.py |
Flask本体、18ルート、4モデル定義、URL正規化 | ~2000行 |
config.pyNEW |
環境変数一元管理、デフォルト値設定 | ~150行 |
scraper.py |
Webスクレイピング、ボット対策検出、エラー原因分析 | ~1700行 |
file_downloader.py |
ファイルDL、インテリジェント選別、ブラックリスト | ~600行 |
pdf_analyzer.py |
PDF解析、DBキャッシュ、GC対応 | ~500行 |
.env / .env.prod で吸収。
| 設定項目 | ローカル | 本番 |
|---|---|---|
| MinIO | ✅ 有効(Docker) | ✅ 有効(Docker) |
| Adminer | ✅ 有効(ADMINER_REPLICAS=1) | 🔧 必要時のみ有効化 |
| Debug Mode | ✅ True | ❌ False |
| Log Level | DEBUG | INFO / WARNING |
| テーブル | 用途 | レコード例 |
|---|---|---|
subsidy_info |
補助金情報メインテーブル(22項目編集可能) | URL、自治体名、継続状況、処理時間等 |
subsidy_file |
関連ファイル情報 | PDF、Excel、Wordファイルのメタデータ |
subsidy_info_historyNEW |
変更履歴・復元用スナップショット | 変更前データの完全保存、復元機能 |
pdf_analysis_cacheNEW |
PDF解析結果キャッシュ | ファイルハッシュ→解析結果 |
error_analysisNEW |
エラー原因分析結果 | HTTP状態、ボット対策種別、AI分析結果 |
| メソッド | エンドポイント | 機能 |
|---|---|---|
| GET | / | 一覧表示 |
| POST | /add_url | URL追加 |
| GET | /detail/<id> | 詳細表示 |
| GET | /edit_result/<id> | 編集画面表示 |
| POST | /edit_result/<id> | 編集保存 |
| GET | /scrape/<id> | スクレイピング実行 |
| POST | /delete/<id> | 削除 |
| GET | /download/<id>/<filename> | ファイルダウンロード |
| GET | /api/municipalities | 自治体名一覧API |
| GET | /api/history/<id> | 履歴取得APINEW |
| POST | /api/restore/<id>/<history_id> | 復元APINEW |
| POST | /api/analyze_error/<id> | エラー原因分析NEW |
| GET | /api/error_analysis/<id> | エラー分析結果取得NEW |
| GET | /chatbot | チャットボット画面 |
| POST | /api/chatbot/query | チャットボットAPI |
| POST | /scrape_all | 一括スクレイピング |
| GET | /export/csv | CSVエクスポート |
| GET | /static/architecture.html | アーキテクチャ図 |
| 設定 | web | mysql | minio | adminer |
|---|---|---|---|---|
| restart | on-failure:3 | on-failure:3 | unless-stopped | unless-stopped |
| healthcheck | ✅ HTTP | ✅ mysqladmin ping | ✅ curl | - |
| メモリ制限 | - | 512MB | - | - |
| ログ制限 | max-size: 10m, max-file: 3 | |||
| ファイル | 内容 |
|---|---|
data/logs/app.log | アプリケーション全般ログ |
data/logs/error.log | エラーログ(WARNING以上) |
data/logs/scraping.log | スクレイピング詳細ログ |
data/logs/ai_analysis.log | AI解析詳細ログ |
| スクリプト | 用途 | 主な処理 |
|---|---|---|
start-local.sh |
ローカル起動 | ポート競合解決、MinIO起動、DBマイグレーション |
start-prod-ocr-subsidy.sh |
本番起動 | OCR + 補助金システム統合起動、Apache連携 |
| レイヤー | 技術 | バージョン/詳細 |
|---|---|---|
| Frontend | HTML5, Bootstrap 5, JavaScript | 6テンプレート、2 JSファイル |
| Backend | Python, Flask, Flask-SQLAlchemy | Python 3.9, Flask 2.3.3 |
| Database | MySQLUPDATED | MySQL 8.0, PyMySQL |
| AI | OpenAI API | GPT-4o-mini |
| File Storage | MinIO | オブジェクトストレージ(ローカル・本番両方) |
| PDF Processing | pdfplumber, PyMuPDF | テキスト・テーブル抽出 |
| Web Scraping | requests, BeautifulSoup4, lxml | HTMLパース・抽出 |
| Text Processing | pykakasi | 漢字→ひらがな変換 |
| Containerization | Docker, Docker Compose | 4コンテナ構成(ローカル) |
| Web Server | Apache2 | Reverse Proxy, Let's Encrypt |
| Infrastructure | さくらのクラウド | Ubuntu 22.04 |
| バージョン | 日付 | 変更内容 |
|---|---|---|
| 4.0 | 2025-12-06 |
MySQL移行、履歴・復元機能、エラー原因分析、URL正規化、config.py追加、 DB構成図・機能一覧・インフラ構成セクション新規追加 |
| 3.0 | 2025-11-04 | さくらクラウドデプロイ、MinIO統合 |
| 2.0 | 2025-10-27 | PDF解析機能、ファイルダウンロード機能追加 |
| 1.0 | 2025-10-24 | 初版作成(Flask + SQLite構成) |
最終更新: 2025年12月6日
バージョン: 4.0