Dog Coordinate AI 技術詳細
実リポジトリに基づく、Flutter実装の技術構成
このページでは `flutter-dog-coordinate-ai` リポジトリの実装内容をもとに、認証、API連携、キャッシュ、環境切り替え、v1.0.2 の購入基盤までを技術観点で整理しています。
AI CoreAIコーディネート提案の中核設計
このアプリの価値は、条件入力に対して「説明可能な提案」を返す点にあります。
提案エンジンの技術要点
`CoordinateRecommendation` モデルでは、提案そのものだけでなく、天候情報、判定結果(防水/防寒)、おすすめ理由、商品検索キーワードまでを構造化して扱います。これにより、「なぜこの提案なのか」をユーザーに説明しながら、次のアクション(商品探索)まで自然に接続できます。
Commerce v1.0.2購入・お届け先・履歴の技術構成
v1.0.2 では提案から購入完了までを API と Stripe で接続する構成を追加しました。
Stripe Checkout 連携
アプリ内課金ではなく Stripe Checkout を Safari 等の外部ブラウザで開き、決済完了後は Deep Link でアプリへ復帰します。Webhook では `checkout.session.completed` 等を処理します。
お届け先スナップショット
購入前にお届け先の登録・選択が必須です。`checkout_orders` に配送先スナップショットを保持し、購入詳細画面で注文内容と配送先を確認できます。
購入履歴 API
購入履歴と購入詳細を API 同期し、商品明細・配送先をアプリ内で確認できるようにしています。
AuthenticationGoogle / Apple 認証と API トークン管理
`AuthService` で Google Sign-In / Sign in with Apple を実装し、API認証へ橋渡ししています。
実装の要点
認証後は API の `/auth/google` および `/auth/apple` にトークンや認可コードを送信し、返却されたアクセストークンを `SharedPreferences` に保存。以降の API 呼び出しで `Authorization: Bearer` を統一的に付与します。
Domain APIペット・天気・提案・商品・購入の API レイヤー分離
画面実装から直接 HTTP を呼ぶのではなく、用途別サービスに責務を分離し、AI提案と購入基盤の改善を継続しやすくしています。
主要エンドポイント
- /pets 系: ペットプロフィール CRUD
- /weather/current: 位置情報/都市名ベースの天気取得
- /coordinates/recommend: コーディネート提案生成
- /coordinates/recommendations: 提案履歴/詳細取得
- /coordinates/search-items: 提案キーワード連動の商品検索
- /checkout/orders 系: 購入・お届け先スナップショット