版数: 1.1  |  更新日: 2026-06-07  |  ステータス: ドラフト

詳細設計

本資料は検証実装に伴い更新する。未確定項目は「TBD」と記載する。

1. コンポーネント一覧

IDコンポーネント配置実装(予定)
C-01スタブモバイルアプリクライアントFlutter
C-02Cloudflare Tunnel自宅 PC(Docker)cloudflared(PoC の poc-api-tunnel を再利用。公開 URL: https://api.dammy-otoko.com
C-03Web API自宅 PC(Docker)FastAPI + Uvicorn
C-04データベース自宅 PC(Docker)PostgreSQL または SQLite
C-05ファイルストレージ自宅 PCローカルディレクトリ
C-06AI Worker自宅 PC(Docker)Python(スタブ)
C-07CI/CDGitHubGitHub Actions

2. FB 受信 API(C-03)

項目内容
エンドポイントPOST /api/v1/feedbackGET /api/v1/health
Content-Typemultipart/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_dispatchrepository_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_typemodel-updated
client_payloadmodel_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)