Skip to content

Commit 4fb2423

Browse files
authored
Merge pull request #77 from QuantStrategyLab/remove-googlevoice-legacy-aliases
Remove legacy crisis alert email config
2 parents 7db0217 + 206c9e4 commit 4fb2423

7 files changed

Lines changed: 7 additions & 46 deletions

File tree

.github/workflows/sync-cloud-run-env.yml

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ jobs:
3535
IBKR_RESERVED_CASH_RATIO: ${{ vars.IBKR_RESERVED_CASH_RATIO }}
3636
IBKR_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD: ${{ vars.IBKR_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD }}
3737
CRISIS_ALERT_GOOGLE_VOICE_TO: ${{ vars.CRISIS_ALERT_GOOGLE_VOICE_TO }}
38-
CRISIS_ALERT_EMAIL_TO: ${{ vars.CRISIS_ALERT_EMAIL_TO }}
3938
CRISIS_ALERT_SMTP_FROM: ${{ vars.CRISIS_ALERT_SMTP_FROM }}
40-
CRISIS_ALERT_EMAIL_FROM: ${{ vars.CRISIS_ALERT_EMAIL_FROM }}
4139
CRISIS_ALERT_SMTP_HOST: ${{ vars.CRISIS_ALERT_SMTP_HOST }}
4240
CRISIS_ALERT_SMTP_PORT: ${{ vars.CRISIS_ALERT_SMTP_PORT }}
4341
CRISIS_ALERT_SMTP_USERNAME: ${{ vars.CRISIS_ALERT_SMTP_USERNAME }}
@@ -372,24 +370,12 @@ jobs:
372370
remove_env_vars+=("CRISIS_ALERT_GOOGLE_VOICE_TO")
373371
fi
374372
375-
if [ -n "${CRISIS_ALERT_EMAIL_TO:-}" ]; then
376-
env_pairs+=("CRISIS_ALERT_EMAIL_TO=${CRISIS_ALERT_EMAIL_TO}")
377-
else
378-
remove_env_vars+=("CRISIS_ALERT_EMAIL_TO")
379-
fi
380-
381373
if [ -n "${CRISIS_ALERT_SMTP_FROM:-}" ]; then
382374
env_pairs+=("CRISIS_ALERT_SMTP_FROM=${CRISIS_ALERT_SMTP_FROM}")
383375
else
384376
remove_env_vars+=("CRISIS_ALERT_SMTP_FROM")
385377
fi
386378
387-
if [ -n "${CRISIS_ALERT_EMAIL_FROM:-}" ]; then
388-
env_pairs+=("CRISIS_ALERT_EMAIL_FROM=${CRISIS_ALERT_EMAIL_FROM}")
389-
else
390-
remove_env_vars+=("CRISIS_ALERT_EMAIL_FROM")
391-
fi
392-
393379
if [ -n "${CRISIS_ALERT_SMTP_HOST:-}" ]; then
394380
env_pairs+=("CRISIS_ALERT_SMTP_HOST=${CRISIS_ALERT_SMTP_HOST}")
395381
else

README.md

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,7 @@ For IBKR, keep `paper` as a single account-group entry. If you later add live ac
113113
| `GLOBAL_TELEGRAM_CHAT_ID` | Yes | Telegram chat ID used by this service. |
114114
| `NOTIFY_LANG` | No | `en` (default) or `zh` |
115115
| `CRISIS_ALERT_GOOGLE_VOICE_TO` | No | Comma/semicolon/newline-separated Google Voice SMS gateway recipients, usually ending in `@txt.voice.google.com`. |
116-
| `CRISIS_ALERT_EMAIL_TO` | No | Optional ordinary email recipients that receive the same escalated alert; also accepted as a legacy recipient list. |
117-
| `CRISIS_ALERT_SMTP_FROM` | No | SMTP sender address for Google Voice alerts. Falls back to `CRISIS_ALERT_EMAIL_FROM`. |
118-
| `CRISIS_ALERT_EMAIL_FROM` | No | Legacy SMTP sender alias; prefer `CRISIS_ALERT_SMTP_FROM`. |
116+
| `CRISIS_ALERT_SMTP_FROM` | No | SMTP sender address for Google Voice alerts. |
119117
| `CRISIS_ALERT_SMTP_HOST` | No | SMTP host for Google Voice alerts. |
120118
| `CRISIS_ALERT_SMTP_PORT` | No | SMTP port; defaults to `587`. |
121119
| `CRISIS_ALERT_SMTP_USERNAME` | No | Optional SMTP username. |
@@ -235,7 +233,7 @@ Recommended setup:
235233
- `ACCOUNT_GROUP` (recommended: `paper`)
236234
- `IB_ACCOUNT_GROUP_CONFIG_SECRET_NAME`
237235
- Optional: `IBKR_STRATEGY_PLUGIN_MOUNTS_JSON`, `IBKR_MIN_RESERVED_CASH_USD`, `IBKR_RESERVED_CASH_RATIO`, `IBKR_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD`
238-
- Optional crisis Google Voice alerts: `CRISIS_ALERT_GOOGLE_VOICE_TO`, `CRISIS_ALERT_EMAIL_TO`, `CRISIS_ALERT_SMTP_FROM`, `CRISIS_ALERT_EMAIL_FROM`, `CRISIS_ALERT_SMTP_HOST`, `CRISIS_ALERT_SMTP_PORT`, `CRISIS_ALERT_SMTP_USERNAME`, `CRISIS_ALERT_SMTP_PASSWORD_SECRET_NAME`, `CRISIS_ALERT_SMTP_STARTTLS`, `CRISIS_ALERT_SMTP_SSL`
236+
- Optional crisis Google Voice alerts: `CRISIS_ALERT_GOOGLE_VOICE_TO`, `CRISIS_ALERT_SMTP_FROM`, `CRISIS_ALERT_SMTP_HOST`, `CRISIS_ALERT_SMTP_PORT`, `CRISIS_ALERT_SMTP_USERNAME`, `CRISIS_ALERT_SMTP_PASSWORD_SECRET_NAME`, `CRISIS_ALERT_SMTP_STARTTLS`, `CRISIS_ALERT_SMTP_SSL`
239237
- `GLOBAL_TELEGRAM_CHAT_ID`
240238
- `NOTIFY_LANG`
241239
- **Repository Secrets**
@@ -367,9 +365,7 @@ IBKR 账户
367365
| `GLOBAL_TELEGRAM_CHAT_ID` || 这个服务使用的 Telegram Chat ID。 |
368366
| `NOTIFY_LANG` || `en`(默认)或 `zh` |
369367
| `CRISIS_ALERT_GOOGLE_VOICE_TO` || Google Voice 短信网关收件人,通常以 `@txt.voice.google.com` 结尾,支持逗号、分号或换行分隔。 |
370-
| `CRISIS_ALERT_EMAIL_TO` || 可选普通邮件收件人,会收到同一份升级告警;也作为旧版收件人配置兼容。 |
371-
| `CRISIS_ALERT_SMTP_FROM` || Google Voice 告警的 SMTP 发件人;未设置时回退到 `CRISIS_ALERT_EMAIL_FROM`|
372-
| `CRISIS_ALERT_EMAIL_FROM` || 旧版 SMTP 发件人别名;优先使用 `CRISIS_ALERT_SMTP_FROM`|
368+
| `CRISIS_ALERT_SMTP_FROM` || Google Voice 告警的 SMTP 发件人。 |
373369
| `CRISIS_ALERT_SMTP_HOST` || Google Voice 告警的 SMTP host。 |
374370
| `CRISIS_ALERT_SMTP_PORT` || SMTP 端口,默认 `587`|
375371
| `CRISIS_ALERT_SMTP_USERNAME` || 可选 SMTP 用户名。 |
@@ -455,7 +451,7 @@ Google Voice 告警结果会写入 runtime report。重复发送抑制使用稳
455451
- `ACCOUNT_GROUP`(建议设为 `paper`
456452
- `IB_ACCOUNT_GROUP_CONFIG_SECRET_NAME`
457453
- 可选:`IBKR_STRATEGY_PLUGIN_MOUNTS_JSON``IBKR_MIN_RESERVED_CASH_USD``IBKR_RESERVED_CASH_RATIO``IBKR_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD`
458-
- 可选危机插件 Google Voice 告警:`CRISIS_ALERT_GOOGLE_VOICE_TO``CRISIS_ALERT_EMAIL_TO``CRISIS_ALERT_SMTP_FROM``CRISIS_ALERT_EMAIL_FROM``CRISIS_ALERT_SMTP_HOST``CRISIS_ALERT_SMTP_PORT``CRISIS_ALERT_SMTP_USERNAME``CRISIS_ALERT_SMTP_PASSWORD_SECRET_NAME``CRISIS_ALERT_SMTP_STARTTLS``CRISIS_ALERT_SMTP_SSL`
454+
- 可选危机插件 Google Voice 告警:`CRISIS_ALERT_GOOGLE_VOICE_TO``CRISIS_ALERT_SMTP_FROM``CRISIS_ALERT_SMTP_HOST``CRISIS_ALERT_SMTP_PORT``CRISIS_ALERT_SMTP_USERNAME``CRISIS_ALERT_SMTP_PASSWORD_SECRET_NAME``CRISIS_ALERT_SMTP_STARTTLS``CRISIS_ALERT_SMTP_SSL`
459455
- `GLOBAL_TELEGRAM_CHAT_ID`
460456
- `NOTIFY_LANG`
461457
- **仓库级 Secrets**

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
flask
22
gunicorn
3-
quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@8ed13d9122f52c35425b0802d22467bb6664dcd3
4-
us-equity-strategies @ git+https://github.com/QuantStrategyLab/UsEquityStrategies.git@e89ea43181f687d3454636b4b2d99ab7771546f4
3+
quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@8e87e70d49487bc6d96587d5f9e9850727e9817b
4+
us-equity-strategies @ git+https://github.com/QuantStrategyLab/UsEquityStrategies.git@fe9cc27b608ab18592b338519a5b0826f73e9a80
55
pandas
66
numpy
77
requests

runtime_config_support.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ class PlatformRuntimeSettings:
7474
strategy_plugin_mounts_json: str | None = None
7575
crisis_alert_google_voice_to: tuple[str, ...] = ()
7676
crisis_alert_smtp_from: str | None = None
77-
crisis_alert_email_to: tuple[str, ...] = ()
78-
crisis_alert_email_from: str | None = None
7977
crisis_alert_smtp_host: str | None = None
8078
crisis_alert_smtp_port: int = 587
8179
crisis_alert_smtp_username: str | None = None
@@ -191,12 +189,7 @@ def load_platform_runtime_settings(
191189
or os.getenv("STRATEGY_PLUGIN_MOUNTS_JSON")
192190
),
193191
crisis_alert_google_voice_to=split_env_list(os.getenv("CRISIS_ALERT_GOOGLE_VOICE_TO")),
194-
crisis_alert_smtp_from=first_non_empty(
195-
os.getenv("CRISIS_ALERT_SMTP_FROM"),
196-
os.getenv("CRISIS_ALERT_EMAIL_FROM"),
197-
),
198-
crisis_alert_email_to=split_env_list(os.getenv("CRISIS_ALERT_EMAIL_TO")),
199-
crisis_alert_email_from=first_non_empty(os.getenv("CRISIS_ALERT_EMAIL_FROM")),
192+
crisis_alert_smtp_from=first_non_empty(os.getenv("CRISIS_ALERT_SMTP_FROM")),
200193
crisis_alert_smtp_host=first_non_empty(os.getenv("CRISIS_ALERT_SMTP_HOST")),
201194
crisis_alert_smtp_port=resolve_positive_int_env("CRISIS_ALERT_SMTP_PORT", default=587),
202195
crisis_alert_smtp_username=first_non_empty(os.getenv("CRISIS_ALERT_SMTP_USERNAME")),

tests/conftest.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ def load_strategy_module(**env_overrides):
3131
"IB_ACCOUNT_GROUP_CONFIG_SECRET_NAME": None,
3232
"GLOBAL_TELEGRAM_CHAT_ID": None,
3333
"CRISIS_ALERT_GOOGLE_VOICE_TO": None,
34-
"CRISIS_ALERT_EMAIL_TO": None,
3534
"CRISIS_ALERT_SMTP_FROM": None,
36-
"CRISIS_ALERT_EMAIL_FROM": None,
3735
"CRISIS_ALERT_SMTP_HOST": None,
3836
"CRISIS_ALERT_SMTP_PORT": None,
3937
"CRISIS_ALERT_SMTP_USERNAME": None,

tests/test_runtime_config_support.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,6 @@ def test_load_platform_runtime_settings_uses_minimal_group_config(monkeypatch):
137137
assert settings.strategy_plugin_mounts_json is None
138138
assert settings.crisis_alert_google_voice_to == ()
139139
assert settings.crisis_alert_smtp_from is None
140-
assert settings.crisis_alert_email_to == ()
141-
assert settings.crisis_alert_email_from is None
142140
assert settings.crisis_alert_smtp_host is None
143141
assert settings.crisis_alert_smtp_port == 587
144142
assert settings.crisis_alert_smtp_username is None
@@ -215,9 +213,7 @@ def test_load_platform_runtime_settings_reads_crisis_alert_google_voice_config(m
215213
monkeypatch.setenv("ACCOUNT_GROUP", "paper")
216214
monkeypatch.setenv("IB_ACCOUNT_GROUP_CONFIG_JSON", MINIMAL_GROUP_JSON)
217215
monkeypatch.setenv("CRISIS_ALERT_GOOGLE_VOICE_TO", "gateway@txt.voice.google.com")
218-
monkeypatch.setenv("CRISIS_ALERT_EMAIL_TO", "risk@example.com;ops@example.com,risk@example.com")
219216
monkeypatch.setenv("CRISIS_ALERT_SMTP_FROM", "smtp-from@example.com")
220-
monkeypatch.setenv("CRISIS_ALERT_EMAIL_FROM", "bot@example.com")
221217
monkeypatch.setenv("CRISIS_ALERT_SMTP_HOST", "smtp.example.com")
222218
monkeypatch.setenv("CRISIS_ALERT_SMTP_PORT", "465")
223219
monkeypatch.setenv("CRISIS_ALERT_SMTP_USERNAME", "bot")
@@ -229,8 +225,6 @@ def test_load_platform_runtime_settings_reads_crisis_alert_google_voice_config(m
229225

230226
assert settings.crisis_alert_google_voice_to == ("gateway@txt.voice.google.com",)
231227
assert settings.crisis_alert_smtp_from == "smtp-from@example.com"
232-
assert settings.crisis_alert_email_to == ("risk@example.com", "ops@example.com")
233-
assert settings.crisis_alert_email_from == "bot@example.com"
234228
assert settings.crisis_alert_smtp_host == "smtp.example.com"
235229
assert settings.crisis_alert_smtp_port == 465
236230
assert settings.crisis_alert_smtp_username == "bot"

tests/test_sync_cloud_run_env_workflow.sh

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,7 @@ grep -Fq 'IBKR_MIN_RESERVED_CASH_USD: ${{ vars.IBKR_MIN_RESERVED_CASH_USD }}' "$
4646
grep -Fq 'IBKR_RESERVED_CASH_RATIO: ${{ vars.IBKR_RESERVED_CASH_RATIO }}' "$workflow_file"
4747
grep -Fq 'IBKR_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD: ${{ vars.IBKR_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD }}' "$workflow_file"
4848
grep -Fq 'CRISIS_ALERT_GOOGLE_VOICE_TO: ${{ vars.CRISIS_ALERT_GOOGLE_VOICE_TO }}' "$workflow_file"
49-
grep -Fq 'CRISIS_ALERT_EMAIL_TO: ${{ vars.CRISIS_ALERT_EMAIL_TO }}' "$workflow_file"
5049
grep -Fq 'CRISIS_ALERT_SMTP_FROM: ${{ vars.CRISIS_ALERT_SMTP_FROM }}' "$workflow_file"
51-
grep -Fq 'CRISIS_ALERT_EMAIL_FROM: ${{ vars.CRISIS_ALERT_EMAIL_FROM }}' "$workflow_file"
5250
grep -Fq 'CRISIS_ALERT_SMTP_HOST: ${{ vars.CRISIS_ALERT_SMTP_HOST }}' "$workflow_file"
5351
grep -Fq 'CRISIS_ALERT_SMTP_PORT: ${{ vars.CRISIS_ALERT_SMTP_PORT }}' "$workflow_file"
5452
grep -Fq 'CRISIS_ALERT_SMTP_USERNAME: ${{ vars.CRISIS_ALERT_SMTP_USERNAME }}' "$workflow_file"
@@ -99,9 +97,7 @@ grep -Fq 'env_pairs+=("IBKR_MIN_RESERVED_CASH_USD=${IBKR_MIN_RESERVED_CASH_USD}"
9997
grep -Fq 'env_pairs+=("IBKR_RESERVED_CASH_RATIO=${IBKR_RESERVED_CASH_RATIO}")' "$workflow_file"
10098
grep -Fq 'env_pairs+=("IBKR_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD=${IBKR_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD}")' "$workflow_file"
10199
grep -Fq 'env_pairs+=("CRISIS_ALERT_GOOGLE_VOICE_TO=${CRISIS_ALERT_GOOGLE_VOICE_TO}")' "$workflow_file"
102-
grep -Fq 'env_pairs+=("CRISIS_ALERT_EMAIL_TO=${CRISIS_ALERT_EMAIL_TO}")' "$workflow_file"
103100
grep -Fq 'env_pairs+=("CRISIS_ALERT_SMTP_FROM=${CRISIS_ALERT_SMTP_FROM}")' "$workflow_file"
104-
grep -Fq 'env_pairs+=("CRISIS_ALERT_EMAIL_FROM=${CRISIS_ALERT_EMAIL_FROM}")' "$workflow_file"
105101
grep -Fq 'env_pairs+=("CRISIS_ALERT_SMTP_HOST=${CRISIS_ALERT_SMTP_HOST}")' "$workflow_file"
106102
grep -Fq 'env_pairs+=("CRISIS_ALERT_SMTP_PORT=${CRISIS_ALERT_SMTP_PORT}")' "$workflow_file"
107103
grep -Fq 'env_pairs+=("CRISIS_ALERT_SMTP_USERNAME=${CRISIS_ALERT_SMTP_USERNAME}")' "$workflow_file"
@@ -119,9 +115,7 @@ grep -Fq 'remove_env_vars+=("IBKR_MIN_RESERVED_CASH_USD")' "$workflow_file"
119115
grep -Fq 'remove_env_vars+=("IBKR_RESERVED_CASH_RATIO")' "$workflow_file"
120116
grep -Fq 'remove_env_vars+=("IBKR_SAFE_HAVEN_CASH_SUBSTITUTE_THRESHOLD_USD")' "$workflow_file"
121117
grep -Fq 'remove_env_vars+=("CRISIS_ALERT_GOOGLE_VOICE_TO")' "$workflow_file"
122-
grep -Fq 'remove_env_vars+=("CRISIS_ALERT_EMAIL_TO")' "$workflow_file"
123118
grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMTP_FROM")' "$workflow_file"
124-
grep -Fq 'remove_env_vars+=("CRISIS_ALERT_EMAIL_FROM")' "$workflow_file"
125119
grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMTP_HOST")' "$workflow_file"
126120
grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMTP_PORT")' "$workflow_file"
127121
grep -Fq 'remove_env_vars+=("CRISIS_ALERT_SMTP_USERNAME")' "$workflow_file"

0 commit comments

Comments
 (0)