# ๐Ÿ“Š ROA2WEB - SCHEMฤ‚ GRAFICฤ‚ ARHITECTURฤ‚ Aceastฤƒ schemฤƒ prezintฤƒ arhitectura completฤƒ a aplicaศ›iei ROA2WEB, incluzรขnd frontend-ul Vue.js, backend-ul FastAPI, middleware-ul de autentificare ศ™i conexiunea la baza de date Oracle. ## ๐Ÿ—๏ธ **ARHITECTURA GENERALฤ‚** ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐ŸŒ CLIENT โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ HTTP Requests โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ–ฅ๏ธ FRONTEND โ”‚ โ”‚ Vue.js 3 + PrimeVue + Vite โ”‚ โ”‚ Port: 5173 (dev) / 3000 (prod) โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ“ Components: ๐Ÿ“ฆ Stores (Pinia): โ”‚ โ”‚ โ€ข LoginView.vue โ€ข auth.js (JWT tokens) โ”‚ โ”‚ โ€ข DashboardView.vue โ€ข companies.js โ”‚ โ”‚ โ€ข InvoicesView.vue โ€ข dashboard.js โ”‚ โ”‚ โ€ข BankCashRegisterView.vue โ€ข invoices.js โ”‚ โ”‚ โ€ข treasury.js โ”‚ โ”‚ ๐Ÿ”ง Services: โ”‚ โ”‚ โ€ข api.js (Axios HTTP client) โ”‚ โ”‚ โ€ข JWT token management โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ API Calls (axios) โ”‚ Authorization: Bearer โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿš€ BACKEND API โ”‚ โ”‚ FastAPI + Uvicorn โ”‚ โ”‚ Port: 8000 โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ›ก๏ธ MIDDLEWARE LAYER: โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ 1. CORSMiddleware (Frontend communication) โ”‚ โ”‚ โ”‚ โ”‚ 2. AuthenticationMiddleware (JWT validation) โ”‚ โ”‚ โ”‚ โ”‚ โ€ข Token extraction from Authorization header โ”‚ โ”‚ โ”‚ โ”‚ โ€ข JWT verification & user data injection โ”‚ โ”‚ โ”‚ โ”‚ โ€ข Rate limiting (5 req/5min per IP) โ”‚ โ”‚ โ”‚ โ”‚ โ€ข Security headers injection โ”‚ โ”‚ โ”‚ โ”‚ โ€ข Excluded paths: ["/", "/docs", "/health", "/api/auth/login"] โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ›ค๏ธ API ROUTES: โ”‚ โ”‚ โ€ข /api/auth/login (POST) - User authentication โ”‚ โ”‚ โ€ข /api/companies (GET) - Company list โ”‚ โ”‚ โ€ข /api/dashboard (GET) - Dashboard data โ”‚ โ”‚ โ€ข /api/invoices (GET) - Invoice reports โ”‚ โ”‚ โ€ข /api/treasury (GET) - Treasury/Bank data โ”‚ โ”‚ โ€ข /api/trial-balance (GET) - Trial Balance (Balanศ›ฤƒ de Verificare) โ”‚ โ”‚ โ€ข /health (GET) - Health check โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ“Š SERVICES (with caching): โ”‚ โ”‚ โ€ข invoice_service.py (@cached: invoices, schema) โ”‚ โ”‚ โ€ข dashboard_service.py (@cached: dashboard_summary, trends, etc.) โ”‚ โ”‚ โ€ข treasury_service.py (@cached: treasury, schema) โ”‚ โ”‚ โ”‚ โ”‚ โšก CACHE LAYER (Two-Tier): โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ L1 (Memory): Fast in-memory cache (LRU, max 1000 entries) โ”‚ โ”‚ โ”‚ โ”‚ L2 (SQLite): Persistent cache database (./cache_data/) โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ Features: โ”‚ โ”‚ โ”‚ โ”‚ โ€ข Automatic TTL per cache type (schema: 24h, invoices: 10min, etc.) โ”‚ โ”‚ โ”‚ โ”‚ โ€ข Performance tracking & benchmarking โ”‚ โ”‚ โ”‚ โ”‚ โ€ข Per-user cache enable/disable โ”‚ โ”‚ โ”‚ โ”‚ โ€ข Event-based invalidation (optional) โ”‚ โ”‚ โ”‚ โ”‚ โ€ข Cache hit/miss metrics in response headers โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ Usage: @cached(cache_type='...', key_params=['company', 'username']) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ Database Queries (on cache miss) โ”‚ SSH Tunnel Required โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ” SSH TUNNEL LAYER โ”‚ โ”‚ ./ssh_tunnel.sh (Local port forwarding) โ”‚ โ”‚ Local: localhost:1526 โžœ Remote: oracle_server:1521 โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ Encrypted connection โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ›๏ธ ORACLE DATABASE โ”‚ โ”‚ Schema: CONTAFIN_ORACLE โ”‚ โ”‚ Port: 1521 (remote) / 1526 (local via tunnel) โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ“‹ Main Tables/Views: โ”‚ โ”‚ โ€ข UTILIZATORI (Users) โ”‚ โ”‚ โ€ข V_NOM_FIRME (Companies) โ”‚ โ”‚ โ€ข VDEF_UTIL_FIRME (User-Company relations) โ”‚ โ”‚ โ€ข Financial data tables (invoices, payments, etc.) โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ”ง Stored Procedures: โ”‚ โ”‚ โ€ข pack_drepturi.verificautilizator (Authentication) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ## โšก **ARHITECTURA CACHE (TWO-TIER L1 + L2)** ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ”ฅ CACHE LAYER ARCHITECTURE โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ API Request (service method decorated with @cached) โ†“ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 1. Check if Cache Enabled (Global + Per-User) โ”‚ โ”‚ โ€ข Global setting: CACHE_ENABLED=True/False โ”‚ โ”‚ โ€ข Per-user setting: SQLite user_settings table โ”‚ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ†“ (if disabled: query Oracle directly) โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 2. Generate Cache Key โ”‚ โ”‚ โ€ข Pattern: {cache_type}:{param1}:{param2}:... โ”‚ โ”‚ โ€ข Example: "invoices:123:user1:2024-01" โ”‚ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ†“ โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 3. Try L1 (Memory Cache) โ”‚ โ”‚ โ€ข Python dict with TTL โ”‚ โ”‚ โ€ข LRU eviction (max 1000 entries) โ”‚ โ”‚ โ€ข โšก Ultra-fast (microseconds) โ”‚ โ”‚ โ””โ”€โ†’ HIT? Return value + track performance (L1) โ”‚ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ†“ (if MISS) โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 4. Try L2 (SQLite Cache) โ”‚ โ”‚ โ€ข Persistent database (./cache_data/roa2web_cache.db) โ”‚ โ”‚ โ€ข Indexed by key, company_id, cache_type โ”‚ โ”‚ โ€ข ๐Ÿ—„๏ธ Slower than L1 but faster than Oracle โ”‚ โ”‚ โ””โ”€โ†’ HIT? Populate L1 + return value + track performance (L2) โ”‚ โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ†“ (if MISS) โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 5. CACHE MISS - Query Oracle โ”‚ โ”‚ โ€ข Execute actual database query โ”‚ โ”‚ โ€ข Measure execution time (benchmark) โ”‚ โ”‚ โ€ข Store result in L1 + L2 โ”‚ โ”‚ โ€ข Track performance (cache miss) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ๐Ÿ“Š CACHE TYPES & TTL (Time To Live): โ€ข schema: 24 hours (CACHE_TTL_SCHEMA=86400) โ€ข companies: 30 min (CACHE_TTL_COMPANIES=1800) โ€ข dashboard_summary: 30 min (CACHE_TTL_DASHBOARD_SUMMARY=1800) โ€ข dashboard_trends: 30 min (CACHE_TTL_DASHBOARD_TRENDS=1800) โ€ข invoices: 10 min (CACHE_TTL_INVOICES=600) โ€ข invoices_summary: 15 min (CACHE_TTL_INVOICES_SUMMARY=900) โ€ข treasury: 10 min (CACHE_TTL_TREASURY=600) โ€ข trial_balance: 10 min (CACHE_TTL_TRIAL_BALANCE=600) ๐Ÿ”ง CACHE MANAGEMENT ENDPOINTS: โ€ข GET /api/cache/stats - Cache statistics (hits, misses, performance) โ€ข POST /api/cache/invalidate - Invalidate cache (all/company/type) โ€ข GET /api/cache/user-settings - Get user cache settings โ€ข POST /api/cache/user-settings - Enable/disable cache for user ๐Ÿ“ˆ PERFORMANCE TRACKING: Each cached request includes metadata: โ€ข cache_hit: true/false (was result from cache?) โ€ข cache_source: "L1" | "L2" | null (which cache tier?) โ€ข response_time_ms: float (total response time) โ€ข time_saved_ms: float (estimated time saved vs Oracle query) ``` ## ๐Ÿ”„ **FLUX DE AUTENTIFICARE** ``` 1. User Login (Frontend) โ†“ 2. POST /api/auth/login (Backend) โ†“ 3. Oracle Authentication via SSH Tunnel โ€ข pack_drepturi.verificautilizator(username, password) โ†“ 4. JWT Token Generation (Backend) โ€ข Access Token (30 min) โ€ข Refresh Token (7 days) โ€ข User data + companies + permissions โ†“ 5. Token Storage (Frontend - Pinia Store) โ†“ 6. Subsequent API Requests โ€ข Authorization: Bearer โ€ข AuthenticationMiddleware validation โ€ข User data injection in request.state ``` ## ๐Ÿšฆ **MIDDLEWARE AUTHENTICATION FLOW** ``` Incoming Request โ†“ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Rate Limiting โ”‚ โ†’ 429 if exceeded (5 req/5min per IP) โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ†“ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Path Exclusion โ”‚ โ†’ Skip auth for /docs, /health, /api/auth/login โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ†“ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Token Extract โ”‚ โ†’ 401 if missing Authorization header โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ†“ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ JWT Validation โ”‚ โ†’ 401 if invalid/expired/malformed โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ†“ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ User Injection โ”‚ โ†’ request.state.user = CurrentUser โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ†’ request.state.is_authenticated = True โ†“ โ†’ request.state.token_data = TokenData โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Security Headersโ”‚ โ†’ X-Content-Type-Options, X-Frame-Options โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ†’ X-XSS-Protection, X-Process-Time โ†“ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Route Handler โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ## ๐Ÿ—‚๏ธ **STRUCTURA DE FIศ˜IERE** ### Frontend (Vue.js) ``` frontend/ โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ components/ โ”‚ โ”‚ โ”œโ”€โ”€ dashboard/ โ”‚ โ”‚ โ”œโ”€โ”€ layout/ โ”‚ โ”‚ โ”œโ”€โ”€ reports/ โ”‚ โ”‚ โ””โ”€โ”€ ui/ โ”‚ โ”œโ”€โ”€ stores/ (Pinia) โ”‚ โ”‚ โ”œโ”€โ”€ auth.js โ”‚ โ”‚ โ”œโ”€โ”€ companies.js โ”‚ โ”‚ โ”œโ”€โ”€ dashboard.js โ”‚ โ”‚ โ”œโ”€โ”€ invoices.js โ”‚ โ”‚ โ””โ”€โ”€ treasury.js โ”‚ โ”œโ”€โ”€ services/ โ”‚ โ”‚ โ””โ”€โ”€ api.js โ”‚ โ”œโ”€โ”€ views/ โ”‚ โ”‚ โ”œโ”€โ”€ LoginView.vue โ”‚ โ”‚ โ”œโ”€โ”€ DashboardView.vue โ”‚ โ”‚ โ”œโ”€โ”€ InvoicesView.vue โ”‚ โ”‚ โ””โ”€โ”€ BankCashRegisterView.vue โ”‚ โ””โ”€โ”€ router/ โ””โ”€โ”€ tests/ (Playwright E2E) ``` ### Backend (FastAPI) ``` backend/ โ”œโ”€โ”€ app/ โ”‚ โ”œโ”€โ”€ main.py โ”‚ โ”œโ”€โ”€ routers/ โ”‚ โ”‚ โ”œโ”€โ”€ auth.py โ”‚ โ”‚ โ”œโ”€โ”€ companies.py โ”‚ โ”‚ โ”œโ”€โ”€ dashboard.py โ”‚ โ”‚ โ”œโ”€โ”€ invoices.py โ”‚ โ”‚ โ””โ”€โ”€ treasury.py โ”‚ โ”œโ”€โ”€ services/ โ”‚ โ”‚ โ”œโ”€โ”€ invoice_service.py โ”‚ โ”‚ โ”œโ”€โ”€ dashboard_service.py โ”‚ โ”‚ โ””โ”€โ”€ treasury_service.py โ”‚ โ””โ”€โ”€ models/ โ””โ”€โ”€ shared/ โ”œโ”€โ”€ auth/ โ”‚ โ”œโ”€โ”€ middleware.py โ”‚ โ”œโ”€โ”€ jwt_handler.py โ”‚ โ”œโ”€โ”€ auth_service.py โ”‚ โ””โ”€โ”€ models.py โ””โ”€โ”€ database/ โ””โ”€โ”€ oracle_pool.py ``` ## ๐Ÿ”ง **TEHNOLOGII UTILIZATE** ### Frontend Stack - **Vue.js 3** - Framework JavaScript reactiv - **PrimeVue** - UI Component Library - **Pinia** - State Management - **Vite** - Build Tool & Dev Server - **Axios** - HTTP Client - **Vue Router** - Client-side routing - **Chart.js** - Data visualization - **Playwright** - E2E Testing ### Backend Stack - **FastAPI** - Python Web Framework - **Uvicorn** - ASGI Server - **PyJWT** - JWT Token handling - **cx_Oracle** - Oracle Database driver - **Pydantic** - Data validation - **Python-dotenv** - Environment variables ### Database & Infrastructure - **Oracle Database** - Persistent data storage - **SSH Tunnel** - Secure database connection (Linux/development) - **Docker** - Containerization (Linux production) - **Nginx** - Reverse proxy & static files (Linux production) - **Windows Server + IIS** - Windows production deployment - **NSSM** - Windows service manager ## ๐ŸชŸ **ARHITECTURA WINDOWS SERVER/IIS** ### Deployment pe Windows Server ROA2WEB poate fi deployment pe Windows Server folosind IIS ศ™i Windows Services, fฤƒrฤƒ Docker: ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐ŸŒ CLIENT โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ HTTP/HTTPS Requests โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐ŸชŸ IIS WEB SERVER โ”‚ โ”‚ Port: 80/443 (HTTPS with SSL certificate) โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ“ Static Files Serving: ๐Ÿ”€ URL Rewrite Module: โ”‚ โ”‚ โ€ข Frontend (Vue.js build) โ€ข /api/* โ†’ Backend Service โ”‚ โ”‚ โ€ข web.config configuration โ€ข /* โ†’ index.html (SPA routing) โ”‚ โ”‚ โ€ข Compression & Caching โ€ข Application Request Routing (ARR) โ”‚ โ”‚ โ”‚ โ”‚ โš™๏ธ Application Pool: โ”‚ โ”‚ โ€ข ROA2WEB-AppPool (.NET not required) โ”‚ โ”‚ โ€ข Integrated pipeline mode โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ Reverse Proxy to Backend โ”‚ http://localhost:8000/api/* โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ”ง WINDOWS SERVICE โ”‚ โ”‚ Service Name: ROA2WEB-Backend โ”‚ โ”‚ Manager: NSSM (Non-Sucking Service Manager) โ”‚ โ”‚ Port: 8000 (localhost only) โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ“Š Backend Components: โ”‚ โ”‚ โ€ข FastAPI + Uvicorn (Python 3.11+) โ”‚ โ”‚ โ€ข Auto-start on Windows boot โ”‚ โ”‚ โ€ข Auto-restart on failure (5 sec delay) โ”‚ โ”‚ โ€ข Logging to file (stdout/stderr) โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ“ Installation Location: โ”‚ โ”‚ โ€ข C:\inetpub\wwwroot\roa2web\backend\ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ Direct Database Connection โ”‚ No SSH Tunnel Required โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๐Ÿ›๏ธ ORACLE DATABASE (Local/Network) โ”‚ โ”‚ Connection: Direct TCP/IP (localhost:1521 or network) โ”‚ โ”‚ Schema: CONTAFIN_ORACLE โ”‚ โ”‚ โ”‚ โ”‚ ๐Ÿ“‹ Same Tables/Views as Linux deployment โ”‚ โ”‚ ๐Ÿ”ง Same Stored Procedures โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ### Diferenศ›e รฎntre Linux ศ™i Windows Deployment | Aspect | Linux (Docker) | Windows (IIS) | |--------|----------------|---------------| | **Web Server** | Nginx (container) | IIS (native) | | **Backend Runtime** | Docker container | Windows Service (NSSM) | | **Database Access** | SSH Tunnel required | Direct connection | | **SSL/TLS** | Let's Encrypt (certbot) | IIS SSL certificates | | **Service Management** | Docker Compose | PowerShell + Services.msc | | **Deployment** | `./scripts/deploy.sh` | `Deploy-ROA2WEB.ps1` | | **Logs** | Docker logs | Windows Event Log + Files | | **Auto-start** | Docker restart policies | Windows Service auto-start | ### Structura Fiศ™iere Windows Deployment ``` C:\inetpub\wwwroot\roa2web\ โ”œโ”€โ”€ backend\ # FastAPI application โ”‚ โ”œโ”€โ”€ app\ โ”‚ โ”‚ โ”œโ”€โ”€ main.py โ”‚ โ”‚ โ”œโ”€โ”€ routers\ โ”‚ โ”‚ โ”œโ”€โ”€ services\ โ”‚ โ”‚ โ””โ”€โ”€ models\ โ”‚ โ”œโ”€โ”€ shared\ # Shared components โ”‚ โ”‚ โ”œโ”€โ”€ auth\ โ”‚ โ”‚ โ”œโ”€โ”€ database\ โ”‚ โ”‚ โ””โ”€โ”€ utils\ โ”‚ โ”œโ”€โ”€ requirements.txt โ”‚ โ”œโ”€โ”€ .env # Production config โ”‚ โ””โ”€โ”€ logs\ โ”‚ โ”œโ”€โ”€ frontend\ # Vue.js build output โ”‚ โ”œโ”€โ”€ index.html โ”‚ โ”œโ”€โ”€ assets\ โ”‚ โ”œโ”€โ”€ web.config # IIS configuration โ”‚ โ””โ”€โ”€ ... โ”‚ โ”œโ”€โ”€ logs\ # Service logs โ”‚ โ”œโ”€โ”€ backend-stdout.log โ”‚ โ””โ”€โ”€ backend-stderr.log โ”‚ โ””โ”€โ”€ backups\ # Deployment backups โ””โ”€โ”€ backup-YYYYMMDD-HHMMSS\ ``` ### Comenzi Windows Deployment ```powershell # Instalare iniศ›ialฤƒ .\Install-ROA2WEB.ps1 # Deployment actualizฤƒri .\Deploy-ROA2WEB.ps1 -SourcePath "C:\path\to\deploy-package" # Management serviciu .\Start-ROA2WEB.ps1 .\Stop-ROA2WEB.ps1 .\Restart-ROA2WEB.ps1 # Verificare status Get-Service ROA2WEB-Backend Get-Website ROA2WEB # Logs Get-Content C:\inetpub\wwwroot\roa2web\logs\backend-stdout.log -Tail 50 -Wait ``` Pentru detalii complete despre deployment pe Windows, consultaศ›i: - `/deployment/windows/docs/WINDOWS_DEPLOYMENT.md` - `/deployment/windows/README.md` ## โš™๏ธ **COMENZI DE DEZVOLTARE** ### Start SSH Tunnel ```bash cd /mnt/d/PROIECTE/roa-flask/roa2web ./ssh_tunnel.sh start ``` ### Backend Development ```bash cd reports-app/backend/ uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` ### Frontend Development ```bash cd reports-app/frontend/ npm install npm run dev ``` ### Testing ```bash cd shared/ python -m pytest -v ``` ## ๐Ÿ›ก๏ธ **SECURITATE** ### Middleware de Autentificare - **JWT Token Validation** - Verificare automatฤƒ pentru toate endpoint-urile protejate - **Rate Limiting** - Protecศ›ie รฎmpotriva atacurilor brute force - **Security Headers** - X-Content-Type-Options, X-Frame-Options, X-XSS-Protection - **CORS Protection** - Configurare restrictivฤƒ pentru frontend-uri autorizate ### Baza de Date - **SSH Tunnel** - Conexiune criptatฤƒ la Oracle - **Schema Dedicatฤƒ** - CONTAFIN_ORACLE pentru izolare - **Stored Procedures** - Validare securizatฤƒ de utilizatori --- *Aceastฤƒ schemฤƒ oferฤƒ o vedere de ansamblu asupra arhitecturii ROA2WEB ศ™i poate fi utilizatฤƒ pentru documentare, onboarding ศ™i planificarea dezvoltฤƒrii viitoare.*