feat(service-auto): săpt 3-phase2 — toate ipotezele confirmate + modul funcțional

Backend:
- service_auto module complet: router, service, schemas, 5 teste suites (22/22 passed)
- 5 endpoints: GET /ping, /firme, /tip-deviz, /masini, POST /comenzi
- SP_CREEAZA_COMANDA_PROTOTIP creat în MARIUSM_AUTO (VALID, 5.9ms)
- oracle_pool.py: session_callback backward-compat patch
- ROA_WEB user: grants SP-only confirmate (H3), mariusm_test pool switchat
- pyproject.toml: integration pytest marker înregistrat

Frontend:
- ComandaNoua.vue: date reale din Oracle (firme/tip-deviz/masini), nu hardcodate
- src/modules/service-auto/services/api.js: axios service cu Bearer token
- src/router/index.js: rută /service-auto/comanda-noua

Docs:
- decision-log.md: verdict MERGE, toate 6 ipoteze CONFIRMED
- learnings.md: 7 patterns reutilizabile
- grants-audit.md: arhitectura multi-tenant + proxy auth analysis + V_NOM_FIRME loop
- template-modul-oracle.md: rețetă completă pentru module Oracle noi
- TODO-phase2.md: 7 items concrete

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-04-12 09:36:56 +00:00
parent 4162e0711c
commit 32aca55c78
30 changed files with 2866 additions and 1 deletions

View File

@@ -63,12 +63,18 @@ class OracleMultiPool:
service_name: Optional[str] = None,
min_connections: int = 2,
max_connections: int = 10,
session_callback=None,
**kwargs
) -> None:
"""
Register a server configuration for lazy pool creation.
Pool will be created on first get_connection(server_id) call.
Args:
session_callback: Optional callable invoked on each new connection acquired
from the pool. Useful for ALTER SESSION SET CURRENT_SCHEMA.
Signature: callback(connection, requested_tag)
"""
self._pool_configs[server_id] = {
'host': host,
@@ -79,6 +85,7 @@ class OracleMultiPool:
'service_name': service_name,
'min_connections': min_connections,
'max_connections': max_connections,
'session_callback': session_callback,
}
logger.info(f"Registered server '{server_id}' ({host}:{port}) for lazy pool creation")
@@ -123,6 +130,9 @@ class OracleMultiPool:
else:
pool_params['service_name'] = 'ROA'
if config.get('session_callback'):
pool_params['session_callback'] = config['session_callback']
pool = oracledb.create_pool(**pool_params)
self._pools[server_id] = pool