# 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更新は 405**(Windmill 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 # 白皇集落 変更通知フロー ├── 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) | | `u/antigravity/git_sync` | Git同期 | 30分毎 | ## wm-api.sh コマンド一覧 ```bash ./wm-api.sh version # サーバーバージョン確認 ./wm-api.sh flows # フロー一覧 ./wm-api.sh schedules # スケジュール一覧 ./wm-api.sh get-flow # フロー詳細取得 ./wm-api.sh create-flow # フロー作成 ./wm-api.sh create-schedule # スケジュール作成 ./wm-api.sh run-flow # フロー手動実行 ./wm-api.sh job-status # ジョブ状態確認 ``` ## フローのデプロイ手順 ```bash # 1. flows/*.flow.json を編集 # 2. 削除して再作成(PUTは405のため) curl -sk -X DELETE \ -H "Authorization: Bearer qLJ3VPZ61kTDiIwaUPUu1dXszGrsN1Dh" \ "https://windmill.keinafarm.net/api/w/admins/flows/delete/" curl -sk -X POST \ -H "Authorization: Bearer qLJ3VPZ61kTDiIwaUPUu1dXszGrsN1Dh" \ -H "Content-Type: application/json" \ -d @flows/.flow.json \ "https://windmill.keinafarm.net/api/w/admins/flows/create" # 3. コミット&プッシュ git add flows/.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` | ❌ | 前回確認時刻(ワークフローが自動更新) | ## マスタードキュメント - [白皇集落 Windmill通知ワークフロー](docs/shiraou/20_マスタードキュメント_Windmill通知ワークフロー編.md)