Files
windmill_workflow/CLAUDE.md
2026-04-04 09:15:09 +09:00

6.2 KiB
Raw Permalink Blame History

Windmill Workflow プロジェクト

白皇集落営農組合 統合システム向けの Windmill ワークフロー管理リポジトリ。

環境

項目
Windmillサーバー https://windmill.keinafarm.net
ワークスペース admins
APIトークン wm-api.sh に設定済み
Gitリモート https://gitea.keinafarm.net/akira/windmill_workflow.git

重要な制約

  • wmill CLIは使用不可CE版のグローバルAPI認証制限wm-api.sh または curl で直接REST APIを叩く
  • フローの PUT更新は 405Windmill CE版の制限→ DELETE してから POST で再作成する
  • wmill.get_state() はインラインフロースクリプトで永続化されない→ 状態管理は必ず wmill.get_variable() / set_variable() を使う
  • python3 コマンドは Windows環境で失敗する→ curl の出力は grep等で直接処理する

ディレクトリ構成

windmill_workflow/
├── flows/                          # フロー定義JSON
│   ├── system_heartbeat.flow.json  # Windmill自己診断フロー
│   ├── shiraou_notification.flow.json  # 白皇集落 変更通知フロー
│   └── mail_filter.flow.json       # メールフィルタリングフロー
├── docs/
│   └── shiraou/                    # 白皇集落営農組合関連ドキュメント
│       ├── 19_windmill_通知ワークフロー連携仕様.md  # API仕様書
│       └── 20_マスタードキュメント_Windmill通知ワークフロー編.md  # マスタードキュメント
├── .agent/workflows/               # エージェント作業手順
│   ├── windmill-push.md            # サーバーへのpush手順
│   ├── windmill-pull.md            # サーバーからのpull手順
│   └── windmill-new-script.md      # 新規スクリプト作成手順
├── wm-api.sh                       # Windmill REST APIヘルパー
└── wmill.yaml                      # wmill設定defaultTs: bun

登録済みワークフロー

パス 概要 スケジュール
f/app_custom/system_heartbeat Windmill自己診断 なし(手動)
f/shiraou/shiraou_notification 白皇集落営農 変更通知 5分毎JST
f/mail/mail_filter メールフィルタリングIMAP→LLM→LINE 10分毎JST予定
u/antigravity/git_sync Git同期 30分毎

wm-api.sh コマンド一覧

./wm-api.sh version                        # サーバーバージョン確認
./wm-api.sh flows                          # フロー一覧
./wm-api.sh schedules                      # スケジュール一覧
./wm-api.sh get-flow <path>                # フロー詳細取得
./wm-api.sh create-flow <json-file>        # フロー作成
./wm-api.sh create-schedule <json-file>    # スケジュール作成
./wm-api.sh run-flow <path>                # フロー手動実行
./wm-api.sh job-status <job-id>            # ジョブ状態確認

フローのデプロイ手順

# 1. flows/*.flow.json を編集

# 2. 削除して再作成PUTは405のため
curl -sk -X DELETE \
  -H "Authorization: Bearer qLJ3VPZ61kTDiIwaUPUu1dXszGrsN1Dh" \
  "https://windmill.keinafarm.net/api/w/admins/flows/delete/<path>"

curl -sk -X POST \
  -H "Authorization: Bearer qLJ3VPZ61kTDiIwaUPUu1dXszGrsN1Dh" \
  -H "Content-Type: application/json" \
  -d @flows/<file>.flow.json \
  "https://windmill.keinafarm.net/api/w/admins/flows/create"

# 3. コミット&プッシュ
git add flows/<file>.flow.json
git commit -m "..."
git push origin main

Windmill Variables

変数パス Secret 説明
u/admin/NOTIFICATION_API_KEY shiraou APIキー
u/admin/LINE_CHANNEL_ACCESS_TOKEN LINE Messaging APIトークン
u/admin/LINE_TO LINE通知先IDユーザーまたはグループ
u/admin/SHIRAOU_LAST_CHECKED_AT 前回確認時刻(ワークフローが自動更新)
u/admin/KEINASYSTEM_API_KEY Keinasystem MAIL_API_KEY.envと同じ値
u/admin/KEINASYSTEM_API_URL https://keinafarm.net
u/admin/GEMINI_API_KEY Google Gemini API キーLLM判定用
u/admin/GMAIL_IMAP_USER GmailアカウントのIMAPユーザー名メールアドレス
u/admin/GMAIL_IMAP_PASSWORD GmailのアプリパスワードIMAPパスワード
u/admin/MAIL_FILTER_GMAIL_LAST_UID Gmail最終処理UIDワークフローが自動更新
u/admin/HOTMAIL_IMAP_USER Hotmail IMAPユーザー名有効化時に登録
u/admin/HOTMAIL_IMAP_PASSWORD Hotmail IMAPパスワード有効化時に登録
u/admin/MAIL_FILTER_HOTMAIL_LAST_UID Hotmail最終処理UID有効化時に登録
u/admin/XSERVER_IMAP_USER Xserver IMAPユーザー名有効化時に登録
u/admin/XSERVER_IMAP_PASSWORD Xserver IMAPパスワード有効化時に登録
u/admin/MAIL_FILTER_XSERVER_LAST_UID Xserver最終処理UID有効化時に登録

マスタードキュメント

メールフィルタリング — アカウント有効化手順

Gmail → Hotmail → Xserver の順で段階的に有効化する。

Gmail 初期設定

  1. GoogleアカウントでIMAPを有効化Googleアカウント設定 → セキュリティ → アプリパスワード)
  2. Windmill Variables に GMAIL_IMAP_USER, GMAIL_IMAP_PASSWORD を登録
  3. フローを手動実行(初回: 既存メールスキップ、最大UIDを記録
  4. スケジュール登録10分毎

Hotmail/Xserver 追加時

  1. Windmill Variables に対応する変数を登録
  2. flows/mail_filter.flow.json の該当アカウントの "enabled": falsetrue に変更
  3. フローを DELETE → POST で再デプロイ