版数: 1.1 | 更新日: 2026-06-07 | ステータス: ドラフト
詳細設計
本資料は検証実装に伴い更新する。未確定項目は「TBD」と記載する。
1. コンポーネント一覧
| ID | コンポーネント | 配置 | 実装(予定) |
| C-01 | スタブモバイルアプリ | クライアント | Flutter |
| C-02 | Cloudflare Tunnel | 自宅 PC(Docker) | cloudflared(PoC の poc-api-tunnel を再利用。公開 URL: https://api.dammy-otoko.com) |
| C-03 | Web API | 自宅 PC(Docker) | FastAPI + Uvicorn |
| C-04 | データベース | 自宅 PC(Docker) | PostgreSQL または SQLite |
| C-05 | ファイルストレージ | 自宅 PC | ローカルディレクトリ |
| C-06 | AI Worker | 自宅 PC(Docker) | Python(スタブ) |
| C-07 | CI/CD | GitHub | GitHub Actions |
2. FB 受信 API(C-03)
| 項目 | 内容 |
| エンドポイント | POST /api/v1/feedback、GET /api/v1/health |
| Content-Type | multipart/form-data |
| リクエスト | 画像ファイル、推論結果(JSON)、タイムスタンプ |
| レスポンス | 201 Created + フィードバック ID |
| 処理 | 画像を Storage へ保存、メタデータを DB へ記録 |
3. AI Worker(C-06)スタブ仕様
| 項目 | 内容 |
| トリガー | 手動実行、または cron / Webhook(検証時は手動可) |
| 入力 | DB / Storage 内の FB データ(スタブでは参照のみでも可) |
| 出力 | 新バージョンのモデルファイル(TFLite / CoreML) |
| 完了時処理 | GitHub repository_dispatch を送信 |
4. GitHub Actions ワークフロー(C-07)
4.1 android-build.yml(①)
| 項目 | 内容 |
| トリガー | workflow_dispatch、repository_dispatch(type: model-updated) |
| ランナー | ubuntu-latest |
| 主な処理 | Flutter セットアップ → モデル同梱ビルド → APK artifact 出力 |
| 成果物 | app-release.apk |
4.2 ios-build.yml(②・未実装)
| 項目 | 内容 |
| トリガー | repository_dispatch(type: model-updated) |
| ランナー | macos-latest |
| 主な処理 | 署名 → CoreML 同梱ビルド → Fastlane で TestFlight upload |
| 前提 | Apple Developer Program、Secrets(証明書・API キー) |
5. Webhook 連携
| 項目 | 内容 |
| 送信元 | AI Worker(C-06) |
| 送信先 | GitHub REST API: POST /repos/{owner}/{repo}/dispatches |
| event_type | model-updated |
| client_payload | model_version, model_path 等(TBD) |
| 認証 | GitHub Personal Access Token または GitHub App(Secrets 管理) |
6. ディレクトリ構成(予定)
github-actions-test/
├── .github/workflows/ # GHA ワークフロー
├── docs/ # 本資料(HTML)
├── app/ # Flutter スタブアプリ(TBD)
├── server/ # FastAPI + Worker スタブ(TBD)
└── models/ # モデルファイル配置(TBD)