# app/controllers/status_controller.py """ HealthSync AI 헬스체크 컨트롤러 (DB 연결 기능 추가) """ from fastapi import APIRouter, Depends, status, Query, HTTPException from app.controllers.base_controller import BaseController from app.models.base import BaseResponse from app.core.dependencies import get_settings from app.config.settings import Settings from app.utils.database_utils import simple_db import time, psutil from datetime import datetime from typing import Dict, Any, List class StatusController(BaseController): """상태체크 관련 컨트롤러 (DB 기능 포함)""" def __init__(self): super().__init__() self.router = APIRouter() self._setup_routes() def _setup_routes(self): """라우트 설정""" @self.router.get("/check", response_model=BaseResponse, status_code=status.HTTP_200_OK, summary="🔧 시스템 상태 확인") async def get_system_status(app_settings: Settings = Depends(get_settings)): """시스템 상태 확인""" try: self.log_request("system_status") try: memory_mb = round(psutil.Process().memory_info().rss / 1024 / 1024, 2) except: memory_mb = 0.0 status_data = { "status": "running", "service": app_settings.app_name, "version": app_settings.app_version, "memory_mb": memory_mb, "environment": "development" if app_settings.debug else "production" } return self.create_success_response( data=status_data, message="서비스가 정상 동작 중입니다! 🚀" ) except Exception as e: self.handle_service_error(e, "system_status") @self.router.get("/database", response_model=BaseResponse[Dict[str, Any]], status_code=status.HTTP_200_OK, summary="🗄️ 데이터베이스 연결 테스트") async def test_database_connection(): """PostgreSQL 데이터베이스 연결 상태 확인""" try: self.log_request("database_connection_test") connection_info = await simple_db.test_connection() if connection_info.get("status") == "connected": return self.create_success_response( data=connection_info, message="데이터베이스 연결이 정상입니다! 🎉" ) else: return self.create_success_response( data=connection_info, message="데이터베이스 연결에 문제가 있습니다. ⚠️" ) except Exception as e: self.handle_service_error(e, "database_connection_test") @self.router.get("/tables", response_model=BaseResponse[List[Dict[str, Any]]], status_code=status.HTTP_200_OK, summary="📋 테이블 목록 조회") async def list_database_tables(): """데이터베이스 테이블 목록 조회""" try: self.log_request("database_tables_list") tables = await simple_db.list_tables() return self.create_success_response( data=tables, message=f"총 {len(tables)}개의 테이블을 조회했습니다. 📊" ) except Exception as e: self.handle_service_error(e, "database_tables_list") status_controller = StatusController()