Slack通知設定ガイド
NexusCoreの実行完了通知をSlackに送信するための設定方法です。
概要
NexusCoreは、以下のタイミングでSlack通知を送信できます:
- Self-Healing Service: PR単位の自己修復実行が完了したとき
- Orchestrator: フルプロジェクト実行が完了したとき
AndroidスマホでもSlackアプリをインストールしていれば、同じ通知を受信できます。
セットアップ手順
1. Slack Incoming Webhookの作成
- Slack API にアクセス
- 「Create New App」をクリック
- 「From scratch」を選択
- App名とワークスペースを選択
- 「Incoming Webhooks」を有効化
- 「Add New Webhook to Workspace」をクリック
- 通知を送信したいチャンネルを選択
- Webhook URLをコピー(例:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX)
2. 環境変数の設定
プロジェクトルートの .env ファイルに以下を追加:
NEXUS_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
または、環境変数として直接設定:
export NEXUS_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
3. 依存関係のインストール
pip install requests
または、requirements.txtに含まれているので:
pip install -r requirements.txt
通知の種類
Self-Healing通知
Self-Healing ServiceがPRの自己修復を完了したときに送信されます。
通知内容:
- ✅ 成功(fixed): パッチ適用後、テストが通過
- ⚠️ 警告(not_fixed): パッチ適用したがテストが失敗、またはパッチ生成失敗
- ℹ️ 情報(no_issues): テストが既に通過していた
- ❌ エラー(error): 実行中にエラーが発生
通知に含まれる情報:
- リポジトリ名
- PR番号
- 実行ID
- サマリー
- 詳細情報(オプション)
Orchestrator通知
Orchestratorがフルプロジェクト実行を完了したときに送信されます。
通知内容:
- ✅ 成功(success): 正常に完了
- ❌ エラー(error): 実行中にエラーが発生
- ⏸️ 停止(stopped): ユーザーによって中断された
通知に含まれる情報:
- プロジェクトパス
- セッションID
- 要件
- 詳細情報(オプション)
カスタマイズ
通知を無効化する
環境変数を削除または空に設定:
unset NEXUS_SLACK_WEBHOOK_URL
プログラムから通知を送信
from nexuscore.core.notifier import SlackNotifier
# Notifierを初期化
notifier = SlackNotifier(webhook_url="https://hooks.slack.com/services/YOUR/WEBHOOK/URL")
# カスタム通知を送信
notifier.send(
title="カスタム通知",
message="これはカスタムメッセージです",
status="info",
details={"key": "value"},
)
atelier-kyo-manager など他のプロジェクトから通知を送信
tools/notify_slack.py スクリプトを使用して、任意のプロジェクトから通知を送信できます:
# 成功通知
python tools/notify_slack.py \
--project "atelier-kyo-manager" \
--task "実装完了: Stage 3A-3" \
--status "success"
# エラー通知(詳細情報付き)
python tools/notify_slack.py \
--project "atelier-kyo-manager" \
--task "テスト失敗" \
--status "error" \
--detail "エラー内容: TypeError" \
--detail "ファイル: navigation_driver.py"
# 警告通知
python tools/notify_slack.py \
--project "atelier-kyo-manager" \
--task "リファクタリング完了" \
--status "warning" \
--detail "変更ファイル数: 5"
または、Pythonコードから直接呼び出し:
import sys
from pathlib import Path
# NexusCoreのパスを追加
nexuscore_path = Path("/home/yn441611/NexusCore/src")
sys.path.insert(0, str(nexuscore_path))
from nexuscore.core.notifier import get_notifier
notifier = get_notifier()
if notifier:
notifier.notify_project_complete(
project_name="atelier-kyo-manager",
task_description="実装完了: Stage 3A-3",
status="success",
details={"変更ファイル": "navigation_driver.py"},
)
トラブルシューティング
通知が送信されない
1. テスト通知を送信して確認
まず、テスト通知スクリプトを実行して、通知機能が正常に動作するか確認します:
cd /home/yn441611/NexusCore
source myenv_linux/bin/activate
python tools/test_slack_notification.py
このスクリプトは以下のテストを実行します:
- 基本通知(info)
- 成功通知
- エラー通知
- Orchestrator 完了通知
- プロジェクト完了通知
2. 環境変数の確認
# 環境変数が設定されているか確認
echo $NEXUS_SLACK_WEBHOOK_URL
# .env ファイルを確認
cat .env | grep SLACK
環境変数が設定されていない場合:
# .env ファイルに追加
echo "NEXUS_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL" >> .env
# または直接設定
export NEXUS_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
3. Webhook URLの確認
- URLが正しいか確認(
https://hooks.slack.com/services/...の形式) - Webhookが有効になっているか確認(Slack API の設定画面で確認)
- Webhook URLが期限切れでないか確認
4. 依存関係の確認
# requests ライブラリがインストールされているか確認
pip list | grep requests
# インストールされていない場合
pip install requests
5. ログの確認
NexusCoreのログに以下のメッセージが表示されていないか確認:
# ログファイルを確認
grep -i "slack" logs/*.log
# または実行時のログを確認
# "Failed to send Slack notification" が表示されていないか
# "Slack通知を送信しました" が表示されているか
6. 手動で通知を送信してテスト
# 簡単なテスト通知を送信
python tools/notify_slack.py \
--project "NexusCore" \
--task "テスト通知" \
--status "info"
7. よくある問題と解決方法
問題: 環境変数が設定されているのに通知が来ない
- Flask アプリケーションや Celery Worker を再起動してください
- 環境変数はプロセス起動時に読み込まれるため、設定後に再起動が必要です
問題: 通知は送信されているが Slack で表示されない
- Slack の通知設定を確認してください
- チャンネルに Webhook が正しく設定されているか確認してください
- Slack アプリの通知権限を確認してください
問題: Android スマホで通知が来ない
- Slack アプリがインストールされているか確認
- プッシュ通知が有効になっているか確認
- チャンネルをフォローしているか確認
Androidスマホで通知を受信する
- Slackアプリをインストール
- ワークスペースにログイン
- 通知設定で「プッシュ通知」を有効化
- 通知チャンネルをフォロー(必要に応じて)
セキュリティ
- Webhook URLは機密情報です。
.envファイルに保存し、Gitにコミットしないでください .gitignoreに.envが含まれていることを確認してください- Webhook URLが漏洩した場合は、SlackでWebhookを無効化し、新しいURLを生成してください