feat: multi-Oracle server support with runtime switching

Complete implementation of multi-server Oracle database support:

Backend:
- Multi-pool Oracle with lazy loading per server
- Email-to-server cache for automatic server discovery
- JWT tokens include server_id claim
- /auth/check-identity and /auth/check-email endpoints
- /auth/my-servers endpoint for listing user's accessible servers
- Server switch with password re-authentication

Frontend:
- New ServerSelector component for header dropdown
- Multi-step login flow (identity → server → password)
- Server switching from header with password modal
- Mobile drawer menu with server selection
- Dark mode support for all new components
- URL bookmark support with ?server= query param

Scripts:
- Unified start.sh replacing start-prod.sh/start-test.sh
- Unified ssh-tunnel.sh with multi-server support
- Updated status.sh for new architecture

Tests:
- E2E tests for multi-server and single-server login flows
- Backend unit tests for all new endpoints
- Oracle multi-pool integration tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-01-26 22:39:06 +00:00
parent 5f99ee2fd0
commit b137e80b71
102 changed files with 9398 additions and 2787 deletions

View File

@@ -16,7 +16,7 @@ if check_service_status 1521 "SSH Tunnel (Oracle)"; then
:
else
print_warning "SSH Tunnel not running - Oracle DB connection will fail"
print_info "Start with: ./ssh-tunnel-prod.sh start (or ./ssh-tunnel-test.sh start for TEST)"
print_info "Start with: ./ssh-tunnel.sh start"
fi
echo ""
@@ -42,7 +42,7 @@ if check_service_status 8000 "Unified Backend"; then
echo " • Telegram API: http://localhost:8000/api/telegram/*"
echo " • Telegram Bot: Running as background task"
else
print_info "Start with: ./start-prod.sh (or ./start-test.sh for TEST)"
print_info "Start with: ./start.sh prod (or ./start.sh test for TEST)"
fi
echo ""
@@ -51,7 +51,7 @@ echo -e "${BLUE}━━━ Frontend Unified ━━━${NC}"
if check_service_status 3000 "Frontend Unified"; then
print_info "Access at: http://localhost:3000"
else
print_info "Start with: ./start-prod.sh (or ./start-test.sh for TEST)"
print_info "Start with: ./start.sh prod (or ./start.sh test for TEST)"
fi
echo ""
@@ -83,9 +83,9 @@ echo ""
# Helpful commands
echo -e "${BLUE}━━━ Helpful Commands ━━━${NC}"
echo " ./status.sh # Show this status"
echo " ./start-prod.sh # Start all services (PROD)"
echo " ./start-test.sh # Start all services (TEST)"
echo " ./start-prod.sh stop # Stop all services"
echo " ./start.sh prod # Start all services (PROD)"
echo " ./start.sh test # Start all services (TEST)"
echo " ./start.sh prod stop # Stop all services"
echo " ./start-backend.sh status # Detailed backend status"
echo " ./start-backend.sh restart # Restart backend only"
echo " ./start-frontend.sh restart # Restart frontend (quick!)"