HealthSync_Intelligence/app/controllers/status_controller.py
hyerimmy 910bd902b1
Some checks failed
HealthSync Intelligence CI / build-and-push (push) Has been cancelled
feat : initial commit
2025-06-20 05:28:30 +00:00

99 lines
3.9 KiB
Python

# 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()