QT-CART
This commit is contained in:
1 parent
e429161a89
commit
0c55b8f1aa
134 files changed
+6071
-5801
No files matched your search
@@ -0,0 +1,62 @@
|
||||
from fastapi import APIRouter
|
||||
from pydantic import BaseModel
|
||||
from datetime import datetime
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/dashboard",
|
||||
tags=["Dashboard"]
|
||||
)
|
||||
|
||||
bot_state = {
|
||||
"status": "OFFLINE",
|
||||
"last_updated": datetime.now(),
|
||||
"battery": 0.0,
|
||||
"speed": 0.0
|
||||
}
|
||||
|
||||
BOT_TIMEOUT_SEC = 5 # 5초간 보고 없으면 오프라인
|
||||
|
||||
class BotReport(BaseModel):
|
||||
status: str
|
||||
battery: float = 0.0
|
||||
speed: float = 0.0
|
||||
|
||||
class BotConnectionInfo(BaseModel):
|
||||
bot_status: str
|
||||
battery: float
|
||||
speed: float
|
||||
last_update: str
|
||||
|
||||
# 로봇 -> 서버
|
||||
@router.post("/bot/report")
|
||||
def report_bot_status(report: BotReport):
|
||||
global bot_state
|
||||
bot_state["status"] = report.status
|
||||
bot_state["last_updated"] = datetime.now()
|
||||
bot_state["battery"] = report.battery
|
||||
bot_state["speed"] = report.speed
|
||||
return {"msg": "status report received"}
|
||||
|
||||
# 서버 -> 프론트엔드
|
||||
@router.get("/bot/check", response_model=BotConnectionInfo)
|
||||
def check_bot_connection():
|
||||
global bot_state
|
||||
|
||||
elapsed = (datetime.now() - bot_state["last_updated"]).total_seconds()
|
||||
|
||||
current_status = bot_state["status"]
|
||||
if elapsed > BOT_TIMEOUT_SEC:
|
||||
current_status = "OFFLINE"
|
||||
bot_state["speed"] = 0.0
|
||||
|
||||
return {
|
||||
"bot_status": current_status,
|
||||
"battery": bot_state["battery"],
|
||||
"speed": bot_state["speed"],
|
||||
"last_update": bot_state["last_updated"].strftime("%H:%M:%S")
|
||||
}
|
||||
|
||||
# 서버 연결 확인
|
||||
@router.get("/health")
|
||||
def health_check():
|
||||
return {"status": "ok", "time": datetime.now().isoformat()}
|
||||
Reference in new issue
Block a user