feat: T4b/T4c wave 8 - weather history, phenology, honey chain, Telegram base
- Weather history from Open-Meteo behind an adapter: worker loop phenology-weather with backoff, Retry-After, User-Agent, chunked writes and forecast-to-archive correction - Phenology: growing degree sum per DWD, phase from reports, GTS and calendar, calibration from previous years, daily job step, SeasonService reads the stored state - Honey chain: prefill for extractions and batches (proposals only), plausibility and withdrawal warnings, Extraction lock, chain events and batch.created webhook from HoneyBatchRecorded - Telegram base: schema, NotificationDelivery outbox, hardened bot client, startup check without crash, no-network-outside-loops guard - ARCHITECTURE.md: sections 11.11-11.13, assumptions 42-46, env table Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
22382d53a2
commit
1971b2d9c4
90 files changed
+8431
-155
No files matched your search
@@ -108,3 +108,28 @@ ENABLE_SWAGGER=false
|
||||
# APICORE_ROLE=api
|
||||
# Port des Health-Endpunkts des Worker-Prozesses.
|
||||
# WORKER_HEALTH_PORT=3002
|
||||
|
||||
# Wetterquelle fuer die Pflanzenentwicklung (Gradtagszahl) und die
|
||||
# Wetteranzeige. Einzige Quelle ist die freie Open-Meteo-API (bewusst
|
||||
# uebernommenes Lizenzrisiko, nicht-kommerzielle Bedingungen); der Adapter
|
||||
# (src/weather/history) erlaubt einen Wechsel. Nur https:-URLs; ein
|
||||
# unbekannter Quellenname oder eine http:-URL stoppt den Start. Der Schluessel
|
||||
# ist optional, gehoert in ein Secret und steht nie in Logs oder Fehlermeldungen.
|
||||
# WEATHER_HISTORY_SOURCE=open-meteo
|
||||
# OPEN_METEO_FORECAST_URL=https://api.open-meteo.com/v1/forecast
|
||||
# OPEN_METEO_ARCHIVE_URL=https://archive-api.open-meteo.com/v1/archive
|
||||
# OPEN_METEO_API_KEY=
|
||||
# Optional: Kontakt (E-Mail oder URL) fuer den User-Agent-Header der
|
||||
# Wetteranfragen ("ApiCore/<Version> (+<Kontakt>)"); ohne Wert
|
||||
# "ApiCore/<Version> (self-hosted beekeeping app)".
|
||||
# WEATHER_USER_AGENT_CONTACT=
|
||||
|
||||
# Telegram-Erinnerungen (optional, T4c). TELEGRAM_BOT_USERNAME (ohne @, 5-32
|
||||
# Zeichen: Buchstaben, Ziffern, Unterstrich) steht in API und Worker und
|
||||
# erzeugt den Deep Link. TELEGRAM_BOT_TOKEN (BotFather) gehoert NUR dem Worker,
|
||||
# im Cluster in das eigene Secret apicore-telegram; der API-Pod darf es nicht
|
||||
# einbinden. Ein fehlerhaftes Token stoppt nichts: Telegram bleibt aus, der
|
||||
# Worker loggt einen Fehler (nie den Wert). Bei BotFather Gruppen ausschalten
|
||||
# (/setjoingroups) und keinen Webhook setzen.
|
||||
# TELEGRAM_BOT_USERNAME=
|
||||
# TELEGRAM_BOT_TOKEN=
|
||||
Reference in new issue
Block a user