diff --git a/.github/workflows/execution-report-heartbeat.yml b/.github/workflows/execution-report-heartbeat.yml index 138d084..b3ebbec 100644 --- a/.github/workflows/execution-report-heartbeat.yml +++ b/.github/workflows/execution-report-heartbeat.yml @@ -54,10 +54,7 @@ jobs: RUNTIME_HEARTBEAT_REJECT_STATUSES: ${{ vars.RUNTIME_HEARTBEAT_REJECT_STATUSES }} CLOUD_RUN_SERVICE: ${{ vars.CLOUD_RUN_SERVICE }} GLOBAL_TELEGRAM_CHAT_ID: ${{ vars.GLOBAL_TELEGRAM_CHAT_ID }} - CRISIS_ALERT_TELEGRAM_CHAT_IDS: ${{ vars.CRISIS_ALERT_TELEGRAM_CHAT_IDS }} - CRISIS_ALERT_TELEGRAM_API_BASE_URL: ${{ vars.CRISIS_ALERT_TELEGRAM_API_BASE_URL }} TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} - CRISIS_ALERT_TELEGRAM_BOT_TOKEN: ${{ secrets.CRISIS_ALERT_TELEGRAM_BOT_TOKEN }} steps: - name: Checkout repository uses: actions/checkout@v6 diff --git a/.github/workflows/runtime-guard.yml b/.github/workflows/runtime-guard.yml index 61559c2..833bd2d 100644 --- a/.github/workflows/runtime-guard.yml +++ b/.github/workflows/runtime-guard.yml @@ -59,10 +59,7 @@ jobs: RUNTIME_GUARD_SCHEDULER_JOB_PATTERN: ${{ vars.RUNTIME_GUARD_SCHEDULER_JOB_PATTERN || vars.CLOUD_RUN_SERVICE }} CLOUD_RUN_SERVICE: ${{ vars.CLOUD_RUN_SERVICE }} GLOBAL_TELEGRAM_CHAT_ID: ${{ vars.GLOBAL_TELEGRAM_CHAT_ID }} - CRISIS_ALERT_TELEGRAM_CHAT_IDS: ${{ vars.CRISIS_ALERT_TELEGRAM_CHAT_IDS }} - CRISIS_ALERT_TELEGRAM_API_BASE_URL: ${{ vars.CRISIS_ALERT_TELEGRAM_API_BASE_URL }} TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} - CRISIS_ALERT_TELEGRAM_BOT_TOKEN: ${{ secrets.CRISIS_ALERT_TELEGRAM_BOT_TOKEN }} steps: - name: Checkout repository uses: actions/checkout@v6 diff --git a/.github/workflows/sync-cloud-run-env.yml b/.github/workflows/sync-cloud-run-env.yml index 1c46ff8..ec414cc 100644 --- a/.github/workflows/sync-cloud-run-env.yml +++ b/.github/workflows/sync-cloud-run-env.yml @@ -114,36 +114,36 @@ jobs: LONGBRIDGE_MIN_RESERVED_CASH_USD: ${{ vars.LONGBRIDGE_MIN_RESERVED_CASH_USD }} LONGBRIDGE_RESERVED_CASH_RATIO: ${{ vars.LONGBRIDGE_RESERVED_CASH_RATIO }} LONGBRIDGE_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD: ${{ vars.LONGBRIDGE_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD }} - CRISIS_ALERT_CHANNELS: ${{ vars.CRISIS_ALERT_CHANNELS }} - CRISIS_ALERT_EMAIL_RECIPIENTS: ${{ vars.CRISIS_ALERT_EMAIL_RECIPIENTS }} - CRISIS_ALERT_EMAIL_SENDER_EMAIL: ${{ vars.CRISIS_ALERT_EMAIL_SENDER_EMAIL }} - CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME: ${{ vars.CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME }} - CRISIS_ALERT_EMAIL_SMTP_HOST: ${{ vars.CRISIS_ALERT_EMAIL_SMTP_HOST }} - CRISIS_ALERT_EMAIL_SMTP_PORT: ${{ vars.CRISIS_ALERT_EMAIL_SMTP_PORT }} - CRISIS_ALERT_EMAIL_SMTP_SECURITY: ${{ vars.CRISIS_ALERT_EMAIL_SMTP_SECURITY }} - CRISIS_ALERT_SMS_RECIPIENTS: ${{ vars.CRISIS_ALERT_SMS_RECIPIENTS }} - CRISIS_ALERT_SMS_PROVIDER: ${{ vars.CRISIS_ALERT_SMS_PROVIDER }} - CRISIS_ALERT_SMS_ACCOUNT_ID: ${{ vars.CRISIS_ALERT_SMS_ACCOUNT_ID }} - CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME }} - CRISIS_ALERT_SMS_SENDER: ${{ vars.CRISIS_ALERT_SMS_SENDER }} - CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID: ${{ vars.CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID }} - CRISIS_ALERT_SMS_API_BASE_URL: ${{ vars.CRISIS_ALERT_SMS_API_BASE_URL }} - CRISIS_ALERT_SMS_BODY_MAX_CHARS: ${{ vars.CRISIS_ALERT_SMS_BODY_MAX_CHARS }} - CRISIS_ALERT_PUSH_RECIPIENTS: ${{ vars.CRISIS_ALERT_PUSH_RECIPIENTS }} - CRISIS_ALERT_PUSH_PROVIDER: ${{ vars.CRISIS_ALERT_PUSH_PROVIDER }} - CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME }} - CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME }} - CRISIS_ALERT_PUSH_API_BASE_URL: ${{ vars.CRISIS_ALERT_PUSH_API_BASE_URL }} - CRISIS_ALERT_PUSH_DEVICE: ${{ vars.CRISIS_ALERT_PUSH_DEVICE }} - CRISIS_ALERT_PUSH_PRIORITY: ${{ vars.CRISIS_ALERT_PUSH_PRIORITY }} - CRISIS_ALERT_PUSH_TAGS: ${{ vars.CRISIS_ALERT_PUSH_TAGS }} - CRISIS_ALERT_PUSH_BODY_MAX_CHARS: ${{ vars.CRISIS_ALERT_PUSH_BODY_MAX_CHARS }} - CRISIS_ALERT_TELEGRAM_CHAT_IDS: ${{ vars.CRISIS_ALERT_TELEGRAM_CHAT_IDS }} - CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME }} - CRISIS_ALERT_TELEGRAM_API_BASE_URL: ${{ vars.CRISIS_ALERT_TELEGRAM_API_BASE_URL }} - CRISIS_ALERT_TELEGRAM_PARSE_MODE: ${{ vars.CRISIS_ALERT_TELEGRAM_PARSE_MODE }} - CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW: ${{ vars.CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW }} - CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS: ${{ vars.CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS }} + STRATEGY_PLUGIN_ALERT_CHANNELS: ${{ vars.STRATEGY_PLUGIN_ALERT_CHANNELS }} + STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS }} + STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL }} + STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME }} + STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST }} + STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT }} + STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY }} + STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS }} + STRATEGY_PLUGIN_ALERT_SMS_PROVIDER: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_PROVIDER }} + STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID }} + STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME }} + STRATEGY_PLUGIN_ALERT_SMS_SENDER: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_SENDER }} + STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID }} + STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL }} + STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS }} + STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS }} + STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER }} + STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME }} + STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME }} + STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL }} + STRATEGY_PLUGIN_ALERT_PUSH_DEVICE: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_DEVICE }} + STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY }} + STRATEGY_PLUGIN_ALERT_PUSH_TAGS: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_TAGS }} + STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS }} # Optional strategy overrides; leave unset to inherit the UsEquityStrategies profile defaults. INCOME_THRESHOLD_USD: ${{ vars.INCOME_THRESHOLD_USD }} QQQI_INCOME_RATIO: ${{ vars.QQQI_INCOME_RATIO }} @@ -152,11 +152,11 @@ jobs: LONGBRIDGE_DRY_RUN_ONLY: ${{ vars.LONGBRIDGE_DRY_RUN_ONLY }} GLOBAL_TELEGRAM_CHAT_ID: ${{ vars.GLOBAL_TELEGRAM_CHAT_ID }} TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} - CRISIS_ALERT_EMAIL_SENDER_PASSWORD: ${{ secrets.CRISIS_ALERT_EMAIL_SENDER_PASSWORD }} - CRISIS_ALERT_SMS_AUTH_TOKEN: ${{ secrets.CRISIS_ALERT_SMS_AUTH_TOKEN }} - CRISIS_ALERT_PUSH_APP_TOKEN: ${{ secrets.CRISIS_ALERT_PUSH_APP_TOKEN }} - CRISIS_ALERT_PUSH_ACCESS_TOKEN: ${{ secrets.CRISIS_ALERT_PUSH_ACCESS_TOKEN }} - CRISIS_ALERT_TELEGRAM_BOT_TOKEN: ${{ secrets.CRISIS_ALERT_TELEGRAM_BOT_TOKEN }} + STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD: ${{ secrets.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD }} + STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN }} + STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN }} + STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN }} + STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN }} steps: - name: Check whether Cloud Run automation is enabled id: config @@ -562,11 +562,46 @@ jobs: "CRISIS_ALERT_SMTP_PASSWORD" "CRISIS_ALERT_SMTP_STARTTLS" "CRISIS_ALERT_SMTP_SSL" + "CRISIS_ALERT_CHANNELS" + "CRISIS_ALERT_EMAIL_RECIPIENTS" + "CRISIS_ALERT_EMAIL_SENDER_EMAIL" + "CRISIS_ALERT_EMAIL_SENDER_PASSWORD" + "CRISIS_ALERT_EMAIL_SMTP_HOST" + "CRISIS_ALERT_EMAIL_SMTP_PORT" + "CRISIS_ALERT_EMAIL_SMTP_SECURITY" + "CRISIS_ALERT_SMS_RECIPIENTS" + "CRISIS_ALERT_SMS_PROVIDER" + "CRISIS_ALERT_SMS_ACCOUNT_ID" + "CRISIS_ALERT_SMS_AUTH_TOKEN" + "CRISIS_ALERT_SMS_SENDER" + "CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID" + "CRISIS_ALERT_SMS_API_BASE_URL" + "CRISIS_ALERT_SMS_BODY_MAX_CHARS" + "CRISIS_ALERT_PUSH_RECIPIENTS" + "CRISIS_ALERT_PUSH_PROVIDER" + "CRISIS_ALERT_PUSH_APP_TOKEN" + "CRISIS_ALERT_PUSH_ACCESS_TOKEN" + "CRISIS_ALERT_PUSH_API_BASE_URL" + "CRISIS_ALERT_PUSH_DEVICE" + "CRISIS_ALERT_PUSH_PRIORITY" + "CRISIS_ALERT_PUSH_TAGS" + "CRISIS_ALERT_PUSH_BODY_MAX_CHARS" + "CRISIS_ALERT_TELEGRAM_CHAT_IDS" + "CRISIS_ALERT_TELEGRAM_BOT_TOKEN" + "CRISIS_ALERT_TELEGRAM_API_BASE_URL" + "CRISIS_ALERT_TELEGRAM_PARSE_MODE" + "CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW" + "CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS" ) remove_secret_vars=( "CRISIS_ALERT_SMTP_PASSWORD" "CRISIS_ALERT_GOOGLE_VOICE_GMAIL_APP_PASSWORD" "CRISIS_ALERT_GOOGLE_VOICE_SENDER_PASSWORD" + "CRISIS_ALERT_EMAIL_SENDER_PASSWORD" + "CRISIS_ALERT_SMS_AUTH_TOKEN" + "CRISIS_ALERT_PUSH_APP_TOKEN" + "CRISIS_ALERT_PUSH_ACCESS_TOKEN" + "CRISIS_ALERT_TELEGRAM_BOT_TOKEN" ) if [ -n "${TELEGRAM_TOKEN_SECRET_NAME:-}" ]; then @@ -577,59 +612,59 @@ jobs: remove_secret_vars+=("TELEGRAM_TOKEN") fi - if [ -n "${CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME:-}" ]; then - secret_pairs+=("CRISIS_ALERT_EMAIL_SENDER_PASSWORD=${CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME}:latest") - remove_env_vars+=("CRISIS_ALERT_EMAIL_SENDER_PASSWORD") - elif [ -n "${CRISIS_ALERT_EMAIL_SENDER_PASSWORD:-}" ]; then - env_pairs+=("CRISIS_ALERT_EMAIL_SENDER_PASSWORD=${CRISIS_ALERT_EMAIL_SENDER_PASSWORD}") - remove_secret_vars+=("CRISIS_ALERT_EMAIL_SENDER_PASSWORD") + if [ -n "${STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME:-}" ]; then + secret_pairs+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD=${STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME}:latest") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD") + elif [ -n "${STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD=${STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD}") + remove_secret_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD") else - remove_env_vars+=("CRISIS_ALERT_EMAIL_SENDER_PASSWORD") - remove_secret_vars+=("CRISIS_ALERT_EMAIL_SENDER_PASSWORD") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD") + remove_secret_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD") fi - if [ -n "${CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME:-}" ]; then - secret_pairs+=("CRISIS_ALERT_SMS_AUTH_TOKEN=${CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME}:latest") - remove_env_vars+=("CRISIS_ALERT_SMS_AUTH_TOKEN") - elif [ -n "${CRISIS_ALERT_SMS_AUTH_TOKEN:-}" ]; then - env_pairs+=("CRISIS_ALERT_SMS_AUTH_TOKEN=${CRISIS_ALERT_SMS_AUTH_TOKEN}") - remove_secret_vars+=("CRISIS_ALERT_SMS_AUTH_TOKEN") + if [ -n "${STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME:-}" ]; then + secret_pairs+=("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN=${STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME}:latest") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN") + elif [ -n "${STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN=${STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN}") + remove_secret_vars+=("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN") else - remove_env_vars+=("CRISIS_ALERT_SMS_AUTH_TOKEN") - remove_secret_vars+=("CRISIS_ALERT_SMS_AUTH_TOKEN") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN") + remove_secret_vars+=("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN") fi - if [ -n "${CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME:-}" ]; then - secret_pairs+=("CRISIS_ALERT_PUSH_APP_TOKEN=${CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME}:latest") - remove_env_vars+=("CRISIS_ALERT_PUSH_APP_TOKEN") - elif [ -n "${CRISIS_ALERT_PUSH_APP_TOKEN:-}" ]; then - env_pairs+=("CRISIS_ALERT_PUSH_APP_TOKEN=${CRISIS_ALERT_PUSH_APP_TOKEN}") - remove_secret_vars+=("CRISIS_ALERT_PUSH_APP_TOKEN") + if [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME:-}" ]; then + secret_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN=${STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME}:latest") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN") + elif [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN=${STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN}") + remove_secret_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN") else - remove_env_vars+=("CRISIS_ALERT_PUSH_APP_TOKEN") - remove_secret_vars+=("CRISIS_ALERT_PUSH_APP_TOKEN") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN") + remove_secret_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN") fi - if [ -n "${CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME:-}" ]; then - secret_pairs+=("CRISIS_ALERT_PUSH_ACCESS_TOKEN=${CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME}:latest") - remove_env_vars+=("CRISIS_ALERT_PUSH_ACCESS_TOKEN") - elif [ -n "${CRISIS_ALERT_PUSH_ACCESS_TOKEN:-}" ]; then - env_pairs+=("CRISIS_ALERT_PUSH_ACCESS_TOKEN=${CRISIS_ALERT_PUSH_ACCESS_TOKEN}") - remove_secret_vars+=("CRISIS_ALERT_PUSH_ACCESS_TOKEN") + if [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME:-}" ]; then + secret_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN=${STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME}:latest") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN") + elif [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN=${STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN}") + remove_secret_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN") else - remove_env_vars+=("CRISIS_ALERT_PUSH_ACCESS_TOKEN") - remove_secret_vars+=("CRISIS_ALERT_PUSH_ACCESS_TOKEN") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN") + remove_secret_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN") fi - if [ -n "${CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME:-}" ]; then - secret_pairs+=("CRISIS_ALERT_TELEGRAM_BOT_TOKEN=${CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME}:latest") - remove_env_vars+=("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") - elif [ -n "${CRISIS_ALERT_TELEGRAM_BOT_TOKEN:-}" ]; then - env_pairs+=("CRISIS_ALERT_TELEGRAM_BOT_TOKEN=${CRISIS_ALERT_TELEGRAM_BOT_TOKEN}") - remove_secret_vars+=("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") + if [ -n "${STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME:-}" ]; then + secret_pairs+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN=${STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME}:latest") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN") + elif [ -n "${STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN=${STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN}") + remove_secret_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN") else - remove_env_vars+=("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") - remove_secret_vars+=("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN") + remove_secret_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN") fi secret_pairs+=("LONGPORT_APP_KEY=${LONGPORT_APP_KEY_SECRET_NAME}:latest") @@ -716,154 +751,154 @@ jobs: remove_env_vars+=("LONGBRIDGE_RESERVED_CASH_RATIO") fi - if [ -n "${CRISIS_ALERT_CHANNELS:-}" ]; then - env_pairs+=("CRISIS_ALERT_CHANNELS=${CRISIS_ALERT_CHANNELS}") + if [ -n "${STRATEGY_PLUGIN_ALERT_CHANNELS:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_CHANNELS=${STRATEGY_PLUGIN_ALERT_CHANNELS}") else - remove_env_vars+=("CRISIS_ALERT_CHANNELS") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_CHANNELS") fi - if [ -n "${CRISIS_ALERT_EMAIL_RECIPIENTS:-}" ]; then - env_pairs+=("CRISIS_ALERT_EMAIL_RECIPIENTS=${CRISIS_ALERT_EMAIL_RECIPIENTS}") + if [ -n "${STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS=${STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS}") else - remove_env_vars+=("CRISIS_ALERT_EMAIL_RECIPIENTS") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS") fi - if [ -n "${CRISIS_ALERT_EMAIL_SENDER_EMAIL:-}" ]; then - env_pairs+=("CRISIS_ALERT_EMAIL_SENDER_EMAIL=${CRISIS_ALERT_EMAIL_SENDER_EMAIL}") + if [ -n "${STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL=${STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL}") else - remove_env_vars+=("CRISIS_ALERT_EMAIL_SENDER_EMAIL") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL") fi - if [ -n "${CRISIS_ALERT_EMAIL_SMTP_HOST:-}" ]; then - env_pairs+=("CRISIS_ALERT_EMAIL_SMTP_HOST=${CRISIS_ALERT_EMAIL_SMTP_HOST}") + if [ -n "${STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST=${STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST}") else - remove_env_vars+=("CRISIS_ALERT_EMAIL_SMTP_HOST") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST") fi - if [ -n "${CRISIS_ALERT_EMAIL_SMTP_PORT:-}" ]; then - env_pairs+=("CRISIS_ALERT_EMAIL_SMTP_PORT=${CRISIS_ALERT_EMAIL_SMTP_PORT}") + if [ -n "${STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT=${STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT}") else - remove_env_vars+=("CRISIS_ALERT_EMAIL_SMTP_PORT") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT") fi - if [ -n "${CRISIS_ALERT_EMAIL_SMTP_SECURITY:-}" ]; then - env_pairs+=("CRISIS_ALERT_EMAIL_SMTP_SECURITY=${CRISIS_ALERT_EMAIL_SMTP_SECURITY}") + if [ -n "${STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY=${STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY}") else - remove_env_vars+=("CRISIS_ALERT_EMAIL_SMTP_SECURITY") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY") fi - if [ -n "${CRISIS_ALERT_SMS_RECIPIENTS:-}" ]; then - env_pairs+=("CRISIS_ALERT_SMS_RECIPIENTS=${CRISIS_ALERT_SMS_RECIPIENTS}") + if [ -n "${STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS=${STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS}") else - remove_env_vars+=("CRISIS_ALERT_SMS_RECIPIENTS") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS") fi - if [ -n "${CRISIS_ALERT_SMS_PROVIDER:-}" ]; then - env_pairs+=("CRISIS_ALERT_SMS_PROVIDER=${CRISIS_ALERT_SMS_PROVIDER}") + if [ -n "${STRATEGY_PLUGIN_ALERT_SMS_PROVIDER:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_SMS_PROVIDER=${STRATEGY_PLUGIN_ALERT_SMS_PROVIDER}") else - remove_env_vars+=("CRISIS_ALERT_SMS_PROVIDER") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_PROVIDER") fi - if [ -n "${CRISIS_ALERT_SMS_ACCOUNT_ID:-}" ]; then - env_pairs+=("CRISIS_ALERT_SMS_ACCOUNT_ID=${CRISIS_ALERT_SMS_ACCOUNT_ID}") + if [ -n "${STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID=${STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID}") else - remove_env_vars+=("CRISIS_ALERT_SMS_ACCOUNT_ID") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID") fi - if [ -n "${CRISIS_ALERT_SMS_SENDER:-}" ]; then - env_pairs+=("CRISIS_ALERT_SMS_SENDER=${CRISIS_ALERT_SMS_SENDER}") + if [ -n "${STRATEGY_PLUGIN_ALERT_SMS_SENDER:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_SMS_SENDER=${STRATEGY_PLUGIN_ALERT_SMS_SENDER}") else - remove_env_vars+=("CRISIS_ALERT_SMS_SENDER") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_SENDER") fi - if [ -n "${CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID:-}" ]; then - env_pairs+=("CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID=${CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID}") + if [ -n "${STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID=${STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID}") else - remove_env_vars+=("CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID") fi - if [ -n "${CRISIS_ALERT_SMS_API_BASE_URL:-}" ]; then - env_pairs+=("CRISIS_ALERT_SMS_API_BASE_URL=${CRISIS_ALERT_SMS_API_BASE_URL}") + if [ -n "${STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL=${STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL}") else - remove_env_vars+=("CRISIS_ALERT_SMS_API_BASE_URL") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL") fi - if [ -n "${CRISIS_ALERT_SMS_BODY_MAX_CHARS:-}" ]; then - env_pairs+=("CRISIS_ALERT_SMS_BODY_MAX_CHARS=${CRISIS_ALERT_SMS_BODY_MAX_CHARS}") + if [ -n "${STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS=${STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS}") else - remove_env_vars+=("CRISIS_ALERT_SMS_BODY_MAX_CHARS") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS") fi - if [ -n "${CRISIS_ALERT_PUSH_RECIPIENTS:-}" ]; then - env_pairs+=("CRISIS_ALERT_PUSH_RECIPIENTS=${CRISIS_ALERT_PUSH_RECIPIENTS}") + if [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS=${STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS}") else - remove_env_vars+=("CRISIS_ALERT_PUSH_RECIPIENTS") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS") fi - if [ -n "${CRISIS_ALERT_PUSH_PROVIDER:-}" ]; then - env_pairs+=("CRISIS_ALERT_PUSH_PROVIDER=${CRISIS_ALERT_PUSH_PROVIDER}") + if [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER=${STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER}") else - remove_env_vars+=("CRISIS_ALERT_PUSH_PROVIDER") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER") fi - if [ -n "${CRISIS_ALERT_PUSH_API_BASE_URL:-}" ]; then - env_pairs+=("CRISIS_ALERT_PUSH_API_BASE_URL=${CRISIS_ALERT_PUSH_API_BASE_URL}") + if [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL=${STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL}") else - remove_env_vars+=("CRISIS_ALERT_PUSH_API_BASE_URL") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL") fi - if [ -n "${CRISIS_ALERT_PUSH_DEVICE:-}" ]; then - env_pairs+=("CRISIS_ALERT_PUSH_DEVICE=${CRISIS_ALERT_PUSH_DEVICE}") + if [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_DEVICE:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_DEVICE=${STRATEGY_PLUGIN_ALERT_PUSH_DEVICE}") else - remove_env_vars+=("CRISIS_ALERT_PUSH_DEVICE") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_DEVICE") fi - if [ -n "${CRISIS_ALERT_PUSH_PRIORITY:-}" ]; then - env_pairs+=("CRISIS_ALERT_PUSH_PRIORITY=${CRISIS_ALERT_PUSH_PRIORITY}") + if [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY=${STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY}") else - remove_env_vars+=("CRISIS_ALERT_PUSH_PRIORITY") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY") fi - if [ -n "${CRISIS_ALERT_PUSH_TAGS:-}" ]; then - env_pairs+=("CRISIS_ALERT_PUSH_TAGS=${CRISIS_ALERT_PUSH_TAGS}") + if [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_TAGS:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_TAGS=${STRATEGY_PLUGIN_ALERT_PUSH_TAGS}") else - remove_env_vars+=("CRISIS_ALERT_PUSH_TAGS") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_TAGS") fi - if [ -n "${CRISIS_ALERT_PUSH_BODY_MAX_CHARS:-}" ]; then - env_pairs+=("CRISIS_ALERT_PUSH_BODY_MAX_CHARS=${CRISIS_ALERT_PUSH_BODY_MAX_CHARS}") + if [ -n "${STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS=${STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS}") else - remove_env_vars+=("CRISIS_ALERT_PUSH_BODY_MAX_CHARS") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS") fi - if [ -n "${CRISIS_ALERT_TELEGRAM_CHAT_IDS:-}" ]; then - env_pairs+=("CRISIS_ALERT_TELEGRAM_CHAT_IDS=${CRISIS_ALERT_TELEGRAM_CHAT_IDS}") + if [ -n "${STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS=${STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS}") else - remove_env_vars+=("CRISIS_ALERT_TELEGRAM_CHAT_IDS") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS") fi - if [ -n "${CRISIS_ALERT_TELEGRAM_API_BASE_URL:-}" ]; then - env_pairs+=("CRISIS_ALERT_TELEGRAM_API_BASE_URL=${CRISIS_ALERT_TELEGRAM_API_BASE_URL}") + if [ -n "${STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL=${STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL}") else - remove_env_vars+=("CRISIS_ALERT_TELEGRAM_API_BASE_URL") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL") fi - if [ -n "${CRISIS_ALERT_TELEGRAM_PARSE_MODE:-}" ]; then - env_pairs+=("CRISIS_ALERT_TELEGRAM_PARSE_MODE=${CRISIS_ALERT_TELEGRAM_PARSE_MODE}") + if [ -n "${STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE=${STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE}") else - remove_env_vars+=("CRISIS_ALERT_TELEGRAM_PARSE_MODE") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE") fi - if [ -n "${CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW:-}" ]; then - env_pairs+=("CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW=${CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW}") + if [ -n "${STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW=${STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW}") else - remove_env_vars+=("CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW") fi - if [ -n "${CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS:-}" ]; then - env_pairs+=("CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS=${CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS}") + if [ -n "${STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS:-}" ]; then + env_pairs+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS=${STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS}") else - remove_env_vars+=("CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS") + remove_env_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS") fi if [ -n "${LONGBRIDGE_DRY_RUN_ONLY:-}" ]; then diff --git a/main.py b/main.py index 14f7087..b139051 100644 --- a/main.py +++ b/main.py @@ -313,10 +313,6 @@ def _runtime_error_notification_targets() -> tuple[tuple[str, str], ...]: targets: list[tuple[str, str]] = [] if TG_TOKEN and TG_CHAT_ID: targets.append((TG_TOKEN, TG_CHAT_ID)) - crisis_token = os.getenv("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") - for chat_id in _split_env_list(os.getenv("CRISIS_ALERT_TELEGRAM_CHAT_IDS")): - if crisis_token and chat_id: - targets.append((crisis_token, chat_id)) seen: set[tuple[str, str]] = set() unique_targets: list[tuple[str, str]] = [] diff --git a/requirements.txt b/requirements.txt index 9327b80..7ba92d1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ flask gunicorn -quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@v0.7.37 +quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@3b6a0a9bedde72773e188041e0dc48516b38aadc us-equity-strategies @ git+https://github.com/QuantStrategyLab/UsEquityStrategies.git@v0.7.52 hk-equity-strategies @ git+https://github.com/QuantStrategyLab/HkEquityStrategies.git@v0.4.3 pandas diff --git a/runtime_config_support.py b/runtime_config_support.py index 7867018..62e24f2 100644 --- a/runtime_config_support.py +++ b/runtime_config_support.py @@ -69,36 +69,36 @@ class PlatformRuntimeSettings: strategy_config_path: str | None = None strategy_config_source: str | None = None strategy_plugin_mounts_json: str | None = None - crisis_alert_channels: tuple[str, ...] = () - crisis_alert_email_recipients: tuple[str, ...] = () - crisis_alert_email_sender_email: str | None = None - crisis_alert_email_sender_password: str | None = None - crisis_alert_email_smtp_host: str | None = None - crisis_alert_email_smtp_port: str | None = None - crisis_alert_email_smtp_security: str | None = None - crisis_alert_sms_recipients: tuple[str, ...] = () - crisis_alert_sms_provider: str | None = None - crisis_alert_sms_account_id: str | None = None - crisis_alert_sms_auth_token: str | None = None - crisis_alert_sms_sender: str | None = None - crisis_alert_sms_messaging_service_id: str | None = None - crisis_alert_sms_api_base_url: str | None = None - crisis_alert_sms_body_max_chars: str | None = None - crisis_alert_push_recipients: tuple[str, ...] = () - crisis_alert_push_provider: str | None = None - crisis_alert_push_app_token: str | None = None - crisis_alert_push_access_token: str | None = None - crisis_alert_push_api_base_url: str | None = None - crisis_alert_push_device: str | None = None - crisis_alert_push_priority: str | None = None - crisis_alert_push_tags: str | None = None - crisis_alert_push_body_max_chars: str | None = None - crisis_alert_telegram_chat_ids: tuple[str, ...] = () - crisis_alert_telegram_bot_token: str | None = None - crisis_alert_telegram_api_base_url: str | None = None - crisis_alert_telegram_parse_mode: str | None = None - crisis_alert_telegram_disable_web_page_preview: str | None = None - crisis_alert_telegram_body_max_chars: str | None = None + strategy_plugin_alert_channels: tuple[str, ...] = () + strategy_plugin_alert_email_recipients: tuple[str, ...] = () + strategy_plugin_alert_email_sender_email: str | None = None + strategy_plugin_alert_email_sender_password: str | None = None + strategy_plugin_alert_email_smtp_host: str | None = None + strategy_plugin_alert_email_smtp_port: str | None = None + strategy_plugin_alert_email_smtp_security: str | None = None + strategy_plugin_alert_sms_recipients: tuple[str, ...] = () + strategy_plugin_alert_sms_provider: str | None = None + strategy_plugin_alert_sms_account_id: str | None = None + strategy_plugin_alert_sms_auth_token: str | None = None + strategy_plugin_alert_sms_sender: str | None = None + strategy_plugin_alert_sms_messaging_service_id: str | None = None + strategy_plugin_alert_sms_api_base_url: str | None = None + strategy_plugin_alert_sms_body_max_chars: str | None = None + strategy_plugin_alert_push_recipients: tuple[str, ...] = () + strategy_plugin_alert_push_provider: str | None = None + strategy_plugin_alert_push_app_token: str | None = None + strategy_plugin_alert_push_access_token: str | None = None + strategy_plugin_alert_push_api_base_url: str | None = None + strategy_plugin_alert_push_device: str | None = None + strategy_plugin_alert_push_priority: str | None = None + strategy_plugin_alert_push_tags: str | None = None + strategy_plugin_alert_push_body_max_chars: str | None = None + strategy_plugin_alert_telegram_chat_ids: tuple[str, ...] = () + strategy_plugin_alert_telegram_bot_token: str | None = None + strategy_plugin_alert_telegram_api_base_url: str | None = None + strategy_plugin_alert_telegram_parse_mode: str | None = None + strategy_plugin_alert_telegram_disable_web_page_preview: str | None = None + strategy_plugin_alert_telegram_body_max_chars: str | None = None runtime_target: RuntimeTarget | None = None @@ -255,57 +255,57 @@ def load_platform_runtime_settings( os.getenv("LONGBRIDGE_STRATEGY_PLUGIN_MOUNTS_JSON") or os.getenv("STRATEGY_PLUGIN_MOUNTS_JSON") ), - crisis_alert_channels=_split_env_list(os.getenv("CRISIS_ALERT_CHANNELS")), - crisis_alert_email_recipients=_split_env_list(os.getenv("CRISIS_ALERT_EMAIL_RECIPIENTS")), - crisis_alert_email_sender_email=_first_non_empty(os.getenv("CRISIS_ALERT_EMAIL_SENDER_EMAIL")), - crisis_alert_email_sender_password=_first_non_empty( - os.getenv("CRISIS_ALERT_EMAIL_SENDER_PASSWORD") + strategy_plugin_alert_channels=_split_env_list(os.getenv("STRATEGY_PLUGIN_ALERT_CHANNELS")), + strategy_plugin_alert_email_recipients=_split_env_list(os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS")), + strategy_plugin_alert_email_sender_email=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL")), + strategy_plugin_alert_email_sender_password=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD") ), - crisis_alert_email_smtp_host=_first_non_empty(os.getenv("CRISIS_ALERT_EMAIL_SMTP_HOST")), - crisis_alert_email_smtp_port=_first_non_empty(os.getenv("CRISIS_ALERT_EMAIL_SMTP_PORT")), - crisis_alert_email_smtp_security=_first_non_empty( - os.getenv("CRISIS_ALERT_EMAIL_SMTP_SECURITY") + strategy_plugin_alert_email_smtp_host=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST")), + strategy_plugin_alert_email_smtp_port=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT")), + strategy_plugin_alert_email_smtp_security=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY") ), - crisis_alert_sms_recipients=_split_env_list(os.getenv("CRISIS_ALERT_SMS_RECIPIENTS")), - crisis_alert_sms_provider=_first_non_empty(os.getenv("CRISIS_ALERT_SMS_PROVIDER")), - crisis_alert_sms_account_id=_first_non_empty(os.getenv("CRISIS_ALERT_SMS_ACCOUNT_ID")), - crisis_alert_sms_auth_token=_first_non_empty(os.getenv("CRISIS_ALERT_SMS_AUTH_TOKEN")), - crisis_alert_sms_sender=_first_non_empty(os.getenv("CRISIS_ALERT_SMS_SENDER")), - crisis_alert_sms_messaging_service_id=_first_non_empty( - os.getenv("CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID") + strategy_plugin_alert_sms_recipients=_split_env_list(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS")), + strategy_plugin_alert_sms_provider=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_PROVIDER")), + strategy_plugin_alert_sms_account_id=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID")), + strategy_plugin_alert_sms_auth_token=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN")), + strategy_plugin_alert_sms_sender=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_SENDER")), + strategy_plugin_alert_sms_messaging_service_id=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID") ), - crisis_alert_sms_api_base_url=_first_non_empty(os.getenv("CRISIS_ALERT_SMS_API_BASE_URL")), - crisis_alert_sms_body_max_chars=_first_non_empty( - os.getenv("CRISIS_ALERT_SMS_BODY_MAX_CHARS") + strategy_plugin_alert_sms_api_base_url=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL")), + strategy_plugin_alert_sms_body_max_chars=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS") ), - crisis_alert_push_recipients=_split_env_list(os.getenv("CRISIS_ALERT_PUSH_RECIPIENTS")), - crisis_alert_push_provider=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_PROVIDER")), - crisis_alert_push_app_token=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_APP_TOKEN")), - crisis_alert_push_access_token=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_ACCESS_TOKEN")), - crisis_alert_push_api_base_url=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_API_BASE_URL")), - crisis_alert_push_device=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_DEVICE")), - crisis_alert_push_priority=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_PRIORITY")), - crisis_alert_push_tags=_first_non_empty(os.getenv("CRISIS_ALERT_PUSH_TAGS")), - crisis_alert_push_body_max_chars=_first_non_empty( - os.getenv("CRISIS_ALERT_PUSH_BODY_MAX_CHARS") + strategy_plugin_alert_push_recipients=_split_env_list(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS")), + strategy_plugin_alert_push_provider=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER")), + strategy_plugin_alert_push_app_token=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN")), + strategy_plugin_alert_push_access_token=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN")), + strategy_plugin_alert_push_api_base_url=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL")), + strategy_plugin_alert_push_device=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_DEVICE")), + strategy_plugin_alert_push_priority=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY")), + strategy_plugin_alert_push_tags=_first_non_empty(os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_TAGS")), + strategy_plugin_alert_push_body_max_chars=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS") ), - crisis_alert_telegram_chat_ids=_split_env_list( - os.getenv("CRISIS_ALERT_TELEGRAM_CHAT_IDS") + strategy_plugin_alert_telegram_chat_ids=_split_env_list( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS") ), - crisis_alert_telegram_bot_token=_first_non_empty( - os.getenv("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") + strategy_plugin_alert_telegram_bot_token=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN") ), - crisis_alert_telegram_api_base_url=_first_non_empty( - os.getenv("CRISIS_ALERT_TELEGRAM_API_BASE_URL") + strategy_plugin_alert_telegram_api_base_url=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL") ), - crisis_alert_telegram_parse_mode=_first_non_empty( - os.getenv("CRISIS_ALERT_TELEGRAM_PARSE_MODE") + strategy_plugin_alert_telegram_parse_mode=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE") ), - crisis_alert_telegram_disable_web_page_preview=_first_non_empty( - os.getenv("CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW") + strategy_plugin_alert_telegram_disable_web_page_preview=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW") ), - crisis_alert_telegram_body_max_chars=_first_non_empty( - os.getenv("CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS") + strategy_plugin_alert_telegram_body_max_chars=_first_non_empty( + os.getenv("STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS") ), runtime_target=runtime_target, ) diff --git a/scripts/cloud_run_runtime_guard.py b/scripts/cloud_run_runtime_guard.py index 561a808..bab869b 100644 --- a/scripts/cloud_run_runtime_guard.py +++ b/scripts/cloud_run_runtime_guard.py @@ -168,10 +168,6 @@ def _summarize(entry: dict[str, Any]) -> str: def _send_telegram(message: str) -> bool: targets: list[tuple[str, str]] = [] - crisis_token = os.environ.get("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") - for chat_id in _split_values(os.environ.get("CRISIS_ALERT_TELEGRAM_CHAT_IDS")): - if crisis_token: - targets.append((crisis_token, chat_id)) token = os.environ.get("TELEGRAM_TOKEN") or os.environ.get("TG_TOKEN") for chat_id in _split_values(os.environ.get("GLOBAL_TELEGRAM_CHAT_ID")): @@ -184,7 +180,7 @@ def _send_telegram(message: str) -> bool: return False ok = True - base_url = os.environ.get("CRISIS_ALERT_TELEGRAM_API_BASE_URL") or "https://api.telegram.org" + base_url = "https://api.telegram.org" for token_value, chat_id in unique_targets: body = urllib.parse.urlencode({"chat_id": chat_id, "text": message}).encode() request = urllib.request.Request( diff --git a/scripts/execution_report_heartbeat.py b/scripts/execution_report_heartbeat.py index 7e4bd7e..8f784cb 100644 --- a/scripts/execution_report_heartbeat.py +++ b/scripts/execution_report_heartbeat.py @@ -289,10 +289,6 @@ def _is_accepted_report(payload: dict[str, Any]) -> tuple[bool, str]: def _send_telegram(message: str) -> bool: targets: list[tuple[str, str]] = [] - crisis_token = os.environ.get("CRISIS_ALERT_TELEGRAM_BOT_TOKEN") - for chat_id in _split_values(os.environ.get("CRISIS_ALERT_TELEGRAM_CHAT_IDS")): - if crisis_token: - targets.append((crisis_token, chat_id)) token = os.environ.get("TELEGRAM_TOKEN") or os.environ.get("TG_TOKEN") for chat_id in _split_values(os.environ.get("GLOBAL_TELEGRAM_CHAT_ID")): if token: @@ -301,7 +297,7 @@ def _send_telegram(message: str) -> bool: if not unique_targets: print("No Telegram token/chat configured; unable to send heartbeat alert.", file=sys.stderr) return False - base_url = os.environ.get("CRISIS_ALERT_TELEGRAM_API_BASE_URL") or "https://api.telegram.org" + base_url = "https://api.telegram.org" ok = True for token_value, chat_id in unique_targets: body = urllib.parse.urlencode({"chat_id": chat_id, "text": message}).encode() diff --git a/tests/test_request_handling.py b/tests/test_request_handling.py index 0f01f42..d1bc975 100644 --- a/tests/test_request_handling.py +++ b/tests/test_request_handling.py @@ -71,12 +71,12 @@ def run(self, *args, **kwargs): tg_token=None, tg_chat_id="shared-chat-id", dry_run_only=False, - crisis_alert_email_recipients=(), - crisis_alert_email_sender_email=None, - crisis_alert_email_sender_password=None, - crisis_alert_sms_recipients=(), - crisis_alert_sms_account_id=None, - crisis_alert_sms_auth_token=None, + strategy_plugin_alert_email_recipients=(), + strategy_plugin_alert_email_sender_email=None, + strategy_plugin_alert_email_sender_password=None, + strategy_plugin_alert_sms_recipients=(), + strategy_plugin_alert_sms_account_id=None, + strategy_plugin_alert_sms_auth_token=None, runtime_target=build_runtime_target( platform_id="longbridge", strategy_profile="soxl_soxx_trend_income", @@ -209,8 +209,16 @@ def fake_run_strategy(): module.run_strategy = fake_run_strategy - with module.app.test_request_context("/", method="POST"): - body, status = module.handle_trigger() + with patch.dict( + os.environ, + { + "STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN": "plugin-token", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS": "plugin-chat", + }, + clear=False, + ): + with module.app.test_request_context("/", method="POST"): + body, status = module.handle_trigger() self.assertEqual(status, 200) self.assertEqual(body, "OK",) diff --git a/tests/test_runtime_config_support.py b/tests/test_runtime_config_support.py index 430a920..bbc6b7c 100644 --- a/tests/test_runtime_config_support.py +++ b/tests/test_runtime_config_support.py @@ -153,36 +153,36 @@ def test_load_platform_runtime_settings_uses_defaults_with_explicit_strategy_pro self.assertIsNone(settings.feature_snapshot_path) self.assertIsNone(settings.strategy_config_path) self.assertIsNone(settings.strategy_plugin_mounts_json) - self.assertEqual(settings.crisis_alert_channels, ()) - self.assertEqual(settings.crisis_alert_email_recipients, ()) - self.assertIsNone(settings.crisis_alert_email_sender_email) - self.assertIsNone(settings.crisis_alert_email_sender_password) - self.assertIsNone(settings.crisis_alert_email_smtp_host) - self.assertIsNone(settings.crisis_alert_email_smtp_port) - self.assertIsNone(settings.crisis_alert_email_smtp_security) - self.assertEqual(settings.crisis_alert_sms_recipients, ()) - self.assertIsNone(settings.crisis_alert_sms_provider) - self.assertIsNone(settings.crisis_alert_sms_account_id) - self.assertIsNone(settings.crisis_alert_sms_auth_token) - self.assertIsNone(settings.crisis_alert_sms_sender) - self.assertIsNone(settings.crisis_alert_sms_messaging_service_id) - self.assertIsNone(settings.crisis_alert_sms_api_base_url) - self.assertIsNone(settings.crisis_alert_sms_body_max_chars) - self.assertEqual(settings.crisis_alert_push_recipients, ()) - self.assertIsNone(settings.crisis_alert_push_provider) - self.assertIsNone(settings.crisis_alert_push_app_token) - self.assertIsNone(settings.crisis_alert_push_access_token) - self.assertIsNone(settings.crisis_alert_push_api_base_url) - self.assertIsNone(settings.crisis_alert_push_device) - self.assertIsNone(settings.crisis_alert_push_priority) - self.assertIsNone(settings.crisis_alert_push_tags) - self.assertIsNone(settings.crisis_alert_push_body_max_chars) - self.assertEqual(settings.crisis_alert_telegram_chat_ids, ()) - self.assertIsNone(settings.crisis_alert_telegram_bot_token) - self.assertIsNone(settings.crisis_alert_telegram_api_base_url) - self.assertIsNone(settings.crisis_alert_telegram_parse_mode) - self.assertIsNone(settings.crisis_alert_telegram_disable_web_page_preview) - self.assertIsNone(settings.crisis_alert_telegram_body_max_chars) + self.assertEqual(settings.strategy_plugin_alert_channels, ()) + self.assertEqual(settings.strategy_plugin_alert_email_recipients, ()) + self.assertIsNone(settings.strategy_plugin_alert_email_sender_email) + self.assertIsNone(settings.strategy_plugin_alert_email_sender_password) + self.assertIsNone(settings.strategy_plugin_alert_email_smtp_host) + self.assertIsNone(settings.strategy_plugin_alert_email_smtp_port) + self.assertIsNone(settings.strategy_plugin_alert_email_smtp_security) + self.assertEqual(settings.strategy_plugin_alert_sms_recipients, ()) + self.assertIsNone(settings.strategy_plugin_alert_sms_provider) + self.assertIsNone(settings.strategy_plugin_alert_sms_account_id) + self.assertIsNone(settings.strategy_plugin_alert_sms_auth_token) + self.assertIsNone(settings.strategy_plugin_alert_sms_sender) + self.assertIsNone(settings.strategy_plugin_alert_sms_messaging_service_id) + self.assertIsNone(settings.strategy_plugin_alert_sms_api_base_url) + self.assertIsNone(settings.strategy_plugin_alert_sms_body_max_chars) + self.assertEqual(settings.strategy_plugin_alert_push_recipients, ()) + self.assertIsNone(settings.strategy_plugin_alert_push_provider) + self.assertIsNone(settings.strategy_plugin_alert_push_app_token) + self.assertIsNone(settings.strategy_plugin_alert_push_access_token) + self.assertIsNone(settings.strategy_plugin_alert_push_api_base_url) + self.assertIsNone(settings.strategy_plugin_alert_push_device) + self.assertIsNone(settings.strategy_plugin_alert_push_priority) + self.assertIsNone(settings.strategy_plugin_alert_push_tags) + self.assertIsNone(settings.strategy_plugin_alert_push_body_max_chars) + self.assertEqual(settings.strategy_plugin_alert_telegram_chat_ids, ()) + self.assertIsNone(settings.strategy_plugin_alert_telegram_bot_token) + self.assertIsNone(settings.strategy_plugin_alert_telegram_api_base_url) + self.assertIsNone(settings.strategy_plugin_alert_telegram_parse_mode) + self.assertIsNone(settings.strategy_plugin_alert_telegram_disable_web_page_preview) + self.assertIsNone(settings.strategy_plugin_alert_telegram_body_max_chars) def test_load_platform_runtime_settings_prefers_runtime_target_json(self): with patch.dict( @@ -338,101 +338,101 @@ def test_strategy_plugin_mounts_are_loaded_from_env(self): self.assertEqual(settings.strategy_plugin_mounts_json, mount_config) - def test_crisis_alert_email_config_is_loaded_from_env(self): + def test_strategy_plugin_alert_email_config_is_loaded_from_env(self): with patch.dict( os.environ, { "RUNTIME_TARGET_JSON": runtime_target_json(SAMPLE_STRATEGY_PROFILE), - "CRISIS_ALERT_EMAIL_RECIPIENTS": "alerts@example.com; voice@example.com", - "CRISIS_ALERT_EMAIL_SENDER_EMAIL": "sender@example.com", - "CRISIS_ALERT_EMAIL_SENDER_PASSWORD": "secret", - "CRISIS_ALERT_EMAIL_SMTP_HOST": "smtp.example.com", - "CRISIS_ALERT_EMAIL_SMTP_PORT": "587", - "CRISIS_ALERT_EMAIL_SMTP_SECURITY": "starttls", + "STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS": "alerts@example.com; voice@example.com", + "STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL": "sender@example.com", + "STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD": "secret", + "STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST": "smtp.example.com", + "STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT": "587", + "STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY": "starttls", }, clear=True, ): settings = load_platform_runtime_settings(project_id_resolver=lambda: "project-1") - self.assertEqual(settings.crisis_alert_email_recipients, ("alerts@example.com", "voice@example.com")) - self.assertEqual(settings.crisis_alert_email_sender_email, "sender@example.com") - self.assertEqual(settings.crisis_alert_email_sender_password, "secret") - self.assertEqual(settings.crisis_alert_email_smtp_host, "smtp.example.com") - self.assertEqual(settings.crisis_alert_email_smtp_port, "587") - self.assertEqual(settings.crisis_alert_email_smtp_security, "starttls") + self.assertEqual(settings.strategy_plugin_alert_email_recipients, ("alerts@example.com", "voice@example.com")) + self.assertEqual(settings.strategy_plugin_alert_email_sender_email, "sender@example.com") + self.assertEqual(settings.strategy_plugin_alert_email_sender_password, "secret") + self.assertEqual(settings.strategy_plugin_alert_email_smtp_host, "smtp.example.com") + self.assertEqual(settings.strategy_plugin_alert_email_smtp_port, "587") + self.assertEqual(settings.strategy_plugin_alert_email_smtp_security, "starttls") - def test_crisis_alert_sms_config_is_loaded_from_env(self): + def test_strategy_plugin_alert_sms_config_is_loaded_from_env(self): with patch.dict( os.environ, { "RUNTIME_TARGET_JSON": runtime_target_json(SAMPLE_STRATEGY_PROFILE), - "CRISIS_ALERT_SMS_RECIPIENTS": "+15165480265;(516) 548-0265", - "CRISIS_ALERT_SMS_PROVIDER": "twilio", - "CRISIS_ALERT_SMS_ACCOUNT_ID": "AC123", - "CRISIS_ALERT_SMS_AUTH_TOKEN": "secret", - "CRISIS_ALERT_SMS_SENDER": "+15551234567", - "CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID": "MG123", - "CRISIS_ALERT_SMS_API_BASE_URL": "https://twilio.example.test", - "CRISIS_ALERT_SMS_BODY_MAX_CHARS": "160", + "STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS": "+15165480265;(516) 548-0265", + "STRATEGY_PLUGIN_ALERT_SMS_PROVIDER": "twilio", + "STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID": "AC123", + "STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN": "secret", + "STRATEGY_PLUGIN_ALERT_SMS_SENDER": "+15551234567", + "STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID": "MG123", + "STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL": "https://twilio.example.test", + "STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS": "160", }, clear=True, ): settings = load_platform_runtime_settings(project_id_resolver=lambda: "project-1") - self.assertEqual(settings.crisis_alert_sms_recipients, ("+15165480265", "(516) 548-0265")) - self.assertEqual(settings.crisis_alert_sms_provider, "twilio") - self.assertEqual(settings.crisis_alert_sms_account_id, "AC123") - self.assertEqual(settings.crisis_alert_sms_auth_token, "secret") - self.assertEqual(settings.crisis_alert_sms_sender, "+15551234567") - self.assertEqual(settings.crisis_alert_sms_messaging_service_id, "MG123") - self.assertEqual(settings.crisis_alert_sms_api_base_url, "https://twilio.example.test") - self.assertEqual(settings.crisis_alert_sms_body_max_chars, "160") + self.assertEqual(settings.strategy_plugin_alert_sms_recipients, ("+15165480265", "(516) 548-0265")) + self.assertEqual(settings.strategy_plugin_alert_sms_provider, "twilio") + self.assertEqual(settings.strategy_plugin_alert_sms_account_id, "AC123") + self.assertEqual(settings.strategy_plugin_alert_sms_auth_token, "secret") + self.assertEqual(settings.strategy_plugin_alert_sms_sender, "+15551234567") + self.assertEqual(settings.strategy_plugin_alert_sms_messaging_service_id, "MG123") + self.assertEqual(settings.strategy_plugin_alert_sms_api_base_url, "https://twilio.example.test") + self.assertEqual(settings.strategy_plugin_alert_sms_body_max_chars, "160") - def test_crisis_alert_channels_and_push_config_are_loaded_from_env(self): + def test_strategy_plugin_alert_channels_and_push_config_are_loaded_from_env(self): with patch.dict( os.environ, { "RUNTIME_TARGET_JSON": runtime_target_json(SAMPLE_STRATEGY_PROFILE), - "CRISIS_ALERT_CHANNELS": "email;push;telegram", - "CRISIS_ALERT_PUSH_RECIPIENTS": "risk-topic; backup-topic", - "CRISIS_ALERT_PUSH_PROVIDER": "ntfy", - "CRISIS_ALERT_PUSH_APP_TOKEN": "app-token", - "CRISIS_ALERT_PUSH_ACCESS_TOKEN": "access-token", - "CRISIS_ALERT_PUSH_API_BASE_URL": "https://ntfy.example.test", - "CRISIS_ALERT_PUSH_DEVICE": "iphone", - "CRISIS_ALERT_PUSH_PRIORITY": "5", - "CRISIS_ALERT_PUSH_TAGS": "warning", - "CRISIS_ALERT_PUSH_BODY_MAX_CHARS": "300", - "CRISIS_ALERT_TELEGRAM_CHAT_IDS": "12345; @risk_channel", - "CRISIS_ALERT_TELEGRAM_BOT_TOKEN": "telegram-token", - "CRISIS_ALERT_TELEGRAM_API_BASE_URL": "https://telegram.example.test", - "CRISIS_ALERT_TELEGRAM_PARSE_MODE": "HTML", - "CRISIS_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW": "false", - "CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS": "900", + "STRATEGY_PLUGIN_ALERT_CHANNELS": "email;push;telegram", + "STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS": "risk-topic; backup-topic", + "STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER": "ntfy", + "STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN": "app-token", + "STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN": "access-token", + "STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL": "https://ntfy.example.test", + "STRATEGY_PLUGIN_ALERT_PUSH_DEVICE": "iphone", + "STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY": "5", + "STRATEGY_PLUGIN_ALERT_PUSH_TAGS": "warning", + "STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS": "300", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS": "12345; @risk_channel", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN": "telegram-token", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_API_BASE_URL": "https://telegram.example.test", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_PARSE_MODE": "HTML", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_DISABLE_WEB_PAGE_PREVIEW": "false", + "STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS": "900", }, clear=True, ): settings = load_platform_runtime_settings(project_id_resolver=lambda: "project-1") - self.assertEqual(settings.crisis_alert_channels, ("email", "push", "telegram")) - self.assertEqual(settings.crisis_alert_push_recipients, ("risk-topic", "backup-topic")) - self.assertEqual(settings.crisis_alert_push_provider, "ntfy") - self.assertEqual(settings.crisis_alert_push_app_token, "app-token") - self.assertEqual(settings.crisis_alert_push_access_token, "access-token") - self.assertEqual(settings.crisis_alert_push_api_base_url, "https://ntfy.example.test") - self.assertEqual(settings.crisis_alert_push_device, "iphone") - self.assertEqual(settings.crisis_alert_push_priority, "5") - self.assertEqual(settings.crisis_alert_push_tags, "warning") - self.assertEqual(settings.crisis_alert_push_body_max_chars, "300") - self.assertEqual(settings.crisis_alert_telegram_chat_ids, ("12345", "@risk_channel")) - self.assertEqual(settings.crisis_alert_telegram_bot_token, "telegram-token") + self.assertEqual(settings.strategy_plugin_alert_channels, ("email", "push", "telegram")) + self.assertEqual(settings.strategy_plugin_alert_push_recipients, ("risk-topic", "backup-topic")) + self.assertEqual(settings.strategy_plugin_alert_push_provider, "ntfy") + self.assertEqual(settings.strategy_plugin_alert_push_app_token, "app-token") + self.assertEqual(settings.strategy_plugin_alert_push_access_token, "access-token") + self.assertEqual(settings.strategy_plugin_alert_push_api_base_url, "https://ntfy.example.test") + self.assertEqual(settings.strategy_plugin_alert_push_device, "iphone") + self.assertEqual(settings.strategy_plugin_alert_push_priority, "5") + self.assertEqual(settings.strategy_plugin_alert_push_tags, "warning") + self.assertEqual(settings.strategy_plugin_alert_push_body_max_chars, "300") + self.assertEqual(settings.strategy_plugin_alert_telegram_chat_ids, ("12345", "@risk_channel")) + self.assertEqual(settings.strategy_plugin_alert_telegram_bot_token, "telegram-token") self.assertEqual( - settings.crisis_alert_telegram_api_base_url, + settings.strategy_plugin_alert_telegram_api_base_url, "https://telegram.example.test", ) - self.assertEqual(settings.crisis_alert_telegram_parse_mode, "HTML") - self.assertEqual(settings.crisis_alert_telegram_disable_web_page_preview, "false") - self.assertEqual(settings.crisis_alert_telegram_body_max_chars, "900") + self.assertEqual(settings.strategy_plugin_alert_telegram_parse_mode, "HTML") + self.assertEqual(settings.strategy_plugin_alert_telegram_disable_web_page_preview, "false") + self.assertEqual(settings.strategy_plugin_alert_telegram_body_max_chars, "900") def test_income_layer_overrides_are_loaded_from_env(self): with patch.dict( diff --git a/tests/test_sync_cloud_run_env_workflow.sh b/tests/test_sync_cloud_run_env_workflow.sh index 11a79f0..f6ffd86 100644 --- a/tests/test_sync_cloud_run_env_workflow.sh +++ b/tests/test_sync_cloud_run_env_workflow.sh @@ -48,11 +48,11 @@ grep -Fq 'ENABLE_GITHUB_ENV_SYNC: ${{ vars.ENABLE_GITHUB_ENV_SYNC }}' "$workflow grep -Fq 'ENABLE_MAIN_PUSH_CLOUD_RUN_AUTOMATION: ${{ vars.ENABLE_MAIN_PUSH_CLOUD_RUN_AUTOMATION }}' "$workflow_file" grep -Fq 'GLOBAL_TELEGRAM_CHAT_ID: ${{ vars.GLOBAL_TELEGRAM_CHAT_ID }}' "$workflow_file" grep -Fq 'TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SENDER_PASSWORD: ${{ secrets.CRISIS_ALERT_EMAIL_SENDER_PASSWORD }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_AUTH_TOKEN: ${{ secrets.CRISIS_ALERT_SMS_AUTH_TOKEN }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_APP_TOKEN: ${{ secrets.CRISIS_ALERT_PUSH_APP_TOKEN }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_ACCESS_TOKEN: ${{ secrets.CRISIS_ALERT_PUSH_ACCESS_TOKEN }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_TELEGRAM_BOT_TOKEN: ${{ secrets.CRISIS_ALERT_TELEGRAM_BOT_TOKEN }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD: ${{ secrets.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN: ${{ secrets.STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN }}' "$workflow_file" grep -Fq 'TELEGRAM_TOKEN_SECRET_NAME: ${{ vars.TELEGRAM_TOKEN_SECRET_NAME }}' "$workflow_file" grep -Fq 'LONGPORT_APP_KEY_SECRET_NAME: ${{ vars.LONGPORT_APP_KEY_SECRET_NAME }}' "$workflow_file" grep -Fq 'LONGPORT_APP_SECRET_SECRET_NAME: ${{ vars.LONGPORT_APP_SECRET_SECRET_NAME }}' "$workflow_file" @@ -64,32 +64,32 @@ grep -Fq 'LONGBRIDGE_STRATEGY_PLUGIN_MOUNTS_JSON: ${{ vars.LONGBRIDGE_STRATEGY_P grep -Fq 'LONGBRIDGE_MIN_RESERVED_CASH_USD: ${{ vars.LONGBRIDGE_MIN_RESERVED_CASH_USD }}' "$workflow_file" grep -Fq 'LONGBRIDGE_RESERVED_CASH_RATIO: ${{ vars.LONGBRIDGE_RESERVED_CASH_RATIO }}' "$workflow_file" grep -Fq 'LONGBRIDGE_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD: ${{ vars.LONGBRIDGE_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_CHANNELS: ${{ vars.CRISIS_ALERT_CHANNELS }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_RECIPIENTS: ${{ vars.CRISIS_ALERT_EMAIL_RECIPIENTS }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SENDER_EMAIL: ${{ vars.CRISIS_ALERT_EMAIL_SENDER_EMAIL }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME: ${{ vars.CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SMTP_HOST: ${{ vars.CRISIS_ALERT_EMAIL_SMTP_HOST }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SMTP_PORT: ${{ vars.CRISIS_ALERT_EMAIL_SMTP_PORT }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SMTP_SECURITY: ${{ vars.CRISIS_ALERT_EMAIL_SMTP_SECURITY }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_RECIPIENTS: ${{ vars.CRISIS_ALERT_SMS_RECIPIENTS }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_PROVIDER: ${{ vars.CRISIS_ALERT_SMS_PROVIDER }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_ACCOUNT_ID: ${{ vars.CRISIS_ALERT_SMS_ACCOUNT_ID }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_SENDER: ${{ vars.CRISIS_ALERT_SMS_SENDER }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID: ${{ vars.CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_API_BASE_URL: ${{ vars.CRISIS_ALERT_SMS_API_BASE_URL }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_BODY_MAX_CHARS: ${{ vars.CRISIS_ALERT_SMS_BODY_MAX_CHARS }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_RECIPIENTS: ${{ vars.CRISIS_ALERT_PUSH_RECIPIENTS }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_PROVIDER: ${{ vars.CRISIS_ALERT_PUSH_PROVIDER }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_API_BASE_URL: ${{ vars.CRISIS_ALERT_PUSH_API_BASE_URL }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_DEVICE: ${{ vars.CRISIS_ALERT_PUSH_DEVICE }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_PRIORITY: ${{ vars.CRISIS_ALERT_PUSH_PRIORITY }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_TAGS: ${{ vars.CRISIS_ALERT_PUSH_TAGS }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_BODY_MAX_CHARS: ${{ vars.CRISIS_ALERT_PUSH_BODY_MAX_CHARS }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_TELEGRAM_CHAT_IDS: ${{ vars.CRISIS_ALERT_TELEGRAM_CHAT_IDS }}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME: ${{ vars.CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_CHANNELS: ${{ vars.STRATEGY_PLUGIN_ALERT_CHANNELS }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY: ${{ vars.STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_PROVIDER: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_PROVIDER }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_SENDER: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_SENDER }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS: ${{ vars.STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_DEVICE: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_DEVICE }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_TAGS: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_TAGS }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS: ${{ vars.STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS }}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME: ${{ vars.STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME }}' "$workflow_file" grep -Fq 'INCOME_THRESHOLD_USD: ${{ vars.INCOME_THRESHOLD_USD }}' "$workflow_file" grep -Fq 'QQQI_INCOME_RATIO: ${{ vars.QQQI_INCOME_RATIO }}' "$workflow_file" grep -Fq 'LONGBRIDGE_DRY_RUN_ONLY: ${{ vars.LONGBRIDGE_DRY_RUN_ONLY }}' "$workflow_file" @@ -119,11 +119,11 @@ grep -Fq 'if [ "${REQUIRES_SNAPSHOT_MANIFEST_PATH:-}" = "true" ] && [ -z "${LONG grep -Fq '&& [ "${CONFIG_SOURCE_POLICY:-}" = "env_only" ] \' "$workflow_file" grep -Fq '&& [ -z "${LONGBRIDGE_STRATEGY_CONFIG_PATH:-}" ]; then' "$workflow_file" grep -Fq 'secret_pairs+=("TELEGRAM_TOKEN=${TELEGRAM_TOKEN_SECRET_NAME}:latest")' "$workflow_file" -grep -Fq 'secret_pairs+=("CRISIS_ALERT_EMAIL_SENDER_PASSWORD=${CRISIS_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME}:latest")' "$workflow_file" -grep -Fq 'secret_pairs+=("CRISIS_ALERT_SMS_AUTH_TOKEN=${CRISIS_ALERT_SMS_AUTH_TOKEN_SECRET_NAME}:latest")' "$workflow_file" -grep -Fq 'secret_pairs+=("CRISIS_ALERT_PUSH_APP_TOKEN=${CRISIS_ALERT_PUSH_APP_TOKEN_SECRET_NAME}:latest")' "$workflow_file" -grep -Fq 'secret_pairs+=("CRISIS_ALERT_PUSH_ACCESS_TOKEN=${CRISIS_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME}:latest")' "$workflow_file" -grep -Fq 'secret_pairs+=("CRISIS_ALERT_TELEGRAM_BOT_TOKEN=${CRISIS_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME}:latest")' "$workflow_file" +grep -Fq 'secret_pairs+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD=${STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD_SECRET_NAME}:latest")' "$workflow_file" +grep -Fq 'secret_pairs+=("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN=${STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN_SECRET_NAME}:latest")' "$workflow_file" +grep -Fq 'secret_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN=${STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN_SECRET_NAME}:latest")' "$workflow_file" +grep -Fq 'secret_pairs+=("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN=${STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN_SECRET_NAME}:latest")' "$workflow_file" +grep -Fq 'secret_pairs+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN=${STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN_SECRET_NAME}:latest")' "$workflow_file" grep -Fq 'secret_pairs+=("LONGPORT_APP_KEY=${LONGPORT_APP_KEY_SECRET_NAME}:latest")' "$workflow_file" grep -Fq 'secret_pairs+=("LONGPORT_APP_SECRET=${LONGPORT_APP_SECRET_SECRET_NAME}:latest")' "$workflow_file" grep -Fq 'LONGPORT_SECRET_NAME=${LONGPORT_SECRET_NAME}' "$workflow_file" @@ -137,55 +137,55 @@ grep -Fq 'LONGBRIDGE_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD=${LONGBRIDGE_SAFE_ grep -Fq 'remove_env_vars+=("LONGBRIDGE_MIN_RESERVED_CASH_USD")' "$workflow_file" grep -Fq 'remove_env_vars+=("LONGBRIDGE_RESERVED_CASH_RATIO")' "$workflow_file" grep -Fq 'remove_env_vars+=("LONGBRIDGE_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD")' "$workflow_file" -grep -Fq 'CRISIS_ALERT_CHANNELS=${CRISIS_ALERT_CHANNELS}' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_CHANNELS")' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_RECIPIENTS=${CRISIS_ALERT_EMAIL_RECIPIENTS}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SENDER_EMAIL=${CRISIS_ALERT_EMAIL_SENDER_EMAIL}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SENDER_PASSWORD=${CRISIS_ALERT_EMAIL_SENDER_PASSWORD}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SMTP_HOST=${CRISIS_ALERT_EMAIL_SMTP_HOST}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SMTP_PORT=${CRISIS_ALERT_EMAIL_SMTP_PORT}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_EMAIL_SMTP_SECURITY=${CRISIS_ALERT_EMAIL_SMTP_SECURITY}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_RECIPIENTS=${CRISIS_ALERT_SMS_RECIPIENTS}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_PROVIDER=${CRISIS_ALERT_SMS_PROVIDER}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_ACCOUNT_ID=${CRISIS_ALERT_SMS_ACCOUNT_ID}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_SENDER=${CRISIS_ALERT_SMS_SENDER}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID=${CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_API_BASE_URL=${CRISIS_ALERT_SMS_API_BASE_URL}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_SMS_BODY_MAX_CHARS=${CRISIS_ALERT_SMS_BODY_MAX_CHARS}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_RECIPIENTS=${CRISIS_ALERT_PUSH_RECIPIENTS}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_PROVIDER=${CRISIS_ALERT_PUSH_PROVIDER}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_API_BASE_URL=${CRISIS_ALERT_PUSH_API_BASE_URL}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_DEVICE=${CRISIS_ALERT_PUSH_DEVICE}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_PRIORITY=${CRISIS_ALERT_PUSH_PRIORITY}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_TAGS=${CRISIS_ALERT_PUSH_TAGS}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_PUSH_BODY_MAX_CHARS=${CRISIS_ALERT_PUSH_BODY_MAX_CHARS}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_TELEGRAM_CHAT_IDS=${CRISIS_ALERT_TELEGRAM_CHAT_IDS}' "$workflow_file" -grep -Fq 'CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS=${CRISIS_ALERT_TELEGRAM_BODY_MAX_CHARS}' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_EMAIL_RECIPIENTS")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_EMAIL_SENDER_EMAIL")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_EMAIL_SENDER_PASSWORD")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_EMAIL_SMTP_HOST")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_EMAIL_SMTP_PORT")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_EMAIL_SMTP_SECURITY")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMS_RECIPIENTS")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMS_PROVIDER")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMS_ACCOUNT_ID")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMS_AUTH_TOKEN")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMS_SENDER")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMS_MESSAGING_SERVICE_ID")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMS_API_BASE_URL")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMS_BODY_MAX_CHARS")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_PUSH_RECIPIENTS")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_PUSH_PROVIDER")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_PUSH_APP_TOKEN")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_PUSH_ACCESS_TOKEN")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_PUSH_API_BASE_URL")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_PUSH_DEVICE")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_PUSH_PRIORITY")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_PUSH_TAGS")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_PUSH_BODY_MAX_CHARS")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_TELEGRAM_BOT_TOKEN")' "$workflow_file" -grep -Fq 'remove_env_vars+=("CRISIS_ALERT_TELEGRAM_CHAT_IDS")' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_CHANNELS=${STRATEGY_PLUGIN_ALERT_CHANNELS}' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_CHANNELS")' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS=${STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL=${STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD=${STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST=${STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT=${STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY=${STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS=${STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_PROVIDER=${STRATEGY_PLUGIN_ALERT_SMS_PROVIDER}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID=${STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_SENDER=${STRATEGY_PLUGIN_ALERT_SMS_SENDER}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID=${STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL=${STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS=${STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS=${STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER=${STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL=${STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_DEVICE=${STRATEGY_PLUGIN_ALERT_PUSH_DEVICE}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY=${STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_TAGS=${STRATEGY_PLUGIN_ALERT_PUSH_TAGS}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS=${STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS=${STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS}' "$workflow_file" +grep -Fq 'STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS=${STRATEGY_PLUGIN_ALERT_TELEGRAM_BODY_MAX_CHARS}' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_RECIPIENTS")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_EMAIL")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SENDER_PASSWORD")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_HOST")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_PORT")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_EMAIL_SMTP_SECURITY")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_RECIPIENTS")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_PROVIDER")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_ACCOUNT_ID")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_AUTH_TOKEN")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_SENDER")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_MESSAGING_SERVICE_ID")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_API_BASE_URL")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_SMS_BODY_MAX_CHARS")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_RECIPIENTS")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_PROVIDER")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_APP_TOKEN")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_ACCESS_TOKEN")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_API_BASE_URL")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_DEVICE")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_PRIORITY")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_TAGS")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_PUSH_BODY_MAX_CHARS")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN")' "$workflow_file" +grep -Fq 'remove_env_vars+=("STRATEGY_PLUGIN_ALERT_TELEGRAM_CHAT_IDS")' "$workflow_file" grep -Fq '"CRISIS_ALERT_GOOGLE_VOICE_TO"' "$workflow_file" grep -Fq '"CRISIS_ALERT_GOOGLE_VOICE_GATEWAY"' "$workflow_file" grep -Fq '"CRISIS_ALERT_GOOGLE_VOICE_GMAIL_USER"' "$workflow_file"