Browse Source

fix a bug that adjust target base on current target instead of realtime data

chenhaiyang 4 năm trước cách đây
mục cha
commit
0202382018
2 tập tin đã thay đổi với 14 bổ sung5 xóa
  1. 9 3
      app/controllers/targets.py
  2. 5 2
      app/services/platform.py

+ 9 - 3
app/controllers/targets.py

@@ -170,7 +170,7 @@ class TemperatureTargetController(TargetController):
 
             if (diff > 0 and self._realtime_data + _RANGE > standard
                     or diff < 0 and self._realtime_data - _RANGE < standard):
-                self._realtime_data += diff
+                new_target = self._realtime_data + diff
 
         return new_target
 
@@ -285,14 +285,20 @@ class Co2TargetController(TargetController):
 
 
 @logger.catch()
-async def readjust_all_target(project_id: str, space_id: str, wechat_time: str):
+async def readjust_all_target(
+        project_id: str,
+        space_id: str,
+        wechat_time: Optional[str] = None,
+        feedback: Optional[Dict] = None
+):
     async with AsyncClient() as client:
         transfer = SpaceInfoService(client, project_id, space_id)
         platform = DataPlatformService(client, project_id)
 
         realtime_temperature = await platform.get_realtime_temperature(space_id)
         current_targets = await transfer.get_custom_target()
-        feedback = await transfer.get_feedback(wechat_time)
+        if wechat_time:
+            feedback = await transfer.get_feedback(wechat_time)
         is_customized = await transfer.is_customized()
         is_temporary = await transfer.is_temporary()
         season = await transfer.get_season()

+ 5 - 2
app/services/platform.py

@@ -58,13 +58,16 @@ class DataPlatformService(Service):
         }
         raw_info = await self._post(url, params, payload)
 
-        value = np.NAN
-        if raw_info.get('Content'):
+        # value = np.NAN
+        # if raw_info.get('Content'):
+        try:
             latest_data = raw_info.get('Content')[-1].get('data')
             latest_time = raw_info.get('Content')[-1].get('receivetime')
             if arrow.get(latest_time, TIME_FMT).shift(minutes=15) < arrow.get(self._now_time, TIME_FMT):
                 logger.info(f'delayed data - {object_id}: ({latest_time}, {latest_data})')
             value = round_half_up(latest_data, 2)
+        except KeyError:
+            value = np.NAN
 
         return value