Патч
All checks were successful
Build And Push / publish (push) Successful in 5m43s

This commit is contained in:
2025-10-31 15:11:38 +03:00
parent 44ed7796ab
commit b602b75234
10 changed files with 663 additions and 23 deletions

View File

@ -1,3 +1,4 @@
from datetime import UTC, datetime
from json import dumps
from logging import getLogger
from urllib.parse import quote, urlencode
@ -65,18 +66,6 @@ class TDN_API(AsyncClient):
async def observations_measurement_search(
self, access_token: str, observationUid: str
):
# data = urlencode(
# dumps(
# {
# 'where': {'observationUid': observationUid},
# 'relations': [
# 'measurement',
# 'obsrvMtMetrics',
# 'obsrvMtMetrics.metric',
# ],
# }
# )
# )
encoded_query = urlencode(
{
'query': dumps(
@ -105,3 +94,69 @@ class TDN_API(AsyncClient):
case _:
self.logger.error(res.json())
raise e.UnknownException
async def create_series(
self, access_token: str, observationUid: str, obsrvMeasurementUid: str
):
now = datetime.now(UTC)
tz_offset = now.strftime('%z')
formatted_offset = (
f'{tz_offset[:3]}:{tz_offset[3:]}' if tz_offset else '+0000'
)
date_str = (
f'{now.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]} {formatted_offset}'
)
res = await self.patch(
'/ddn/observation/series',
headers={'Authorization': f'Bearer {access_token}'},
json={
'observationUid': observationUid,
'obsrvMeasurementUid': obsrvMeasurementUid,
'date': date_str,
},
)
match res.status_code:
case st.HTTP_200_OK:
return s.SeriesModel.model_validate(res.json())
case _:
self.logger.error(res.json())
raise e.UnknownException
async def create_series_values(
self,
access_token: str,
seriesUid: str,
obsrvMtMetricUid: str,
*,
nvalue: str | None = None,
fvalue: str | None = None,
svalue: str | None = None,
):
data = {
'seriesUid': seriesUid,
'obsrvMtMetricUid': obsrvMtMetricUid,
}
if nvalue is not None:
data['nvalue'] = nvalue
if fvalue is not None:
data['fvalue'] = fvalue
if svalue is not None:
data['svalue'] = svalue
res = await self.patch(
'/ddn/observation/series-values',
headers={'Authorization': f'Bearer {access_token}'},
json=data,
)
match res.status_code:
case st.HTTP_200_OK:
return s.SeriesValueModel.model_validate(res.json())
case _:
self.logger.error(res.json())
raise e.UnknownException

View File

@ -68,7 +68,7 @@ class ObservationMeasurementModel(BaseModel):
timeFrequency: int
timePeriod: int
timePeriodMeasureUid: str
timeOfDay: list[str]
timeOfDay: list[str] | None
comment: str | None
mobileId: str | None
measurement: MeasurementModel
@ -78,3 +78,33 @@ class ObservationMeasurementModel(BaseModel):
class ObservationMeasurementsModel(BaseModel):
items: list[ObservationMeasurementModel]
total: int
class SeriesRealmModel(BaseModel):
uid: str
class SeriesModel(BaseModel):
observationUid: str
obsrvMeasurementUid: str
date: str
realm: SeriesRealmModel
mobileId: str | None
uid: str
createdAt: datetime
updatedAt: datetime
class SeriesValueModel(BaseModel):
uid: str
seriesUid: str
obsrvMtMetricUid: str
realm: SeriesRealmModel
createdAt: datetime
updatedAt: datetime
nvalue: str | None
fvalue: str | None
svalue: str | None
filepath: str | None
mobileId: str | None
tisId: str | None