feat: mută secretele Discord/Telegram din TOML în .env
TOML-urile din configs/ rămân 100% calibrare — safe to commit. Secretele (ATM_DISCORD_URL, ATM_TG_TOKEN, ATM_TG_CHAT) trăiesc în .env la rădăcină (ignored), cu loader stdlib (shell wins peste file). Validare fail-fast pentru env lipsă, placeholder REPLACE_ME, chat_id non-numeric. Include .env.example + secţiune README §Secrets. Tests: 19 noi (env loader + missing-env + placeholder + chat_id + regression post-migrate snapshot). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
36
README.md
36
README.md
@@ -79,6 +79,40 @@ pip install -e ".[dev]"
|
||||
|
||||
---
|
||||
|
||||
## Secrets
|
||||
|
||||
Credențialele Discord/Telegram NU se țin în TOML — trăiesc în `.env` la rădăcina proiectului:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# apoi editezi .env cu valorile reale
|
||||
```
|
||||
|
||||
Variabile necesare:
|
||||
|
||||
| Variabilă | Ce e |
|
||||
|---|---|
|
||||
| `ATM_DISCORD_URL` | Webhook URL-ul Discord (canalul unde vin alertele) |
|
||||
| `ATM_TG_TOKEN` | Token-ul bot-ului Telegram (de la `@BotFather`) |
|
||||
| `ATM_TG_CHAT` | Chat ID (group-ul sau user-ul; prefix `-` pentru group) |
|
||||
|
||||
`.env` e în `.gitignore` — secretele nu ajung pe git. `configs/*.toml` **pot** fi comise pe git (calibrare pură, safe to version).
|
||||
|
||||
La pornire, dacă `.env` e găsit, loader-ul printează pe stderr:
|
||||
|
||||
```
|
||||
[atm.config] .env: loaded 3 vars (0 overridden by shell)
|
||||
```
|
||||
|
||||
**⚠️ Shell env wins peste `.env`.** Dacă ai făcut `export ATM_TG_TOKEN=...` cândva în `.bashrc` / profil, aceasta override-uiește `.env` — verifică cu `printenv | grep ATM_`. Mesajul `(N overridden by shell)` te avertizează când se întâmplă.
|
||||
|
||||
Config-ul se refuză să pornească dacă:
|
||||
- lipsește oricare din cele 3 variabile (mesaj cu numele variabilei + hint către `.env.example`);
|
||||
- `ATM_DISCORD_URL` sau `ATM_TG_TOKEN` conține `REPLACE_ME` (ai copiat `.env.example` dar n-ai editat);
|
||||
- `ATM_TG_CHAT` nu-i numeric (opțional cu `-` la început pentru group).
|
||||
|
||||
---
|
||||
|
||||
## Dev
|
||||
|
||||
```bash
|
||||
@@ -126,7 +160,7 @@ Flow:
|
||||
- Chart: colț stânga-sus + colț dreapta-jos (pentru detecția de linii în Faza-B)
|
||||
- Două prețuri cunoscute pe axa Y (pixel y → introduci prețul)
|
||||
- Canary: colț stânga-sus + colț dreapta-jos pe un element UI **stabil** (etichetă axă, bară titlu)
|
||||
6. **Save** → scrie `configs/YYYY-MM-DD-HHMM.toml` + marcaj `configs/current.txt`. Preia credențialele Discord/Telegram din env (`ATM_DISCORD_URL`, `ATM_TG_TOKEN`, `ATM_TG_CHAT`) dacă sunt setate; altfel pune `REPLACE_ME` — editezi TOML-ul manual.
|
||||
6. **Save** → scrie `configs/YYYY-MM-DD-HHMM.toml` + marcaj `configs/current.txt`. TOML-ul conține doar calibrare — secretele Discord/Telegram se țin în `.env` la rădăcina proiectului (vezi secțiunea **Secrets** de mai jos).
|
||||
|
||||
### ⚠️ Reguli critice la calibrare (evită incidentul 2026-04-17)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user