初回準備・実装順¶
作業の手順は、このセクションを追う。 日常の運用入口は 運用。構成は アーキテクチャ。
| 手順 | いつ使うか |
|---|---|
| PostgreSQL | finance-manager VM に DB を入れるとき |
| Bot の更新 | コードを git pull して systemd で再起動するとき |
| systemd | Bot を常駐させるとき |
| Grafana 接続 | PG を読み取り専用で可視化するとき |
実装前に用意するもの¶
詳細設計は構成側を参照する。
- 要件: 要件定義
- インフラ: インフラ
- Discord: Discord
- Android: Tasker
- 公開面: Cloudflare
- データ取得: データ取込
- メール: メール取込
- Gemini: Gemini
1. Gemini API(運用用、Cursor とは別)¶
- Google AI Studio で API キー作成
- Proxmox の環境変数へ保存
推奨モデル(MVP): gemini-3.5-flash(安定 Flash)。
フォールバック例: gemini-3.5-flash-lite。
gemini-1.5-flash は 404 になり得る。gemini-2.5-flash-lite は新規キーで 404 になり得る。
環境変数 GEMINI_MODEL / GEMINI_MODEL_FALLBACKS で切り替える(未設定時のデフォルトも gemini-3.5-flash 起点)。
店名の grounding 試行の知見は 店名 Web 検索の試行知見。
個人の支払い数回/日なら無料枠で足りる想定である。 家計データの学習利用が気になる場合は従量課金へ移す。
運用中の枠の確認: レート制限(直近28日)。
2. Discord¶
詳細は Discord / Discord Bot。
MVP から Bot を使う(手動テキスト / 画像受信があるため)。 確認返信だけなら Webhook でも足りるが、入口も Discord にするなら Bot が必要である。
- Discord Application / Bot 作成(いまのアプリ: Developer Portal)
- Message Content Intent を有効化
- チャンネル例:
#finance(必要なら#finance-inbox) - Bot トークンを env へ
3. Android / Cloudflare¶
- Tasker + AutoNotification を用意 → Tasker
ingest.finance.nkjm.devの Tunnel / Access / Bearer → Cloudflare
4. メール / CSV / Grafana¶
5. 環境変数(予定)¶
DATABASE_URL=postgresql://USER:PASSWORD@HOST:5432/finance_manager
INGEST_BEARER_TOKEN=
# Cloudflare Access Service Token は主に Tasker 側
# CF_ACCESS_CLIENT_ID=
# CF_ACCESS_CLIENT_SECRET=
GEMINI_API_KEY=
DISCORD_BOT_TOKEN=
DISCORD_GUILD_ID=
DISCORD_CHANNEL_ID=
# 互換、通知専用に残す場合
# DISCORD_WEBHOOK_URL=
IMAP_HOST=
IMAP_USER=
IMAP_PASSWORD=
インフラ作成手順の目安は インフラ。
実装順(合意済み)¶
自宅インフラを整えたうえで、次の順で進める。
- Discord Bot + Gemini + PostgreSQL(手動テキスト/画像 → 関西弁の確認返信)
- Grafana ← PostgreSQL(最低限の可視化)
- Cloudflare Tunnel + ingest API + Tasker(PayPay 自動)
- メール / CSV
- 予算ルールなど高度化
Tip
最初から Tunnel / Tasker は必須ではない。 Discord → 自宅は Bot Gateway で先に成立させられる。