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:
@@ -27,7 +27,8 @@ async def init_app_db():
|
||||
await db.execute("""CREATE TABLE IF NOT EXISTS telegram_users (
|
||||
telegram_user_id INTEGER PRIMARY KEY,
|
||||
username TEXT, first_name TEXT NOT NULL, last_name TEXT,
|
||||
oracle_username TEXT, jwt_token TEXT, jwt_refresh_token TEXT,
|
||||
oracle_username TEXT, oracle_server_id TEXT,
|
||||
jwt_token TEXT, jwt_refresh_token TEXT,
|
||||
token_expires_at TIMESTAMP, linked_at TIMESTAMP,
|
||||
last_active_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, is_active BOOLEAN DEFAULT 1
|
||||
)""")
|
||||
|
||||
@@ -252,6 +252,12 @@ class OracleMultiPool:
|
||||
|
||||
return stats
|
||||
|
||||
async def get_pool(self, server_id: Optional[str] = None) -> oracledb.ConnectionPool:
|
||||
"""Return the underlying pool for server_id, creating it lazily if needed."""
|
||||
if server_id is None:
|
||||
server_id = self._get_first_server_id()
|
||||
return await self._get_or_create_pool(server_id)
|
||||
|
||||
def is_server_registered(self, server_id: str) -> bool:
|
||||
"""Check if a server is registered (config exists)."""
|
||||
return server_id in self._pool_configs
|
||||
|
||||
Reference in New Issue
Block a user