feat(telegram): bot bonuri fiscale — OCR → preview → Oracle write
- US-001: mută queue_client.py în data_entry/services/ocr/ - US-002/003/004: oracle_receipt_writer + oracle_server_id în DB - US-005: receipt_handlers.py (PDF/photo/callback flow) - US-006: wire handlers în main.py, per-schema connect, seq_cod.nextval - US-007: .gitignore secrets/*.oracle_pass - US-008/009/010: teste unit + integration + E2E - setup-secrets.sh helper + template - docs/telegram/README.md actualizat cu arhitectura nouă Testat E2E pe DB live (MARIUSM_AUTO). COD din seq_cod.nextval. pypdfium2 fallback pentru PDF decode (fără poppler). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
87
secrets/README.md
Normal file
87
secrets/README.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# secrets/ — Configurare credențiale (gitignored)
|
||||
|
||||
Acest director conține parole Oracle, chei SSH și alte credențiale.
|
||||
**Tot conținutul (cu excepția acestui README) e gitignored.**
|
||||
|
||||
---
|
||||
|
||||
## Fișiere necesare
|
||||
|
||||
### Pentru fiecare server Oracle din `backend/ssh-tunnels.json`
|
||||
|
||||
#### `{server_id}.oracle_pass` — parola user-ului READ
|
||||
|
||||
Parola pentru `ORACLE_USER` (user de citire), folosită de modulul Reports și
|
||||
pentru tunelul SSH spre Oracle.
|
||||
|
||||
Exemplu: dacă `ssh-tunnels.json` are `"id": "vending"`, creează:
|
||||
```bash
|
||||
echo -n 'parola_read_user' > secrets/vending.oracle_pass
|
||||
chmod 600 secrets/vending.oracle_pass
|
||||
```
|
||||
|
||||
#### `{server_id}_write.oracle_pass` — parola user-ului WRITE (US-003, US-005)
|
||||
|
||||
Parola pentru user-ul cu drepturi de scriere (`{user}_AUTO` by default, sau
|
||||
`OracleServerConfig.write_user` dacă e setat). Folosită de
|
||||
`backend/modules/data_entry/services/oracle_receipt_writer.py` pentru a scrie
|
||||
bonuri în `ACT_TEMP` via `PACK_CONTAFIN`.
|
||||
|
||||
Exemplu pentru `vending`:
|
||||
```bash
|
||||
echo -n 'parola_write_user' > secrets/vending_write.oracle_pass
|
||||
chmod 600 secrets/vending_write.oracle_pass
|
||||
```
|
||||
|
||||
> **Notă (US-005):** dacă fișierul lipsește, `_build_oracle_write_config()`
|
||||
> face fallback la parola de read și logează un warning. Pentru producție,
|
||||
> setează parolă dedicată pentru write user.
|
||||
|
||||
### Pentru fiecare server cu autentificare SSH cu parolă
|
||||
|
||||
#### `{server_id}.ssh_pass`
|
||||
|
||||
```bash
|
||||
echo -n 'parola_ssh' > secrets/vending.ssh_pass
|
||||
chmod 600 secrets/vending.ssh_pass
|
||||
```
|
||||
|
||||
### Pentru fiecare server cu autentificare SSH cu cheie
|
||||
|
||||
#### `{server_id}.ssh_key`
|
||||
|
||||
Cheia privată SSH (PEM/OpenSSH format).
|
||||
|
||||
```bash
|
||||
cp ~/.ssh/id_ed25519_oracle secrets/romfast.ssh_key
|
||||
chmod 600 secrets/romfast.ssh_key
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Verificare
|
||||
|
||||
```bash
|
||||
# Toate fișierele trebuie să fie chmod 600 (owner-only)
|
||||
ls -la secrets/
|
||||
# -rw------- 1 user user 20 ... vending.oracle_pass
|
||||
# -rw------- 1 user user 18 ... vending_write.oracle_pass
|
||||
|
||||
# Verifică că secrets/ e gitignored
|
||||
git check-ignore secrets/vending.oracle_pass
|
||||
# secrets/vending.oracle_pass
|
||||
|
||||
# Niciun fișier .oracle_pass nu trebuie să apară în git
|
||||
git ls-files secrets/
|
||||
# (gol — sau doar README.md)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Eroare | Cauză | Fix |
|
||||
|--------|-------|-----|
|
||||
| `ORA-01017: invalid username/password` | Parolă greșită în `.oracle_pass` | Re-creează fișierul fără newline trailing: `echo -n` |
|
||||
| `Permission denied (publickey,password)` | SSH auth failed | Verifică `chmod 600` pe `.ssh_key` / `.ssh_pass` |
|
||||
| Warning "No write password file '{id}_write.oracle_pass' found" | Lipsește fișierul write | Creează `{id}_write.oracle_pass` cu parola corectă |
|
||||
Reference in New Issue
Block a user