|
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
SlackNotifier posts a short message to a Slack incoming webhook on:
- trade-executor submits an order (filled or pending)
- RiskManager rejects a signal (except outside_market_hours, which
spams every poll when the bot tries to trade after-hours)
Key properties:
- No-op when slack_webhook_url is empty (fail-soft default).
- HTTP errors are swallowed — a Slack outage MUST NOT crash the
consumer loop; the trade already happened on Alpaca.
- Kevin-strategy signals tagged "Meet Kevin" in the message so I can
tell which strategy fired.
Wiring:
- TradeExecutorConfig.slack_webhook_url + TRADING_SLACK_WEBHOOK_URL
env var, sourced from Vault secret/trading-bot/slack_webhook_url
via existing ExternalSecret.
- SlackNotifier passed to process_signal; both rejection + post-trade
paths call it.
Tests: 7 new (no-op when disabled, post calls webhook with correct
text, Kevin strategy tag, swallows HTTP errors, suppresses noisy
rejections).
|
||
|---|---|---|
| .. | ||
| api_gateway | ||
| backtester | ||
| fixtures | ||
| integration | ||
| services | ||
| shared | ||
| __init__.py | ||
| conftest.py | ||
| test_backtester.py | ||
| test_broker.py | ||
| test_fundamentals.py | ||
| test_indicators.py | ||
| test_models.py | ||
| test_new_strategies.py | ||
| test_redis_streams.py | ||
| test_schemas.py | ||
| test_strategies.py | ||