123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- # -*- coding: utf-8 -*-
- from typing import Optional
- from fastapi import APIRouter, Depends, HTTPException, Query
- from loguru import logger
- from sqlalchemy.orm import Session
- from app.api.dependencies.db import get_db
- from app.controllers.targets.temperature import (
- temperature_target_control_v1,
- temperature_target_control_v2,
- get_target_after_feedback
- )
- from app.models.domain.feedback import FeedbackValue
- from app.models.domain.targets import TargetReadjustResponse, RegulatedTargetResponse
- from app.utils.date import get_time_str
- router = APIRouter()
- @router.get('/adjust', response_model=TargetReadjustResponse)
- async def readjust_target(
- project_id: str = Query(..., max_length=50, regex='^Pj', alias='projectId'),
- space_id: str = Query(..., max_length=50, regex='^Sp', alias='roomId'),
- timestamp: Optional[str] = Query(None, min_length=14, max_length=14, alias='time'),
- feedback: Optional[FeedbackValue] = Query(None, alias='itemId'),
- db: Session = Depends(get_db)
- ):
- if not timestamp:
- timestamp = get_time_str()
- try:
- if feedback != FeedbackValue.null:
- if project_id == 'Pj1101050030':
- need_run_room_control = await temperature_target_control_v1(project_id, space_id, feedback, db)
- else:
- need_run_room_control = await temperature_target_control_v2(project_id, space_id, feedback)
- else:
- need_run_room_control = True
- except Exception as e:
- logger.error(e)
- raise HTTPException(
- status_code=500,
- detail='Oops, something wrong has happened'
- )
- response = {
- 'projectId': project_id,
- 'roomId': space_id,
- 'flag': 1 if need_run_room_control else 0,
- 'time': timestamp,
- }
- return response
- @router.get('/adjust/v2', response_model=TargetReadjustResponse)
- async def readjust_target_v2(
- project_id: str = Query(..., max_length=50, regex='^Pj', alias='project-id'),
- space_id: str = Query(..., max_length=50, regex='^Sp', alias='space-id'),
- feedback: Optional[FeedbackValue] = Query(None)
- ):
- if feedback != FeedbackValue.null:
- try:
- need_run_room_control = await temperature_target_control_v2(project_id, space_id, feedback)
- except Exception as e:
- logger.error(e)
- raise HTTPException(
- status_code=500,
- detail='Oops, something wrong has happened!'
- )
- else:
- need_run_room_control = True
- response = {
- 'projectId': project_id,
- 'roomId': space_id,
- 'flag': 1 if need_run_room_control else 0,
- 'time': get_time_str()
- }
- return response
- @router.get('/regulated/value', response_model=RegulatedTargetResponse)
- async def read_regulated_value(
- project_id: str = Query(..., max_length=50, regex='^Pj', alias='projectId'),
- space_id: str = Query(..., max_length=50, regex='^Sp', alias='spaceId'),
- feedback: Optional[FeedbackValue] = Query(None)
- ):
- new_actual_target = await get_target_after_feedback(project_id, space_id, feedback)
- response = {
- 'projectId': project_id,
- 'spaceId': space_id,
- 'isTemporary': False,
- 'temperature': {
- 'min': new_actual_target,
- 'max': new_actual_target
- }
- }
- return response
|