Skip to content

アーキテクチャ

関連: 要件定義 / インフラ / データ取込 / Discord / Cloudflare

全体構成

Android通知 (Tasker + 端末GPS)
  → Cloudflare Tunnel + Access + Bearer   … 自動取込(本線・位置つき)
利用メール (IMAP + Gemini)
週次 CSV
              │
              ▼
     Proxmox: finance-manager
       - ingest API
       - parsers / Gemini (text + vision)
       - Discord bot
       - PostgreSQL
              │
      ┌───────┴────────────────┐
      ▼                        ▼
   Discord                  Grafana
  通知・手動(text/画像)      (PGデータ源)

Discord の詳細は Discord

Proxmox 上の配置

詳細スペックは インフラ

コンポーネント 置き場所
finance-manager 本体 LXC finance-app(推奨)
cloudflared finance-app に同居(Tunnel 導入時)
PostgreSQL LXC finance-db または既存 PG
Grafana 既存 Grafana VM に PostgreSQL データ源を追加
  • Discord → 自宅は Bot の 外向き Gateway(ポート開放不要)
  • スマホ → 自宅の自動取込は後から Cloudflare Tunnel
  • グローバルの inbound ポート開放はしない

会計上の扱い

二重計上を防ぐ

都度チャージ運用のため、チャージと支払いを同じ「支出」にしない。

種別 集計
支出 PayPay 支払い(店舗への残高払い) 使う金額に含める
資金移動 銀行/クレカ → PayPay チャージ 支出に含めない
固定費 楽天カードの引き落とし・サブスク 支出に含める(別カテゴリ可)

AI / フィードバック

項目 方針
モデル Gemini Flash / Flash-Lite(まずは無料枠で可)
役割 分類(支払い/チャージ/固定費)、厳し目コメント、週次レビュー
トーン 厳し目コーチ
Cursor 開発専用。常駐 Bot からは使わない
Gemini API Proxmox 上のサービスが呼び出す運用用キー

想定負荷は支払い数回/日 + 週次数回。個人用途では無料枠で足りる想定。

プロンプトの渡し方(Skills 代替)は Gemini
メール処理の詳細は メール取込

チャネル

Discord(MVP)

詳細は Discord

  • 出口: 厳し目フィードバック
  • 入口(手動): テキスト / 画像添付を Bot が受信し Gemini で抽出
  • 自動取込の本線には使わない(PayPay は Tunnel 直)
  • 例: 「今 ¥680。今日の累計 ¥3,200。このペースだと週末死ぬ」

LINE(将来)

  • Messaging API が必要。無料 Push は月200通で「支払いのたび」に不向き
  • Discord 安定後に検討

Grafana

  • 今日の支出、今週累計、カテゴリ別、(後から)残り予算ゲージ
  • PostgreSQL 直読み(Prometheus は必須にしない)